예제 #1
0
      public override void Deserialize( GenericReader reader ) 
      { 
         base.Deserialize( reader ); 

         int version = reader.ReadInt(); 
             
         m_Voteds = reader.ReadMobileList(); 
      }    
예제 #2
0
        public Candidate( GenericReader reader )
        {
            int version = reader.ReadEncodedInt();

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

                        int count = reader.ReadEncodedInt();
                        m_Voters = new ArrayList( count );

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

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

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

                        ArrayList mobs = reader.ReadMobileList();
                        m_Voters = new ArrayList( mobs.Count );

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

                        break;
                    }
            }
        }
예제 #3
0
파일: Data.cs 프로젝트: guy489/runuot2a
        public void LoadGlobalListens(GenericReader reader)
        {
            int version = reader.ReadInt();

            c_GIgnores = reader.ReadMobileList();
            c_GListens = reader.ReadMobileList();
        }
예제 #4
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();
			int count;

			switch ( version )
			{
				case 14:
				{
					m_RelativeBanLocation = reader.ReadPoint3D();
					goto case 13;
				}
				case 13: // removed ban location serialization
				case 12:
				{
					m_VendorRentalContracts = reader.ReadItemList();
					m_InternalizedVendors = reader.ReadMobileList();

					int relocatedCount = reader.ReadEncodedInt();
					for ( int i = 0; i < relocatedCount; i++ )
					{
						Point3D relLocation = reader.ReadPoint3D();
						IEntity entity = World.FindEntity( reader.ReadInt() );

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

					int inventoryCount = reader.ReadEncodedInt();
					for ( int i = 0; i < inventoryCount; i++ )
					{
						VendorInventory 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.ReadMobileList();
					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.ReadItemList();
					goto case 3;
				}
				case 3:
				{
					count = reader.ReadInt();
					m_Secures = new ArrayList( count );

					for ( int i = 0; i < count; ++i )
					{
						SecureInfo 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 = this.BaseBanLocation;

					if ( version < 12 )
					{
						m_VendorRentalContracts = new ArrayList();
						m_InternalizedVendors = new ArrayList();
					}

					if ( version < 4 )
						m_Addons = new ArrayList();

					if ( version < 7 )
						m_Access = new ArrayList();

					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.ReadMobileList();
					m_Friends = reader.ReadMobileList();
					m_Bans = reader.ReadMobileList();

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

					m_Doors = reader.ReadItemList();
					m_LockDowns = reader.ReadItemList();

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

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

					if ( version < 3 )
					{
						ArrayList items = reader.ReadItemList();
						m_Secures = new ArrayList( items.Count );

						for ( int i = 0; i < items.Count; ++i )
						{
							Container 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, new TimerCallback( FixLockdowns_Sandbox ) );
			}

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

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

				if ( m_Owner == null && m_Friends.Count == 0 && m_CoOwners.Count == 0 )
					Timer.DelayCall( TimeSpan.FromSeconds( 10.0 ), new TimerCallback( Delete ) );
			}
		}
예제 #5
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
            int version = reader.ReadInt();

            switch ( version )
            {
                case 18:
                {
                    m_NextBountyDecay = reader.ReadDateTime();
                    goto case 17;
                }
                case 17:
                {
                    m_LastUpdate = reader.ReadInt();
                    m_LastLogin = reader.ReadDateTime();

                    goto case 16;
                }
                case 16:
                {
                    m_NextNotoUp = reader.ReadDateTime();
                    m_Cohesion = reader.ReadInt();
                    m_LastCohesion = DateTime.Now - reader.ReadTimeSpan();
                    m_AssumeGhost = reader.ReadBool();

                    int skillCount = reader.ReadByte();
                    m_SkillUsageOrder = new byte[skillCount];
                    for(int i=0;i<skillCount;i++)
                        m_SkillUsageOrder[i] = reader.ReadByte();

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

                    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:
                {
                    goto case 11;
                }
                case 11:
                {
                    if ( version < 13 )
                    {
                        ArrayList payed = reader.ReadItemList();

                        for ( int i = 0; i < payed.Count; ++i )
                            ((Item)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();

                        // We cannot call SetHairMods( -1, -1 ) here because the items have not yet loaded
                        Timer.DelayCall( TimeSpan.Zero, new TimerCallback( RevertHair ) );
                    }

                    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.ReadMobileList();
                    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.ReadMobileList();
                    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:
                {
                    break;
                }
            }

            if ( m_PermaFlags == null )
                m_PermaFlags = new ArrayList();

            if ( m_JusticeProtectors == null )
                m_JusticeProtectors = new ArrayList();

            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;
            }

            if ( m_NextBountyDecay == DateTime.MinValue )
            {
                if ( m_LastLogin != DateTime.MinValue )
                    m_NextBountyDecay = m_LastLogin + TimeSpan.FromDays( 1.0 );
            }

            while ( m_Bounty > 0 && m_NextBountyDecay < DateTime.Now )
            {
                m_Bounty -= 100;
                m_NextBountyDecay += TimeSpan.FromDays( 1.0 );
            }

            if ( m_Bounty <= 0 )
            {
                m_Bounty = 0;
                Kills = 0;
            }

            if ( m_Bounty > 0 && m_Bounty > BountyBoard.LowestBounty )
                BountyBoard.Update( this );

            if ( m_SkillUsageOrder == null )
            {
                m_SkillUsageOrder = new byte[PlayerMobile.SkillCount];
                for(int i=0;i<PlayerMobile.SkillCount;i++)
                    m_SkillUsageOrder[i] = (byte)i;
            }
        }
예제 #6
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                case 4:
                {
                    m_Identified = reader.ReadMobileList();

                    goto case 3;
                }
                case 3:
                {
                    m_Effect = (SpellEffect)reader.ReadInt();
                    m_EffectCharges = reader.ReadInt();
                    if ( version < 4 )
                        /*m_Identified = */reader.ReadBool();
                    goto case 2;
                }
                case 2:
                {
                    m_PlayerConstructed = reader.ReadBool();
                    goto case 1;
                }
                case 1:
                {
                    m_Crafter = reader.ReadMobile();
                    m_Quality = (CraftQuality)reader.ReadInt();
                    break;
                }
                case 0:
                {
                    m_Crafter = null;
                    m_Quality = CraftQuality.Regular;
                    break;
                }
            }

            if ( version < 2 )
                m_PlayerConstructed = false;

            if ( Parent is Mobile && m_Effect != SpellEffect.None && m_EffectCharges > 0 && SpellCastEffect.IsRepeatingEffect( m_Effect ) )
            {
                m_Timer = new CheckTimer( this );
                m_Timer.Start();
            }
        }
예제 #7
0
            public override void Deserialize( GenericReader reader )
            {
                base.Deserialize( reader );

                int version = reader.ReadInt();

                m_Mobiles = reader.ReadMobileList();

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

                m_Mobiles.Clear();

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

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

                m_Table = new Hashtable();
            }
예제 #8
0
		public override void Deserialize( GenericReader reader )
		{
            base.Deserialize(reader);
            int version = reader.ReadInt();
            m_market = reader.ReadItemList();
            m_marketmob = reader.ReadMobileList();
		}
예제 #9
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_Tentacles = reader.ReadMobileList();

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

					break;
				}
			}
		}
예제 #10
0
        public override void Deserialize( GenericReader reader )
        {
            int version = reader.ReadInt();

            switch ( version )
            {
                case 4:
                {
                    m_AllyDeclarations = reader.ReadGuildList();
                    m_AllyInvitations = reader.ReadGuildList();

                    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();
                    m_Name = reader.ReadString();
                    m_Abbreviation = reader.ReadString();

                    m_Allies = reader.ReadGuildList();
                    m_Enemies = reader.ReadGuildList();
                    m_WarDeclarations = reader.ReadGuildList();
                    m_WarInvitations = reader.ReadGuildList();

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

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

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

                    break;
                }
            }

            if ( m_AllyDeclarations == null )
                m_AllyDeclarations = new ArrayList();

            if ( m_AllyInvitations == null )
                m_AllyInvitations = new ArrayList();

            if ( m_Guildstone == null || m_Members.Count == 0 )
                Disband();
        }
예제 #11
0
        protected void Load(GenericReader reader)
        {
            int version = reader.ReadInt();

            c_Mobiles = reader.ReadMobileList();
            c_Filter = reader.ReadBool();
            c_Delay = reader.ReadBool();
            c_Name = reader.ReadString();
            c_Style = (ChatStyle)reader.ReadInt();
            c_ToIrc = reader.ReadBool();
            c_NewChars = reader.ReadBool();
            c_ShowStaff = reader.ReadBool();
            c_Enabled = reader.ReadBool();

            int count = reader.ReadInt();
            Mobile m;
            for (int i = 0; i < count; ++i)
            {
                m = reader.ReadMobile();
                if (m != null)
                    c_Colors[m] = reader.ReadInt();
                else
                    reader.ReadInt();
            }

            c_Commands.Clear();
            count = reader.ReadInt();
            for (int i = 0; i < count; ++i)
                c_Commands.Add(reader.ReadString());

            foreach (string str in c_Commands)
                AddCommand(str);

            ArrayList list = new ArrayList();
            foreach(Mobile mob in c_Mobiles)
                if (!list.Contains(mob))
                    list.Add(mob);

            c_Mobiles = new ArrayList(list);
        }
예제 #12
0
		public override void Deserialize( GenericReader reader )
		{
            TimeSpan ts = TimeSpan.Zero;

			base.Deserialize( reader );

			int version = reader.ReadInt();
			
			switch ( version )
			{
				case 3:
					{
						m_LevelScale = reader.ReadDouble();
						goto case 2;
					}
        case 2:
        {
            m_LevelError = (LevelErrors)reader.ReadInt();
            goto case 1;
        }
        case 1:
        {                                      
            ts = reader.ReadDeltaTime() - DateTime.Now;                    
            goto case 0;
        }
				case 0:
				{

					// read it all back in									
					m_Type = ((ChampLevelData.SpawnTypes)reader.ReadInt());

					int a = reader.ReadInt();
					SpawnLevels  = new ArrayList();
					
					// create new level array through deserialise constructors
					for( int i = 0 ; i < a; ++i )
						SpawnLevels.Add( new ChampLevelData( reader ) );	

					m_Monsters = reader.ReadMobileList();
					m_FreeMonsters = reader.ReadMobileList();
					m_LevelCounter = reader.ReadInt();
					m_Kills = reader.ReadInt();
					m_ExpireTime = reader.ReadDateTime();
					m_NavDest = (NavDestinations)reader.ReadInt();
					
					// the bools
					m_bActive = reader.ReadBool();
					m_bGraphics = reader.ReadBool();					

					// if graphics were on remake them thru deserialise constructor
					if( m_bGraphics )
						m_Graphics = new ChampGraphics(this, reader);

					// and the restart...
					m_bRestart = reader.ReadBool();
					m_RestartDelay = reader.ReadTimeSpan();
					
					if( reader.ReadBool() && !m_bActive && m_bRestart )
					{
						// in this case the champ is activley in restart mode, so create new timer
						//pla: 13/01/07
						//changed so we don't lose time on restart
						if (ts == TimeSpan.Zero)
								DoTimer(m_RestartDelay);
						else
								DoTimer(ts);
					}
					else if( m_bActive )
					{					
						// if spawn was active then start the wheels turning...
						StartSlice();
					}
										
					break;
				}
				
			}

		}
예제 #13
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();
			m_NestSpawnType = reader.ReadString();
			m_Spawn = reader.ReadMobileList();
			m_MaxCount = reader.ReadInt();
			m_RespawnTime = reader.ReadTimeSpan();
			m_HitsMax = reader.ReadInt();
			m_Hits = reader.ReadInt();
			m_RangeHome = reader.ReadInt();
			m_LootLevel = reader.ReadInt();
			m_Entity = reader.ReadMobile();
		}
예제 #14
0
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize(reader);

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

			m_Region = new HouseRegion(this);

			switch (version)
			{
				case 20:
					{
						m_NPCData = reader.ReadUInt32();
						goto case 19;
					}
				case 19:
					{
						m_RestartDecay = reader.ReadTimeSpan();
						goto case 18;
					}
				case 18:
					{
						m_Flags = (ImplFlags)reader.ReadUInt32();
						goto case 17;
					}
				case 17:
					{
						m_UpgradeCosts = reader.ReadUInt32();
						goto case 16;
					}
				case 16:
					{
						m_LockBoxData = reader.ReadUInt32();
						goto case 15;
					}
				case 15:
					{
						m_SecurePremises = reader.ReadBool();
						goto case 14;
					}
				case 14:
					{
						idocannc = reader.ReadBool();
						goto case 13;
					}
				case 13:
					{
						m_DecayMinutesStored = reader.ReadDouble();
						m_NeverDecay = reader.ReadBool();
						goto case 11; //note, this isn't a mistake - we want to skip 12
					}
				case 12:
					{
						DateTime tempDT = reader.ReadDeltaTime();
						//StructureDecayTime = reader.ReadDeltaTime();
						m_DecayMinutesStored = (tempDT - DateTime.Now).TotalMinutes;

						m_NeverDecay = reader.ReadBool();
						goto case 11;
					}
				case 11:
					{
						m_MaxLockBoxes = reader.ReadInt();
						m_LockBoxCount = reader.ReadInt();

						goto case 9;
					}
				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.ReadMobileList();
						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.ReadItemList();
						goto case 3;
					}
				case 3:
					{
						count = reader.ReadInt();
						m_Secures = new ArrayList(count);

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

							if (info.Item != null)
							{
								info.Item.IsSecure = true;
								info.Item.CancelFreezeTimer();        // don't initiate for Deserialize
								m_Secures.Add(info);
							}
						}

						goto case 2;
					}
				case 2:
					{
						m_Public = reader.ReadBool();
						goto case 1;
					}
				case 1:
					{
						m_Region.GoLocation = reader.ReadPoint3D();
						goto case 0;
					}
				case 0:
					{

						if (version < 16)
						{
							LockBoxCeling = (uint)m_MaxLockBoxes * 2;   // high limit
							LockBoxFloor = (uint)m_MaxLockBoxes;        // low limit
						}

						if (version < 12)
						{
							Refresh();
							m_NeverDecay = false;
						}

						if (version < 4)
							m_Addons = new ArrayList();

						if (version < 7)
							m_Access = new ArrayList();

						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();
						}

						UpdateRegionArea();

						Region.AddRegion(m_Region);

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

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

						m_Doors = reader.ReadItemList();
						m_LockDowns = reader.ReadItemList();

						for (int i = 0; i < m_LockDowns.Count; ++i)
						{
							Item item = m_LockDowns[i] as Item;
							if (item != null)
							{
								item.IsLockedDown = true;
								item.CancelFreezeTimer();        // don't initiate for Deserialize
							}
						}

						if (version < 3)
						{
							ArrayList items = reader.ReadItemList();
							m_Secures = new ArrayList(items.Count);

							for (int i = 0; i < items.Count; ++i)
							{
								Container 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)
						{
							ArrayList list = (ArrayList)m_Table[m_Owner];

							if (list == null)
								m_Table[m_Owner] = list = new ArrayList();

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

			// patch m_NPCData to hold the default barkeep count
			if (version < 20)
				MaximumBarkeepCount = 2;		

			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, new TimerCallback(FixLockdowns_Sandbox));
			}

			if (idocannc) // idoc announcement was running when we saved, re-create it
			{
				string[] lines = new string[1];
				lines[0] = String.Format("Lord British has condemned the estate of {0} near {1}.", this.Owner.Name, DescribeLocation());
				m_IDOC_Broadcast_TCE = new TownCrierEntry(lines, TimeSpan.FromMinutes(m_DecayMinutesStored), Serial.MinusOne);
				GlobalTownCrierEntryList.Instance.AddEntry(m_IDOC_Broadcast_TCE);
			}
		}
예제 #15
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
            int version = reader.ReadInt();

            switch ( version )
            {
            //duel system
                case 19:
                {
                    m_Wins = reader.ReadEncodedInt();
                    m_Losses = reader.ReadEncodedInt();

                    goto case 18;
                }
            //duel system
                case 18:
                {
                    if ( version < 19 )
                    {
                        m_Wins = 0;
                        m_Losses = 0;
                    }
                    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 ArrayList();

                        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 )
                    {
                        ArrayList payed = reader.ReadItemList();

                        for ( int i = 0; i < payed.Count; ++i )
                            ((Item)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();

                        // We cannot call SetHairMods( -1, -1 ) here because the items have not yet loaded
                        Timer.DelayCall( TimeSpan.Zero, new TimerCallback( RevertHair ) );
                    }

                    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.ReadMobileList();
                    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.ReadMobileList();
                    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:
                {
                    break;
                }
            }

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

            if ( m_PermaFlags == null )
                m_PermaFlags = new ArrayList();

            if ( m_JusticeProtectors == null )
                m_JusticeProtectors = new ArrayList();

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

            ArrayList list = this.Stabled;

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

                if ( bc != null )
                    bc.IsStabled = true;
            }
        }
예제 #16
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.ReadMobileList();
            m_No = reader.ReadMobileList();
        }
예제 #17
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                case 2:
                {
                    m_Guardians = reader.ReadMobileList();
                    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.ReadItemList();

                    if ( version < 2 )
                        m_Guardians = new ArrayList();

                    break;
                }
            }

            if ( !m_Temporary )
            {
                m_Timer = new DeleteTimer( this, m_DeleteTime );
                m_Timer.Start();
            }
            else
            {
                Delete();
            }
        }
예제 #18
0
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize(reader);
			int version = reader.ReadInt();

			switch (version)
			{
				case 0:
					{
						m_mobiles = reader.ReadMobileList<Mobile>();
						m_items = reader.ReadItemList<Item>();
						break;
					}
			}
		}
예제 #19
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                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:
                {
                    m_VisitedByTaxidermist = reader.ReadBool();

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

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

                    goto case 5;
                }
                case 5:
                {
                    m_Carved = reader.ReadBool();

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

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

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

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

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

                    if ( version < 7 )
                        BeginDecay( m_DefaultDecayTime );

                    if ( version < 6 )
                        m_Looters = new ArrayList();

                    if ( version < 4 )
                        m_Aggressors = new ArrayList();

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

                    int count = reader.ReadInt();

                    m_EquipItems = new ArrayList( count );

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

                        if ( item != null )
                            m_EquipItems.Add( item );
                    }

                    break;
                }
            }
        }
예제 #20
0
		/// <summary>
		/// Deserializes the specified reader.
		/// </summary>
		/// <param name="reader">The reader.</param>
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize(reader);

			int version = reader.ReadInt();

			switch (version)
			{
				case 3:
					{
						m_LastAnnounceTime = reader.ReadDateTime();
						goto case 2;
					}

				case 2:
					{
						m_ShopperQueue = new Queue<PlayerMobile>(reader.ReadMobileList<PlayerMobile>());
						goto case 1;
					}
				case 1:
					{
						m_VisitorQueue = new Queue<PlayerMobile>(reader.ReadMobileList<PlayerMobile>());
						m_City = (KinFactionCities)reader.ReadInt();
						m_Champs = reader.ReadItemList<ChampKinCity>();
						goto case 0;
					}
				case 0:
					break;
			}

		}
예제 #21
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.ReadItemList();

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

                    m_Creatures = reader.ReadMobileList();

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

                    State = (GauntletSpawnerState)reader.ReadInt();

                    break;
                }
            }
        }
예제 #22
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                case 0:
                {
                    m_PotionEffect = (PotionEffect)reader.ReadInt();
                    break;
                }
                case 1:
                {
                    if( reader.ReadBool() )
                        m_Tasters = reader.ReadMobileList();
                    goto case 0;
                }
            }
        }
예제 #23
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                case 0:
                {
                    m_Items = reader.ReadItemList();
                    m_Mobiles = reader.ReadMobileList();
                    m_DecayTime = reader.ReadDeltaTime();

                    RefreshDecay( false );

                    break;
                }
            }
        }
예제 #24
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );
			int version = reader.ReadInt();
            SaveFlag saveFlags = ReadSaveBits(reader, version, 30);

			///////////////////////////////////////////////////
			// put all normal serialization below this line
			///////////////////////////////////////////////////

	        switch ( version )
			{
				case 32:
					{
						//Adam: v32 add mini game ID and save data.
						if (GetSaveFlag(saveFlags, SaveFlag.ZCodeMiniGame) == true)
						{
							m_ZCodeMiniGameID = reader.ReadInt();				// hash code of the string naming the mini game
							int size = reader.ReadInt();						// saved game size
							m_ZCodeMiniGameData = new byte[size];				// allocate a new game buffer
							for (int ix = 0; ix < size; ix++)
								m_ZCodeMiniGameData[ix] = reader.ReadByte();	// saved game
						}
						goto case 31;
					}
                case 31:
                {
                    if (GetSaveFlag(saveFlags, SaveFlag.NPCGuild) == true)
                        m_NpcGuildPoints = reader.ReadDouble();

                    goto case 30;
                }
                case 30: // Adam: v.30 Dummy version, removed NPCGuild vars when not needed
                {
                    goto case 29;
                }
				case 29: //Pla: Dummy version, removed duel system vars
				{
					goto case 28;
				}
                case 28: //Pix: Kin Faction additions
                {
                    m_KinSoloPoints = reader.ReadDouble();
                    m_KinTeamPoints = reader.ReadDouble();

                    goto case 27;
                }
				case 27: //Pix: challenge duel system
				{
					//pla: not used anymore
					if (version < 29)
					{
						//m_iChallengeDuelWins = reader.ReadInt();
						//m_iChallengeDuelLosses = reader.ReadInt();
						reader.ReadInt();
						reader.ReadInt();
					}
					
					goto case 26;
				}
                case 26: //Adam: ghost blindness
                {
                    m_Blind = reader.ReadBool();
                    m_SightExpire = reader.ReadDateTime();
                    if (m_SightExpire != DateTime.MaxValue)
                    {
                        if (m_SightExpire <= DateTime.Now)
                            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(GoBlind));
                        else
                            Timer.DelayCall(m_SightExpire - DateTime.Now, new TimerCallback(GoBlind));
                    }
                           
                    goto case 25;
                }
				case 25: //Pix: WatchList enhancements
				{
					m_WatchReason = reader.ReadString();
					m_WatchExpire = reader.ReadDateTime();
					goto case 24;
				}
				case 24: // Rhi: FilterMusic
				{
					m_FilterMusic = reader.ReadBool();
					goto case 23;
				}
				case 23: // Pix: IOB System changes
				{
					m_IOBKillPoints = reader.ReadDouble();
					m_LastGuildIOBAlignment = (IOBAlignment)reader.ReadInt();
					m_LastGuildChange = reader.ReadDateTime();

					goto case 22;
				}
				case 22:
				{
					m_Reported = reader.ReadDateTime();
					if (m_Reported > DateTime.Now - ReportTime)
					{
						m_ReportLogger = new LogHelper( GetReportLogName(m_Reported.ToString("MM-dd-yyyy HH-mm-ss")), false );
						m_ReportLogStopper = Timer.DelayCall(ReportTime - (DateTime.Now - m_Reported), new TimerCallback(EndReport));
					}
					goto case 21;
				}
				case 21:
				{
					LastRegion = Region.Find( this.Location, this.Map );
					goto case 20;
				}
				case 20: //Pix: Offline short count decay
				{
					m_LastShortDecayed = reader.ReadDateTime();
					goto case 19;
				}
				case 19: //Pix - for IOB Ranks
				{
					m_IOBRankTime = reader.ReadTimeSpan();
					goto case 18;
				}
				case 18: //Pigpen - Addition for IOB Sytem
				{
					if( version < 23 )
					{
						//m_IOBAlignment = (IOBAlignment)reader.ReadInt();
						//IOBTimer = reader.ReadTimeSpan();
						reader.ReadInt();
						reader.ReadTimeSpan();
					}
					m_IOBEquipped = reader.ReadBool();
					goto case 16;
				}
				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 ArrayList();

						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 )
					{
						ArrayList payed = reader.ReadItemList();
						// Adam: no more insurance
						//for ( int i = 0; i < payed.Count; ++i )
						//((Item)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();

						// We cannot call SetHairMods( -1, -1 ) here because the items have not yet loaded
						Timer.DelayCall( TimeSpan.Zero, new TimerCallback( RevertHair ) );
					}

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

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

					goto case 8;
				}
				case 8:
				{
                    if (version < 30)
                    {
                        m_NpcGuild = (NpcGuild)reader.ReadInt();
                        m_NpcGuildJoinTime = reader.ReadDateTime();
                        m_NpcGuildGameTime = reader.ReadTimeSpan();
                    }
                    else if (GetSaveFlag(saveFlags, SaveFlag.NPCGuild) == true)
                    {
                        m_NpcGuild = (NpcGuild)reader.ReadInt();
                        m_NpcGuildJoinTime = reader.ReadDateTime();
                        m_NpcGuildGameTime = reader.ReadTimeSpan();
                    }
					goto case 7;
				}
				case 7:
				{
					m_PermaFlags = reader.ReadMobileList();
					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.ReadMobileList();
					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:
				{
					break;
				}
			}

			if ( m_PermaFlags == null )
				m_PermaFlags = new ArrayList();

			if ( m_JusticeProtectors == null )
				m_JusticeProtectors = new ArrayList();

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

			ArrayList list = this.Stabled;

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

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

			//Pix: this is for safety... to make sure it's set
			m_InmateLastDeathTime = DateTime.MinValue;

			//Pix: make sure this is set to minvalue for loading
			m_IOBStartedWearing = DateTime.MinValue;

			//wea: SpiritCohesion is not persistent across saves
			m_SpiritCohesion = 0;

			//wea: For spirit cohesion, last resurrect time
			m_LastResurrectTime = DateTime.MinValue;

		}
예제 #25
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();

            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();

                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_bControled = 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_bControled = 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.ReadMobileList();
            else
                m_Owners = new ArrayList();

            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;

                // temporary mod for conversion
                //reader.ReadTimeSpan();
                //m_Paragon = reader.ReadBool();

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

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

            CheckStatTimers();

            ChangeAIType(m_CurrentAI);

            // ARTEGORDONMOD
            // PlayerRangeSensitiveMod
            if ( version >= 14 )
            {
                TimeSpan restartDeactivationdelay = reader.ReadTimeSpan();
                if(m_AI != null) {
                    m_AI.m_RestartDeactivationdelay = restartDeactivationdelay;
                }
            }

            if ( m_IsBonded == true )
                m_IsBonded = false;

            AddFollowers();

            if ( IsAnimatedDead )
                Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this );
        }
예제 #26
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() as 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.ReadMobileList();
                    m_RedSkulls = reader.ReadItemList();
                    m_WhiteSkulls = reader.ReadItemList();
                    m_Platform = reader.ReadItem() as ChampionPlatform;
                    m_Altar = reader.ReadItem() as 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 ) );
        }
예제 #27
0
파일: Data.cs 프로젝트: guy489/runuot2a
        public void LoadFriends(GenericReader reader)
        {
            int version = reader.ReadInt();

            c_Friends = reader.ReadMobileList();
        }
		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();

			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();
                m_arSpellAttack = ReadTypeArray(reader);
                m_arSpellDefense = ReadTypeArray(reader);
			}
			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.ReadMobileList();
				if (m_Owners.Count == 0) m_Owners = null;
			}

			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.ReadMobileList();
			else if ( version < 13 && m_ControlOrder >= OrderType.Unfriend )
				++m_ControlOrder;

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

// *** Added for Valor ***
			if ( version >= 14 )
			{
				m_IsChampionMonster = reader.ReadBool();
				m_SpawnLevel = reader.ReadInt();
			}
// *** ***

			CheckStatTimers();

			ChangeAIType(m_CurrentAI);

			AddFollowers();

			if ( IsAnimatedDead )
				Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this );
		}
예제 #29
0
파일: Data.cs 프로젝트: guy489/runuot2a
        public void LoadIgnores(GenericReader reader)
        {
            int version = reader.ReadInt();

            c_Ignores = reader.ReadMobileList();
        }
예제 #30
0
        public virtual void Deserialize( GenericReader reader )
        {
            int version = reader.ReadInt();

            switch ( version )
            {
                case 28:
                {
                    m_LastStatGain = reader.ReadDeltaTime();

                    goto case 27;
                }
                case 27:
                {
                    m_TithingPoints = reader.ReadInt();

                    goto case 26;
                }
                case 26:
                case 25:
                case 24:
                {
                    m_Corpse = reader.ReadItem() as Container;

                    goto case 23;
                }
                case 23:
                {
                    m_CreationTime = reader.ReadDateTime();

                    goto case 22;
                }
                case 22: // Just removed followers
                case 21:
                {
                    m_Stabled = reader.ReadMobileList();

                    goto case 20;
                }
                case 20:
                {
                    m_CantWalk = reader.ReadBool();

                    goto case 19;
                }
                case 19: // Just removed variables
                case 18:
                {
                    m_Virtues = new VirtueInfo( reader );

                    goto case 17;
                }
                case 17:
                {
                    m_Thirst = reader.ReadInt();
                    m_BAC = reader.ReadInt();

                    goto case 16;
                }
                case 16:
                {
                    m_ShortTermMurders = reader.ReadInt();

                    if ( version <= 24 )
                    {
                        reader.ReadDateTime();
                        reader.ReadDateTime();
                    }

                    goto case 15;
                }
                case 15:
                {
                    if ( version < 22 )
                        reader.ReadInt(); // followers

                    m_FollowersMax = reader.ReadInt();

                    goto case 14;
                }
                case 14:
                {
                    m_MagicDamageAbsorb = reader.ReadInt();

                    goto case 13;
                }
                case 13:
                {
                    m_GuildFealty = reader.ReadMobile();

                    goto case 12;
                }
                case 12:
                {
                    m_Guild = reader.ReadGuild();

                    goto case 11;
                }
                case 11:
                {
                    m_DisplayGuildTitle = reader.ReadBool();

                    goto case 10;
                }
                case 10:
                {
                    m_CanSwim = reader.ReadBool();

                    goto case 9;
                }
                case 9:
                {
                    m_Squelched = reader.ReadBool();

                    goto case 8;
                }
                case 8:
                {
                    m_Holding = reader.ReadItem();

                    goto case 7;
                }
                case 7:
                {
                    m_VirtualArmor = reader.ReadInt();

                    goto case 6;
                }
                case 6:
                {
                    m_BaseSoundID = reader.ReadInt();

                    goto case 5;
                }
                case 5:
                {
                    m_DisarmReady = reader.ReadBool();
                    m_StunReady = reader.ReadBool();

                    goto case 4;
                }
                case 4:
                {
                    if ( version <= 25 )
                    {
                        Poison.Deserialize( reader );

                        /*if ( m_Poison != null )
                        {
                            m_PoisonTimer = new PoisonTimer( this );
                            m_PoisonTimer.Start();
                        }*/
                    }

                    goto case 3;
                }
                case 3:
                {
                    m_StatCap = reader.ReadInt();

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

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

                    goto case 0;
                }
                case 0:
                {
                    if ( version < 21 )
                        m_Stabled = new ArrayList();

                    if ( version < 18 )
                        m_Virtues = new VirtueInfo();

                    if ( version < 11 )
                        m_DisplayGuildTitle = true;

                    if ( version < 3 )
                        m_StatCap = 225;

                    if ( version < 15 )
                    {
                        m_Followers = 0;
                        m_FollowersMax = 5;
                    }

                    m_Location = reader.ReadPoint3D();
                    m_Body = new Body( reader.ReadInt() );
                    m_Name = reader.ReadString();
                    m_GuildTitle = reader.ReadString();
                    m_Criminal = reader.ReadBool();
                    m_Kills = reader.ReadInt();
                    m_SpeechHue = reader.ReadInt();
                    m_EmoteHue = reader.ReadInt();
                    m_WhisperHue = reader.ReadInt();
                    m_YellHue = reader.ReadInt();
                    m_Language = reader.ReadString();
                    m_Female = reader.ReadBool();
                    m_Warmode = reader.ReadBool();
                    m_Hidden = reader.ReadBool();
                    m_Direction = (Direction) reader.ReadByte();
                    m_Hue = reader.ReadInt();
                    m_Str = reader.ReadInt();
                    m_Dex = reader.ReadInt();
                    m_Int = reader.ReadInt();
                    m_Hits = reader.ReadInt();
                    m_Stam = reader.ReadInt();
                    m_Mana = reader.ReadInt();
                    m_Map = reader.ReadMap();
                    m_Blessed = reader.ReadBool();
                    m_Fame = reader.ReadInt();
                    m_Karma = reader.ReadInt();
                    m_AccessLevel = (AccessLevel) reader.ReadByte();

                    m_Skills = new Skills( this, reader );

                    int itemCount = reader.ReadInt();

                    m_Items = new ArrayList( itemCount );

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

                        if ( item != null )
                            m_Items.Add( item );
                    }

                    m_Player = reader.ReadBool();
                    m_Title = reader.ReadString();
                    m_Profile = reader.ReadString();
                    m_ProfileLocked = reader.ReadBool();
                    if ( version <= 18 )
                    {
                        /*m_LightLevel =*/ reader.ReadInt();
                        /*m_TotalGold =*/ reader.ReadInt();
                        /*m_TotalWeight =*/ reader.ReadInt();
                    }
                    m_AutoPageNotify = reader.ReadBool();

                    m_LogoutLocation = reader.ReadPoint3D();
                    m_LogoutMap = reader.ReadMap();

                    m_StrLock = (StatLockType)reader.ReadByte();
                    m_DexLock = (StatLockType)reader.ReadByte();
                    m_IntLock = (StatLockType)reader.ReadByte();

                    m_StatMods = new ArrayList();

                    if ( reader.ReadBool() )
                    {
                        m_StuckMenuUses = new DateTime[reader.ReadInt()];

                        for ( int i = 0; i < m_StuckMenuUses.Length; ++i )
                        {
                            m_StuckMenuUses[i] = reader.ReadDateTime();
                        }
                    }
                    else
                    {
                        m_StuckMenuUses = null;
                    }

                    if ( m_Player && m_Map != Map.Internal )
                    {
                        m_LogoutLocation = m_Location;
                        m_LogoutMap = m_Map;

                        m_Map = Map.Internal;
                    }

                    if ( m_Map != null )
                        m_Map.OnEnter( this );

                    if ( m_Criminal )
                    {
                        if ( m_ExpireCriminal == null )
                            m_ExpireCriminal = new ExpireCriminalTimer( this );

                        m_ExpireCriminal.Start();
                    }

                    if ( ShouldCheckStatTimers )
                        CheckStatTimers();

                    if ( !m_Player && m_Dex <= 100 && m_CombatTimer != null )
                        m_CombatTimer.Priority = TimerPriority.FiftyMS;
                    else if ( m_CombatTimer != null )
                        m_CombatTimer.Priority = TimerPriority.EveryTick;

                    m_Region = Region.Find( m_Location, m_Map );

                    m_Region.InternalEnter( this );

                    UpdateResistances();

                    break;
                }
            }
        }