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; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); // version 0 m_DataValue = reader.ReadDouble(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_Duration = reader.ReadDouble(); m_Chance = reader.ReadInt(); }
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; } } }
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); } }
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); } } }
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; }
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); }
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; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_SummonScalar = reader.ReadDouble(); }
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(); }
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; } }
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; } }
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; } }
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 ); }
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; } }
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; } } }
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; } } }
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); }
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; } } }
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; } } }
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(); } }
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 ); }
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; } } }
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; } }
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 ) ); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); _Skill = (SkillName)reader.ReadInt(); _Value = reader.ReadDouble(); }
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; } }
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); }
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(); }
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; } }