Exemplo n.º 1
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            this.m_Spawned = reader.ReadStrongMobileList<Mobile>();
        }
Exemplo n.º 2
0
		public DuelInfo(GenericReader reader)
		{
			int version = reader.ReadEncodedInt();

			switch (version)
			{
				case 0:
					{
						m_DuelTime = reader.ReadTimeSpan();
						m_AgainstList = reader.ReadStrongMobileList();
						break;
					}
			}
		}
Exemplo n.º 3
0
        public void Deserialize(GenericReader reader)
        {
            var version = reader.ReadInt();

            InvasionTown     = (InvasionTowns)reader.ReadInt();
            TownMonsterType  = (TownMonsterType)reader.ReadInt();
            TownChampionType = (TownChampionType)reader.ReadInt();
            StartTime        = reader.ReadDateTime();
            Spawned          = reader.ReadStrongMobileList();
            Active           = reader.ReadBool();

            if (Spawned == null)
            {
                Spawned = new List <Mobile>();
            }

            if (Active)
            {
                InitTimer();
            }
        }
Exemplo n.º 4
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 1:
            {
                this.m_RegionBounds = reader.ReadRect2D();
                this.m_Traps        = reader.ReadStrongItemList <BaseTrap>();

                goto case 0;
            }

            case 0:
            {
                if (version < 1)
                {
                    this.m_Traps        = new List <BaseTrap>();
                    this.m_RegionBounds = new Rectangle2D(this.X - 40, this.Y - 40, 80, 80);
                }

                this.m_Creatures = reader.ReadStrongMobileList();

                this.m_TypeName = reader.ReadString();
                this.m_Door     = reader.ReadItem <BaseDoor>();
                this.m_Addon    = reader.ReadItem <BaseAddon>();
                this.m_Sequence = reader.ReadItem <GauntletSpawner>();

                this.State = (GauntletSpawnerState)reader.ReadInt();

                break;
            }
            }
        }
Exemplo n.º 5
0
        public Candidate(GenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            switch ( version )
            {
                case 1:
                    {
                        this.m_Mobile = reader.ReadMobile();

                        int count = reader.ReadEncodedInt();
                        this.m_Voters = new List<Voter>(count);

                        for (int i = 0; i < count; ++i)
                        {
                            Voter voter = new Voter(reader, this.m_Mobile);

                            if (voter.From != null)
                                this.m_Voters.Add(voter);
                        }

                        break;
                    }
                case 0:
                    {
                        this.m_Mobile = reader.ReadMobile();

                        List<Mobile> mobs = reader.ReadStrongMobileList();
                        this.m_Voters = new List<Voter>(mobs.Count);

                        for (int i = 0; i < mobs.Count; ++i)
                            this.m_Voters.Add(new Voter(mobs[i], this.m_Mobile));

                        break;
                    }
            }
        }
Exemplo n.º 6
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();

            switch (version)
            {
            case 1:
            {
                Wisps = reader.ReadStrongMobileList <DarkWisp>();
                goto case 0;
            }

            case 0:
            {
                m_Type = (ShadowlordType)reader.ReadInt();
                break;
            }
            }

            Timer SelfDeleteTimer = new InternalSelfDeleteTimer(this);

            SelfDeleteTimer.Start();
        }
Exemplo n.º 7
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
            {
                m_Stage1Type      = (eStage1Type)reader.ReadInt();
                m_Stage2Type      = (eStage2Type)reader.ReadInt();
                m_Stage3Type      = (eStage3Type)reader.ReadInt();
                m_Stage4Type      = (eStage4Type)reader.ReadInt();
                m_ChampionType    = (eChampionType)reader.ReadInt();
                m_Stage1Count     = reader.ReadEncodedInt();
                m_Stage2Count     = reader.ReadEncodedInt();
                m_Stage3Count     = reader.ReadEncodedInt();
                m_Stage4Count     = reader.ReadEncodedInt();
                m_CurrentStage    = reader.ReadEncodedInt();
                m_RewardsEnabled  = reader.ReadBool();
                m_ArtifactChance  = reader.ReadEncodedInt();
                m_BlessDeedChance = reader.ReadEncodedInt();
                m_MinSpawnZ       = reader.ReadEncodedInt();
                m_MaxSpawnZ       = reader.ReadEncodedInt();
                m_Enabled         = reader.ReadBool();
                m_Broadcast       = reader.ReadBool();
                m_Top             = reader.ReadPoint3D();
                m_Bottom          = reader.ReadPoint3D();
                m_RegionName      = reader.ReadString();
                m_Spawned         = reader.ReadStrongMobileList <BaseCreature>();

                break;
            }
            }
        }
Exemplo n.º 8
0
			public override void Deserialize( GenericReader reader )
			{
				base.Deserialize( reader );

				int version = reader.ReadInt();

				m_Mobiles = reader.ReadStrongMobileList();

				for ( int i = 0; i < m_Mobiles.Count; ++i )
					m_Mobiles[i].Delete();

				m_Mobiles.Clear();

				for ( int i = Items.Count - 1; i >= 0; --i )
					if ( i < Items.Count )
						Items[i].Delete();

				if ( m_Cache == null )
					m_Cache = this;
				else
					Delete();

				m_Table = new Dictionary<Type, IEntity>();
			}
Exemplo n.º 9
0
        public virtual void Deserialize(GenericReader reader)
        {
            int version = reader.ReadInt();

            switch (version)
            {
            case 2:
                Participants = reader.ReadStrongMobileList <PlayerMobile>();
                goto case 1;

            case 1:
                StartTime = reader.ReadDeltaTime();
                Completed = reader.ReadBool();
                HasBegun  = reader.ReadBool();
                goto case 0;

            case 0:
                Instance    = Controller.Instances[reader.ReadInt()];
                PartyLeader = reader.ReadMobile();
                Addon       = reader.ReadItem() as BaseAddon;
                break;
            }

            if (Instance != null)
            {
                Instance.Encounter = this;
            }

            if (Completed)
            {
                Timer.DelayCall(ResetDuration, () =>
                {
                    Reset();
                });
            }
        }
Exemplo n.º 10
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch ( version )
            {
                case 12:
                    {
                        if (reader.ReadBool())
                            this.m_RestoreEquip = reader.ReadStrongItemList();

                        goto case 11;
                    }
                case 11:
                    {
                        // Version 11, we move all bools to a CorpseFlag
                        this.m_Flags = (CorpseFlag)reader.ReadInt();

                        this.m_TimeOfDeath = reader.ReadDeltaTime();

                        int count = reader.ReadInt();

                        for (int i = 0; i < count; ++i)
                        {
                            Item item = reader.ReadItem();

                            if (reader.ReadBool())
                                this.SetRestoreInfo(item, reader.ReadPoint3D());
                            else if (item != null)
                                this.SetRestoreInfo(item, item.Location);
                        }

                        if (reader.ReadBool())
                            this.BeginDecay(reader.ReadDeltaTime() - DateTime.Now);

                        this.m_Looters = reader.ReadStrongMobileList();
                        this.m_Killer = reader.ReadMobile();

                        this.m_Aggressors = reader.ReadStrongMobileList();
                        this.m_Owner = reader.ReadMobile();

                        this.m_CorpseName = reader.ReadString();

                        this.m_AccessLevel = (AccessLevel)reader.ReadInt();
                        reader.ReadInt(); // guild reserve
                        this.m_Kills = reader.ReadInt();

                        this.m_EquipItems = reader.ReadStrongItemList();
                        break;
                    }
                case 10:
                    {
                        this.m_TimeOfDeath = reader.ReadDeltaTime();

                        goto case 9;
                    }
                case 9:
                    {
                        int count = reader.ReadInt();

                        for (int i = 0; i < count; ++i)
                        {
                            Item item = reader.ReadItem();

                            if (reader.ReadBool())
                                this.SetRestoreInfo(item, reader.ReadPoint3D());
                            else if (item != null)
                                this.SetRestoreInfo(item, item.Location);
                        }

                        goto case 8;
                    }
                case 8:
                    {
                        this.SetFlag(CorpseFlag.VisitedByTaxidermist, reader.ReadBool());

                        goto case 7;
                    }
                case 7:
                    {
                        if (reader.ReadBool())
                            this.BeginDecay(reader.ReadDeltaTime() - DateTime.Now);

                        goto case 6;
                    }
                case 6:
                    {
                        this.m_Looters = reader.ReadStrongMobileList();
                        this.m_Killer = reader.ReadMobile();

                        goto case 5;
                    }
                case 5:
                    {
                        this.SetFlag(CorpseFlag.Carved, reader.ReadBool());

                        goto case 4;
                    }
                case 4:
                    {
                        this.m_Aggressors = reader.ReadStrongMobileList();

                        goto case 3;
                    }
                case 3:
                    {
                        this.m_Owner = reader.ReadMobile();

                        goto case 2;
                    }
                case 2:
                    {
                        this.SetFlag(CorpseFlag.NoBones, reader.ReadBool());

                        goto case 1;
                    }
                case 1:
                    {
                        this.m_CorpseName = reader.ReadString();

                        goto case 0;
                    }
                case 0:
                    {
                        if (version < 10)
                            this.m_TimeOfDeath = DateTime.Now;

                        if (version < 7)
                            this.BeginDecay(m_DefaultDecayTime);

                        if (version < 6)
                            this.m_Looters = new List<Mobile>();

                        if (version < 4)
                            this.m_Aggressors = new List<Mobile>();

                        this.m_AccessLevel = (AccessLevel)reader.ReadInt();
                        reader.ReadInt(); // guild reserve
                        this.m_Kills = reader.ReadInt();
                        this.SetFlag(CorpseFlag.Criminal, reader.ReadBool());

                        this.m_EquipItems = reader.ReadStrongItemList();

                        break;
                    }
            }
        }
Exemplo n.º 11
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            m_DamageEntries = new Dictionary <Mobile, int>();

            int version = reader.ReadInt();

            switch (version)
            {
            case 5:
            {
                m_KickDelay = reader.ReadTimeSpan();
                m_KickTime  = reader.ReadDateTime();

                m_SpawnArea = reader.ReadRect2D();

                goto case 4;
            }

            case 4:
            {
                int    entries = reader.ReadInt();
                Mobile m;
                int    damage;
                for (int i = 0; i < entries; ++i)
                {
                    m      = reader.ReadMobile();
                    damage = reader.ReadInt();

                    if (m != null)
                    {
                        m_DamageEntries.Add(m, damage);
                    }
                }

                goto case 3;
            }

            case 3:
            {
                m_HasBeenAdvanced = reader.ReadBool();

                m_Idol = reader.ReadItem() as IdolOfTheChampion;

                goto case 2;
            }

            case 2:
            {
                m_RandomizeType = reader.ReadBool();

                goto case 1;
            }

            case 1:
            {
                if (version < 5)
                {
                    int oldRange = reader.ReadInt();

                    m_SpawnArea = new Rectangle2D(new Point2D(X - oldRange, Y - oldRange), new Point2D(X + oldRange, Y + oldRange));
                }

                m_Kills = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                if (version < 1)
                {
                    SetSpawnArea(50);
                }

                bool active = reader.ReadBool();
                m_Type         = (ChampionSpawnType)reader.ReadInt();
                m_Creatures    = reader.ReadStrongMobileList();
                m_RedSkulls    = reader.ReadStrongItemList();
                m_WhiteSkulls  = reader.ReadStrongItemList();
                m_Platform     = reader.ReadItem <ChampionPlatform>();
                m_Altar        = reader.ReadItem <ChampionAltar>();
                m_ExpireDelay  = reader.ReadTimeSpan();
                m_ExpireTime   = reader.ReadDeltaTime();
                m_Champion     = reader.ReadMobile();
                m_RestartDelay = reader.ReadTimeSpan();

                if (reader.ReadBool())
                {
                    m_RestartTime = reader.ReadDeltaTime();
                    BeginRestart(m_RestartTime - DateTime.Now);
                }

                if (m_Platform == null || m_Altar == null)
                {
                    Delete();
                }
                else if (active)
                {
                    Start(false);
                }

                break;
            }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion));
        }
Exemplo n.º 12
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );
			int version = reader.ReadInt();

			switch ( version )
			{
				case 1: m_Orcs = reader.ReadStrongMobileList<BaseCreature>(); break;
				case 0: m_Orcs = new List<BaseCreature>(); break;
			}

			
		}
Exemplo n.º 13
0
		private static void InternalLoad(GenericReader reader)
		{
			int version = reader.ReadEncodedInt();

			switch (version)
			{
				case 1:
					{
						m_Enabled = reader.ReadBool();
						m_Instance.m_DuelLengthInSeconds = reader.ReadEncodedInt();
						m_Instance.m_MaxDistance = reader.ReadEncodedInt();
						goto case 0;
					}
				case 0:
					{
						int count = reader.ReadEncodedInt();

						for (int i = 0; i < count; i++)
						{
							Serial serial = (Serial)reader.ReadInt();
							DuelPoints points = new DuelPoints(reader);
							m_PointsTable.Add(serial, points);
						}

						m_DeclineDuelList = reader.ReadStrongMobileList();

						break;
					}
			}
		}
Exemplo n.º 14
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            this.m_DamageEntries = new Dictionary <Mobile, int>();

            int version = reader.ReadInt();

            switch (version)
            {
            case 7:
                KillsMod  = reader.ReadDouble();
                GroupName = reader.ReadString();
                goto case 6;

            case 6:
                SpawnName   = reader.ReadString();
                AutoRestart = reader.ReadBool();
                SpawnMod    = reader.ReadDouble();
                SpawnRadius = reader.ReadInt();
                goto case 5;

            case 5:
            {
                int    entries = reader.ReadInt();
                Mobile m;
                int    damage;
                for (int i = 0; i < entries; ++i)
                {
                    m      = reader.ReadMobile();
                    damage = reader.ReadInt();

                    if (m == null)
                    {
                        continue;
                    }

                    this.m_DamageEntries.Add(m, damage);
                }

                goto case 4;
            }

            case 4:
            {
                this.m_ConfinedRoaming = reader.ReadBool();
                this.m_Idol            = reader.ReadItem <IdolOfTheChampion>();
                this.m_HasBeenAdvanced = reader.ReadBool();

                goto case 3;
            }

            case 3:
            {
                this.m_SpawnArea = reader.ReadRect2D();

                goto case 2;
            }

            case 2:
            {
                this.m_RandomizeType = reader.ReadBool();

                goto case 1;
            }

            case 1:
            {
                if (version < 3)
                {
                    int oldRange = reader.ReadInt();

                    this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - oldRange, this.Y - oldRange), new Point2D(this.X + oldRange, this.Y + oldRange));
                }

                this.m_Kills = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                if (version < 1)
                {
                    this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - 24, this.Y - 24), new Point2D(this.X + 24, this.Y + 24));           //Default was 24
                }
                bool active = reader.ReadBool();
                this.m_Type         = (ChampionSpawnType)reader.ReadInt();
                this.m_Creatures    = reader.ReadStrongMobileList();
                this.m_RedSkulls    = reader.ReadStrongItemList();
                this.m_WhiteSkulls  = reader.ReadStrongItemList();
                this.m_Platform     = reader.ReadItem <ChampionPlatform>();
                this.m_Altar        = reader.ReadItem <ChampionAltar>();
                this.m_ExpireDelay  = reader.ReadTimeSpan();
                this.m_ExpireTime   = reader.ReadDeltaTime();
                this.m_Champion     = reader.ReadMobile();
                this.m_RestartDelay = reader.ReadTimeSpan();

                if (reader.ReadBool())
                {
                    this.m_RestartTime = reader.ReadDeltaTime();
                    this.BeginRestart(this.m_RestartTime - DateTime.UtcNow);
                }

                if (version < 4)
                {
                    this.m_Idol = new IdolOfTheChampion(this);
                    this.m_Idol.MoveToWorld(new Point3D(this.X, this.Y, this.Z - 15), this.Map);
                }

                if (this.m_Platform == null || this.m_Altar == null || this.m_Idol == null)
                {
                    this.Delete();
                }
                else if (active)
                {
                    this.Start();
                }

                break;
            }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion));
        }
Exemplo n.º 15
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch ( version )
			{
				case 2:
				{
					m_Guardians = reader.ReadStrongMobileList();
					m_Temporary = reader.ReadBool();

					goto case 1;
				}
				case 1:
				{
					m_Owner = reader.ReadMobile();

					goto case 0;
				}
				case 0:
				{
					m_Level = reader.ReadInt();
					m_DeleteTime = reader.ReadDeltaTime();
					m_Lifted = reader.ReadStrongItemList();

					if ( version < 2 )
						m_Guardians = new List<Mobile>();

					break;
				}
			}

			if ( !m_Temporary )
			{
				m_Timer = new DeleteTimer( this, m_DeleteTime );
				m_Timer.Start();
			}
			else
			{
				Delete();
			}
		}
Exemplo n.º 16
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 4:
            {
                m_ConfinedRoaming = reader.ReadBool();
                m_Idol            = reader.ReadItem <IdolOfTheChampion>();
                m_HasBeenAdvanced = reader.ReadBool();

                goto case 3;
            }

            case 3:
            {
                m_SpawnArea = reader.ReadRect2D();

                goto case 2;
            }

            case 2:
            {
                m_RandomizeType = reader.ReadBool();

                goto case 1;
            }

            case 1:
            {
                if (version < 3)
                {
                    int oldRange = reader.ReadInt();

                    m_SpawnArea = new Rectangle2D(new Point2D(X - oldRange, Y - oldRange), new Point2D(X + oldRange, Y + oldRange));
                }

                m_Kills = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                if (version < 1)
                {
                    m_SpawnArea = new Rectangle2D(new Point2D(X - 24, Y - 24), new Point2D(X + 24, Y + 24));                                    //Default was 24
                }
                bool active = reader.ReadBool();
                m_Type         = (ChampionSpawnType)reader.ReadInt();
                m_Creatures    = reader.ReadStrongMobileList();
                m_RedSkulls    = reader.ReadStrongItemList();
                m_WhiteSkulls  = reader.ReadStrongItemList();
                m_Platform     = reader.ReadItem <ChampionPlatform>();
                m_Altar        = reader.ReadItem <ChampionAltar>();
                m_ExpireDelay  = reader.ReadTimeSpan();
                m_ExpireTime   = reader.ReadDeltaTime();
                m_Champion     = reader.ReadMobile();
                m_RestartDelay = reader.ReadTimeSpan();

                if (reader.ReadBool())
                {
                    m_RestartTime = reader.ReadDeltaTime();
                    BeginRestart(m_RestartTime - DateTime.Now);
                }

                if (version < 4)
                {
                    m_Idol = new IdolOfTheChampion(this);
                    m_Idol.MoveToWorld(new Point3D(X, Y, Z - 15), Map);
                }

                if (m_Platform == null || m_Altar == null || m_Idol == null)
                {
                    Delete();
                }
                else if (active)
                {
                    Start();
                }

                break;
            }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion));
        }
Exemplo n.º 17
0
        public virtual void Deserialize(GenericReader reader)
        {
            int version = reader.ReadInt();

            switch (version)
            {
                case 2:
                    {
                        goto case 1;
                    }
                case 1:
                    {
                        m_Players = reader.ReadStrongMobileList();
                        m_Name = reader.ReadString();
                        m_Hue = reader.ReadInt();
                        m_Score = reader.ReadInt();
                        m_Home = reader.ReadPoint3D();
                        m_HomeMap = reader.ReadMap();
                        m_TeamGateLocation = reader.ReadPoint3D();
                        m_TeamGateMap = reader.ReadMap();
                        break;
                    }
            }
            if(m_Moongate != null)
                m_Moongate.Team = this;
        }
Exemplo n.º 18
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();

            m_Spawns = reader.ReadStrongMobileList();
            m_Items = reader.ReadStrongItemList();
            m_DeleteTime = reader.ReadDeltaTime();
        }
Exemplo n.º 19
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
                case 0:
                {
                    m_TrueForm = reader.ReadBool();
                    m_GateItem = reader.ReadItem();
                    m_Spirits = reader.ReadStrongMobileList<DragonSpirit>();

                    m_Timer = new TeleportTimer(this);
                    m_Timer.Start();

                    break;
                }
            }
        }
Exemplo n.º 20
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 10:
            {
                TimeOfDeath = reader.ReadDeltaTime();

                goto case 9;
            }

            case 9:
            {
                int count = reader.ReadInt();

                for (int i = 0; i < count; ++i)
                {
                    Item item = reader.ReadItem();

                    if (reader.ReadBool())
                    {
                        SetRestoreInfo(item, reader.ReadPoint3D());
                    }

                    else if (item != null)
                    {
                        SetRestoreInfo(item, item.Location);
                    }
                }

                goto case 8;
            }

            case 8:
            {
                VisitedByTaxidermist = reader.ReadBool();

                goto case 7;
            }

            case 7:
            {
                if (reader.ReadBool())
                {
                    BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
                }

                goto case 6;
            }

            case 6:
            {
                Looters = reader.ReadStrongMobileList();
                Killer  = reader.ReadMobile();

                goto case 5;
            }

            case 5:
            {
                Carved = reader.ReadBool();

                goto case 4;
            }

            case 4:
            {
                Aggressors = reader.ReadStrongMobileList();

                goto case 3;
            }

            case 3:
            {
                Owner = reader.ReadMobile();

                goto case 2;
            }

            case 2:
            {
                NoBones = reader.ReadBool();

                goto case 1;
            }

            case 1:
            {
                CorpseName = reader.ReadString();

                goto case 0;
            }

            case 0:
            {
                if (version < 10)
                {
                    m_TimeOfDeath = DateTime.UtcNow;
                }

                if (version < 7)
                {
                    BeginDecay(m_DefaultDecayTime);
                }

                if (version < 6)
                {
                    m_Looters = new List <Mobile>();
                }

                if (version < 4)
                {
                    m_Aggressors = new List <Mobile>();
                }

                AccessLevel = (AccessLevel)reader.ReadInt();
                Guild       = reader.ReadItem() as Guild;
                Kills       = reader.ReadInt();
                Criminal    = reader.ReadBool();

                EquipItems = reader.ReadStrongItemList();

                break;
            }
            }
        }
Exemplo n.º 21
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 3:
                m_IsAvailable = reader.ReadBool();
                goto case 2;

            case 2:
            case 1:
                if (reader.ReadBool())
                {
                    m_Helpers = reader.ReadStrongMobileList <BaseCreature>();
                }
                goto case 0;

            case 0:
                m_Peerless     = reader.ReadMobile() as BasePeerless;
                m_BossLocation = reader.ReadPoint3D();
                m_TeleportDest = reader.ReadPoint3D();
                m_ExitDest     = reader.ReadPoint3D();

                m_Deadline = reader.ReadDateTime();

                m_MasterKeys = reader.ReadStrongItemList();
                m_Fighters   = reader.ReadStrongMobileList();
                m_Pets       = new Dictionary <Mobile, List <Mobile> >();

                int count = reader.ReadInt();

                for (int i = 0; i < count; i++)
                {
                    m_Pets.Add(reader.ReadMobile(), reader.ReadStrongMobileList());
                }

                if (version < 2)
                {
                    reader.ReadBool();
                }

                if (m_Peerless == null && m_Helpers.Count > 0)
                {
                    Timer.DelayCall(TimeSpan.FromSeconds(30), new TimerCallback(CleanupHelpers));
                }

                break;
            }

            if (version == 2)
            {
                if (m_Peerless == null)
                {
                    FinishSequence();
                    m_IsAvailable = true;
                }
            }
            else if (!m_IsAvailable && m_Peerless == null)
            {
                FinishSequence();
            }
        }
Exemplo n.º 22
0
        public override void Deserialize(GenericReader reader)
        {
            int version = reader.ReadInt();

            switch (version)
            {
            case 5:
            case 4:
            {
                m_AllyDeclarations = reader.ReadStrongGuildList <Guild>();
                m_AllyInvitations  = reader.ReadStrongGuildList <Guild>();

                goto case 3;
            }

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

                goto case 2;
            }

            case 2:
            {
                m_Type = (GuildType)reader.ReadInt();

                goto case 1;
            }

            case 1:
            {
                m_LastFealty = reader.ReadDateTime();

                goto case 0;
            }

            case 0:
            {
                m_Leader = reader.ReadMobile();

                if (m_Leader is PlayerMobile)
                {
                    ((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader;
                }

                m_Name         = reader.ReadString();
                m_Abbreviation = reader.ReadString();

                m_Allies          = reader.ReadStrongGuildList <Guild>();
                m_Enemies         = reader.ReadStrongGuildList <Guild>();
                m_WarDeclarations = reader.ReadStrongGuildList <Guild>();
                m_WarInvitations  = reader.ReadStrongGuildList <Guild>();

                m_Members    = reader.ReadStrongMobileList();
                m_Candidates = reader.ReadStrongMobileList();
                m_Accepted   = reader.ReadStrongMobileList();

                m_Guildstone = reader.ReadItem();
                m_Teleporter = reader.ReadItem();

                m_Charter = reader.ReadString();
                m_Website = reader.ReadString();

                break;
            }
            }

            if (m_AllyDeclarations == null)
            {
                m_AllyDeclarations = new List <Guild>();
            }

            if (m_AllyInvitations == null)
            {
                m_AllyInvitations = new List <Guild>();
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(VerifyGuild_Callback));
        }
Exemplo n.º 23
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			m_Owner = (Mobile)reader.ReadMobile();
			m_Friends = reader.ReadStrongMobileList();
		}
Exemplo n.º 24
0
		public override void Deserialize( GenericReader reader )
		{
			int version = reader.ReadInt();

			switch ( version )
			{
				case 5:
				{
					int count = reader.ReadInt();

					m_PendingWars = new List<WarDeclaration>();
					for( int i = 0; i < count; i++ )
					{
						m_PendingWars.Add( new WarDeclaration( reader ) );
					}

					count = reader.ReadInt();
					m_AcceptedWars = new List<WarDeclaration>();
					for( int i = 0; i < count; i++ )
					{
						m_AcceptedWars.Add( new WarDeclaration( reader ) );
					}

					bool isAllianceLeader = reader.ReadBool();

					if( isAllianceLeader )
						m_AllianceInfo = new AllianceInfo( reader );
					else
						m_AllianceLeader = reader.ReadGuild() as Guild;


					goto case 4;
				}
				case 4:
				{
					m_AllyDeclarations = reader.ReadStrongGuildList<Guild>();
					m_AllyInvitations = reader.ReadStrongGuildList<Guild>();

					goto case 3;
				}
				case 3:
				{
					m_TypeLastChange = reader.ReadDateTime();

					goto case 2;
				}
				case 2:
				{
					m_Type = (GuildType)reader.ReadInt();

					goto case 1;
				}
				case 1:
				{
					m_LastFealty = reader.ReadDateTime();

					goto case 0;
				}
				case 0:
				{
					m_Leader = reader.ReadMobile();

					if( m_Leader is PlayerMobile )
						((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader;

					m_Name = reader.ReadString();
					m_Abbreviation = reader.ReadString();

					m_Allies = reader.ReadStrongGuildList<Guild>();
					m_Enemies = reader.ReadStrongGuildList<Guild>();
					m_WarDeclarations = reader.ReadStrongGuildList<Guild>();
					m_WarInvitations = reader.ReadStrongGuildList<Guild>();

					m_Members = reader.ReadStrongMobileList();
					m_Candidates = reader.ReadStrongMobileList();
					m_Accepted = reader.ReadStrongMobileList(); 

					m_Guildstone = reader.ReadItem();
					m_Teleporter = reader.ReadItem();

					m_Charter = reader.ReadString();
					m_Website = reader.ReadString();

					break;
				}
			}

			if ( m_AllyDeclarations == null )
				m_AllyDeclarations = new List<Guild>();

			if ( m_AllyInvitations == null )
				m_AllyInvitations = new List<Guild>();


			if ( m_AcceptedWars == null )
				m_AcceptedWars = new List<WarDeclaration>();

			if ( m_PendingWars == null )
				m_PendingWars = new List<WarDeclaration>();


			/*
			if ( ( !NewGuildSystem && m_Guildstone == null )|| m_Members.Count == 0 )
				Disband();
			*/

			Timer.DelayCall( TimeSpan.Zero, new TimerCallback( VerifyGuild_Callback ) );
		}
Exemplo n.º 25
0
        public Arena(GenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 7:
            {
                m_IsGuarded = reader.ReadBool();

                goto case 6;
            }

            case 6:
            {
                m_Ladder = reader.ReadItem() as LadderController;

                goto case 5;
            }

            case 5:
            {
                m_Tournament = reader.ReadItem() as TournamentController;
                m_Announcer  = reader.ReadMobile();

                goto case 4;
            }

            case 4:
            {
                m_Name = reader.ReadString();

                goto case 3;
            }

            case 3:
            {
                m_Zone = reader.ReadRect2D();

                goto case 2;
            }

            case 2:
            {
                m_GateIn     = reader.ReadPoint3D();
                m_GateOut    = reader.ReadPoint3D();
                m_Teleporter = reader.ReadItem();

                goto case 1;
            }

            case 1:
            {
                m_Players = reader.ReadStrongMobileList();

                goto case 0;
            }

            case 0:
            {
                m_Facet   = reader.ReadMap();
                m_Bounds  = reader.ReadRect2D();
                m_Outside = reader.ReadPoint3D();
                m_Wall    = reader.ReadPoint3D();

                if (version == 0)
                {
                    reader.ReadBool();
                    m_Players = new List <Mobile>();
                }

                m_Active = reader.ReadBool();
                m_Points = new ArenaStartPoints(reader);

                if (m_Active)
                {
                    m_Arenas.Add(this);
                    m_Arenas.Sort();
                }

                break;
            }
            }

            if (m_Zone.Start != Point2D.Zero && m_Zone.End != Point2D.Zero && m_Facet != null)
            {
                m_Region = new SafeZone(m_Zone, m_Outside, m_Facet, m_IsGuarded);
            }

            if (IsOccupied)
            {
                Timer.DelayCall(TimeSpan.FromSeconds(2.0), new TimerCallback(Evict));
            }

            if (m_Tournament != null)
            {
                Timer.DelayCall(TimeSpan.Zero, new TimerCallback(AttachToTournament_Sandbox));
            }
        }
Exemplo n.º 26
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                case 9:
                    {
                        m_IDList = reader.ReadStrongMobileList();
                        goto case 5;
                    }
                case 8:
                case 7:
                case 6:
                case 5:
                {
                    m_WeaponEffect = (WeaponEffect)reader.ReadEncodedInt();
                    m_Charges = reader.ReadInt();

                    SaveFlag flags = (SaveFlag)reader.ReadInt();

                    if ( GetSaveFlag( flags, SaveFlag.DamageLevel ) )
                    {
                        m_DamageLevel = (WeaponDamageLevel)reader.ReadInt();

                        if ( m_DamageLevel > WeaponDamageLevel.Vanq )
                            m_DamageLevel = WeaponDamageLevel.Ruin;
                    }

                    if ( GetSaveFlag( flags, SaveFlag.AccuracyLevel ) )
                    {
                        m_AccuracyLevel = (WeaponAccuracyLevel)reader.ReadInt();

                        if ( m_AccuracyLevel > WeaponAccuracyLevel.Supremely )
                            m_AccuracyLevel = WeaponAccuracyLevel.Accurate;
                    }

                    if ( GetSaveFlag( flags, SaveFlag.DurabilityLevel ) )
                    {
                        m_DurabilityLevel = (WeaponDurabilityLevel)reader.ReadInt();

                        if ( m_DurabilityLevel > WeaponDurabilityLevel.Indestructible )
                            m_DurabilityLevel = WeaponDurabilityLevel.Durable;
                    }

                    if ( GetSaveFlag( flags, SaveFlag.Quality ) )
                        m_Quality = (WeaponQuality)reader.ReadInt();
                    else
                        m_Quality = WeaponQuality.Regular;

                    if ( GetSaveFlag( flags, SaveFlag.Hits ) )
                        m_Hits = reader.ReadInt();

                    if ( GetSaveFlag( flags, SaveFlag.MaxHits ) )
                        m_MaxHits = reader.ReadInt();

                    if ( GetSaveFlag( flags, SaveFlag.Slayer ) )
                        m_Slayer = (SlayerName)reader.ReadInt();

                    if ( GetSaveFlag( flags, SaveFlag.Poison ) )
                        m_Poison = Poison.Deserialize( reader );

                    if ( GetSaveFlag( flags, SaveFlag.PoisonCharges ) )
                        m_PoisonCharges = reader.ReadInt();

                    if ( GetSaveFlag( flags, SaveFlag.Crafter ) )
                        m_Crafter = reader.ReadMobile();

                    if ( GetSaveFlag( flags, SaveFlag.Identified ) )
                        m_Identified = ( version >= 6 || reader.ReadBool() );

                    if ( GetSaveFlag( flags, SaveFlag.StrReq ) )
                        m_StrReq = reader.ReadInt();
                    else
                        m_StrReq = -1;

                    if ( GetSaveFlag( flags, SaveFlag.DexReq ) )
                        m_DexReq = reader.ReadInt();
                    else
                        m_DexReq = -1;

                    if ( GetSaveFlag( flags, SaveFlag.IntReq ) )
                        m_IntReq = reader.ReadInt();
                    else
                        m_IntReq = -1;

                    if ( GetSaveFlag( flags, SaveFlag.MinDamage ) )
                        m_MinDamage = reader.ReadInt();
                    else
                        m_MinDamage = -1;

                    if ( GetSaveFlag( flags, SaveFlag.MaxDamage ) )
                        m_MaxDamage = reader.ReadInt();
                    else
                        m_MaxDamage = -1;

                    if ( GetSaveFlag( flags, SaveFlag.HitSound ) )
                        m_HitSound = reader.ReadInt();
                    else
                        m_HitSound = -1;

                    if ( GetSaveFlag( flags, SaveFlag.MissSound ) )
                        m_MissSound = reader.ReadInt();
                    else
                        m_MissSound = -1;

                    if ( GetSaveFlag( flags, SaveFlag.Speed ) )
                    {
                        if ( version < 9 )
                            m_Speed = reader.ReadInt();
                        else
                            m_Speed = reader.ReadInt();
                    }
                    else
                        m_Speed = -1;

                    if ( GetSaveFlag( flags, SaveFlag.MaxRange ) )
                        m_MaxRange = reader.ReadInt();
                    else
                        m_MaxRange = -1;

                    if ( GetSaveFlag( flags, SaveFlag.Skill ) )
                        m_Skill = (SkillName)reader.ReadInt();
                    else
                        m_Skill = (SkillName)(-1);

                    if ( GetSaveFlag( flags, SaveFlag.Type ) )
                        m_Type = (WeaponType)reader.ReadInt();
                    else
                        m_Type = (WeaponType)(-1);

                    if ( GetSaveFlag( flags, SaveFlag.Animation ) )
                        m_Animation = (WeaponAnimation)reader.ReadInt();
                    else
                        m_Animation = (WeaponAnimation)(-1);

                    if ( GetSaveFlag( flags, SaveFlag.Resource ) )
                        m_Resource = (CraftResource)reader.ReadInt();
                    else
                        m_Resource = CraftResource.Iron;

                    if ( GetSaveFlag( flags, SaveFlag.xAttributes ) )
                        m_AosAttributes = new AosAttributes( this, reader );
                    else
                        m_AosAttributes = new AosAttributes( this );

                    if ( GetSaveFlag( flags, SaveFlag.xWeaponAttributes ) )
                        m_AosWeaponAttributes = new AosWeaponAttributes( this, reader );
                    else
                        m_AosWeaponAttributes = new AosWeaponAttributes( this );

                    if ( UseSkillMod && m_AccuracyLevel != WeaponAccuracyLevel.Regular && Parent is Mobile )
                    {
                        m_SkillMod = new DefaultSkillMod( AccuracySkill, true, (int)m_AccuracyLevel * 5 );
                        ((Mobile)Parent).AddSkillMod( m_SkillMod );
                    }

                    if ( version < 7 && m_AosWeaponAttributes.MageWeapon != 0 )
                        m_AosWeaponAttributes.MageWeapon = 30 - m_AosWeaponAttributes.MageWeapon;

                    if ( Core.AOS && m_AosWeaponAttributes.MageWeapon != 0 && m_AosWeaponAttributes.MageWeapon != 30 && Parent is Mobile )
                    {
                        m_MageMod = new DefaultSkillMod( SkillName.Magery, true, -30 + m_AosWeaponAttributes.MageWeapon );
                        ((Mobile)Parent).AddSkillMod( m_MageMod );
                    }

                    if ( GetSaveFlag( flags, SaveFlag.PlayerConstructed ) )
                        m_PlayerConstructed = true;

                    if( GetSaveFlag( flags, SaveFlag.SkillBonuses ) )
                        m_AosSkillBonuses = new AosSkillBonuses( this, reader );
                    else
                        m_AosSkillBonuses = new AosSkillBonuses( this );

                    if( GetSaveFlag( flags, SaveFlag.Slayer2 ) )
                        m_Slayer2 = (SlayerName)reader.ReadInt();

                    if( GetSaveFlag( flags, SaveFlag.ElementalDamages ) )
                        m_AosElementDamages = new AosElementAttributes( this, reader );
                    else
                        m_AosElementDamages = new AosElementAttributes( this );

                    if( GetSaveFlag( flags, SaveFlag.EngravedText ) )
                        m_EngravedText = reader.ReadString();

                    break;
                }
                case 4:
                {
                    m_Slayer = (SlayerName)reader.ReadInt();

                    goto case 3;
                }
                case 3:
                {
                    m_StrReq = reader.ReadInt();
                    m_DexReq = reader.ReadInt();
                    m_IntReq = reader.ReadInt();

                    goto case 2;
                }
                case 2:
                {
                    m_Identified = reader.ReadBool();

                    goto case 1;
                }
                case 1:
                {
                    m_MaxRange = reader.ReadInt();

                    goto case 0;
                }
                case 0:
                {
                    if ( version == 0 )
                        m_MaxRange = 1; // default

                    if ( version < 5 )
                    {
                        m_Resource = CraftResource.Iron;
                        m_AosAttributes = new AosAttributes( this );
                        m_AosWeaponAttributes = new AosWeaponAttributes( this );
                        m_AosElementDamages = new AosElementAttributes( this );
                        m_AosSkillBonuses = new AosSkillBonuses( this );
                    }

                    m_MinDamage = reader.ReadInt();
                    m_MaxDamage = reader.ReadInt();

                    m_Speed = reader.ReadInt();

                    m_HitSound = reader.ReadInt();
                    m_MissSound = reader.ReadInt();

                    m_Skill = (SkillName)reader.ReadInt();
                    m_Type = (WeaponType)reader.ReadInt();
                    m_Animation = (WeaponAnimation)reader.ReadInt();
                    m_DamageLevel = (WeaponDamageLevel)reader.ReadInt();
                    m_AccuracyLevel = (WeaponAccuracyLevel)reader.ReadInt();
                    m_DurabilityLevel = (WeaponDurabilityLevel)reader.ReadInt();
                    m_Quality = (WeaponQuality)reader.ReadInt();

                    m_Crafter = reader.ReadMobile();

                    m_Poison = Poison.Deserialize( reader );
                    m_PoisonCharges = reader.ReadInt();

                    if ( m_StrReq == OldStrengthReq )
                        m_StrReq = -1;

                    if ( m_DexReq == OldDexterityReq )
                        m_DexReq = -1;

                    if ( m_IntReq == OldIntelligenceReq )
                        m_IntReq = -1;

                    if ( m_MinDamage == OldMinDamage )
                        m_MinDamage = -1;

                    if ( m_MaxDamage == OldMaxDamage )
                        m_MaxDamage = -1;

                    if ( m_HitSound == OldHitSound )
                        m_HitSound = -1;

                    if ( m_MissSound == OldMissSound )
                        m_MissSound = -1;

                    if ( m_Speed == OldSpeed )
                        m_Speed = -1;

                    if ( m_MaxRange == OldMaxRange )
                        m_MaxRange = -1;

                    if ( m_Skill == OldSkill )
                        m_Skill = (SkillName)(-1);

                    if ( m_Type == OldType )
                        m_Type = (WeaponType)(-1);

                    if ( m_Animation == OldAnimation )
                        m_Animation = (WeaponAnimation)(-1);

                    if ( UseSkillMod && m_AccuracyLevel != WeaponAccuracyLevel.Regular && Parent is Mobile )
                    {
                        m_SkillMod = new DefaultSkillMod( AccuracySkill, true, (int)m_AccuracyLevel * 5);
                        ((Mobile)Parent).AddSkillMod( m_SkillMod );
                    }

                    break;
                }
            }

            if ( Core.AOS && Parent is Mobile )
                m_AosSkillBonuses.AddTo( (Mobile)Parent );

            int strBonus = m_AosAttributes.BonusStr;
            int dexBonus = m_AosAttributes.BonusDex;
            int intBonus = m_AosAttributes.BonusInt;

            if ( this.Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0) )
            {
                Mobile m = (Mobile)this.Parent;

                string modName = this.Serial.ToString();

                if ( strBonus != 0 )
                    m.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) );

                if ( dexBonus != 0 )
                    m.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) );

                if ( intBonus != 0 )
                    m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) );
            }

            if ( Parent is Mobile )
                ((Mobile)Parent).CheckStatTimers();

            if ( m_Hits <= 0 && m_MaxHits <= 0 )
            {
                m_Hits = m_MaxHits = Utility.RandomMinMax( InitMinHits, InitMaxHits );
            }

            if ( version < 6 )
                m_PlayerConstructed = true; // we don't know, so, assume it's crafted
        }
Exemplo n.º 27
0
        public object DeserializeObject(GenericReader reader)
        {
            object        output        = null;
            XmlObjectType xmlObjectType = (XmlObjectType)reader.ReadInt();

            if (xmlObjectType == XmlObjectType.Mobile)
            {
                output = reader.ReadMobile();
            }
            else if (xmlObjectType == XmlObjectType.Item)
            {
                output = reader.ReadItem();
            }
            else if (xmlObjectType == XmlObjectType.MobileList)
            {
                output = reader.ReadStrongMobileList();
            }
            else if (xmlObjectType == XmlObjectType.ItemList)
            {
                output = reader.ReadStrongItemList();
            }
            else if (xmlObjectType == XmlObjectType.ArrayList)
            {
                int       elements = reader.ReadInt();
                ArrayList list     = new ArrayList(elements);
                for (int i = 0; i < elements; i++)
                {
                    list.Add(DeserializeObject(reader));
                }
                output = list;
            }
            else if (xmlObjectType == XmlObjectType.DateTime)
            {
                output = reader.ReadDateTime();
            }
            else if (xmlObjectType == XmlObjectType.DateTimeOffset)
            {
                output = reader.ReadDateTimeOffset();
            }
            else if (xmlObjectType == XmlObjectType.BaseGuild)
            {
                output = reader.ReadGuild();
            }
            else if (xmlObjectType == XmlObjectType.IPAddress)
            {
                output = reader.ReadIPAddress();
            }
            else if (xmlObjectType == XmlObjectType.Map)
            {
                output = reader.ReadMap();
            }
            else if (xmlObjectType == XmlObjectType.Point3D)
            {
                output = reader.ReadPoint3D();
            }
            else if (xmlObjectType == XmlObjectType.Point2D)
            {
                output = reader.ReadPoint2D();
            }
            else if (xmlObjectType == XmlObjectType.TimeSpan)
            {
                output = reader.ReadTimeSpan();
            }
            else if (xmlObjectType == XmlObjectType.Rectangle2D)
            {
                output = reader.ReadRect2D();
            }
            else if (xmlObjectType == XmlObjectType.Rectangle3D)
            {
                output = reader.ReadRect3D();
            }
            else if (xmlObjectType == XmlObjectType.Double)
            {
                output = reader.ReadDouble();
            }
            else if (xmlObjectType == XmlObjectType.Integer)
            {
                output = reader.ReadInt();
            }
            else if (xmlObjectType == XmlObjectType.Boolean)
            {
                output = reader.ReadBool();
            }
            else if (xmlObjectType == XmlObjectType.UInt64)
            {
                output = reader.ReadULong();
            }
            else if (xmlObjectType == XmlObjectType.String)
            {
                output = reader.ReadString();
            }
            else if (xmlObjectType == XmlObjectType.Type)
            {
                output = UberScriptFunctions.Methods.TYPE(null, reader.ReadString());
            }
            else if (xmlObjectType == XmlObjectType.Other)
            {
                LoggingCustom.Log(
                    "ERROR_Uberscript.txt",
                    DateTime.Now + ": xmlobject: " + Name + " attached to " + AttachedTo +
                    " with data of type other was deserialized");
            }
            return(output);
        }
Exemplo n.º 28
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 12:
            {
                if (reader.ReadBool())
                {
                    m_RestoreEquip = reader.ReadStrongItemList();
                }

                goto case 11;
            }

            case 11:
            {
                // Version 11, we move all bools to a CorpseFlag
                m_Flags = (CorpseFlag)reader.ReadInt();

                m_TimeOfDeath = reader.ReadDeltaTime();

                int count = reader.ReadInt();

                for (int i = 0; i < count; ++i)
                {
                    Item item = reader.ReadItem();

                    if (reader.ReadBool())
                    {
                        SetRestoreInfo(item, reader.ReadPoint3D());
                    }
                    else if (item != null)
                    {
                        SetRestoreInfo(item, item.Location);
                    }
                }

                if (reader.ReadBool())
                {
                    BeginDecay(reader.ReadDeltaTime() - DateTime.Now);
                }

                m_Looters = reader.ReadStrongMobileList();
                m_Killer  = reader.ReadMobile();

                m_Aggressors = reader.ReadStrongMobileList();
                m_Owner      = reader.ReadMobile();

                m_CorpseName = reader.ReadString();

                m_AccessLevel = (AccessLevel)reader.ReadInt();
                reader.ReadInt();                         // guild reserve
                m_Kills = reader.ReadInt();

                m_EquipItems = reader.ReadStrongItemList();
                break;
            }

            case 10:
            {
                m_TimeOfDeath = reader.ReadDeltaTime();

                goto case 9;
            }

            case 9:
            {
                int count = reader.ReadInt();

                for (int i = 0; i < count; ++i)
                {
                    Item item = reader.ReadItem();

                    if (reader.ReadBool())
                    {
                        SetRestoreInfo(item, reader.ReadPoint3D());
                    }
                    else if (item != null)
                    {
                        SetRestoreInfo(item, item.Location);
                    }
                }

                goto case 8;
            }

            case 8:
            {
                SetFlag(CorpseFlag.VisitedByTaxidermist, reader.ReadBool());

                goto case 7;
            }

            case 7:
            {
                if (reader.ReadBool())
                {
                    BeginDecay(reader.ReadDeltaTime() - DateTime.Now);
                }

                goto case 6;
            }

            case 6:
            {
                m_Looters = reader.ReadStrongMobileList();
                m_Killer  = reader.ReadMobile();

                goto case 5;
            }

            case 5:
            {
                SetFlag(CorpseFlag.Carved, reader.ReadBool());

                goto case 4;
            }

            case 4:
            {
                m_Aggressors = reader.ReadStrongMobileList();

                goto case 3;
            }

            case 3:
            {
                m_Owner = reader.ReadMobile();

                goto case 2;
            }

            case 2:
            {
                SetFlag(CorpseFlag.NoBones, reader.ReadBool());

                goto case 1;
            }

            case 1:
            {
                m_CorpseName = reader.ReadString();

                goto case 0;
            }

            case 0:
            {
                if (version < 10)
                {
                    m_TimeOfDeath = DateTime.Now;
                }

                if (version < 7)
                {
                    BeginDecay(m_DefaultDecayTime);
                }

                if (version < 6)
                {
                    m_Looters = new List <Mobile>();
                }

                if (version < 4)
                {
                    m_Aggressors = new List <Mobile>();
                }

                m_AccessLevel = (AccessLevel)reader.ReadInt();
                reader.ReadInt();                         // guild reserve
                m_Kills = reader.ReadInt();
                SetFlag(CorpseFlag.Criminal, reader.ReadBool());

                m_EquipItems = reader.ReadStrongItemList();

                break;
            }
            }
        }
Exemplo n.º 29
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                case 8:
                    {
                        m_IDList = reader.ReadStrongMobileList();
                        goto case 5;
                    }
                case 7:
                case 6:
                case 5:
                {
                    SaveFlag flags = (SaveFlag)reader.ReadEncodedInt();

                    if ( GetSaveFlag( flags, SaveFlag.Attributes ) )
                        m_AosAttributes = new AosAttributes( this, reader );
                    else
                        m_AosAttributes = new AosAttributes( this );

                    if ( GetSaveFlag( flags, SaveFlag.ArmorAttributes ) )
                        m_AosArmorAttributes = new AosArmorAttributes( this, reader );
                    else
                        m_AosArmorAttributes = new AosArmorAttributes( this );

                    if ( GetSaveFlag( flags, SaveFlag.PhysicalBonus ) )
                        m_PhysicalBonus = reader.ReadEncodedInt();

                    if ( GetSaveFlag( flags, SaveFlag.FireBonus ) )
                        m_FireBonus = reader.ReadEncodedInt();

                    if ( GetSaveFlag( flags, SaveFlag.ColdBonus ) )
                        m_ColdBonus = reader.ReadEncodedInt();

                    if ( GetSaveFlag( flags, SaveFlag.PoisonBonus ) )
                        m_PoisonBonus = reader.ReadEncodedInt();

                    if ( GetSaveFlag( flags, SaveFlag.EnergyBonus ) )
                        m_EnergyBonus = reader.ReadEncodedInt();

                    if ( GetSaveFlag( flags, SaveFlag.Identified ) )
                        m_Identified = ( version >= 7 || reader.ReadBool() );

                    if ( GetSaveFlag( flags, SaveFlag.MaxHitPoints ) )
                        m_MaxHitPoints = reader.ReadEncodedInt();

                    if ( GetSaveFlag( flags, SaveFlag.HitPoints ) )
                        m_HitPoints = reader.ReadEncodedInt();

                    if ( GetSaveFlag( flags, SaveFlag.Crafter ) )
                        m_Crafter = reader.ReadMobile();

                    if ( GetSaveFlag( flags, SaveFlag.Quality ) )
                        m_Quality = (ArmorQuality)reader.ReadEncodedInt();
                    else
                        m_Quality = ArmorQuality.Regular;

                    if ( version == 5 && m_Quality == ArmorQuality.Low )
                        m_Quality = ArmorQuality.Regular;

                    if ( GetSaveFlag( flags, SaveFlag.Durability ) )
                    {
                        m_Durability = (ArmorDurabilityLevel)reader.ReadEncodedInt();

                        if ( m_Durability > ArmorDurabilityLevel.Indestructible )
                            m_Durability = ArmorDurabilityLevel.Durable;
                    }

                    if ( GetSaveFlag( flags, SaveFlag.Protection ) )
                    {
                        m_Protection = (ArmorProtectionLevel)reader.ReadEncodedInt();

                        if ( m_Protection > ArmorProtectionLevel.Invulnerability )
                            m_Protection = ArmorProtectionLevel.Defense;
                    }

                    if ( GetSaveFlag( flags, SaveFlag.Resource ) )
                        m_Resource = (CraftResource)reader.ReadEncodedInt();
                    else
                        m_Resource = DefaultResource;

                    if ( m_Resource == CraftResource.None )
                        m_Resource = DefaultResource;

                    if ( GetSaveFlag( flags, SaveFlag.BaseArmor ) )
                        m_ArmorBase = reader.ReadEncodedInt();
                    else
                        m_ArmorBase = -1;

                    if ( GetSaveFlag( flags, SaveFlag.StrBonus ) )
                        m_StrBonus = reader.ReadEncodedInt();
                    else
                        m_StrBonus = -1;

                    if ( GetSaveFlag( flags, SaveFlag.DexBonus ) )
                        m_DexBonus = reader.ReadEncodedInt();
                    else
                        m_DexBonus = -1;

                    if ( GetSaveFlag( flags, SaveFlag.IntBonus ) )
                        m_IntBonus = reader.ReadEncodedInt();
                    else
                        m_IntBonus = -1;

                    if ( GetSaveFlag( flags, SaveFlag.StrReq ) )
                        m_StrReq = reader.ReadEncodedInt();
                    else
                        m_StrReq = -1;

                    if ( GetSaveFlag( flags, SaveFlag.DexReq ) )
                        m_DexReq = reader.ReadEncodedInt();
                    else
                        m_DexReq = -1;

                    if ( GetSaveFlag( flags, SaveFlag.IntReq ) )
                        m_IntReq = reader.ReadEncodedInt();
                    else
                        m_IntReq = -1;

                    if ( GetSaveFlag( flags, SaveFlag.MedAllowance ) )
                        m_Meditate = (AMA)reader.ReadEncodedInt();
                    else
                        m_Meditate = (AMA)(-1);

                    if ( GetSaveFlag( flags, SaveFlag.SkillBonuses ) )
                        m_AosSkillBonuses = new AosSkillBonuses( this, reader );

                    if ( GetSaveFlag( flags, SaveFlag.PlayerConstructed ) )
                        m_PlayerConstructed = true;

                    break;
                }
                case 4:
                {
                    m_AosAttributes = new AosAttributes( this, reader );
                    m_AosArmorAttributes = new AosArmorAttributes( this, reader );
                    goto case 3;
                }
                case 3:
                {
                    m_PhysicalBonus = reader.ReadInt();
                    m_FireBonus = reader.ReadInt();
                    m_ColdBonus = reader.ReadInt();
                    m_PoisonBonus = reader.ReadInt();
                    m_EnergyBonus = reader.ReadInt();
                    goto case 2;
                }
                case 2:
                case 1:
                {
                    m_Identified = reader.ReadBool();
                    goto case 0;
                }
                case 0:
                {
                    m_ArmorBase = reader.ReadInt();
                    m_MaxHitPoints = reader.ReadInt();
                    m_HitPoints = reader.ReadInt();
                    m_Crafter = reader.ReadMobile();
                    m_Quality = (ArmorQuality)reader.ReadInt();
                    m_Durability = (ArmorDurabilityLevel)reader.ReadInt();
                    m_Protection = (ArmorProtectionLevel)reader.ReadInt();

                    AMT mat = (AMT)reader.ReadInt();

                    if ( m_ArmorBase == RevertArmorBase )
                        m_ArmorBase = -1;

                    /*m_BodyPos = (ArmorBodyType)*/reader.ReadInt();

                    if ( version < 4 )
                    {
                        m_AosAttributes = new AosAttributes( this );
                        m_AosArmorAttributes = new AosArmorAttributes( this );
                    }

                    if ( version < 3 && m_Quality == ArmorQuality.Exceptional )
                        DistributeBonuses( 6 );

                    if ( version >= 2 )
                    {
                        m_Resource = (CraftResource)reader.ReadInt();
                    }
                    else
                    {
                        OreInfo info;

                        switch ( reader.ReadInt() )
                        {
                            default:
                            case 0: info = OreInfo.Iron; break;
                            case 1: info = OreInfo.DullCopper; break;
                            case 2: info = OreInfo.ShadowIron; break;
                            case 3: info = OreInfo.Copper; break;
                            case 4: info = OreInfo.Bronze; break;
                            case 5: info = OreInfo.Gold; break;
                            case 6: info = OreInfo.Agapite; break;
                            case 7: info = OreInfo.Verite; break;
                            case 8: info = OreInfo.Valorite; break;
                        }

                        m_Resource = CraftResources.GetFromOreInfo( info, mat );
                    }

                    m_StrBonus = reader.ReadInt();
                    m_DexBonus = reader.ReadInt();
                    m_IntBonus = reader.ReadInt();
                    m_StrReq = reader.ReadInt();
                    m_DexReq = reader.ReadInt();
                    m_IntReq = reader.ReadInt();

                    if ( m_StrBonus == OldStrBonus )
                        m_StrBonus = -1;

                    if ( m_DexBonus == OldDexBonus )
                        m_DexBonus = -1;

                    if ( m_IntBonus == OldIntBonus )
                        m_IntBonus = -1;

                    if ( m_StrReq == OldStrReq )
                        m_StrReq = -1;

                    if ( m_DexReq == OldDexReq )
                        m_DexReq = -1;

                    if ( m_IntReq == OldIntReq )
                        m_IntReq = -1;

                    m_Meditate = (AMA)reader.ReadInt();

                    if ( m_Meditate == OldMedAllowance )
                        m_Meditate = (AMA)(-1);

                    if ( m_Resource == CraftResource.None )
                    {
                        if ( mat == ArmorMaterialType.Studded || mat == ArmorMaterialType.Leather )
                            m_Resource = CraftResource.RegularLeather;
                        else if ( mat == ArmorMaterialType.Spined )
                            m_Resource = CraftResource.SpinedLeather;
                        else if ( mat == ArmorMaterialType.Horned )
                            m_Resource = CraftResource.HornedLeather;
                        else if ( mat == ArmorMaterialType.Barbed )
                            m_Resource = CraftResource.BarbedLeather;
                        else
                            m_Resource = CraftResource.Iron;
                    }

                    if ( m_MaxHitPoints == 0 && m_HitPoints == 0 )
                        m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits );

                    break;
                }
            }

            if ( m_AosSkillBonuses == null )
                m_AosSkillBonuses = new AosSkillBonuses( this );

            if ( Core.AOS && Parent is Mobile )
                m_AosSkillBonuses.AddTo( (Mobile)Parent );

            int strBonus = ComputeStatBonus( StatType.Str );
            int dexBonus = ComputeStatBonus( StatType.Dex );
            int intBonus = ComputeStatBonus( StatType.Int );

            if ( Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0) )
            {
                Mobile m = (Mobile)Parent;

                string modName = Serial.ToString();

                if ( strBonus != 0 )
                    m.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) );

                if ( dexBonus != 0 )
                    m.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) );

                if ( intBonus != 0 )
                    m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) );
            }

            if ( Parent is Mobile )
                ((Mobile)Parent).CheckStatTimers();

            if ( version < 7 )
                m_PlayerConstructed = true; // we don't know, so, assume it's crafted
        }
Exemplo n.º 30
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            if ( version >= 16 && version <= 18 )
                reader.ReadItem(); // spawner

            m_CurrentAI = (AIType) reader.ReadInt();
            m_DefaultAI = (AIType) reader.ReadInt();

            m_iRangePerception = reader.ReadInt();
            m_iRangeFight = reader.ReadInt();

            m_iTeam = reader.ReadInt();

            m_dActiveSpeed = reader.ReadDouble();
            m_dPassiveSpeed = reader.ReadDouble();
            m_dCurrentSpeed = reader.ReadDouble();

            double activeSpeed = m_dActiveSpeed;
            double passiveSpeed = m_dPassiveSpeed;

            SpeedInfo.GetSpeeds( this, ref activeSpeed, ref passiveSpeed );

            bool isStandardActive = false;
            for ( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i )
            {
                isStandardActive = ( m_dActiveSpeed == m_StandardActiveSpeeds[i] );
            }

            bool isStandardPassive = false;
            for ( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i )
            {
                isStandardPassive = ( m_dPassiveSpeed == m_StandardPassiveSpeeds[i] );
            }

            if ( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed )
            {
                m_dCurrentSpeed = activeSpeed;
            }
            else if ( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed )
            {
                m_dCurrentSpeed = passiveSpeed;
            }

            if ( isStandardActive )
            {
                m_dActiveSpeed = activeSpeed;
            }

            if ( isStandardPassive )
            {
                m_dPassiveSpeed = passiveSpeed;
            }

            if ( m_iRangePerception == OldRangePerception )
            {
                m_iRangePerception = DefaultRangePerception;
            }

            m_pHome.X = reader.ReadInt();
            m_pHome.Y = reader.ReadInt();
            m_pHome.Z = reader.ReadInt();

            if ( version >= 1 )
            {
                m_iRangeHome = reader.ReadInt();

                if ( version < 25 )
                {
                    int i, iCount;

                    iCount = reader.ReadInt();
                    for ( i = 0; i < iCount; i++ )
                        reader.ReadString();

                    iCount = reader.ReadInt();
                    for ( i = 0; i < iCount; i++ )
                        reader.ReadString();
                }
            }
            else
            {
                m_iRangeHome = 0;
            }

            if ( version >= 2 )
            {
                m_FightMode = (FightMode) reader.ReadInt();

                m_bControlled = reader.ReadBool();
                m_ControlMaster = reader.ReadMobile();
                m_ControlTarget = reader.ReadMobile();
                m_ControlDest = reader.ReadPoint3D();
                m_ControlOrder = (OrderType) reader.ReadInt();

                m_dMinTameSkill = reader.ReadDouble();

                if ( version < 9 )
                    reader.ReadDouble();

                m_bTamable = reader.ReadBool();
                m_bSummoned = reader.ReadBool();

                if ( m_bSummoned )
                {
                    m_SummonEnd = reader.ReadDeltaTime();
                    new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.Now ).Start();
                }

                m_iControlSlots = reader.ReadInt();
            }
            else
            {
                m_FightMode = FightMode.Closest;

                m_bControlled = false;
                m_ControlMaster = null;
                m_ControlTarget = null;
                m_ControlOrder = OrderType.None;
            }

            if ( version >= 3 )
                m_Loyalty = (PetLoyalty) reader.ReadInt();
            else
                m_Loyalty = PetLoyalty.WonderfullyHappy;

            if ( version >= 4 )
                m_CurrentWayPoint = reader.ReadItem() as WayPoint;

            if ( version >= 5 )
                m_SummonMaster = reader.ReadMobile();

            if ( version >= 6 )
            {
                m_HitsMax = reader.ReadInt();
                m_StamMax = reader.ReadInt();
                m_ManaMax = reader.ReadInt();
                m_DamageMin = reader.ReadInt();
                m_DamageMax = reader.ReadInt();
            }

            if ( version >= 7 )
            {
                m_PhysicalResistance = reader.ReadInt();
                m_PhysicalDamage = reader.ReadInt();

                m_FireResistance = reader.ReadInt();
                m_FireDamage = reader.ReadInt();

                m_ColdResistance = reader.ReadInt();
                m_ColdDamage = reader.ReadInt();

                m_PoisonResistance = reader.ReadInt();
                m_PoisonDamage = reader.ReadInt();

                m_EnergyResistance = reader.ReadInt();
                m_EnergyDamage = reader.ReadInt();
            }

            if ( version >= 8 )
                m_Owners = reader.ReadStrongMobileList();
            else
                m_Owners = new List<Mobile>();

            if ( version >= 10 )
            {
                m_IsDeadPet = reader.ReadBool();
                m_IsBonded = reader.ReadBool();
                m_BondingBegin = reader.ReadDateTime();
                m_OwnerAbandonTime = reader.ReadDateTime();
            }

            if ( version >= 11 )
                m_HasGeneratedLoot = reader.ReadBool();
            else
                m_HasGeneratedLoot = true;

            if ( version >= 12 )
            {
                m_Paragon = reader.ReadBool();
                m_IsChampionMonster = reader.ReadBool();
            }
            else
            {
                m_Paragon = false;
                m_IsChampionMonster = false;
            }

            if ( version >= 13 && reader.ReadBool() )
                m_Friends = reader.ReadStrongMobileList();
            else if ( version < 13 && m_ControlOrder >= OrderType.Unfriend )
                ++m_ControlOrder;

            if ( version >= 14 )
                m_SpawnLevel = reader.ReadInt();
            else
                m_SpawnLevel = 0;

            if ( version >= 15 )
                m_ChampionType = (ChampionSpawnType) reader.ReadInt();

            if ( version >= 17 )
                m_StolenFrom = reader.ReadBool();

            if ( version >= 18 )
            {
                int count = reader.ReadInt();

                for ( int i = 0; i < count; i++ )
                {
                    Item rummaged = reader.ReadItem();
                    Mobile owner = reader.ReadMobile();

                    if ( rummaged != null && owner != null )
                        m_RummagedItems.Add( rummaged, owner );
                }
            }

            if ( version >= 20 )
            {
                m_IsMinichampMonster = reader.ReadBool();
                m_MinichampType = (MiniChampType) reader.ReadInt();
            }

            if ( version >= 21 )
            {
                m_NextTastyTreat = reader.ReadDateTime();
            }

            if ( version >= 22 )
            {
                m_Petrified = reader.ReadBool();

                if ( m_Petrified )
                {
                    m_StatueAnimation = reader.ReadInt();
                    m_StatueFrames = reader.ReadInt();

                    Frozen = true;
                    HueMod = 2401;
                }
            }

            if ( version >= 23 )
            {
                m_NextArmorEssence = reader.ReadDateTime();
            }

            if ( version >= 24 )
            {
                m_IsGolem = reader.ReadBool();
            }
            else
            {
                m_IsGolem = this is Golem;
            }

            CheckStatTimers();

            ChangeAIType( m_CurrentAI );

            AddFollowers();

            if ( IsAnimatedDead )
                Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this );

            if ( Controlled )
                Skills.Cap = 15000;
        }
Exemplo n.º 31
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch ( version )
            {
                case 2:
                case 1:
                    if (reader.ReadBool())
                        this.m_Helpers = reader.ReadStrongMobileList<BaseCreature>();
                    goto case 0;
                case 0:
                    this.m_Peerless = reader.ReadMobile() as BasePeerless;
                    this.m_BossLocation = reader.ReadPoint3D();
                    this.m_TeleportDest = reader.ReadPoint3D();
                    this.m_ExitDest = reader.ReadPoint3D();

                    this.m_Deadline = reader.ReadDateTime();

                    // deserialize master keys
                    this.m_MasterKeys = reader.ReadStrongItemList();

                    // deserialize fightes
                    this.m_Fighters = reader.ReadStrongMobileList();

                    // deserialize pets
                    this.m_Pets = new Dictionary<Mobile, List<Mobile>>();
                    int count = reader.ReadInt();

                    for (int i = 0; i < count; i ++)
                        this.m_Pets.Add(reader.ReadMobile(), reader.ReadStrongMobileList());

                    if (version < 2)
                        reader.ReadBool();

                    break;
            }

            this.FinishSequence();
        }
Exemplo n.º 32
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();
            reader.ReadInt();
            AffectedMobiles = reader.ReadStrongMobileList();

            for (int i = 0; i < AffectedMobiles.Count; i++)
                if (AffectedMobiles[i] != null)
                    AffectedMobiles.Clear();
        }
Exemplo n.º 33
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 3:
            {
                m_IDList = reader.ReadStrongMobileList();
                goto case 2;
            }

            case 2:
            {
                m_Resource    = (CraftResource)reader.ReadEncodedInt();
                m_GemType     = (GemType)reader.ReadEncodedInt();
                m_Identified  = reader.ReadBool();
                m_Charges     = reader.ReadInt();
                m_JewelEffect = (JewelEffect)reader.ReadEncodedInt();


                goto case 1;
            }

            case 1:
            {
                m_AosAttributes   = new AosAttributes(this, reader);
                m_AosResistances  = new AosElementAttributes(this, reader);
                m_AosSkillBonuses = new AosSkillBonuses(this, reader);

                if (Core.AOS && Parent is Mobile)
                {
                    m_AosSkillBonuses.AddTo((Mobile)Parent);
                }

                int strBonus = m_AosAttributes.BonusStr;
                int dexBonus = m_AosAttributes.BonusDex;
                int intBonus = m_AosAttributes.BonusInt;

                if (Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0))
                {
                    Mobile m = (Mobile)Parent;

                    string modName = Serial.ToString();

                    if (strBonus != 0)
                    {
                        m.AddStatMod(new StatMod(StatType.Str, modName + "Str", strBonus, TimeSpan.Zero));
                    }

                    if (dexBonus != 0)
                    {
                        m.AddStatMod(new StatMod(StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero));
                    }

                    if (intBonus != 0)
                    {
                        m.AddStatMod(new StatMod(StatType.Int, modName + "Int", intBonus, TimeSpan.Zero));
                    }
                }

                if (Parent is Mobile)
                {
                    ((Mobile)Parent).CheckStatTimers();
                }

                break;
            }

            case 0:
            {
                m_AosAttributes   = new AosAttributes(this);
                m_AosResistances  = new AosElementAttributes(this);
                m_AosSkillBonuses = new AosSkillBonuses(this);

                break;
            }
            }

            if (version < 2)
            {
                m_Resource = CraftResource.Iron;
                m_GemType  = GemType.None;
            }
        }
Exemplo n.º 34
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch ( version )
            {
                case 0:
                    {
                        this.m_TrueForm = reader.ReadBool();
                        this.m_GateItem = reader.ReadItem();
                        this.m_Tentacles = reader.ReadStrongMobileList<HarrowerTentacles>();

                        this.m_Timer = new TeleportTimer(this);
                        this.m_Timer.Start();

                        break;
                    }
            }
        }
Exemplo n.º 35
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch ( version )
            {
                case 0:
                    {
                        this.m_Items = reader.ReadStrongItemList();
                        this.m_Mobiles = reader.ReadStrongMobileList();
                        this.m_DecayTime = reader.ReadDeltaTime();

                        this.RefreshDecay(false);

                        break;
                    }
            }
        }
Exemplo n.º 36
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			m_CurrentAI = (AIType)reader.ReadInt();
			m_DefaultAI = (AIType)reader.ReadInt();

			m_iRangePerception = reader.ReadInt();
			m_iRangeFight = reader.ReadInt();

			m_iTeam = reader.ReadInt();

			m_dActiveSpeed = reader.ReadDouble();
			m_dPassiveSpeed = reader.ReadDouble();
			m_dCurrentSpeed = reader.ReadDouble();

			if ( m_iRangePerception == OldRangePerception )
				m_iRangePerception = DefaultRangePerception;

			m_Home.X = reader.ReadInt();
			m_Home.Y = reader.ReadInt();
			m_Home.Z = reader.ReadInt();
            

			if ( version >= 1 )
			{
				m_iRangeHome = reader.ReadInt();

				int i, iCount;

				iCount = reader.ReadInt();
				for ( i=0; i< iCount; i++ )
				{
					string str = reader.ReadString();
					Type type = Type.GetType( str );

					if ( type != null )
					{
						m_arSpellAttack.Add( type );
					}
				}

				iCount = reader.ReadInt();
				for ( i=0; i< iCount; i++ )
				{
					string str = reader.ReadString();
					Type type = Type.GetType( str );

					if ( type != null )
					{
						m_arSpellDefense.Add( type );
					}
				}
			}
			else
			{
				m_iRangeHome = 0;
			}

			if ( version >= 2 )
			{
				m_FightMode = ( FightMode )reader.ReadInt();

				m_bControlled = reader.ReadBool();
				m_ControlMaster = reader.ReadMobile();
				m_ControlTarget = reader.ReadMobile();
				m_ControlDest = reader.ReadPoint3D();
				m_ControlOrder = (OrderType) reader.ReadInt();

				m_dMinTameSkill = reader.ReadDouble();

				if ( version < 9 )
					reader.ReadDouble();

				m_bTamable = reader.ReadBool();
				m_bSummoned = reader.ReadBool();

				if ( m_bSummoned )
				{
					m_SummonEnd = reader.ReadDeltaTime();
					new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.UtcNow ).Start();
				}

				m_iControlSlots = reader.ReadInt();
			}
			else
			{
				m_FightMode = FightMode.Closest;

				m_bControlled = false;
				m_ControlMaster = null;
				m_ControlTarget = null;
				m_ControlOrder = OrderType.None;
			}

			if ( version >= 3 )
				m_Loyalty = reader.ReadInt();
			else
				m_Loyalty = MaxLoyalty; // Wonderfully Happy

			if ( version >= 4 )
				m_CurrentWayPoint = reader.ReadItem() as WayPoint;

			if ( version >= 5 )
				m_SummonMaster = reader.ReadMobile();

			if ( version >= 6 )
			{
				m_HitsMax = reader.ReadInt();
				m_StamMax = reader.ReadInt();
				m_ManaMax = reader.ReadInt();
				m_DamageMin = reader.ReadInt();
				m_DamageMax = reader.ReadInt();
			}

			if ( version >= 7 )
			{
				m_PhysicalResistance = reader.ReadInt();
				m_PhysicalDamage = reader.ReadInt();

				m_FireResistance = reader.ReadInt();
				m_FireDamage = reader.ReadInt();

				m_ColdResistance = reader.ReadInt();
				m_ColdDamage = reader.ReadInt();

				m_PoisonResistance = reader.ReadInt();
				m_PoisonDamage = reader.ReadInt();

				m_EnergyResistance = reader.ReadInt();
				m_EnergyDamage = reader.ReadInt();
			}

			if ( version >= 8 )
				m_Owners = reader.ReadStrongMobileList();
			else
				m_Owners = new List<Mobile>();


			if ( version >= 10 )
			{
				m_IsDeadPet = reader.ReadBool();
				m_IsBonded = reader.ReadBool();
				m_BondingBegin = reader.ReadDateTime();
				m_OwnerAbandonTime = reader.ReadDateTime();
			}

			if ( version >= 11 )
				m_HasGeneratedLoot = reader.ReadBool();
			else
				m_HasGeneratedLoot = true;

			if ( version >= 12 )
			{
				m_Paragon = reader.ReadBool();
				if ( m_Paragon )
					SolidHueOverride = Paragon.Hue;
			}
			else
				m_Paragon = false;

			if ( version >= 13 && reader.ReadBool() )
				m_Friends = reader.ReadStrongMobileList();
			else if ( version < 13 && m_ControlOrder >= OrderType.Unfriend )
				++m_ControlOrder;

			if ( version < 16 && Loyalty != MaxLoyalty )
				Loyalty *= 10;

			double activeSpeed = m_dActiveSpeed;
			double passiveSpeed = m_dPassiveSpeed;

			SpeedInfo.GetSpeeds( this, ref activeSpeed, ref passiveSpeed );

			bool isStandardActive = false;
			for ( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i )
				isStandardActive = ( m_dActiveSpeed == m_StandardActiveSpeeds[i] );

			bool isStandardPassive = false;
			for ( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i )
				isStandardPassive = ( m_dPassiveSpeed == m_StandardPassiveSpeeds[i] );

			if ( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed )
				m_dCurrentSpeed = activeSpeed;
			else if ( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed )
				m_dCurrentSpeed = passiveSpeed;

			if ( isStandardActive && !m_Paragon && !m_Corrupt)
				m_dActiveSpeed = activeSpeed;

            if (isStandardPassive && !m_Paragon && !m_Corrupt)
				m_dPassiveSpeed = passiveSpeed;

			if ( version >= 14 )
			{
				m_RemoveIfUntamed = reader.ReadBool();
				m_RemoveStep = reader.ReadInt();
			}

			TimeSpan deleteTime = TimeSpan.Zero;

			if ( version >= 17 )
				deleteTime = reader.ReadTimeSpan();

			if ( ( deleteTime > TimeSpan.Zero || LastOwner != null ) && !Controlled && !IsStabled )
			{
				if ( deleteTime == TimeSpan.Zero )
					deleteTime = TimeSpan.FromDays( 3.0 );

				m_DeleteTimer = new DeleteTimer( this, deleteTime );
				m_DeleteTimer.Start();
			}

			if ( version >= 18 )
				m_StabledDate = reader.ReadDeltaTime();
/*
			if( version <= 14 && m_Paragon && Hue == 0x31 )
			{
				Hue = Paragon.Hue; //Paragon hue fixed, should now be 0x501.
			}
*/
			if ( version >= 19 )
				m_HomeMap = reader.ReadMap();

			if ( version >= 20 )
				m_CorpseNameOverride = reader.ReadString();

            if (version == 21 || version == 22) // NO LONGER USED!
            {
                m_KillCriminals = reader.ReadBool();
                m_KillMurderers = reader.ReadBool();
                m_InnocentDefault = reader.ReadBool();
                m_Pseu_KeepKillCredit = reader.ReadBool();
                m_PoisonCustomChance = reader.ReadDouble();
                m_PoisonCustomImmune = Poison.GetPoison(reader.ReadInt());
                m_PoisonCustomHit = Poison.GetPoison(reader.ReadInt());
                m_CanBreathCustom = reader.ReadBool();
                m_BreathDamageCustom = reader.ReadInt();
                m_BreathCustomDelay = reader.ReadDouble();
                m_Pseu_SpellDelay = reader.ReadTimeSpan();
                m_BardImmuneCustom = reader.ReadBool();
                m_Pseu_EQPlayerAllowed = reader.ReadBool();
                m_Pseu_AllowFizzle = reader.ReadBool();
                m_Pseu_AllowInterrupts = reader.ReadBool();
                m_Pseu_CanBeHealed = reader.ReadBool();
                m_WeaponDamage = reader.ReadBool();
                m_TakesNormalDamage = reader.ReadBool();
                m_PowerWords = reader.ReadBool();
                m_ClearHandsOnCast = reader.ReadBool();
                m_Pseu_ConsumeReagents = reader.ReadBool();
                m_Pseu_SpellBookRequired = reader.ReadBool();
                m_Speaks = reader.ReadBool();
            }
            if (version == 22) // NO LONGER USED!
            {
                m_FreelyLootable = reader.ReadBool();
                m_AutoDispelCustom = reader.ReadBool();
                m_AutoDispelChanceCustom = reader.ReadDouble();
                m_AlwaysMurdererCustom = reader.ReadBool();
                m_IsScaryToPetsCustom = reader.ReadBool();
            }
            if (version >= 23)
            {
                ExtSaveFlag flags = (ExtSaveFlag)reader.ReadInt();

                if (GetExtSaveFlag(flags, ExtSaveFlag.KillCriminals))
                    m_KillCriminals = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.KillMurderers))
                    m_KillMurderers = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.InnocentDefault))
                    m_InnocentDefault = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_KeepKillCredit))
                    m_Pseu_KeepKillCredit = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.CanBreathCustom))
                    m_CanBreathCustom = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.BardImmuneCustom))
                    m_BardImmuneCustom = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_EQPlayerAllowed))
                    m_Pseu_EQPlayerAllowed = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_AllowFizzle))
                    m_Pseu_AllowFizzle = false;
                if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_AllowInterrupts))
                    m_Pseu_AllowInterrupts = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_CanBeHealed))
                    m_Pseu_CanBeHealed = false;
                if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_CanUseGates))
                    m_Pseu_CanUseGates = false;
                if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_CanUseRecall))
                    m_Pseu_CanUseRecall = false;
                if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_CanAttackInnocents))
                    m_Pseu_CanAttackInnocents = false;
                if (GetExtSaveFlag(flags, ExtSaveFlag.ReduceSpeedWithDamage))
                    m_ReduceSpeedWithDamageCustom = false;
                if (GetExtSaveFlag(flags, ExtSaveFlag.WeaponDamage))
                    m_WeaponDamage = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.TakesNormalDamage))
                    m_TakesNormalDamage = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.PowerWords))
                    m_PowerWords = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.ClearHandsOnCast))
                    m_ClearHandsOnCast = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_ConsumeReagents))
                    m_Pseu_ConsumeReagents = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_SpellBookRequired))
                    m_Pseu_SpellBookRequired = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.Speaks))
                     m_Speaks = false;
                if (GetExtSaveFlag(flags, ExtSaveFlag.FreelyLootable))
                    m_FreelyLootable = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.AutoDispelCustom))
                    m_AutoDispelCustom = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.AlwaysMurdererCustom))
                    m_AlwaysMurdererCustom = true;
                if (GetExtSaveFlag(flags, ExtSaveFlag.IsScaryToPetsCustom))
                    m_IsScaryToPetsCustom = true;

                m_PoisonCustomChance = reader.ReadDouble();
                m_PoisonCustomImmune = Poison.GetPoison(reader.ReadInt());
                m_PoisonCustomHit = Poison.GetPoison(reader.ReadInt());
                m_BreathDamageCustom = reader.ReadInt();
                m_BreathCustomDelay = reader.ReadDouble();
                m_Pseu_SpellDelay = reader.ReadTimeSpan();
                m_AutoDispelChanceCustom = reader.ReadDouble();

                if (version >= 24)
                {
                    if (GetExtSaveFlag(flags, ExtSaveFlag.Account))
                    {
                        string username = reader.ReadString();
                        AccountDeserializateInfos.Add(new AccountDeserializeInfo(this, username));
                    }
                }

                if (version >= 25)
                {
                    if (GetExtSaveFlag(flags, ExtSaveFlag.SkillGainMultiplier))
                        m_SkillGainMultiplier = reader.ReadDouble();
                }

                if (version >= 26)
                {
                    SpecialTitle = reader.ReadString();
                    TitleHue = reader.ReadInt();
                }

                if (version >= 27)
                {
                    Alignment = (Alignment)reader.ReadInt();
                }

                if (version >= 28)
                {
                    m_Corrupt = reader.ReadBool();
                    if (m_Corrupt)
                        SolidHueOverride = HalloweenCorruption.Hue;
                }
                else
                    m_Corrupt = false;
            }

			CheckStatTimers();

			ChangeAIType(m_CurrentAI);

			AddFollowers();
		}
Exemplo n.º 37
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();
            int count;
            bool loadedDynamicDecay = false;

            switch (version)
            {
                case 16:
                {
                    VendorMultiplier = reader.ReadDouble();
                    StorageMultiplier = reader.ReadDouble();

                    goto case 15;
                }
                case 15:
                {
                    int stage = reader.ReadInt();

                    if (stage != -1)
                    {
                        m_CurrentStage = (DecayLevel) stage;
                        m_NextDecayStage = reader.ReadDateTime();
                        loadedDynamicDecay = true;
                    }

                    goto case 14;
                }
                case 14:
                {
                    m_RelativeBanLocation = reader.ReadPoint3D();
                    goto case 13;
                }
                case 13: // removed ban location serialization
                case 12:
                {
                    m_VendorRentalContracts = reader.ReadStrongItemList();
                    m_InternalizedVendors = reader.ReadStrongMobileList();

                    int relocatedCount = reader.ReadEncodedInt();
                    for (int i = 0; i < relocatedCount; i++)
                    {
                        Point3D relLocation = reader.ReadPoint3D();
                        IEntity entity = World.FindEntity(reader.ReadInt());
                        // DO NOT READ ENTITY DIRECTLY, BECAUSE IF IT ISN'T IN THE WORLD (Item or Mobile)
                        // then it creates a new one, which caused a problem previously
                        //IEntity entity = reader.ReadEntity();

                        if (entity != null)
                        {
                            m_RelocatedEntities.Add(new RelocatedEntity(entity, relLocation));
                        }
                    }

                    int inventoryCount = reader.ReadEncodedInt();
                    for (int i = 0; i < inventoryCount; i++)
                    {
                        var inventory = new VendorInventory(this, reader);
                        m_VendorInventories.Add(inventory);
                    }

                    goto case 11;
                }
                case 11:
                {
                    m_LastRefreshed = reader.ReadDateTime();
                    m_RestrictDecay = reader.ReadBool();
                    goto case 10;
                }
                case 10: // just a signal for updates
                case 9:
                {
                    m_Visits = reader.ReadInt();
                    goto case 8;
                }
                case 8:
                {
                    m_Price = reader.ReadInt();
                    goto case 7;
                }
                case 7:
                {
                    m_Access = reader.ReadStrongMobileList();
                    goto case 6;
                }
                case 6:
                {
                    m_BuiltOn = reader.ReadDateTime();
                    m_LastTraded = reader.ReadDateTime();
                    goto case 5;
                }
                case 5: // just removed fields
                case 4:
                {
                    m_Addons = reader.ReadStrongItemList();
                    goto case 3;
                }
                case 3:
                {
                    count = reader.ReadInt();
                    m_Secures = new List<SecureInfo>(count);

                    for (int i = 0; i < count; ++i)
                    {
                        var info = new SecureInfo(reader);

                        if (info.Item != null)
                        {
                            info.Item.IsSecure = true;
                            m_Secures.Add(info);
                        }
                    }

                    goto case 2;
                }
                case 2:
                {
                    m_Public = reader.ReadBool();
                    goto case 1;
                }
                case 1:
                {
                    if (version < 13)
                    {
                        reader.ReadPoint3D(); // house ban location
                    }
                    goto case 0;
                }
                case 0:
                {
                    if (version < 14)
                    {
                        m_RelativeBanLocation = BaseBanLocation;
                    }

                    if (version < 12)
                    {
                        m_VendorRentalContracts = new List<Item>();
                        m_InternalizedVendors = new List<Mobile>();
                    }

                    if (version < 4)
                    {
                        m_Addons = new List<Item>();
                    }

                    if (version < 7)
                    {
                        m_Access = new List<Mobile>();
                    }

                    if (version < 8)
                    {
                        m_Price = DefaultPrice;
                    }

                    m_Owner = reader.ReadMobile();

                    if (version < 5)
                    {
                        count = reader.ReadInt();

                        for (int i = 0; i < count; i++)
                        {
                            reader.ReadRect2D();
                        }
                    }

                    UpdateRegion();

                    m_CoOwners = reader.ReadStrongMobileList();
                    m_Friends = reader.ReadStrongMobileList();
                    m_Bans = reader.ReadStrongMobileList();

                    m_Sign = reader.ReadItem() as HouseSign;
                    m_Trash = reader.ReadItem() as TrashBarrel;

                    m_Doors = reader.ReadStrongItemList<Item>();
                    m_LockDowns = reader.ReadStrongItemList();

                    for (int i = 0; i < m_LockDowns.Count; ++i)
                    {
                        m_LockDowns[i].IsLockedDown = true;
                    }

                    for (int i = 0; i < m_VendorRentalContracts.Count; ++i)
                    {
                        m_VendorRentalContracts[i].IsLockedDown = true;
                    }

                    if (version < 3)
                    {
                        List<Item> items = reader.ReadStrongItemList();
                        m_Secures = new List<SecureInfo>(items.Count);

                        for (int i = 0; i < items.Count; ++i)
                        {
                            var c = items[i] as Container;

                            if (c != null)
                            {
                                c.IsSecure = true;
                                m_Secures.Add(new SecureInfo(c, SecureLevel.CoOwners));
                            }
                        }
                    }

                    m_MaxLockDowns = reader.ReadInt();
                    m_MaxSecures = reader.ReadInt();

                    if ((Map == null || Map == Map.Internal) && Location == Point3D.Zero)
                    {
                        Delete();
                    }

                    if (m_Owner != null)
                    {
                        List<BaseHouse> list = null;
                        m_Table.TryGetValue(m_Owner, out list);

                        if (list == null)
                        {
                            m_Table[m_Owner] = list = new List<BaseHouse>();
                        }

                        list.Add(this);
                    }
                    break;
                }
            }

            if (version <= 1)
            {
                ChangeSignType(0xBD2); //private house, plain brass sign
            }

            if (version < 10)
            {
                /* NOTE: This can exceed the house lockdown limit. It must be this way, because
				 * we do not want players' items to decay without them knowing. Or not even
				 * having a chance to fix it themselves.
				 */

                Timer.DelayCall(TimeSpan.Zero, FixLockdowns_Sandbox);
            }

            if (version < 11)
            {
                m_LastRefreshed = DateTime.UtcNow + TimeSpan.FromHours(24 * Utility.RandomDouble());
            }

            if (DynamicDecay.Enabled && !loadedDynamicDecay)
            {
                DecayLevel old = GetOldDecayLevel();

                if (old == DecayLevel.DemolitionPending)
                {
                    old = DecayLevel.Collapsed;
                }

                SetDynamicDecay(old);
            }

            if (!CheckDecay())
            {
                if (RelocatedEntities.Count > 0)
                {
                    Timer.DelayCall(TimeSpan.Zero, RestoreRelocatedEntities);
                }

                //if ( m_Owner == null && m_Friends.Count == 0 && m_CoOwners.Count == 0 )
                //	Timer.DelayCall( TimeSpan.FromSeconds( 10.0 ), new TimerCallback( Delete ) );
            }
        }
Exemplo n.º 38
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            this.m_DamageEntries = new Dictionary<Mobile, int>();

            int version = reader.ReadInt();

            switch( version )
            {
				case 6:
					SpawnName = reader.ReadString();
					AutoRestart = reader.ReadBool();
					SpawnMod = reader.ReadDouble();
					SpawnRadius = reader.ReadInt();
					goto case 5;
                case 5:
                    {
                        int entries = reader.ReadInt();
                        Mobile m;
                        int damage;
                        for (int i = 0; i < entries; ++i)
                        {
                            m = reader.ReadMobile();
                            damage = reader.ReadInt();

                            if (m == null)
                                continue;

                            this.m_DamageEntries.Add(m, damage);
                        }

                        goto case 4;
                    }
                case 4:
                    {
                        this.m_ConfinedRoaming = reader.ReadBool();
                        this.m_Idol = reader.ReadItem<IdolOfTheChampion>();
                        this.m_HasBeenAdvanced = reader.ReadBool();

                        goto case 3;
                    }
                case 3:
                    {
                        this.m_SpawnArea = reader.ReadRect2D();

                        goto case 2;
                    }
                case 2:
                    {
                        this.m_RandomizeType = reader.ReadBool();

                        goto case 1;
                    }
                case 1:
                    {
                        if (version < 3)
                        {
                            int oldRange = reader.ReadInt();

                            this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - oldRange, this.Y - oldRange), new Point2D(this.X + oldRange, this.Y + oldRange));
                        }

                        this.m_Kills = reader.ReadInt();

                        goto case 0;
                    }
                case 0:
                    {
                        if (version < 1)
                            this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - 24, this.Y - 24), new Point2D(this.X + 24, this.Y + 24));	//Default was 24

                        bool active = reader.ReadBool();
                        this.m_Type = (ChampionSpawnType)reader.ReadInt();
                        this.m_Creatures = reader.ReadStrongMobileList();
                        this.m_RedSkulls = reader.ReadStrongItemList();
                        this.m_WhiteSkulls = reader.ReadStrongItemList();
                        this.m_Platform = reader.ReadItem<ChampionPlatform>();
                        this.m_Altar = reader.ReadItem<ChampionAltar>();
                        this.m_ExpireDelay = reader.ReadTimeSpan();
                        this.m_ExpireTime = reader.ReadDeltaTime();
                        this.m_Champion = reader.ReadMobile();
                        this.m_RestartDelay = reader.ReadTimeSpan();

                        if (reader.ReadBool())
                        {
                            this.m_RestartTime = reader.ReadDeltaTime();
                            this.BeginRestart(this.m_RestartTime - DateTime.UtcNow);
                        }

                        if (version < 4)
                        {
                            this.m_Idol = new IdolOfTheChampion(this);
                            this.m_Idol.MoveToWorld(new Point3D(this.X, this.Y, this.Z - 15), this.Map);
                        }

                        if (this.m_Platform == null || this.m_Altar == null || this.m_Idol == null)
                            this.Delete();
                        else if (active)
                            this.Start();

                        break;
                    }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion));
        }
Exemplo n.º 39
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 12:
            {
                if (reader.ReadBool())
                {
                    RestoreEquip = reader.ReadStrongItemList();
                }

                goto case 11;
            }

            case 11:
            {
                // Version 11, we move all bools to a CorpseFlag
                m_Flags     = (CorpseFlag)reader.ReadInt();
                TimeOfDeath = reader.ReadDeltaTime();

                int count = reader.ReadInt();

                for (int i = 0; i < count; ++i)
                {
                    Item item = reader.ReadItem();

                    if (reader.ReadBool())
                    {
                        SetRestoreInfo(item, reader.ReadPoint3D());
                    }
                    else if (item != null)
                    {
                        SetRestoreInfo(item, item.Location);
                    }
                }

                if (reader.ReadBool())
                {
                    BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
                }

                m_Looters = reader.ReadStrongMobileList();
                m_Killer  = reader.ReadMobile();

                m_Aggressors = reader.ReadStrongMobileList();
                m_Owner      = reader.ReadMobile();

                m_CorpseName = reader.ReadString();

                m_AccessLevel = (AccessLevel)reader.ReadInt();
                reader.ReadInt();         // guild reserve
                Kills = reader.ReadInt();

                m_EquipItems = reader.ReadStrongItemList();
                break;
            }
            }

            if (m_Owner is PlayerMobile)
            {
                if (PlayerCorpses == null)
                {
                    PlayerCorpses = new Dictionary <Corpse, int>();
                }

                PlayerCorpses[this] = 0;
            }
        }
Exemplo n.º 40
0
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize(reader);

			int version = reader.ReadInt();

			//46+ (This should ALWAYS come just after the version!)
			if (version >= 46)
			{
				DeserializeSnapshot(reader);
			}

			if (LostStabledPetRecorder.Enabled)
			{
				LostStabledPetRecorder.PlayerMobiles.Add(this);
			}

			switch (version)
			{
                case 51:
                    {
                        HalloweenPaintExpirationOrange = reader.ReadTimeSpan();

                        if (HalloweenPaintExpirationOrange > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 1358;
                        }

                        HalloweenPaintExpirationPurple = reader.ReadTimeSpan();

                        if (HalloweenPaintExpirationPurple > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 1378;
                        }
                    }
                    goto case 50;
                case 50:
                    {
                        ZombiePaintExperationBooger = reader.ReadTimeSpan();

                        if (ZombiePaintExperationBooger > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 61;
                        }

                        ZombiePaintExperationVesper = reader.ReadTimeSpan();

                        if (ZombiePaintExperationVesper > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 1159;
                        }
                    }
                    goto case 49;
                case 49:
                    {
                        BattlePaintExpirationShadow = reader.ReadTimeSpan();

                        if (BattlePaintExpirationShadow > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 1175;
                        }

                        BattlePaintExpirationRed = reader.ReadTimeSpan();

                        if (BattlePaintExpirationRed > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 1157;
                        }
                    }
                    goto case 48;
                case 48:
			    {
			        NewbieQuestCompleted = reader.ReadBool();
			    }
                    goto case 47;
				case 47:
					{
						if (reader.ReadBool())
						{
							BodyValue = Race.Body(this);
						}
					}
					goto case 46;
				case 46:
				case 45:
					{
						EventMsgFlag = reader.ReadBool();
						EventPoints = reader.ReadInt();
					}
					goto case 44;
				case 44:
					{
						int titleCount = reader.ReadInt();

						if (titleCount > 0)
						{
							_ValorTitles = new List<string>();

							for (int i = 0; i < titleCount; i++)
							{
								string title = reader.ReadString();
								_ValorTitles.Add(title);
							}
						}
					}
					goto case 43;
				case 43:
					{
						Lastkilled = reader.ReadDateTime();
						goto case 42;
					}
				case 42:
					_ValorRating = reader.ReadInt();
					goto case 41;
				case 41:
					ValorQuests = reader.ReadInt();
					goto case 40;
				case 40:
					ValorTitle = reader.ReadString();
					goto case 39;
				case 39:
					ValorRank = reader.ReadInt();
					goto case 38;
				case 38:
					MurderersKilled = reader.ReadInt();
					goto case 37;
				case 37:
					ValorPoints = reader.ReadInt();
					goto case 36;
				case 36:
					LongTermLastDecayGameTime = reader.ReadTimeSpan();
					goto case 35;
				case 35:
					Companion = reader.ReadBool();
					goto case 34;
				case 34:
					{
						// don't check stat loss decay here, just on login
						GameParticipant = reader.ReadBool();
					}
					goto case 33;
				case 33:
					{
						// don't check stat loss decay here, just on login
						StatEnd = reader.ReadDateTime();
					}
					goto case 32;
				case 32:
					reader.ReadInt(); //m_InStat = reader.ReadInt(); 
					// TODO: Remove
					goto case 31;
				case 31:
					KMUsed = reader.ReadInt();
					goto case 30;
				case 30:
					MurderBounty = reader.ReadInt();
					goto case 29;
				case 29:
					{
						int skillgaincount = reader.ReadEncodedInt();

						for (int i = 0; i < skillgaincount; i++)
						{
							SkillGainMods.Add(new SkillGainMod(this, reader));
						}

						goto case 28;
					}
				case 28:
					PeacedUntil = reader.ReadDateTime();
					goto case 27;
				case 27:
					AnkhNextUse = reader.ReadDateTime();
					goto case 26;
				case 26:
					{
						AutoStabled = reader.ReadStrongMobileList();

						CustomFlags = (CustomPlayerFlag)reader.ReadEncodedInt();

						if (GetCustomFlag(CustomPlayerFlag.VisibilityList))
						{
							int length = reader.ReadInt();

							for (int i = 0; i < length; i++)
							{
								VisibilityList.Add(reader.ReadMobile());
							}
						}

						if (GetCustomFlag(CustomPlayerFlag.StaffLevel))
						{
							AccessLevelToggler.m_Mobiles.Add(this, new AccessLevelMod((AccessLevel)reader.ReadInt()));
						}

						if (GetCustomFlag(CustomPlayerFlag.StaffRank))
						{
							m_StaffRank = (StaffRank)reader.ReadInt();
						}

						if (GetCustomFlag(CustomPlayerFlag.DisplayStaffRank))
						{
							m_StaffTitle = reader.ReadString();
						}
					}
					goto case 25;
				case 25:
					{
						int recipeCount = reader.ReadInt();

						if (recipeCount > 0)
						{
							m_AcquiredRecipes = new Dictionary<int, bool>();

							for (int i = 0; i < recipeCount; i++)
							{
								int r = reader.ReadInt();

								//Don't add in recipies which we haven't gotten or have been removed
								if (reader.ReadBool())
								{
									m_AcquiredRecipes.Add(r, true);
								}
							}
						}
					}
					goto case 24;
				case 24:
					reader.ReadDeltaTime(); //m_LastHonorLoss = reader.ReadDeltaTime();
					// TODO: Remove
					goto case 23;
				case 23:
					ChampionTitles = new ChampionTitleInfo(reader);
					goto case 22;
				case 22:
					reader.ReadDateTime(); //m_LastValorLoss = reader.ReadDateTime();
					// TODO: Remove
					goto case 21;
				case 21:
					{
						ToTItemsTurnedIn = reader.ReadEncodedInt();
						ToTTotalMonsterFame = reader.ReadInt();
					}
					goto case 20;
				case 20:
					{
						AllianceMessageHue = reader.ReadEncodedInt();
						GuildMessageHue = reader.ReadEncodedInt();
					}
					goto case 19;
				case 19:
					{
						int rank = reader.ReadEncodedInt();
						int maxRank = RankDefinition.Ranks.Length - 1;

						if (rank > maxRank)
						{
							rank = maxRank;
						}

						m_GuildRank = RankDefinition.Ranks[rank];
						LastOnline = reader.ReadDateTime();
					}
					goto case 18;
				case 18:
					SolenFriendship = (SolenFriendship)reader.ReadEncodedInt();
					goto case 17;
				case 17: // changed how DoneQuests is serialized
				case 16:
					{
						Quest = QuestSerializer.DeserializeQuest(reader);

						if (Quest != null)
						{
							Quest.From = this;
						}

						int count = reader.ReadEncodedInt();

						DoneQuests = new List<QuestRestartInfo>(count);

						if (count > 0)
						{
							for (int i = 0; i < count; ++i)
							{
								Type questType = QuestSerializer.ReadType(QuestSystem.QuestTypes, reader);
								DateTime restartTime = version < 17 ? DateTime.MaxValue : reader.ReadDateTime();

								DoneQuests.Add(new QuestRestartInfo(questType, restartTime));
							}
						}

						Profession = reader.ReadEncodedInt();
					}
					goto case 15;
				case 15:
					reader.ReadDeltaTime(); //m_LastCompassionLoss = reader.ReadDeltaTime();
					// TODO: Remove
					goto case 14;
				case 14:
					{
						// TODO: Remove
						if (reader.ReadEncodedInt() > 0)
						{
							reader.ReadDeltaTime(); //m_NextCompassionDay = reader.ReadDeltaTime();
						}
					}
					goto case 13;
				case 13: // removed PaidInsurance list
				case 12:
					BOBFilter = new BOBFilter(reader);
					goto case 11;
				case 11:
					{
						if (version < 13)
						{
							List<Item> paid = reader.ReadStrongItemList();

							foreach (Item i in paid)
							{
								i.PaidInsurance = true;
							}
						}
					}
					goto case 10;
				case 10:
					{
						if (reader.ReadBool())
						{
							m_HairModID = reader.ReadInt();
							m_HairModHue = reader.ReadInt();
							m_BeardModID = reader.ReadInt();
							m_BeardModHue = reader.ReadInt();
						}
					}
					goto case 9;
				case 9:
					{
						SavagePaintExpiration = reader.ReadTimeSpan();

						if (SavagePaintExpiration > TimeSpan.Zero)
						{
							BodyMod = (Female ? 184 : 183);
							HueMod = 0;
						}
					}
					goto case 8;
				case 8:
					{
						NpcGuild = (NpcGuild)reader.ReadInt();
						NpcGuildJoinTime = reader.ReadDateTime();
						NpcGuildGameTime = reader.ReadTimeSpan();
					}
					goto case 7;
				case 7:
					m_PermaFlags = reader.ReadStrongMobileList();
					goto case 6;
				case 6:
					NextTailorBulkOrder = reader.ReadTimeSpan();
					goto case 5;
				case 5:
					NextSmithBulkOrder = reader.ReadTimeSpan();
					goto case 4;
				case 4:
				case 3:
				case 2:
					Flags = (PlayerFlag)reader.ReadInt();
					goto case 1;
				case 1:
					{
						m_ShortTermElapse = reader.ReadDateTime();
						m_GameTime = reader.ReadTimeSpan();
					}
					goto case 0;
				case 0:
					break;
			}

			if (RecentlyReported == null)
			{
				RecentlyReported = new List<Mobile>();
			}

			// Professions weren't verified on 1.0 RC0
			if (!CharacterCreation.VerifyProfession(Profession, Expansion))
			{
				Profession = 0;
			}

			if (m_PermaFlags == null)
			{
				m_PermaFlags = new List<Mobile>();
			}

			if (BOBFilter == null)
			{
				BOBFilter = new BOBFilter();
			}

			if (m_GuildRank == null)
			{
				//Default to member if going from older version to new version (only time it should be null)
				m_GuildRank = RankDefinition.Member;
			}

			if (LastOnline == DateTime.MinValue && Account != null)
			{
				LastOnline = ((Account)Account).LastLogin;
			}

			if (ChampionTitles == null)
			{
				ChampionTitles = new ChampionTitleInfo();
			}

			if (AccessLevel > AccessLevel.Player)
			{
				IgnoreMobiles = true;
			}

			List<Mobile> list = Stabled;

			foreach (BaseCreature bc in list.OfType<BaseCreature>())
			{
				bc.IsStabled = true; //Charge date set in BaseCreature
			}

			CheckAtrophies(this);

			if (Hidden) //Hiding is the only buff where it has an effect that's serialized.
			{
				AddBuff(new BuffInfo(BuffIcon.HidingAndOrStealth, 1075655));
			}
		}
Exemplo n.º 41
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch ( version )
			{
				case 1:
				{
					m_RegionBounds = reader.ReadRect2D();
					m_Traps = reader.ReadStrongItemList<BaseTrap>();

					goto case 0;
				}
				case 0:
				{
					if ( version < 1 )
					{
						m_Traps = new List<BaseTrap>();
						m_RegionBounds = new Rectangle2D( X - 40, Y - 40, 80, 80 );
					}

					m_Creatures = reader.ReadStrongMobileList();

					m_TypeName = reader.ReadString();
					m_Door = reader.ReadItem<BaseDoor>(); ;
					m_Addon = reader.ReadItem<BaseAddon>(); ;
					m_Sequence = reader.ReadItem<GauntletSpawner>();

					State = (GauntletSpawnerState)reader.ReadInt();

					break;
				}
			}
		}
Exemplo n.º 42
0
        public override void Deserialize(GenericReader reader)
        {
            int version = reader.ReadInt();

            switch (version)
            {
            case 7:
            case 6:
            case 5:
            {
                int count = reader.ReadInt();

                PendingWars = new List <WarDeclaration>();
                for (int i = 0; i < count; i++)
                {
                    PendingWars.Add(new WarDeclaration(reader));
                }

                count        = reader.ReadInt();
                AcceptedWars = new List <WarDeclaration>();
                for (int i = 0; i < count; i++)
                {
                    AcceptedWars.Add(new WarDeclaration(reader));
                }

                bool isAllianceLeader = reader.ReadBool();

                if (isAllianceLeader)
                {
                    m_AllianceInfo = new AllianceInfo(reader);
                }
                else
                {
                    m_AllianceLeader = reader.ReadGuild() as Guild;
                }

                goto case 4;
            }

            case 4:
            {
                AllyDeclarations = reader.ReadStrongGuildList <Guild>();
                AllyInvitations  = reader.ReadStrongGuildList <Guild>();

                goto case 3;
            }

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

                goto case 2;
            }

            case 2:
            {
                if (version < 6)
                {
                    reader.ReadInt();
                }

                goto case 1;
            }

            case 1:
            {
                LastFealty = reader.ReadDateTime();

                goto case 0;
            }

            case 0:
            {
                m_Leader = reader.ReadMobile();

                if (m_Leader is PlayerMobile)
                {
                    ((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader;
                }

                m_Name         = reader.ReadString();
                m_Abbreviation = reader.ReadString();

                Allies          = reader.ReadStrongGuildList <Guild>();
                Enemies         = reader.ReadStrongGuildList <Guild>();
                WarDeclarations = reader.ReadStrongGuildList <Guild>();
                WarInvitations  = reader.ReadStrongGuildList <Guild>();

                Members    = reader.ReadStrongMobileList();
                Candidates = reader.ReadStrongMobileList();
                Accepted   = reader.ReadStrongMobileList();

                if (version < 7)
                {
                    reader.ReadItem();
                    reader.ReadItem();
                }

                Charter = reader.ReadString();
                Website = reader.ReadString();

                break;
            }
            }

            if (AllyDeclarations == null)
            {
                AllyDeclarations = new List <Guild>();
            }

            if (AllyInvitations == null)
            {
                AllyInvitations = new List <Guild>();
            }

            if (AcceptedWars == null)
            {
                AcceptedWars = new List <WarDeclaration>();
            }

            if (PendingWars == null)
            {
                PendingWars = new List <WarDeclaration>();
            }

            Timer.DelayCall(TimeSpan.Zero, VerifyGuild_Callback);
        }
Exemplo n.º 43
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch( version )
            {

                case 2:
                    {
                        alignment = (Alignment)reader.ReadInt();
                        goto case 1;
                    }

                case 1:
                    {
                        TimeSpan deleteTime = TimeSpan.Zero;

                        if( version >= 1 )
                            deleteTime = reader.ReadTimeSpan();

                        if( deleteTime > TimeSpan.Zero || LastOwner != null && !Controlled && !IsStabled )
                        {
                            if( deleteTime <= TimeSpan.Zero || deleteTime > TimeSpan.FromDays(3.0) )
                                deleteTime = TimeSpan.FromDays(3.0);

                            m_DeleteTimer = new DeleteTimer(this, deleteTime);
                            m_DeleteTimer.Start();
                        }

                        goto case 0;
                    }

                case 0:
                    {
                        m_CurrentAI = (AIType)reader.ReadInt();
                        m_DefaultAI = (AIType)reader.ReadInt();

                        m_iRangePerception = reader.ReadInt();
                        m_iRangeFight = reader.ReadInt();
                        m_iRangeHome = reader.ReadInt();

                        m_iTeam = reader.ReadInt();

                        m_dActiveSpeed = reader.ReadDouble();
                        m_dPassiveSpeed = reader.ReadDouble();
                        m_dCurrentSpeed = reader.ReadDouble();

                        if( m_iRangePerception == OldRangePerception )
                            m_iRangePerception = DefaultRangePerception;

                        m_pHome.X = reader.ReadInt();
                        m_pHome.Y = reader.ReadInt();
                        m_pHome.Z = reader.ReadInt();

                        int i, iCount;

                        iCount = reader.ReadInt();
                        for( i = 0; i < iCount; i++ )
                        {
                            string str = reader.ReadString();
                            Type type = Type.GetType(str);

                            if( type != null )
                            {
                                m_arSpellAttack.Add(type);
                            }
                        }

                        iCount = reader.ReadInt();
                        for( i = 0; i < iCount; i++ )
                        {
                            string str = reader.ReadString();
                            Type type = Type.GetType(str);

                            if( type != null )
                            {
                                m_arSpellDefense.Add(type);
                            }
                        }

                        m_FightMode = (FightMode)reader.ReadInt();
                        m_bControlled = reader.ReadBool();
                        m_ControlMaster = reader.ReadMobile();
                        m_ControlTarget = reader.ReadMobile();
                        m_ControlDest = reader.ReadPoint3D();
                        m_ControlOrder = (OrderType)reader.ReadInt();
                        m_dMinTameSkill = reader.ReadDouble();
                        m_bTamable = reader.ReadBool();
                        m_bSummoned = reader.ReadBool();

                        if( m_bSummoned )
                        {
                            m_SummonEnd = reader.ReadDeltaTime();
                            new UnsummonTimer(m_ControlMaster, this, m_SummonEnd - DateTime.Now).Start();
                        }

                        m_iControlSlots = reader.ReadInt();
                        m_Loyalty = reader.ReadInt();
                        m_CurrentWayPoint = reader.ReadItem() as WayPoint;
                        m_SummonMaster = reader.ReadMobile();
                        m_HitsMax = reader.ReadInt();
                        m_StamMax = reader.ReadInt();
                        m_ManaMax = reader.ReadInt();
                        m_DamageMin = reader.ReadInt();
                        m_DamageMax = reader.ReadInt();
                        m_PhysicalResistance = reader.ReadInt();
                        m_PhysicalDamage = reader.ReadInt();
                        m_FireResistance = reader.ReadInt();
                        m_FireDamage = reader.ReadInt();
                        m_ColdResistance = reader.ReadInt();
                        m_ColdDamage = reader.ReadInt();
                        m_PoisonResistance = reader.ReadInt();
                        m_PoisonDamage = reader.ReadInt();
                        m_EnergyResistance = reader.ReadInt();
                        m_EnergyDamage = reader.ReadInt();
                        m_Owners = reader.ReadStrongMobileList();
                        m_IsDeadPet = reader.ReadBool();
                        m_IsBonded = reader.ReadBool();
                        m_BondingBegin = reader.ReadDateTime();
                        m_OwnerAbandonTime = reader.ReadDateTime();
                        m_HasGeneratedLoot = reader.ReadBool();

                        bool hasFriends = reader.ReadBool();

                        if( hasFriends )
                            m_Friends = reader.ReadStrongMobileList();
                        else
                            m_Friends = new List<Mobile>();

                        m_RemoveIfUntamed = reader.ReadBool();
                        m_RemoveStep = reader.ReadInt();
                        _spawner = reader.ReadItem();
                        _spawnerHome = reader.ReadPoint3D();

                        break;
                    }
            }

            double activeSpeed = m_dActiveSpeed;
            double passiveSpeed = m_dPassiveSpeed;

            SpeedInfo.GetSpeeds(this, ref activeSpeed, ref passiveSpeed);

            bool isStandardActive = false;
            for( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i )
                isStandardActive = (m_dActiveSpeed == m_StandardActiveSpeeds[i]);

            bool isStandardPassive = false;
            for( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i )
                isStandardPassive = (m_dPassiveSpeed == m_StandardPassiveSpeeds[i]);

            if( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed )
                m_dCurrentSpeed = activeSpeed;
            else if( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed )
                m_dCurrentSpeed = passiveSpeed;

            if( isStandardActive )
                m_dActiveSpeed = activeSpeed;

            if( isStandardPassive )
                m_dPassiveSpeed = passiveSpeed;

            if( Core.AOS && NameHue == 0x35 )
                NameHue = -1;

            CheckStatTimers();

            ChangeAIType(m_CurrentAI);

            AddFollowers();
        }
Exemplo n.º 44
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            m_DamageEntries = new Dictionary <Mobile, int>();

            int version = reader.ReadInt();

            switch (version)
            {
            case 7:
            {
                this.m_ExpireDelay = reader.ReadTimeSpan();
                this.m_ExpireTime  = reader.ReadDeltaTime();

                goto case 6;
            }

            case 6:
            {
                this.m_Champion2 = reader.ReadMobile();

                goto case 5;
            }

            case 5:
            {
                int    entries = reader.ReadInt();
                Mobile m;
                int    damage;
                for (int i = 0; i < entries; ++i)
                {
                    m      = reader.ReadMobile();
                    damage = reader.ReadInt();

                    if (m == null)
                    {
                        continue;
                    }

                    this.m_DamageEntries.Add(m, damage);
                }

                goto case 4;
            }

            case 4:
            {
                this.m_ConfinedRoaming = reader.ReadBool();
                this.m_HasBeenAdvanced = reader.ReadBool();

                goto case 3;
            }

            case 3:
            {
                this.m_SpawnArea = reader.ReadRect2D();

                goto case 2;
            }

            case 2:
            {
                this.m_RandomizeType = reader.ReadBool();

                goto case 1;
            }

            case 1:
            {
                this.m_Kills = reader.ReadInt();
                Spwnd        = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                bool active = reader.ReadBool();
                this.m_Type         = (MiniChampType)reader.ReadInt();
                this.m_Creatures    = reader.ReadStrongMobileList();
                this.m_Champion     = reader.ReadMobile();
                this.m_RestartDelay = reader.ReadTimeSpan();

                if (reader.ReadBool())
                {
                    this.m_RestartTime = reader.ReadDeltaTime();
                    BeginRestart(this.m_RestartTime - DateTime.Now);
                }

                if (active)
                {
                    this.Start();
                }

                break;
            }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion));
        }
Exemplo n.º 45
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			m_CurrentAI = (AIType)reader.ReadInt();
			m_DefaultAI = (AIType)reader.ReadInt();

			m_iRangePerception = reader.ReadInt();
			m_iRangeFight = reader.ReadInt();

			m_iTeam = reader.ReadInt();

			m_dActiveSpeed = reader.ReadDouble();
			m_dPassiveSpeed = reader.ReadDouble();
			m_dCurrentSpeed = reader.ReadDouble();

			if ( m_iRangePerception == OldRangePerception )
				m_iRangePerception = DefaultRangePerception;

			m_pHome.X = reader.ReadInt();
			m_pHome.Y = reader.ReadInt();
			m_pHome.Z = reader.ReadInt();

			if ( version >= 1 )
			{
				m_iRangeHome = reader.ReadInt();

				int i, iCount;

				iCount = reader.ReadInt();
				for ( i=0; i< iCount; i++ )
				{
					string str = reader.ReadString();
					Type type = Type.GetType( str );

					if ( type != null )
					{
						m_arSpellAttack.Add( type );
					}
				}

				iCount = reader.ReadInt();
				for ( i=0; i< iCount; i++ )
				{
					string str = reader.ReadString();
					Type type = Type.GetType( str );

					if ( type != null )
					{
						m_arSpellDefense.Add( type );
					}
				}
			}
			else
			{
				m_iRangeHome = 0;
			}

			if ( version >= 2 )
			{
				m_FightMode = ( FightMode )reader.ReadInt();

				m_bControlled = reader.ReadBool();
				m_ControlMaster = reader.ReadMobile();
				m_ControlTarget = reader.ReadMobile();
				m_ControlDest = reader.ReadPoint3D();
				m_ControlOrder = (OrderType) reader.ReadInt();

				m_dMinTameSkill = reader.ReadDouble();

				if ( version < 9 )
					reader.ReadDouble();

				m_bTamable = reader.ReadBool();
				m_bSummoned = reader.ReadBool();

				if ( m_bSummoned )
				{
					m_SummonEnd = reader.ReadDeltaTime();
					new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.Now ).Start();
				}

				m_iControlSlots = reader.ReadInt();
			}
			else
			{
				m_FightMode = FightMode.Closest;

				m_bControlled = false;
				m_ControlMaster = null;
				m_ControlTarget = null;
				m_ControlOrder = OrderType.None;
			}

			if ( version >= 3 )
				m_Loyalty = reader.ReadInt();
			else
				m_Loyalty = MaxLoyalty; // Wonderfully Happy

			if ( version >= 4 )
				m_CurrentWayPoint = reader.ReadItem() as WayPoint;

			if ( version >= 5 )
				m_SummonMaster = reader.ReadMobile();

			if ( version >= 6 )
			{
				m_HitsMax = reader.ReadInt();
				m_StamMax = reader.ReadInt();
				m_ManaMax = reader.ReadInt();
				m_DamageMin = reader.ReadInt();
				m_DamageMax = reader.ReadInt();
			}

			if ( version >= 7 )
			{
				m_PhysicalResistance = reader.ReadInt();
				m_PhysicalDamage = reader.ReadInt();

				m_FireResistance = reader.ReadInt();
				m_FireDamage = reader.ReadInt();

				m_ColdResistance = reader.ReadInt();
				m_ColdDamage = reader.ReadInt();

				m_PoisonResistance = reader.ReadInt();
				m_PoisonDamage = reader.ReadInt();

				m_EnergyResistance = reader.ReadInt();
				m_EnergyDamage = reader.ReadInt();
			}

			if ( version >= 8 )
				m_Owners = reader.ReadStrongMobileList();
			else
				m_Owners = new List<Mobile>();

			if ( version >= 10 )
			{
				m_IsDeadPet = reader.ReadBool();
				m_IsBonded = reader.ReadBool();
				m_BondingBegin = reader.ReadDateTime();
				m_OwnerAbandonTime = reader.ReadDateTime();
			}

			if ( version >= 11 )
				m_HasGeneratedLoot = reader.ReadBool();
			else
				m_HasGeneratedLoot = true;

			if ( version >= 12 )
				m_Paragon = reader.ReadBool();
			else
				m_Paragon = false;

			if ( version >= 13 && reader.ReadBool() )
				m_Friends = reader.ReadStrongMobileList();
			else if ( version < 13 && m_ControlOrder >= OrderType.Unfriend )
				++m_ControlOrder;

			if ( version < 16 && Loyalty != MaxLoyalty )
				Loyalty *= 10;

			double activeSpeed = m_dActiveSpeed;
			double passiveSpeed = m_dPassiveSpeed;

			SpeedInfo.GetSpeeds( this, ref activeSpeed, ref passiveSpeed );

			bool isStandardActive = false;
			for ( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i )
				isStandardActive = ( m_dActiveSpeed == m_StandardActiveSpeeds[i] );

			bool isStandardPassive = false;
			for ( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i )
				isStandardPassive = ( m_dPassiveSpeed == m_StandardPassiveSpeeds[i] );

			if ( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed )
				m_dCurrentSpeed = activeSpeed;
			else if ( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed )
				m_dCurrentSpeed = passiveSpeed;

			if ( isStandardActive && !m_Paragon )
				m_dActiveSpeed = activeSpeed;

			if ( isStandardPassive && !m_Paragon )
				m_dPassiveSpeed = passiveSpeed;

			if ( version >= 14 )
			{
				m_RemoveIfUntamed = reader.ReadBool();
				m_RemoveStep = reader.ReadInt();
			}

			TimeSpan deleteTime = TimeSpan.Zero;

			if ( version >= 17 )
				deleteTime = reader.ReadTimeSpan();

			if ( deleteTime > TimeSpan.Zero || LastOwner != null && !Controlled && !IsStabled )
			{
				if ( deleteTime == TimeSpan.Zero )
					deleteTime = TimeSpan.FromDays( 3.0 );

				m_DeleteTimer = new DeleteTimer( this, deleteTime );
				m_DeleteTimer.Start();
			}

			if( version <= 14 && m_Paragon && Hue == 0x31 )
			{
				Hue = Paragon.Hue; //Paragon hue fixed, should now be 0x501.
			}

			CheckStatTimers();

			ChangeAIType(m_CurrentAI);

			AddFollowers();

			if ( IsAnimatedDead )
				Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this );
		}
Exemplo n.º 46
0
		public override void Deserialize(GenericReader reader)
		{
			int version = reader.ReadInt();

			switch (version)
			{
				case 5:
					{
						int count = reader.ReadInt();

						m_PendingWars = new List<WarDeclaration>();
						for (int i = 0; i < count; i++)
						{
							m_PendingWars.Add(new WarDeclaration(reader));
						}

						count = reader.ReadInt();
						m_AcceptedWars = new List<WarDeclaration>();
						for (int i = 0; i < count; i++)
						{
							m_AcceptedWars.Add(new WarDeclaration(reader));
						}

						bool isAllianceLeader = reader.ReadBool();

						if (isAllianceLeader)
						{
							m_AllianceInfo = new AllianceInfo(reader);
						}
						else
						{
							m_AllianceLeader = reader.ReadGuild() as Guild;
						}

						goto case 4;
					}
				case 4:
					{
						m_AllyDeclarations = reader.ReadStrongGuildList<Guild>();
						m_AllyInvitations = reader.ReadStrongGuildList<Guild>();

						goto case 3;
					}
				case 3:
					{
						m_TypeLastChange = reader.ReadDateTime();

						goto case 2;
					}
				case 2:
					{
						m_Type = (GuildType)reader.ReadInt();

						goto case 1;
					}
				case 1:
					{
						m_LastFealty = reader.ReadDateTime();

						goto case 0;
					}
				case 0:
					{
						m_Leader = reader.ReadMobile();

						if (m_Leader is PlayerMobile)
						{
							((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader;
						}

						m_Name = reader.ReadString();
						m_Abbreviation = reader.ReadString();

						m_Allies = reader.ReadStrongGuildList<Guild>();
						m_Enemies = reader.ReadStrongGuildList<Guild>();
						m_WarDeclarations = reader.ReadStrongGuildList<Guild>();
						m_WarInvitations = reader.ReadStrongGuildList<Guild>();

						m_Members = reader.ReadStrongMobileList();
						m_Candidates = reader.ReadStrongMobileList();
						m_Accepted = reader.ReadStrongMobileList();

						m_Guildstone = reader.ReadItem();
						m_Teleporter = reader.ReadItem();

						m_Charter = reader.ReadString();
						m_Website = reader.ReadString();

						break;
					}
			}

			if (m_AllyDeclarations == null)
			{
				m_AllyDeclarations = new List<Guild>();
			}

			if (m_AllyInvitations == null)
			{
				m_AllyInvitations = new List<Guild>();
			}

			if (m_AcceptedWars == null)
			{
				m_AcceptedWars = new List<WarDeclaration>();
			}

			if (m_PendingWars == null)
			{
				m_PendingWars = new List<WarDeclaration>();
			}

			/*
            if ( ( !NewGuildSystem && m_Guildstone == null )|| m_Members.Count == 0 )
            Disband();
            */

			Timer.DelayCall(TimeSpan.Zero, VerifyGuild_Callback);
		}
Exemplo n.º 47
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            m_DamageEntries = new Dictionary <Mobile, int>();

            int version = reader.ReadInt();

            switch (version)
            {
            case 5:
            {
                int    entries = reader.ReadInt();
                Mobile m;
                int    damage;
                for (int i = 0; i < entries; ++i)
                {
                    m      = reader.ReadMobile();
                    damage = reader.ReadInt();

                    if (m == null)
                    {
                        continue;
                    }

                    m_DamageEntries.Add(m, damage);
                }

                goto case 4;
            }

            case 4:
            {
                m_ConfinedRoaming = reader.ReadBool();
                m_HasBeenAdvanced = reader.ReadBool();

                goto case 3;
            }

            case 3:
            {
                m_SpawnArea = reader.ReadRect2D();

                goto case 2;
            }

            case 2:
            {
                m_RandomizeType = reader.ReadBool();

                goto case 1;
            }

            case 1:
            {
                if (version < 3)
                {
                    int oldRange = reader.ReadInt();

                    m_SpawnArea = new Rectangle2D(new Point2D(X - oldRange, Y - oldRange), new Point2D(X + oldRange, Y + oldRange));
                }

                m_Kills = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                if (version < 1)
                {
                    m_SpawnArea = new Rectangle2D(new Point2D(X - 18, Y - 18), new Point2D(X + 18, Y + 18));            //Default was 24
                }
                bool active = reader.ReadBool();
                m_Type         = (MiniChampType)reader.ReadInt();
                m_Creatures    = reader.ReadStrongMobileList();
                m_RedSkulls    = reader.ReadStrongItemList();
                m_WhiteSkulls  = reader.ReadStrongItemList();
                m_MiniPlatform = reader.ReadItem <MiniChampPlatform>();
                m_MiniAltar    = reader.ReadItem <MiniChampAltar>();
                m_ExpireDelay  = reader.ReadTimeSpan();
                m_ExpireTime   = reader.ReadDeltaTime();
                m_MiniChamp    = reader.ReadMobile();
                m_RestartDelay = reader.ReadTimeSpan();

                if (reader.ReadBool())
                {
                    m_RestartTime = reader.ReadDeltaTime();
                    BeginRestart(m_RestartTime - DateTime.Now);
                }

                if (m_MiniPlatform == null || m_MiniAltar == null)
                {
                    Delete();
                }
                else if (active)
                {
                    Start();
                }

                break;
            }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion));
        }
Exemplo n.º 48
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                case 3:
                    {
                        m_IDList = reader.ReadStrongMobileList();
                        goto case 2;
                    }
                case 2:
                {
                    m_Resource = (CraftResource)reader.ReadEncodedInt();
                    m_GemType = (GemType)reader.ReadEncodedInt();
                    m_Identified = reader.ReadBool();
                    m_Charges = reader.ReadInt();
                    m_JewelEffect = (JewelEffect)reader.ReadEncodedInt();

                    goto case 1;
                }
                case 1:
                {
                    m_AosAttributes = new AosAttributes( this, reader );
                    m_AosResistances = new AosElementAttributes( this, reader );
                    m_AosSkillBonuses = new AosSkillBonuses( this, reader );

                    if ( Core.AOS && Parent is Mobile )
                        m_AosSkillBonuses.AddTo( (Mobile)Parent );

                    int strBonus = m_AosAttributes.BonusStr;
                    int dexBonus = m_AosAttributes.BonusDex;
                    int intBonus = m_AosAttributes.BonusInt;

                    if ( Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0) )
                    {
                        Mobile m = (Mobile)Parent;

                        string modName = Serial.ToString();

                        if ( strBonus != 0 )
                            m.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) );

                        if ( dexBonus != 0 )
                            m.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) );

                        if ( intBonus != 0 )
                            m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) );
                    }

                    if ( Parent is Mobile )
                        ((Mobile)Parent).CheckStatTimers();

                    break;
                }
                case 0:
                {
                    m_AosAttributes = new AosAttributes( this );
                    m_AosResistances = new AosElementAttributes( this );
                    m_AosSkillBonuses = new AosSkillBonuses( this );

                    break;
                }
            }

            if ( version < 2 )
            {
                m_Resource = CraftResource.Iron;
                m_GemType = GemType.None;
            }
        }
Exemplo n.º 49
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadEncodedInt();

			m_Topic = new string[reader.ReadEncodedInt()];

			for ( int i = 0; i < m_Topic.Length; i++ )
				m_Topic[i] = reader.ReadString();

			m_Yes = reader.ReadStrongMobileList();
			m_No = reader.ReadStrongMobileList();
		}
Exemplo n.º 50
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 5:
            {
                Owner = reader.ReadMobile();
                goto case 4;
            }

            case 4:
            case 3:
                if (version < 5)
                {
                    reader.ReadBool();
                }
                goto case 2;

            case 2:
            case 1:
                if (reader.ReadBool())
                {
                    m_Helpers = reader.ReadStrongMobileList <BaseCreature>();
                }
                goto case 0;

            case 0:
                Peerless     = reader.ReadMobile() as BasePeerless;
                BossLocation = reader.ReadPoint3D();
                TeleportDest = reader.ReadPoint3D();
                ExitDest     = reader.ReadPoint3D();

                Deadline = reader.ReadDateTime();

                MasterKeys = reader.ReadStrongItemList();
                Fighters   = reader.ReadStrongMobileList();

                if (version < 4)
                {
                    int count = reader.ReadInt();

                    for (int i = 0; i < count; i++)
                    {
                        reader.ReadMobile();
                        reader.ReadStrongMobileList();
                    }
                }

                if (version < 2)
                {
                    reader.ReadBool();
                }

                if (Peerless == null && m_Helpers.Count > 0)
                {
                    Timer.DelayCall(TimeSpan.FromSeconds(30), CleanupHelpers);
                }

                break;
            }


            if (Owner != null && Peerless == null)
            {
                FinishSequence();
            }
        }
Exemplo n.º 51
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );
			int version = reader.ReadInt();

			switch ( version )
			{
				case 28:
				{
					m_PeacedUntil = reader.ReadDateTime();

					goto case 27;
				}
				case 27:
				{
					m_AnkhNextUse = reader.ReadDateTime();

					goto case 26;
				}
				case 26:
				{
					m_AutoStabled = reader.ReadStrongMobileList();

					goto case 25;
				}
				case 25:
				{
					int recipeCount = reader.ReadInt();

					if( recipeCount > 0 )
					{
						m_AcquiredRecipes = new Dictionary<int, bool>();

						for( int i = 0; i < recipeCount; i++ )
						{
							int r = reader.ReadInt();
							if( reader.ReadBool() )	//Don't add in recipies which we haven't gotten or have been removed
								m_AcquiredRecipes.Add( r, true );
						}
					}
					goto case 24;
				}
				case 24:
				{
					m_LastHonorLoss = reader.ReadDeltaTime();
					goto case 23;
				}
				case 23:
				{
					m_ChampionTitles = new ChampionTitleInfo( reader );
					goto case 22;
				}
				case 22:
				{
					m_LastValorLoss = reader.ReadDateTime();
					goto case 21;
				}
				case 21:
				{
					m_ToTItemsTurnedIn = reader.ReadEncodedInt();
					m_ToTTotalMonsterFame = reader.ReadInt();
					goto case 20;
				}
				case 20:
				{
					m_AllianceMessageHue = reader.ReadEncodedInt();
					m_GuildMessageHue = reader.ReadEncodedInt();

					goto case 19;
				}
				case 19:
				{
					int rank = reader.ReadEncodedInt();
					int maxRank = Guilds.RankDefinition.Ranks.Length -1;
					if( rank > maxRank )
						rank = maxRank;

					m_GuildRank = Guilds.RankDefinition.Ranks[rank];
					m_LastOnline = reader.ReadDateTime();
					goto case 18;
				}
				case 18:
				{
					m_SolenFriendship = (SolenFriendship) reader.ReadEncodedInt();

					goto case 17;
				}
				case 17: // changed how DoneQuests is serialized
				case 16:
				{
					m_Quest = QuestSerializer.DeserializeQuest( reader );

					if ( m_Quest != null )
						m_Quest.From = this;

					int count = reader.ReadEncodedInt();

					if ( count > 0 )
					{
						m_DoneQuests = new List<QuestRestartInfo>();

						for ( int i = 0; i < count; ++i )
						{
							Type questType = QuestSerializer.ReadType( QuestSystem.QuestTypes, reader );
							DateTime restartTime;

							if ( version < 17 )
								restartTime = DateTime.MaxValue;
							else
								restartTime = reader.ReadDateTime();

							m_DoneQuests.Add( new QuestRestartInfo( questType, restartTime ) );
						}
					}

					m_Profession = reader.ReadEncodedInt();
					goto case 15;
				}
				case 15:
				{
					m_LastCompassionLoss = reader.ReadDeltaTime();
					goto case 14;
				}
				case 14:
				{
					m_CompassionGains = reader.ReadEncodedInt();

					if ( m_CompassionGains > 0 )
						m_NextCompassionDay = reader.ReadDeltaTime();

					goto case 13;
				}
				case 13: // just removed m_PayedInsurance list
				case 12:
				{
					m_BOBFilter = new Engines.BulkOrders.BOBFilter( reader );
					goto case 11;
				}
				case 11:
				{
					if ( version < 13 )
					{
						List<Item> payed = reader.ReadStrongItemList();

						for ( int i = 0; i < payed.Count; ++i )
							payed[i].PayedInsurance = true;
					}

					goto case 10;
				}
				case 10:
				{
					if ( reader.ReadBool() )
					{
						m_HairModID = reader.ReadInt();
						m_HairModHue = reader.ReadInt();
						m_BeardModID = reader.ReadInt();
						m_BeardModHue = reader.ReadInt();
					}

					goto case 9;
				}
				case 9:
				{
					SavagePaintExpiration = reader.ReadTimeSpan();

					if ( SavagePaintExpiration > TimeSpan.Zero )
					{
						BodyMod = ( Female ? 184 : 183 );
						HueMod = 0;
					}

					goto case 8;
				}
				case 8:
				{
					m_NpcGuild = (NpcGuild)reader.ReadInt();
					m_NpcGuildJoinTime = reader.ReadDateTime();
					m_NpcGuildGameTime = reader.ReadTimeSpan();
					goto case 7;
				}
				case 7:
				{
					m_PermaFlags = reader.ReadStrongMobileList();
					goto case 6;
				}
				case 6:
				{
					NextTailorBulkOrder = reader.ReadTimeSpan();
					goto case 5;
				}
				case 5:
				{
					NextSmithBulkOrder = reader.ReadTimeSpan();
					goto case 4;
				}
				case 4:
				{
					m_LastJusticeLoss = reader.ReadDeltaTime();
					m_JusticeProtectors = reader.ReadStrongMobileList();
					goto case 3;
				}
				case 3:
				{
					m_LastSacrificeGain = reader.ReadDeltaTime();
					m_LastSacrificeLoss = reader.ReadDeltaTime();
					m_AvailableResurrects = reader.ReadInt();
					goto case 2;
				}
				case 2:
				{
					m_Flags = (PlayerFlag)reader.ReadInt();
					goto case 1;
				}
				case 1:
				{
					m_LongTermElapse = reader.ReadTimeSpan();
					m_ShortTermElapse = reader.ReadTimeSpan();
					m_GameTime = reader.ReadTimeSpan();
					goto case 0;
				}
				case 0:
				{
					if( version < 26 )
						m_AutoStabled = new List<Mobile>();
					break;
				}
			}

			if (m_RecentlyReported == null)
				m_RecentlyReported = new List<Mobile>();

			// Professions weren't verified on 1.0 RC0
			if ( !CharacterCreation.VerifyProfession( m_Profession ) )
				m_Profession = 0;

			if ( m_PermaFlags == null )
				m_PermaFlags = new List<Mobile>();

			if ( m_JusticeProtectors == null )
				m_JusticeProtectors = new List<Mobile>();

			if ( m_BOBFilter == null )
				m_BOBFilter = new Engines.BulkOrders.BOBFilter();

			if( m_GuildRank == null )
				m_GuildRank = Guilds.RankDefinition.Member;	//Default to member if going from older verstion to new version (only time it should be null)

			if( m_LastOnline == DateTime.MinValue && Account != null )
				m_LastOnline = ((Account)Account).LastLogin;

			if( m_ChampionTitles == null )
				m_ChampionTitles = new ChampionTitleInfo();

			if ( AccessLevel > AccessLevel.Player )
				m_IgnoreMobiles = true;

			List<Mobile> list = this.Stabled;

			for ( int i = 0; i < list.Count; ++i )
			{
				BaseCreature bc = list[i] as BaseCreature;

				if ( bc != null )
					bc.IsStabled = true;
			}

			CheckAtrophies( this );

			if( Hidden )	//Hiding is the only buff where it has an effect that's serialized.
				AddBuff( new BuffInfo( BuffIcon.HidingAndOrStealth, 1075655 ) );
		}
Exemplo n.º 52
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 5:
            {
                m_BeginGame = reader.ReadBool();
            }
                goto case 4;

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

                for (int i = 0; i < count; ++i)
                {
                    PlayerMobile     player  = reader.ReadMobile() as PlayerMobile;
                    EquipmentStorage storage = reader.ReadItem() as EquipmentStorage;
                    m_PlayerSupplies.Add(player, storage);
                }
                goto case 3;
            }

            case 3:
            {
                m_UseGump   = reader.ReadBool();
                m_GameName  = reader.ReadString();
                m_EventType = (EventType)reader.ReadInt();
                int count = reader.ReadInt();
                for (int i = 0; i < count; ++i)
                {
                    m_PlayerScores.Add(reader.ReadMobile(), reader.ReadInt());
                }
                goto case 2;
            }

            case 2:
            {
                Open           = reader.ReadBool();
                m_GiveSupplies = reader.ReadBool();
                m_Supplier     = reader.ReadItem() as EventSupplier;
                goto case 1;
            }

            case 1:
            {
                m_Players    = reader.ReadStrongMobileList();
                m_GameMaster = reader.ReadMobile();
                m_MsgStaff   = reader.ReadBool();
                m_Running    = reader.ReadBool();
                m_StartTime  = reader.ReadDateTime();
                m_Length     = reader.ReadTimeSpan();
                m_MaxScore   = reader.ReadInt();
                m_Lobby      = reader.ReadPoint3D();
                m_LobbyMap   = reader.ReadMap();
                break;
            }
            }
        }