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

            int version = reader.ReadInt();

            switch ( version )
            {
                case 0:
                {
                    m_MinSkill = reader.ReadDouble();
                    m_MaxSkill = reader.ReadDouble();

                    if ( m_MinSkill == 0.0 && m_MaxSkill == 30.0 )
                    {
                        m_MinSkill = -25.0;
                        m_MaxSkill = +25.0;
                    }

                    break;
                }
            }

            UpdateItemID();
        }
		public void ExtendedDeserialize( GenericReader reader, int parentVerison )
		{
			int version = reader.ReadInt();

			switch (version)
			{

                                 case 3:
                                 {
					m_PopUpToggle = reader.ReadBool();
                                        goto case 2;
                                 }
                                 case 2:
                                 {
				 	Percent = reader.ReadDouble();
                                 	m_LevelTitle = reader.ReadString();
                                        m_PlayerLevel = reader.ReadInt();
                                        goto case 1;
                                 }

				case 1:
				{
					m_Settings = new MobileSettings(this);
					m_Settings.Deserialize(reader);
					goto case 0;
				}
				case 0:
				{
					m_TravelTickets = reader.ReadInt();
					break;
				}
			}
		}
예제 #3
0
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize(reader);

			int version = reader.ReadInt();
			// version 0
			m_DataValue = reader.ReadDouble();
		}
예제 #4
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            m_Duration = reader.ReadDouble();
            m_Chance = reader.ReadInt();
        }
예제 #5
0
		public SkillGainMod( PlayerMobile owner, GenericReader reader )
		{
			int version = reader.ReadEncodedInt();

			m_Owner = owner;
			m_Name = reader.ReadString();
			m_Skill = (SkillName)reader.ReadInt();
			m_Bonus = reader.ReadDouble();
			m_Duration = reader.ReadTimeSpan();
			m_Added = reader.ReadDateTime();
		}
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch ( version )
			{
				case 0:
				{
					m_Value = reader.ReadDouble();
					break;
				}
			}
		}
예제 #7
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
            int version = reader.ReadEncodedInt();

            m_HueDelay = reader.ReadDouble();
            m_HueStart = reader.ReadInt();
            m_HueStop = reader.ReadInt();
            m_IsCycling = reader.ReadBool();
            m_HasCost = reader.ReadBool();

            if ( m_IsCycling )
            {
                DoHueTimer();
            }
        }
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize(reader);

			int version = reader.ReadInt();

			int count = reader.ReadEncodedInt();

			m_Entries = new ArrayList( count );

			for ( int i = 0; i < count; ++i )
			{
				SkillName skill = (SkillName)reader.ReadEncodedInt();
				double amount = reader.ReadDouble();
                ScrollofTranscendence scroll = new ScrollofTranscendence(skill,amount);
				m_Entries.Add(scroll);
			}
		}
예제 #9
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();

            //Version 0
            if (version >= 0)
            {
                SchedulePosition = reader.ReadInt();
                CyclePosition    = reader.ReadInt();
                EventPosition    = reader.ReadInt();

                EventStart      = reader.ReadDateTime();
                EventCompletion = reader.ReadDateTime();
                Completed       = reader.ReadBool();

                int factionCount = reader.ReadInt();
                for (int a = 0; a < factionCount; a++)
                {
                    CaptureEventData factionScore = new CaptureEventData();

                    Faction faction = (Faction)reader.ReadItem();
                    double  score   = reader.ReadDouble();

                    factionScore.Faction = faction;
                    factionScore.Score   = score;

                    FactionEventData.Add(factionScore);
                }

                int participatingPlayersCount = reader.ReadInt();
                for (int a = 0; a < participatingPlayersCount; a++)
                {
                    PlayerMobile player = (PlayerMobile)reader.ReadMobile();
                    ParticipatingPlayers.Add(player);
                }
            }
        }
예제 #10
0
		private static bool DeserializePlayerScores(GenericReader reader)
		{
			reader.GetVersion();

			reader.ReadBlockDictionary(
				() =>
				{
					IEntity e = reader.ReadEntity();

					Dictionary<Mobile, double> list = reader.ReadBlockDictionary(
						() =>
						{
							Mobile k = reader.ReadMobile();
							double v = reader.ReadDouble();

							return new KeyValuePair<Mobile, double>(k, v);
						});

					return new KeyValuePair<IEntity, Dictionary<Mobile, double>>(e, list);
				},
				Registry);

			return true;
		}
예제 #11
0
        private static bool DeserializePlayerScores(GenericReader reader)
        {
            reader.GetVersion();

            reader.ReadBlockDictionary(
                () =>
            {
                IEntity e = reader.ReadEntity();

                Dictionary <Mobile, double> list = reader.ReadBlockDictionary(
                    () =>
                {
                    Mobile k = reader.ReadMobile();
                    double v = reader.ReadDouble();

                    return(new KeyValuePair <Mobile, double>(k, v));
                });

                return(new KeyValuePair <IEntity, Dictionary <Mobile, double> >(e, list));
            },
                Registry);

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

			int version = reader.ReadInt();

			switch ( version )
			{
				case 0:
				{
					m_Skill = (SkillName)reader.ReadInt();
					m_Required = reader.ReadDouble();
					m_MessageString = reader.ReadString();
					m_MessageNumber = reader.ReadInt();

					break;
				}
			}
		}
예제 #13
0
 public override void Deserialize(GenericReader reader)
 {
     base.Deserialize(reader);
     int version = reader.ReadInt();
     m_SummonScalar = reader.ReadDouble();
 }
예제 #14
0
		public void Deserialize( GenericReader reader )
		{
			int version = reader.ReadEncodedInt();

			m_Combination = reader.ReadString();
			m_Area = reader.ReadString();
			m_Design = DesignTypes.FindDesign( reader.ReadString() );
			m_NormalHue = reader.ReadInt();
			m_ActivateHue = reader.ReadInt();
			m_DeactivateHue = reader.ReadInt();
			m_StartingPos = reader.ReadUInt();
			m_Reversed = reader.ReadBool();
			m_DropChance = reader.ReadDouble();
			m_GateHue = reader.ReadInt();
		}
예제 #15
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadEncodedInt();

            switch( version )
            {
                case 1:
                    {
                        m_ActiveItemID = reader.ReadInt();
                        m_InactiveItemID = reader.ReadInt();

                        goto case 0;
                    }
                case 0:
                    {
                        m_Account = reader.ReadString();
                        m_NextUse = reader.ReadDateTime();

                        m_Skill = (SkillName)reader.ReadEncodedInt();
                        m_SkillValue = reader.ReadDouble();
                        break;
                    }
            }

            if( version == 0 )
            {
                m_ActiveItemID = 0x2A94;
                m_InactiveItemID = 0x2A93;
            }
        }
예제 #16
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadEncodedInt();

			switch( version )
			{
				case 3:
					{
						m_LastUserName = reader.ReadString();
						goto case 2;
					}
				case 2:
					{
						m_Level = (SecureLevel)reader.ReadInt();
						goto case 1;
					}
				case 1:
					{
						m_ActiveItemID = reader.ReadInt();
						m_InactiveItemID = reader.ReadInt();

						goto case 0;
					}
				case 0:
					{
						m_Account = reader.ReadString();
						m_NextUse = reader.ReadDateTime(); //TODO: delete it in a harmless way

						m_Skill = (SkillName)reader.ReadEncodedInt();
						m_SkillValue = reader.ReadDouble();
						break;
					}
			}

			if( version == 0 )
			{
				m_ActiveItemID = 0x2A94;
				m_InactiveItemID = 0x2A93;
			}
		}
예제 #17
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            switch (version)
            {
                case 1:
                    m_BaseItemID = reader.ReadInt();
                    m_Charges = reader.ReadInt();
                    goto case 0;
                case 0:
                    m_Account = reader.ReadString();
                    m_NextUse = reader.ReadDateTime();

                    m_Skill = (SkillName)reader.ReadEncodedInt();
                    m_SkillValue = reader.ReadDouble();
                    break;
            }
        }
예제 #18
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 );
        }
예제 #19
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();
            switch (version)
            {
                case 14:
                    {
                        int nentries = reader.ReadInt();

                        if (nentries > 0)
                        {
                            m_Journal = new List<XmlQuest.JournalEntry>();
                            for (int i = 0; i < nentries; i++)
                            {
                                string entryID = reader.ReadString();
                                string entryText = reader.ReadString();
                                m_Journal.Add(new XmlQuest.JournalEntry(entryID, entryText));
                            }
                        }

                        goto case 13;
                    }
                case 13:
                    {
                        m_Repeatable = reader.ReadBool();
                        goto case 12;
                    }
                case 12:
                    {
                        m_QuestDifficulty = reader.ReadInt();
                        goto case 11;
                    }
                case 11:
                    {
                        m_AttachmentString = reader.ReadString();
                        goto case 10;
                    }
                case 10:
                    {
                        m_NextRepeatable = reader.ReadTimeSpan();
                        goto case 9;
                    }
                case 9:
                    {
                        m_RewardAttachmentSerialNumber = reader.ReadInt();
                        goto case 8;
                    }
                case 8:
                    {
                        this.m_ReturnContainer = (Container)reader.ReadItem();
                        goto case 7;
                    }
                case 7:
                    {
                        this.m_Pack = (Container)reader.ReadItem();
                        this.m_RewardItem = reader.ReadItem();
                        this.m_AutoReward = reader.ReadBool();
                        this.m_CanSeeReward = reader.ReadBool();
                        this.m_PlayerMade = reader.ReadBool();
                        this.m_Creator = reader.ReadMobile() as PlayerMobile;
                        goto case 6;
                    }
                case 6:
                    {
                        this.m_Description1 = reader.ReadString();
                        this.m_Description2 = reader.ReadString();
                        this.m_Description3 = reader.ReadString();
                        this.m_Description4 = reader.ReadString();
                        this.m_Description5 = reader.ReadString();
                        goto case 5;
                    }
                case 5:
                    {
                        this.m_Owner = reader.ReadMobile() as PlayerMobile;
                        goto case 4;
                    }
                case 4:
                    {
                        this.m_RewardString = reader.ReadString();
                        goto case 3;
                    }
                case 3:
                    {
                        this.m_ConfigFile = reader.ReadString();
                        this.m_NoteString = reader.ReadString();
                        this.m_TitleString = reader.ReadString();
                        goto case 2;
                    }
                case 2:
                    {
                        this.m_PartyEnabled = reader.ReadBool();
                        this.m_PartyRange = reader.ReadInt();
                        goto case 1;
                    }
                case 1:
                    {
                        this.m_State1 = reader.ReadString();
                        this.m_State2 = reader.ReadString();
                        this.m_State3 = reader.ReadString();
                        this.m_State4 = reader.ReadString();
                        this.m_State5 = reader.ReadString();
                        goto case 0;
                    }
                case 0:
                    {
                        this.m_wasMoved = reader.ReadBool();
                        this.Expiration = reader.ReadDouble();
                        this.m_TimeCreated = reader.ReadDateTime();
                        this.m_Objective1 = reader.ReadString();
                        this.m_Objective2 = reader.ReadString();
                        this.m_Objective3 = reader.ReadString();
                        this.m_Objective4 = reader.ReadString();
                        this.m_Objective5 = reader.ReadString();
                        this.m_Completed1 = reader.ReadBool();
                        this.m_Completed2 = reader.ReadBool();
                        this.m_Completed3 = reader.ReadBool();
                        this.m_Completed4 = reader.ReadBool();
                        this.m_Completed5 = reader.ReadBool();
                    }
                    break;
            }
        }
예제 #20
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );
			int version = reader.ReadInt();

			switch ( version )
			{
				case 0:
				{
					m_Start = reader.ReadDateTime();
					m_HatchDuration = reader.ReadDouble();
					m_AllowEvolution = reader.ReadBool();
					break;
				}
			}
		}
예제 #21
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );
			
			int version = reader.ReadInt();

			switch ( version )
			{
				case 2:
				{
					m_Level = (SecureLevel)reader.ReadInt();
					m_Start = reader.ReadDateTime();
					m_BottleDuration = reader.ReadDouble();
					m_AllowBottling = reader.ReadBool();
					
					goto case 1;
				}
				case 1:	
				{
					SaveFlag flags = (SaveFlag)reader.ReadEncodedInt();

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

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

					if ( GetSaveFlag( flags, SaveFlag.Variety ) )
						m_Variety = (GrapeVariety)reader.ReadEncodedInt();
					else
						m_Variety = DefaultVariety;
	
					if ( m_Variety == GrapeVariety.None )
						m_Variety = DefaultVariety;
						
					break;
				}
			}
		}
예제 #22
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();

            //Version 0
            if (version >= 0)
            {
                m_Listed             = reader.ReadBool();
                m_Expiration         = reader.ReadDateTime();
                m_PointValue         = reader.ReadInt();
                m_SocietiesGroupType = (SocietiesGroupType)reader.ReadInt();
                m_JobType            = (JobType)reader.ReadInt();

                m_PrimaryTypeName = reader.ReadString();

                string primaryType = reader.ReadString();
                if (primaryType == "null")
                {
                    m_PrimaryType = null;
                }
                else
                {
                    m_PrimaryType = Type.GetType(primaryType);
                }

                m_SecondaryTypeName = reader.ReadString();

                string secondaryType = reader.ReadString();
                if (secondaryType == "null")
                {
                    m_SecondaryType = null;
                }
                else
                {
                    m_SecondaryType = Type.GetType(secondaryType);
                }

                m_TargetNumber            = reader.ReadDouble();
                m_TurnInRequirementAmount = reader.ReadDouble();
                m_CraftResourceRequired   = (CraftResource)reader.ReadInt();
                m_PrimaryJobModifier      = (JobModifierType)reader.ReadInt();
                m_SecondaryJobModifier    = (JobModifierType)reader.ReadInt();

                m_IconItemId  = reader.ReadInt();
                m_IconHue     = reader.ReadInt();
                m_IconOffsetX = reader.ReadInt();
                m_IconOffsetY = reader.ReadInt();

                string destionationMobile = reader.ReadString();
                if (destionationMobile == "null")
                {
                    m_DestinationMobile = null;
                }
                else
                {
                    m_DestinationMobile = Type.GetType(destionationMobile);
                }

                m_DestinationMobileName = reader.ReadString();
                m_DestinationTown       = reader.ReadItem() as Town;

                int playersCompletedCount = reader.ReadInt();
                for (int a = 0; a < playersCompletedCount; a++)
                {
                    m_PlayersCompleted.Add(reader.ReadMobile() as PlayerMobile);
                }
            }

            //-----

            Societies.m_SocietyJobs.Add(this);
        }
예제 #23
0
		public static Poison Deserialize( GenericReader reader )
		{
			switch ( reader.ReadByte() )
			{
				case 1: return GetPoison( reader.ReadByte() );
				case 2:
					//no longer used, safe to remove?
					reader.ReadInt();
					reader.ReadDouble();
					reader.ReadInt();
					reader.ReadTimeSpan();
					break;
			}
			return null;
		}
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch( version )
            {
                case 0:
                {
                    m_Skill = (CraftSkillType)reader.ReadInt();
                    m_SkillLevel = reader.ReadDouble();
                    m_Crafter = reader.ReadMobile();

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

			int version = reader.ReadInt();

			switch ( version )
			{
				case 1:
				{
					m_Skill = (SkillName)reader.ReadInt();
					m_Value = reader.ReadDouble();
					break;
				}
				case 0:
				{
					m_InheritsItem = true;
					
					if ( !(this is StatCapScroll) )
						m_Skill = (SkillName)reader.ReadInt();
					else
						m_Skill = SkillName.Alchemy;
					
					if ( this is ScrollofAlacrity )
						m_Value = 0.0;
					else if ( this is StatCapScroll )
						m_Value = (double)reader.ReadInt();
					else
						m_Value = reader.ReadDouble();

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

            CreateSocietyData();

            //Version 0
            if (version >= 0)
            {
                m_Player = reader.ReadMobile() as PlayerMobile;

                int jobProgressCount = reader.ReadInt();
                for (int a = 0; a < jobProgressCount; a++)
                {
                    SocietyJob           job         = reader.ReadItem() as SocietyJob;
                    SocietiesJobContract jobContract = reader.ReadItem() as SocietiesJobContract;
                    double primaryProgress           = reader.ReadDouble();
                    double secondaryProgress         = reader.ReadDouble();

                    if (job == null)
                    {
                        continue;
                    }
                    if (job.Deleted)
                    {
                        continue;
                    }

                    SocietyJobPlayerProgress jobProgress = new SocietyJobPlayerProgress(job);
                    jobProgress.m_JobContract    = jobContract;
                    jobProgress.m_ProgressAmount = primaryProgress;
                    jobProgress.m_TurnedInAmount = secondaryProgress;

                    m_JobProgress.Add(jobProgress);
                }

                int recordedSocietyGroupDataCount = reader.ReadInt();
                for (int a = 0; a < recordedSocietyGroupDataCount; a++)
                {
                    SocietiesGroupType societyGroupType = (SocietiesGroupType)reader.ReadInt();

                    int pointsAvailable = reader.ReadInt();
                    int monthlyPoints   = reader.ReadInt();
                    int lifetimePoints  = reader.ReadInt();
                    int pointsSpent     = reader.ReadInt();

                    foreach (SocietyGroupPlayerData societyGroupPlayerData in m_SocietyPlayerData)
                    {
                        if (societyGroupPlayerData.m_SocietyGroupType == societyGroupType)
                        {
                            societyGroupPlayerData.m_PointsAvailable = pointsAvailable;
                            societyGroupPlayerData.m_MontlyPoints    = monthlyPoints;
                            societyGroupPlayerData.m_LifetimePoints  = lifetimePoints;
                            societyGroupPlayerData.m_PointsSpent     = pointsSpent;

                            break;
                        }
                    }
                }
            }

            //-----

            if (m_Player != null)
            {
                m_Player.m_SocietiesPlayerSettings = this;
            }

            else
            {
                Delete();
            }
        }
예제 #27
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 );
        }
예제 #28
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();
			bool haveproximityrange = false;
			bool hasnewobjectinfo = false;
			int tmpSpawnListSize = 0;
			ArrayList tmpSubGroup = null;
			ArrayList tmpSequentialResetTime = null;
			ArrayList tmpSequentialResetTo = null;
			ArrayList tmpKillsNeeded = null;
			ArrayList tmpRequireSurface = null;
			ArrayList tmpRestrictKillsToSubgroup = null;
			ArrayList tmpClearOnAdvance = null;
			ArrayList tmpMinDelay = null;
			ArrayList tmpMaxDelay = null;
			ArrayList tmpNextSpawn = null;
			ArrayList tmpDisableSpawn = null;
			ArrayList tmpPackRange = null;
			ArrayList tmpSpawnsPer = null;

			switch( version )
			{
				case 30:
					{
						m_AllowNPCTriggering = reader.ReadBool();
						goto case 29;
					}
				case 29:
					{
						tmpSpawnListSize = reader.ReadInt();
						tmpSpawnsPer = new ArrayList( tmpSpawnListSize );
						for( int i = 0; i < tmpSpawnListSize; ++i )
						{
							int spawnsper = reader.ReadInt();

							tmpSpawnsPer.Add( spawnsper );

						}
						goto case 28;
					}
				case 28:
					{
						if( version < 29 )
							tmpSpawnListSize = reader.ReadInt();

						tmpPackRange = new ArrayList( tmpSpawnListSize );
						for( int i = 0; i < tmpSpawnListSize; ++i )
						{
							int packrange = reader.ReadInt();

							tmpPackRange.Add( packrange );

						}
						goto case 27;
					}
				case 27:
					{
						if( version < 28 )
							tmpSpawnListSize = reader.ReadInt();

						tmpDisableSpawn = new ArrayList( tmpSpawnListSize );
						for( int i = 0; i < tmpSpawnListSize; ++i )
						{
							bool disablespawn = reader.ReadBool();

							tmpDisableSpawn.Add( disablespawn );

						}
						goto case 26;
					}
				case 26:
					{
						m_SpawnOnTrigger = reader.ReadBool();
						m_FirstModified = reader.ReadDateTime();
						m_LastModified = reader.ReadDateTime();
						goto case 25;
					}
				case 25:
					{
						goto case 24;
					}
				case 24:
					{
						if( version < 27 )
							tmpSpawnListSize = reader.ReadInt();
						tmpRestrictKillsToSubgroup = new ArrayList( tmpSpawnListSize );
						tmpClearOnAdvance = new ArrayList( tmpSpawnListSize );
						tmpMinDelay = new ArrayList( tmpSpawnListSize );
						tmpMaxDelay = new ArrayList( tmpSpawnListSize );
						tmpNextSpawn = new ArrayList( tmpSpawnListSize );
						for( int i = 0; i < tmpSpawnListSize; ++i )
						{
							bool restrictkills = reader.ReadBool();
							bool clearadvance = reader.ReadBool();
							double mind = reader.ReadDouble();
							double maxd = reader.ReadDouble();
							DateTime nextspawn = reader.ReadDeltaTime();

							tmpRestrictKillsToSubgroup.Add( restrictkills );
							tmpClearOnAdvance.Add( clearadvance );
							tmpMinDelay.Add( mind );
							tmpMaxDelay.Add( maxd );
							tmpNextSpawn.Add( nextspawn );
						}

						bool hasitems = reader.ReadBool();

						if( hasitems )
						{
							m_ShowBoundsItems = reader.ReadItemList();
						}
						goto case 23;
					}
				case 23:
					{
						IsInactivated = reader.ReadBool();
						SmartSpawning = reader.ReadBool();

						goto case 22;
					}
				case 22:
					{
						SkillTrigger = reader.ReadString();    // note this will also register the skill
						m_skill_that_triggered = (SkillName)reader.ReadInt();
						m_FreeRun = reader.ReadBool();
						m_mob_who_triggered = reader.ReadMobile();
						goto case 21;
					}
				case 21:
					{
						m_DespawnTime = reader.ReadTimeSpan();
						goto case 20;
					}
				case 20:
					{
						if( version < 24 )
							tmpSpawnListSize = reader.ReadInt();
						tmpRequireSurface = new ArrayList( tmpSpawnListSize );
						for( int i = 0; i < tmpSpawnListSize; ++i )
						{
							bool requiresurface = reader.ReadBool();
							tmpRequireSurface.Add( requiresurface );
						}
						goto case 19;
					}
				case 19:
					{
						m_ConfigFile = reader.ReadString();
						m_OnHold = reader.ReadBool();
						m_HoldSequence = reader.ReadBool();
						m_FirstModifiedBy = reader.ReadString();
						m_LastModifiedBy = reader.ReadString();
						// deserialize the keyword tag list
						int tagcount = reader.ReadInt();
						m_KeywordTagList = new ArrayList( tagcount );
						for( int i = 0; i < tagcount; i++ )
						{
							BaseXmlSpawner.KeywordTag tag = new BaseXmlSpawner.KeywordTag( null, this );
							tag.Deserialize( reader );
						}
						goto case 18;
					}
				case 18:
					{
						m_AllowGhostTriggering = reader.ReadBool();
						goto case 17;
					}
				case 17:
					{
						if( version < 25 )
						{
							// the textentrybooks are deleted on deserialization so no need to track them
							reader.ReadItem();
						}
						goto case 16;
					}
				case 16:
					{
						hasnewobjectinfo = true;
						m_SequentialSpawning = reader.ReadInt();
						TimeSpan seqdelay = reader.ReadTimeSpan();
						m_SeqEnd = DateTime.Now + seqdelay;
						if( version < 20 )
						{
							tmpSpawnListSize = reader.ReadInt();
						}
						tmpSubGroup = new ArrayList( tmpSpawnListSize );
						tmpSequentialResetTime = new ArrayList( tmpSpawnListSize );
						tmpSequentialResetTo = new ArrayList( tmpSpawnListSize );
						tmpKillsNeeded = new ArrayList( tmpSpawnListSize );
						for( int i = 0; i < tmpSpawnListSize; ++i )
						{
							int subgroup = reader.ReadInt();
							double resettime = reader.ReadDouble();
							int resetto = reader.ReadInt();
							int killsneeded = reader.ReadInt();
							tmpSubGroup.Add( subgroup );
							tmpSequentialResetTime.Add( resettime );
							tmpSequentialResetTo.Add( resetto );
							tmpKillsNeeded.Add( killsneeded );
						}
						m_RegionName = reader.ReadString();	// 2004.02.08 :: Omega Red
						goto case 15;
					}
				case 15:
					{
						m_ExternalTriggering = reader.ReadBool();
						m_ExternalTrigger = reader.ReadBool();
						goto case 14;
					}
				case 14:
					{
						m_NoItemTriggerName = reader.ReadString();
						goto case 13;
					}
				case 13:
					{
						m_GumpState = reader.ReadString();
						goto case 12;
					}
				case 12:
					{
						int todtype = reader.ReadInt();
						switch( todtype )
						{
							case (int)TODModeType.Gametime:
								m_TODMode = TODModeType.Gametime;
								break;
							case (int)TODModeType.Realtime:
								m_TODMode = TODModeType.Realtime;
								break;
						}
						goto case 11;
					}
				case 11:
					{
						m_KillReset = reader.ReadInt();
						m_skipped = reader.ReadBool();
						m_spawncheck = reader.ReadInt();
						goto case 10;
					}
				case 10:
					{
						m_SetPropertyItem = reader.ReadItem();
						goto case 9;
					}
				case 9:
					{
						m_TriggerProbability = reader.ReadDouble();
						goto case 8;
					}
				case 8:
					{
						m_MobPropertyName = reader.ReadString();
						m_MobTriggerName = reader.ReadString();
						m_PlayerPropertyName = reader.ReadString();
						goto case 7;
					}
				case 7:
					{
						m_SpeechTrigger = reader.ReadString();
						goto case 6;
					}
				case 6:
					{
						m_ItemTriggerName = reader.ReadString();
						goto case 5;
					}
				case 5:
					{
						m_ProximityTriggerMessage = reader.ReadString();
						m_ObjectPropertyItem = reader.ReadItem();
						m_ObjectPropertyName = reader.ReadString();
						m_killcount = reader.ReadInt();
						goto case 4;
					}
				case 4:
					{
						haveproximityrange = true;
						m_ProximityRange = reader.ReadInt();
						m_ProximityTriggerSound = reader.ReadInt();
						m_proximityActivated = reader.ReadBool();
						m_durActivated = reader.ReadBool();
						m_refractActivated = reader.ReadBool();
						m_StackAmount = reader.ReadInt();
						m_TODStart = reader.ReadTimeSpan();
						m_TODEnd = reader.ReadTimeSpan();
						m_MinRefractory = reader.ReadTimeSpan();
						m_MaxRefractory = reader.ReadTimeSpan();
						if( m_refractActivated == true )
						{
							TimeSpan delay = reader.ReadTimeSpan();
							DoTimer3( delay );
						}
						if( m_durActivated == true )
						{
							TimeSpan delay = reader.ReadTimeSpan();
							DoTimer2( delay );
						}
						goto case 3;
					}
				case 3:
					{
						m_ShowContainerStatic = reader.ReadItem() as Static;
						goto case 2;
					}
				case 2:
					{
						m_Duration = reader.ReadTimeSpan();
						goto case 1;
					}
				case 1:
					{
						m_UniqueId = reader.ReadString();
						m_HomeRangeIsRelative = reader.ReadBool();
						goto case 0;
					}
				case 0:
					{
						m_Name = reader.ReadString();
						// backward compatibility with old name storage
						if( m_Name != null && m_Name != String.Empty ) Name = m_Name;
						m_X = reader.ReadInt();
						m_Y = reader.ReadInt();
						m_Width = reader.ReadInt();
						m_Height = reader.ReadInt();
						if( m_Width == m_Height )
							m_SpawnRange = m_Width / 2;
						else
							m_SpawnRange = -1;
						if( !haveproximityrange )
						{
							m_ProximityRange = -1;
						}
						m_WayPoint = reader.ReadItem() as WayPoint;
						m_Group = reader.ReadBool();
						m_MinDelay = reader.ReadTimeSpan();
						m_MaxDelay = reader.ReadTimeSpan();
						m_Count = reader.ReadInt();
						m_Team = reader.ReadInt();
						m_HomeRange = reader.ReadInt();
						m_Running = reader.ReadBool();

						if( m_Running == true )
						{
							TimeSpan delay = reader.ReadTimeSpan();
							DoTimer( delay );
						}

						// Read in the size of the spawn object list
						int SpawnListSize = reader.ReadInt();
						m_SpawnObjects = new ArrayList( SpawnListSize );
						for( int i = 0; i < SpawnListSize; ++i )
						{
							string TypeName = reader.ReadString();
							int TypeMaxCount = reader.ReadInt();

							SpawnObject TheSpawnObject = new SpawnObject( TypeName, TypeMaxCount );

							m_SpawnObjects.Add( TheSpawnObject );

							string typeName = BaseXmlSpawner.ParseObjectType( TypeName );
							// does it have a substitution that might change its validity?
							// if so then let it go

							if( typeName == null || ((SpawnerType.GetType( typeName ) == null) &&
								(!BaseXmlSpawner.IsTypeOrItemKeyword( typeName ) && typeName.IndexOf( '{' ) == -1 && !typeName.StartsWith( "*" ) && !typeName.StartsWith( "#" ))) )
							{
								if( m_WarnTimer == null )
									m_WarnTimer = new WarnTimer2();

								m_WarnTimer.Add( Location, Map, TypeName );

								this.status_str = "invalid type: " + typeName;
							}

							// Read in the number of spawns already
							int SpawnedCount = reader.ReadInt();

							TheSpawnObject.SpawnedObjects = new ArrayList( SpawnedCount );

							for( int x = 0; x < SpawnedCount; ++x )
							{
								int serial = reader.ReadInt();
								if( serial < -1 )
								{
									// minusone is reserved for unknown types by default
									//  minustwo on is used for referencing keyword tags
									int tagserial = -1 * (serial + 2);
									// get the tag with that serial and add it
									BaseXmlSpawner.KeywordTag t = BaseXmlSpawner.GetFromTagList( this, tagserial );
									if( t != null )
									{
										TheSpawnObject.SpawnedObjects.Add( t );
									}
								}
								else
								{
									IEntity e = World.FindEntity( serial );

									if( e != null )
										TheSpawnObject.SpawnedObjects.Add( e );
								}
							}
						}
						// now have to reintegrate the later version spawnobject information into the earlier version desered objects
						if( hasnewobjectinfo && tmpSpawnListSize == SpawnListSize )
						{
							for( int i = 0; i < SpawnListSize; ++i )
							{
								SpawnObject so = (SpawnObject)m_SpawnObjects[i];

								so.SubGroup = (int)tmpSubGroup[i];
								so.SequentialResetTime = (double)tmpSequentialResetTime[i];
								so.SequentialResetTo = (int)tmpSequentialResetTo[i];
								so.KillsNeeded = (int)tmpKillsNeeded[i];
								if( version > 19 )
									so.RequireSurface = (bool)tmpRequireSurface[i];
								bool restrictkills = false;
								bool clearadvance = true;
								double mind = -1;
								double maxd = -1;
								DateTime nextspawn = DateTime.MinValue;
								if( version > 23 )
								{
									restrictkills = (bool)tmpRestrictKillsToSubgroup[i];
									clearadvance = (bool)tmpClearOnAdvance[i];
									mind = (double)tmpMinDelay[i];
									maxd = (double)tmpMaxDelay[i];
									nextspawn = (DateTime)tmpNextSpawn[i];
								}
								so.RestrictKillsToSubgroup = restrictkills;
								so.ClearOnAdvance = clearadvance;
								so.MinDelay = mind;
								so.MaxDelay = maxd;
								so.NextSpawn = nextspawn;

								bool disablespawn = false;
								if( version > 26 )
								{
									disablespawn = (bool)tmpDisableSpawn[i];
								}
								so.Disabled = disablespawn;

								int packrange = -1;
								if( version > 27 )
								{
									packrange = (int)tmpPackRange[i];
								}
								so.PackRange = packrange;

								int spawnsper = 1;
								if( version > 28 )
								{
									spawnsper = (int)tmpSpawnsPer[i];
								}
								so.SpawnsPerTick = spawnsper;

							}
						}

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

            int version = reader.ReadInt();

            //Version 0
            if (version >= 0)
            {
                m_MultiID = reader.ReadInt();
                m_Offset  = reader.ReadPoint3D();

                //-----

                m_Registered = reader.ReadBool();

                m_ShipName = reader.ReadString();
                m_Owner    = (PlayerMobile)reader.ReadMobile();

                int StoredHitPoints  = reader.ReadInt();
                int StoredSailPoints = reader.ReadInt();
                int StoredGunPoints  = reader.ReadInt();

                MaxHitPointsCreationModifier  = reader.ReadDouble();
                MaxSailPointsCreationModifier = reader.ReadDouble();
                MaxGunPointsCreationModifier  = reader.ReadDouble();

                ForwardSpeedCreationModifier        = reader.ReadDouble();
                DriftSpeedCreationModifier          = reader.ReadDouble();
                SlowdownModePenaltyCreationModifier = reader.ReadDouble();

                CannonAccuracyCreationModifier       = reader.ReadDouble();
                CannonDamageCreationModifier         = reader.ReadDouble();
                CannonRangeCreationModifier          = reader.ReadDouble();
                CannonReloadDurationCreationModifier = reader.ReadDouble();

                MinorAbilityCooldownDurationCreationModifier = reader.ReadDouble();
                MajorAbilityCooldownDurationCreationModifier = reader.ReadDouble();
                EpicAbilityCooldownDurationCreationModifier  = reader.ReadDouble();

                RepairCooldownDurationCreationModifier = reader.ReadDouble();
                BoardingChanceCreationModifier         = reader.ReadDouble();

                m_TargetingMode = (TargetingMode)reader.ReadInt();

                m_IPAsCoOwners    = reader.ReadBool();
                m_GuildAsCoOwners = reader.ReadBool();
                m_IPAsFriends     = reader.ReadBool();
                m_GuildAsFriends  = reader.ReadBool();

                m_ThemeUpgrade        = (ShipUpgrades.ThemeType)reader.ReadInt();
                m_PaintUpgrade        = (ShipUpgrades.PaintType)reader.ReadInt();
                m_CannonMetalUpgrade  = (ShipUpgrades.CannonMetalType)reader.ReadInt();
                m_OutfittingUpgrade   = (ShipUpgrades.OutfittingType)reader.ReadInt();
                m_BannerUpgrade       = (ShipUpgrades.BannerType)reader.ReadInt();
                m_CharmUpgrade        = (ShipUpgrades.CharmType)reader.ReadInt();
                m_MinorAbilityUpgrade = (ShipUpgrades.MinorAbilityType)reader.ReadInt();
                m_MajorAbilityUpgrade = (ShipUpgrades.MajorAbilityType)reader.ReadInt();
                m_EpicAbilityUpgrade  = (ShipUpgrades.EpicAbilityType)reader.ReadInt();

                m_MinorAbilityLastActivated = reader.ReadDateTime();
                m_MajorAbilityLastActivated = reader.ReadDateTime();
                m_EpicAbilityLastActivated  = reader.ReadDateTime();

                m_TimeLastRepaired = reader.ReadDateTime();

                int coOwnerCount = reader.ReadInt();
                for (int a = 0; a < coOwnerCount; a++)
                {
                    m_CoOwners.Add(reader.ReadMobile());
                }

                int friendCount = reader.ReadInt();
                for (int a = 0; a < friendCount; a++)
                {
                    m_Friends.Add(reader.ReadMobile());
                }

                //-----

                m_ShipStatsProfile = ShipUniqueness.GetShipStatsProfile(this, null, true, true);

                HitPoints  = StoredHitPoints;
                SailPoints = StoredSailPoints;
                GunPoints  = StoredGunPoints;
            }
        }
예제 #30
0
        public virtual void Deserialize( GenericReader reader )
        {
            int version = reader.ReadInt();

            SetLastMoved();

            switch ( version )
            {
                case 7:
                case 6:
                {
                    SaveFlag flags = (SaveFlag)reader.ReadInt();

                    if ( version < 7 )
                    {
                        LastMoved = reader.ReadDeltaTime();
                    }
                    else
                    {
                        int minutes = reader.ReadEncodedInt();

                        try{ LastMoved = Core.Now - TimeSpan.FromMinutes( minutes ); }
                        catch{ LastMoved = Core.Now; }
                    }

                    if ( GetSaveFlag( flags, SaveFlag.Direction ) )
                        m_Direction = (Direction)reader.ReadByte();

                    if ( GetSaveFlag( flags, SaveFlag.Bounce ) )
                        m_Bounce = BounceInfo.Deserialize( reader );

                    if ( GetSaveFlag( flags, SaveFlag.LootType ) )
                        m_LootType = (LootType)reader.ReadByte();

                    int x = 0, y = 0, z = 0;

                    if ( GetSaveFlag( flags, SaveFlag.LocationFull ) )
                    {
                        x = reader.ReadEncodedInt();
                        y = reader.ReadEncodedInt();
                        z = reader.ReadEncodedInt();
                    }
                    else
                    {
                        if ( GetSaveFlag( flags, SaveFlag.LocationByteXY ) )
                        {
                            x = reader.ReadByte();
                            y = reader.ReadByte();
                        }
                        else if ( GetSaveFlag( flags, SaveFlag.LocationShortXY ) )
                        {
                            x = reader.ReadShort();
                            y = reader.ReadShort();
                        }

                        if ( GetSaveFlag( flags, SaveFlag.LocationSByteZ ) )
                            z = reader.ReadSByte();
                    }

                    m_Location = new Point3D( x, y, z );

                    if ( GetSaveFlag( flags, SaveFlag.ItemID ) )
                        m_ItemID = reader.ReadEncodedInt();

                    if ( GetSaveFlag( flags, SaveFlag.Hue ) )
                        m_Hue = reader.ReadEncodedInt();

                    if ( GetSaveFlag( flags, SaveFlag.Amount ) )
                        m_Amount = reader.ReadEncodedInt();
                    else
                        m_Amount = 1;

                    if ( GetSaveFlag( flags, SaveFlag.Layer ) )
                        m_Layer = (Layer)reader.ReadByte();

                    if ( GetSaveFlag( flags, SaveFlag.Name ) )
                        m_Name = string.Intern(reader.ReadString());

                    if ( GetSaveFlag( flags, SaveFlag.Parent ) )
                    {
                        Serial parent = reader.ReadInt();

                        if ( parent.IsMobile )
                            m_Parent = World.FindMobile( parent );
                        else if ( parent.IsItem )
                            m_Parent = World.FindItem( parent );
                        else
                            m_Parent = null;

                        if ( m_Parent == null && (parent.IsMobile || parent.IsItem) )
                            Delete();
                    }

                    if ( GetSaveFlag( flags, SaveFlag.Items ) )
                        m_Items = reader.ReadItemList();
                    //else
                    //	m_Items = new ArrayList( 1 );

                    if ( GetSaveFlag( flags, SaveFlag.IntWeight ) )
                        m_Weight = reader.ReadEncodedInt();
                    else if ( GetSaveFlag( flags, SaveFlag.WeightNot1or0 ) )
                        m_Weight = reader.ReadDouble();
                    else if ( GetSaveFlag( flags, SaveFlag.WeightIs0 ) )
                        m_Weight = 0.0;
                    else
                        m_Weight = 1.0;

                    if ( GetSaveFlag( flags, SaveFlag.Map ) )
                        m_Map = reader.ReadMap();
                    else
                        m_Map = Map.Internal;

                    if ( GetSaveFlag( flags, SaveFlag.Visible ) )
                        SetFlag( ImplFlag.Visible, reader.ReadBool() );
                    else
                        SetFlag( ImplFlag.Visible, true );

                    if ( GetSaveFlag( flags, SaveFlag.Movable ) )
                        SetFlag( ImplFlag.Movable, reader.ReadBool() );
                    else
                        SetFlag( ImplFlag.Movable, true );

                    if ( GetSaveFlag( flags, SaveFlag.Stackable ) )
                        SetFlag( ImplFlag.Stackable, reader.ReadBool() );

                    if ( GetSaveFlag( flags, SaveFlag.ImplFlags ) )
                        m_Flags = (ImplFlag)reader.ReadEncodedInt();

                    if ( GetSaveFlag( flags, SaveFlag.InsuredFor ) )
                        /*m_InsuredFor = */reader.ReadMobile();

                    if ( GetSaveFlag( flags, SaveFlag.BlessedFor ) )
                        m_BlessedFor = reader.ReadMobile();

                    if ( GetSaveFlag( flags, SaveFlag.HeldBy ) )
                        m_HeldBy = reader.ReadMobile();

                    if ( GetSaveFlag( flags, SaveFlag.SavedFlags ) )
                        m_SavedFlags = reader.ReadEncodedInt();

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

                    break;
                }
                case 5:
                {
                    SaveFlag flags = (SaveFlag)reader.ReadInt();

                    LastMoved = reader.ReadDeltaTime();

                    if ( GetSaveFlag( flags, SaveFlag.Direction ) )
                        m_Direction = (Direction)reader.ReadByte();

                    if ( GetSaveFlag( flags, SaveFlag.Bounce ) )
                        m_Bounce = BounceInfo.Deserialize( reader );

                    if ( GetSaveFlag( flags, SaveFlag.LootType ) )
                        m_LootType = (LootType)reader.ReadByte();

                    if ( GetSaveFlag( flags, SaveFlag.LocationFull ) )
                        m_Location = reader.ReadPoint3D();

                    if ( GetSaveFlag( flags, SaveFlag.ItemID ) )
                        m_ItemID = reader.ReadInt();

                    if ( GetSaveFlag( flags, SaveFlag.Hue ) )
                        m_Hue = reader.ReadInt();

                    if ( GetSaveFlag( flags, SaveFlag.Amount ) )
                        m_Amount = reader.ReadInt();
                    else
                        m_Amount = 1;

                    if ( GetSaveFlag( flags, SaveFlag.Layer ) )
                        m_Layer = (Layer)reader.ReadByte();

                    if ( GetSaveFlag( flags, SaveFlag.Name ) )
                        m_Name = string.Intern(reader.ReadString());

                    if ( GetSaveFlag( flags, SaveFlag.Parent ) )
                    {
                        Serial parent = reader.ReadInt();

                        if ( parent.IsMobile )
                            m_Parent = World.FindMobile( parent );
                        else if ( parent.IsItem )
                            m_Parent = World.FindItem( parent );
                        else
                            m_Parent = null;

                        if ( m_Parent == null && (parent.IsMobile || parent.IsItem) )
                            Delete();
                    }

                    if ( GetSaveFlag( flags, SaveFlag.Items ) )
                        m_Items = reader.ReadItemList();
                    //else
                    //	m_Items = new ArrayList( 1 );

                    if ( GetSaveFlag( flags, SaveFlag.IntWeight ) )
                        m_Weight = reader.ReadEncodedInt();
                    else if ( GetSaveFlag( flags, SaveFlag.WeightNot1or0 ) )
                        m_Weight = reader.ReadDouble();
                    else if ( GetSaveFlag( flags, SaveFlag.WeightIs0 ) )
                        m_Weight = 0.0;
                    else
                        m_Weight = 1.0;

                    if ( GetSaveFlag( flags, SaveFlag.Map ) )
                        m_Map = reader.ReadMap();
                    else
                        m_Map = Map.Internal;

                    if ( GetSaveFlag( flags, SaveFlag.Visible ) )
                        SetFlag( ImplFlag.Visible, reader.ReadBool() );
                    else
                        SetFlag( ImplFlag.Visible, true );

                    if ( GetSaveFlag( flags, SaveFlag.Movable ) )
                        SetFlag( ImplFlag.Movable, reader.ReadBool() );
                    else
                        SetFlag( ImplFlag.Movable, true );

                    if ( GetSaveFlag( flags, SaveFlag.Stackable ) )
                        SetFlag( ImplFlag.Stackable, reader.ReadBool() );

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

                    break;
                }
                case 4: // Just removed variables
                case 3:
                {
                    m_Direction = (Direction)reader.ReadInt();

                    goto case 2;
                }
                case 2:
                {
                    m_Bounce = BounceInfo.Deserialize( reader );
                    LastMoved = reader.ReadDeltaTime();

                    goto case 1;
                }
                case 1:
                {
                    m_LootType = (LootType) reader.ReadByte();//m_Newbied = reader.ReadBool();

                    goto case 0;
                }
                case 0:
                {
                    m_Location = reader.ReadPoint3D();
                    m_ItemID = reader.ReadInt();
                    m_Hue = reader.ReadInt();
                    m_Amount = reader.ReadInt();
                    m_Layer = (Layer) reader.ReadByte();
                    m_Name = reader.ReadString();
                    if (m_Name != null)
                        m_Name = string.Intern(m_Name);

                    Serial parent = reader.ReadInt();

                    if ( parent.IsMobile )
                        m_Parent = World.FindMobile( parent );
                    else if ( parent.IsItem )
                        m_Parent = World.FindItem( parent );
                    else
                        m_Parent = null;

                    if ( m_Parent == null && (parent.IsMobile || parent.IsItem) )
                        Delete();

                    int count = reader.ReadInt();

                    if ( count > 0 )
                    {
                        m_Items = new ArrayList( count );

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

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

                    m_Weight = reader.ReadDouble();

                    if ( version <= 3 )
                    {
                        /*m_TotalItems =*/ reader.ReadInt();
                        /*m_TotalWeight =*/ reader.ReadInt();
                        /*m_TotalGold =*/ reader.ReadInt();
                    }

                    m_Map = reader.ReadMap();
                    SetFlag( ImplFlag.Visible, reader.ReadBool() );
                    SetFlag( ImplFlag.Movable, reader.ReadBool() );

                    if ( version <= 3 )
                        /*m_Deleted =*/ reader.ReadBool();

                    Stackable = reader.ReadBool();

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

                    break;
                }
            }

            if ( m_HeldBy != null )
                Timer.DelayCall( TimeSpan.Zero, new TimerCallback( FixHolding_Sandbox ) );
        }
예제 #31
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );
			
			int version = reader.ReadInt();
			
			_Skill = (SkillName)reader.ReadInt();
			_Value = reader.ReadDouble();
		}
예제 #32
0
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize(reader);

			var version = reader.GetVersion();

			switch (version)
			{
				case 1:
				{
					Mode = reader.ReadFlag<SkillCodexMode>();
					Flags = reader.ReadFlag<SkillCodexFlags>();
					Count = reader.ReadInt();
					Value = reader.ReadDouble();
					DeleteWhenEmpty = reader.ReadBool();
					IgnoredSkills = reader.ReadList(r => r.ReadFlag<SkillName>());
				}
					break;
				case 0:
				{
					Mode = (SkillCodexMode)reader.ReadByte();
					Flags = (SkillCodexFlags)reader.ReadByte();
					Count = reader.ReadInt();
					Value = reader.ReadDouble();
					DeleteWhenEmpty = reader.ReadBool();
					IgnoredSkills = reader.ReadList(() => (SkillName)reader.ReadShort());
				}
					break;
			}
		}
예제 #33
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            if (version >= 13)
            {
                c_ForcePrivate = reader.ReadBool();
                c_ForcePublic = reader.ReadBool();
                c_NoTrade = reader.ReadBool();
            }

            if (version >= 12)
            {
                c_Free = reader.ReadBool();
            }

            if (version >= 11)
            {
                c_Murderers = (Intu) reader.ReadInt();
            }

            if (version >= 10)
            {
                c_LeaveItems = reader.ReadBool();
            }

            if (version >= 9)
            {
                c_RentToOwn = reader.ReadBool();
                c_OriginalRentTime = reader.ReadTimeSpan();
                c_RTOPayments = reader.ReadInt();
            }

            c_PreviewItems = new List<Item>();
            if (version >= 7)
            {
                int previewcount = reader.ReadInt();
                for (int i = 0; i < previewcount; ++i)
                {
                    Item item = reader.ReadItem();
                    c_PreviewItems.Add(item);
                }
            }

            if (version >= 6)
            {
                c_ItemsPrice = reader.ReadInt();
                c_KeepItems = reader.ReadBool();
            }

            c_DecoreItemInfos = new List<DecoreItemInfo>();
            if (version >= 5)
            {
                int decorecount = reader.ReadInt();
                DecoreItemInfo info;
                for (int i = 0; i < decorecount; ++i)
                {
                    info = new DecoreItemInfo();
                    info.Load(reader);
                    c_DecoreItemInfos.Add(info);
                }

                c_Relock = reader.ReadBool();
            }

            if (version >= 4)
            {
                c_RecurRent = reader.ReadBool();
                c_RentByTime = reader.ReadTimeSpan();
                c_RentTime = reader.ReadDateTime();
                c_DemolishTime = reader.ReadDateTime();
                c_YoungOnly = reader.ReadBool();
                c_MinTotalSkill = reader.ReadInt();
                c_MaxTotalSkill = reader.ReadInt();
            }

            if (version >= 3)
            {
                c_MinZ = reader.ReadInt();
                c_MaxZ = reader.ReadInt();
            }

            if (version >= 2)
            {
                c_House = (TownHouse) reader.ReadItem();
            }

            c_Price = reader.ReadInt();
            c_Locks = reader.ReadInt();
            c_Secures = reader.ReadInt();
            c_BanLoc = reader.ReadPoint3D();
            c_SignLoc = reader.ReadPoint3D();
            c_Skill = reader.ReadString();
            c_SkillReq = reader.ReadDouble();

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

            if (c_RentTime > DateTime.Now)
            {
                BeginRentTimer(c_RentTime - DateTime.Now);
            }

            Timer.DelayCall(TimeSpan.Zero, StartTimers);

            ClearPreview();

            s_TownHouseSigns.Add(this);
        }
예제 #34
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();
            // version 0
            m_Hue = reader.ReadInt();
            m_HitsBuff = reader.ReadDouble();
            m_StrBuff = reader.ReadDouble();
            m_IntBuff = reader.ReadDouble();
            m_DexBuff = reader.ReadDouble();
            m_SkillsBuff = reader.ReadDouble();
            m_SpeedBuff = reader.ReadDouble();
            m_FameBuff = reader.ReadDouble();
            m_KarmaBuff = reader.ReadDouble();
            m_DamageBuff = reader.ReadInt();
            m_EnableParagon = reader.ReadBool();
            m_ChestChance = reader.ReadDouble();
            m_ParagonLabel = reader.ReadString();
            m_ConvertFactor = reader.ReadDouble();
            m_ArtifactFactor = reader.ReadDouble();
        }
예제 #35
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                case 0:
                {
                    m_Skill = (SkillName)reader.ReadInt();
                    m_Value = reader.ReadDouble();

                    break;
                }
            }

            if ( m_Value == 105.0 )
            {
                LootType = LootType.Regular;
            }
            else
            {
                LootType = LootType.Cursed;

                if ( Insured )
                    Insured = false;
            }
        }