public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadEncodedInt(); this.m_Spawned = reader.ReadStrongMobileList<Mobile>(); }
public DuelInfo(GenericReader reader) { int version = reader.ReadEncodedInt(); switch (version) { case 0: { m_DuelTime = reader.ReadTimeSpan(); m_AgainstList = reader.ReadStrongMobileList(); break; } } }
public void Deserialize(GenericReader reader) { var version = reader.ReadInt(); InvasionTown = (InvasionTowns)reader.ReadInt(); TownMonsterType = (TownMonsterType)reader.ReadInt(); TownChampionType = (TownChampionType)reader.ReadInt(); StartTime = reader.ReadDateTime(); Spawned = reader.ReadStrongMobileList(); Active = reader.ReadBool(); if (Spawned == null) { Spawned = new List <Mobile>(); } if (Active) { InitTimer(); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 1: { this.m_RegionBounds = reader.ReadRect2D(); this.m_Traps = reader.ReadStrongItemList <BaseTrap>(); goto case 0; } case 0: { if (version < 1) { this.m_Traps = new List <BaseTrap>(); this.m_RegionBounds = new Rectangle2D(this.X - 40, this.Y - 40, 80, 80); } this.m_Creatures = reader.ReadStrongMobileList(); this.m_TypeName = reader.ReadString(); this.m_Door = reader.ReadItem <BaseDoor>(); this.m_Addon = reader.ReadItem <BaseAddon>(); this.m_Sequence = reader.ReadItem <GauntletSpawner>(); this.State = (GauntletSpawnerState)reader.ReadInt(); break; } } }
public Candidate(GenericReader reader) { int version = reader.ReadEncodedInt(); switch ( version ) { case 1: { this.m_Mobile = reader.ReadMobile(); int count = reader.ReadEncodedInt(); this.m_Voters = new List<Voter>(count); for (int i = 0; i < count; ++i) { Voter voter = new Voter(reader, this.m_Mobile); if (voter.From != null) this.m_Voters.Add(voter); } break; } case 0: { this.m_Mobile = reader.ReadMobile(); List<Mobile> mobs = reader.ReadStrongMobileList(); this.m_Voters = new List<Voter>(mobs.Count); for (int i = 0; i < mobs.Count; ++i) this.m_Voters.Add(new Voter(mobs[i], this.m_Mobile)); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 1: { Wisps = reader.ReadStrongMobileList <DarkWisp>(); goto case 0; } case 0: { m_Type = (ShadowlordType)reader.ReadInt(); break; } } Timer SelfDeleteTimer = new InternalSelfDeleteTimer(this); SelfDeleteTimer.Start(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 0: { m_Stage1Type = (eStage1Type)reader.ReadInt(); m_Stage2Type = (eStage2Type)reader.ReadInt(); m_Stage3Type = (eStage3Type)reader.ReadInt(); m_Stage4Type = (eStage4Type)reader.ReadInt(); m_ChampionType = (eChampionType)reader.ReadInt(); m_Stage1Count = reader.ReadEncodedInt(); m_Stage2Count = reader.ReadEncodedInt(); m_Stage3Count = reader.ReadEncodedInt(); m_Stage4Count = reader.ReadEncodedInt(); m_CurrentStage = reader.ReadEncodedInt(); m_RewardsEnabled = reader.ReadBool(); m_ArtifactChance = reader.ReadEncodedInt(); m_BlessDeedChance = reader.ReadEncodedInt(); m_MinSpawnZ = reader.ReadEncodedInt(); m_MaxSpawnZ = reader.ReadEncodedInt(); m_Enabled = reader.ReadBool(); m_Broadcast = reader.ReadBool(); m_Top = reader.ReadPoint3D(); m_Bottom = reader.ReadPoint3D(); m_RegionName = reader.ReadString(); m_Spawned = reader.ReadStrongMobileList <BaseCreature>(); break; } } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_Mobiles = reader.ReadStrongMobileList(); for ( int i = 0; i < m_Mobiles.Count; ++i ) m_Mobiles[i].Delete(); m_Mobiles.Clear(); for ( int i = Items.Count - 1; i >= 0; --i ) if ( i < Items.Count ) Items[i].Delete(); if ( m_Cache == null ) m_Cache = this; else Delete(); m_Table = new Dictionary<Type, IEntity>(); }
public virtual void Deserialize(GenericReader reader) { int version = reader.ReadInt(); switch (version) { case 2: Participants = reader.ReadStrongMobileList <PlayerMobile>(); goto case 1; case 1: StartTime = reader.ReadDeltaTime(); Completed = reader.ReadBool(); HasBegun = reader.ReadBool(); goto case 0; case 0: Instance = Controller.Instances[reader.ReadInt()]; PartyLeader = reader.ReadMobile(); Addon = reader.ReadItem() as BaseAddon; break; } if (Instance != null) { Instance.Encounter = this; } if (Completed) { Timer.DelayCall(ResetDuration, () => { Reset(); }); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 12: { if (reader.ReadBool()) this.m_RestoreEquip = reader.ReadStrongItemList(); goto case 11; } case 11: { // Version 11, we move all bools to a CorpseFlag this.m_Flags = (CorpseFlag)reader.ReadInt(); this.m_TimeOfDeath = reader.ReadDeltaTime(); int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (reader.ReadBool()) this.SetRestoreInfo(item, reader.ReadPoint3D()); else if (item != null) this.SetRestoreInfo(item, item.Location); } if (reader.ReadBool()) this.BeginDecay(reader.ReadDeltaTime() - DateTime.Now); this.m_Looters = reader.ReadStrongMobileList(); this.m_Killer = reader.ReadMobile(); this.m_Aggressors = reader.ReadStrongMobileList(); this.m_Owner = reader.ReadMobile(); this.m_CorpseName = reader.ReadString(); this.m_AccessLevel = (AccessLevel)reader.ReadInt(); reader.ReadInt(); // guild reserve this.m_Kills = reader.ReadInt(); this.m_EquipItems = reader.ReadStrongItemList(); break; } case 10: { this.m_TimeOfDeath = reader.ReadDeltaTime(); goto case 9; } case 9: { int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (reader.ReadBool()) this.SetRestoreInfo(item, reader.ReadPoint3D()); else if (item != null) this.SetRestoreInfo(item, item.Location); } goto case 8; } case 8: { this.SetFlag(CorpseFlag.VisitedByTaxidermist, reader.ReadBool()); goto case 7; } case 7: { if (reader.ReadBool()) this.BeginDecay(reader.ReadDeltaTime() - DateTime.Now); goto case 6; } case 6: { this.m_Looters = reader.ReadStrongMobileList(); this.m_Killer = reader.ReadMobile(); goto case 5; } case 5: { this.SetFlag(CorpseFlag.Carved, reader.ReadBool()); goto case 4; } case 4: { this.m_Aggressors = reader.ReadStrongMobileList(); goto case 3; } case 3: { this.m_Owner = reader.ReadMobile(); goto case 2; } case 2: { this.SetFlag(CorpseFlag.NoBones, reader.ReadBool()); goto case 1; } case 1: { this.m_CorpseName = reader.ReadString(); goto case 0; } case 0: { if (version < 10) this.m_TimeOfDeath = DateTime.Now; if (version < 7) this.BeginDecay(m_DefaultDecayTime); if (version < 6) this.m_Looters = new List<Mobile>(); if (version < 4) this.m_Aggressors = new List<Mobile>(); this.m_AccessLevel = (AccessLevel)reader.ReadInt(); reader.ReadInt(); // guild reserve this.m_Kills = reader.ReadInt(); this.SetFlag(CorpseFlag.Criminal, reader.ReadBool()); this.m_EquipItems = reader.ReadStrongItemList(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); m_DamageEntries = new Dictionary <Mobile, int>(); int version = reader.ReadInt(); switch (version) { case 5: { m_KickDelay = reader.ReadTimeSpan(); m_KickTime = reader.ReadDateTime(); m_SpawnArea = reader.ReadRect2D(); goto case 4; } case 4: { int entries = reader.ReadInt(); Mobile m; int damage; for (int i = 0; i < entries; ++i) { m = reader.ReadMobile(); damage = reader.ReadInt(); if (m != null) { m_DamageEntries.Add(m, damage); } } goto case 3; } case 3: { m_HasBeenAdvanced = reader.ReadBool(); m_Idol = reader.ReadItem() as IdolOfTheChampion; goto case 2; } case 2: { m_RandomizeType = reader.ReadBool(); goto case 1; } case 1: { if (version < 5) { int oldRange = reader.ReadInt(); m_SpawnArea = new Rectangle2D(new Point2D(X - oldRange, Y - oldRange), new Point2D(X + oldRange, Y + oldRange)); } m_Kills = reader.ReadInt(); goto case 0; } case 0: { if (version < 1) { SetSpawnArea(50); } bool active = reader.ReadBool(); m_Type = (ChampionSpawnType)reader.ReadInt(); m_Creatures = reader.ReadStrongMobileList(); m_RedSkulls = reader.ReadStrongItemList(); m_WhiteSkulls = reader.ReadStrongItemList(); m_Platform = reader.ReadItem <ChampionPlatform>(); m_Altar = reader.ReadItem <ChampionAltar>(); m_ExpireDelay = reader.ReadTimeSpan(); m_ExpireTime = reader.ReadDeltaTime(); m_Champion = reader.ReadMobile(); m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { m_RestartTime = reader.ReadDeltaTime(); BeginRestart(m_RestartTime - DateTime.Now); } if (m_Platform == null || m_Altar == null) { Delete(); } else if (active) { Start(false); } break; } } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion)); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 1: m_Orcs = reader.ReadStrongMobileList<BaseCreature>(); break; case 0: m_Orcs = new List<BaseCreature>(); break; } }
private static void InternalLoad(GenericReader reader) { int version = reader.ReadEncodedInt(); switch (version) { case 1: { m_Enabled = reader.ReadBool(); m_Instance.m_DuelLengthInSeconds = reader.ReadEncodedInt(); m_Instance.m_MaxDistance = reader.ReadEncodedInt(); goto case 0; } case 0: { int count = reader.ReadEncodedInt(); for (int i = 0; i < count; i++) { Serial serial = (Serial)reader.ReadInt(); DuelPoints points = new DuelPoints(reader); m_PointsTable.Add(serial, points); } m_DeclineDuelList = reader.ReadStrongMobileList(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); this.m_DamageEntries = new Dictionary <Mobile, int>(); int version = reader.ReadInt(); switch (version) { case 7: KillsMod = reader.ReadDouble(); GroupName = reader.ReadString(); goto case 6; case 6: SpawnName = reader.ReadString(); AutoRestart = reader.ReadBool(); SpawnMod = reader.ReadDouble(); SpawnRadius = reader.ReadInt(); goto case 5; case 5: { int entries = reader.ReadInt(); Mobile m; int damage; for (int i = 0; i < entries; ++i) { m = reader.ReadMobile(); damage = reader.ReadInt(); if (m == null) { continue; } this.m_DamageEntries.Add(m, damage); } goto case 4; } case 4: { this.m_ConfinedRoaming = reader.ReadBool(); this.m_Idol = reader.ReadItem <IdolOfTheChampion>(); this.m_HasBeenAdvanced = reader.ReadBool(); goto case 3; } case 3: { this.m_SpawnArea = reader.ReadRect2D(); goto case 2; } case 2: { this.m_RandomizeType = reader.ReadBool(); goto case 1; } case 1: { if (version < 3) { int oldRange = reader.ReadInt(); this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - oldRange, this.Y - oldRange), new Point2D(this.X + oldRange, this.Y + oldRange)); } this.m_Kills = reader.ReadInt(); goto case 0; } case 0: { if (version < 1) { this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - 24, this.Y - 24), new Point2D(this.X + 24, this.Y + 24)); //Default was 24 } bool active = reader.ReadBool(); this.m_Type = (ChampionSpawnType)reader.ReadInt(); this.m_Creatures = reader.ReadStrongMobileList(); this.m_RedSkulls = reader.ReadStrongItemList(); this.m_WhiteSkulls = reader.ReadStrongItemList(); this.m_Platform = reader.ReadItem <ChampionPlatform>(); this.m_Altar = reader.ReadItem <ChampionAltar>(); this.m_ExpireDelay = reader.ReadTimeSpan(); this.m_ExpireTime = reader.ReadDeltaTime(); this.m_Champion = reader.ReadMobile(); this.m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { this.m_RestartTime = reader.ReadDeltaTime(); this.BeginRestart(this.m_RestartTime - DateTime.UtcNow); } if (version < 4) { this.m_Idol = new IdolOfTheChampion(this); this.m_Idol.MoveToWorld(new Point3D(this.X, this.Y, this.Z - 15), this.Map); } if (this.m_Platform == null || this.m_Altar == null || this.m_Idol == null) { this.Delete(); } else if (active) { this.Start(); } break; } } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion)); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 2: { m_Guardians = reader.ReadStrongMobileList(); m_Temporary = reader.ReadBool(); goto case 1; } case 1: { m_Owner = reader.ReadMobile(); goto case 0; } case 0: { m_Level = reader.ReadInt(); m_DeleteTime = reader.ReadDeltaTime(); m_Lifted = reader.ReadStrongItemList(); if ( version < 2 ) m_Guardians = new List<Mobile>(); break; } } if ( !m_Temporary ) { m_Timer = new DeleteTimer( this, m_DeleteTime ); m_Timer.Start(); } else { Delete(); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 4: { m_ConfinedRoaming = reader.ReadBool(); m_Idol = reader.ReadItem <IdolOfTheChampion>(); m_HasBeenAdvanced = reader.ReadBool(); goto case 3; } case 3: { m_SpawnArea = reader.ReadRect2D(); goto case 2; } case 2: { m_RandomizeType = reader.ReadBool(); goto case 1; } case 1: { if (version < 3) { int oldRange = reader.ReadInt(); m_SpawnArea = new Rectangle2D(new Point2D(X - oldRange, Y - oldRange), new Point2D(X + oldRange, Y + oldRange)); } m_Kills = reader.ReadInt(); goto case 0; } case 0: { if (version < 1) { m_SpawnArea = new Rectangle2D(new Point2D(X - 24, Y - 24), new Point2D(X + 24, Y + 24)); //Default was 24 } bool active = reader.ReadBool(); m_Type = (ChampionSpawnType)reader.ReadInt(); m_Creatures = reader.ReadStrongMobileList(); m_RedSkulls = reader.ReadStrongItemList(); m_WhiteSkulls = reader.ReadStrongItemList(); m_Platform = reader.ReadItem <ChampionPlatform>(); m_Altar = reader.ReadItem <ChampionAltar>(); m_ExpireDelay = reader.ReadTimeSpan(); m_ExpireTime = reader.ReadDeltaTime(); m_Champion = reader.ReadMobile(); m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { m_RestartTime = reader.ReadDeltaTime(); BeginRestart(m_RestartTime - DateTime.Now); } if (version < 4) { m_Idol = new IdolOfTheChampion(this); m_Idol.MoveToWorld(new Point3D(X, Y, Z - 15), Map); } if (m_Platform == null || m_Altar == null || m_Idol == null) { Delete(); } else if (active) { Start(); } break; } } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion)); }
public virtual void Deserialize(GenericReader reader) { int version = reader.ReadInt(); switch (version) { case 2: { goto case 1; } case 1: { m_Players = reader.ReadStrongMobileList(); m_Name = reader.ReadString(); m_Hue = reader.ReadInt(); m_Score = reader.ReadInt(); m_Home = reader.ReadPoint3D(); m_HomeMap = reader.ReadMap(); m_TeamGateLocation = reader.ReadPoint3D(); m_TeamGateMap = reader.ReadMap(); break; } } if(m_Moongate != null) m_Moongate.Team = this; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_Spawns = reader.ReadStrongMobileList(); m_Items = reader.ReadStrongItemList(); m_DeleteTime = reader.ReadDeltaTime(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 0: { m_TrueForm = reader.ReadBool(); m_GateItem = reader.ReadItem(); m_Spirits = reader.ReadStrongMobileList<DragonSpirit>(); m_Timer = new TeleportTimer(this); m_Timer.Start(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 10: { TimeOfDeath = reader.ReadDeltaTime(); goto case 9; } case 9: { int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (reader.ReadBool()) { SetRestoreInfo(item, reader.ReadPoint3D()); } else if (item != null) { SetRestoreInfo(item, item.Location); } } goto case 8; } case 8: { VisitedByTaxidermist = reader.ReadBool(); goto case 7; } case 7: { if (reader.ReadBool()) { BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow); } goto case 6; } case 6: { Looters = reader.ReadStrongMobileList(); Killer = reader.ReadMobile(); goto case 5; } case 5: { Carved = reader.ReadBool(); goto case 4; } case 4: { Aggressors = reader.ReadStrongMobileList(); goto case 3; } case 3: { Owner = reader.ReadMobile(); goto case 2; } case 2: { NoBones = reader.ReadBool(); goto case 1; } case 1: { CorpseName = reader.ReadString(); goto case 0; } case 0: { if (version < 10) { m_TimeOfDeath = DateTime.UtcNow; } if (version < 7) { BeginDecay(m_DefaultDecayTime); } if (version < 6) { m_Looters = new List <Mobile>(); } if (version < 4) { m_Aggressors = new List <Mobile>(); } AccessLevel = (AccessLevel)reader.ReadInt(); Guild = reader.ReadItem() as Guild; Kills = reader.ReadInt(); Criminal = reader.ReadBool(); EquipItems = reader.ReadStrongItemList(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 3: m_IsAvailable = reader.ReadBool(); goto case 2; case 2: case 1: if (reader.ReadBool()) { m_Helpers = reader.ReadStrongMobileList <BaseCreature>(); } goto case 0; case 0: m_Peerless = reader.ReadMobile() as BasePeerless; m_BossLocation = reader.ReadPoint3D(); m_TeleportDest = reader.ReadPoint3D(); m_ExitDest = reader.ReadPoint3D(); m_Deadline = reader.ReadDateTime(); m_MasterKeys = reader.ReadStrongItemList(); m_Fighters = reader.ReadStrongMobileList(); m_Pets = new Dictionary <Mobile, List <Mobile> >(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { m_Pets.Add(reader.ReadMobile(), reader.ReadStrongMobileList()); } if (version < 2) { reader.ReadBool(); } if (m_Peerless == null && m_Helpers.Count > 0) { Timer.DelayCall(TimeSpan.FromSeconds(30), new TimerCallback(CleanupHelpers)); } break; } if (version == 2) { if (m_Peerless == null) { FinishSequence(); m_IsAvailable = true; } } else if (!m_IsAvailable && m_Peerless == null) { FinishSequence(); } }
public override void Deserialize(GenericReader reader) { int version = reader.ReadInt(); switch (version) { case 5: case 4: { m_AllyDeclarations = reader.ReadStrongGuildList <Guild>(); m_AllyInvitations = reader.ReadStrongGuildList <Guild>(); goto case 3; } case 3: { m_TypeLastChange = reader.ReadDateTime(); goto case 2; } case 2: { m_Type = (GuildType)reader.ReadInt(); goto case 1; } case 1: { m_LastFealty = reader.ReadDateTime(); goto case 0; } case 0: { m_Leader = reader.ReadMobile(); if (m_Leader is PlayerMobile) { ((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader; } m_Name = reader.ReadString(); m_Abbreviation = reader.ReadString(); m_Allies = reader.ReadStrongGuildList <Guild>(); m_Enemies = reader.ReadStrongGuildList <Guild>(); m_WarDeclarations = reader.ReadStrongGuildList <Guild>(); m_WarInvitations = reader.ReadStrongGuildList <Guild>(); m_Members = reader.ReadStrongMobileList(); m_Candidates = reader.ReadStrongMobileList(); m_Accepted = reader.ReadStrongMobileList(); m_Guildstone = reader.ReadItem(); m_Teleporter = reader.ReadItem(); m_Charter = reader.ReadString(); m_Website = reader.ReadString(); break; } } if (m_AllyDeclarations == null) { m_AllyDeclarations = new List <Guild>(); } if (m_AllyInvitations == null) { m_AllyInvitations = new List <Guild>(); } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(VerifyGuild_Callback)); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_Owner = (Mobile)reader.ReadMobile(); m_Friends = reader.ReadStrongMobileList(); }
public override void Deserialize( GenericReader reader ) { int version = reader.ReadInt(); switch ( version ) { case 5: { int count = reader.ReadInt(); m_PendingWars = new List<WarDeclaration>(); for( int i = 0; i < count; i++ ) { m_PendingWars.Add( new WarDeclaration( reader ) ); } count = reader.ReadInt(); m_AcceptedWars = new List<WarDeclaration>(); for( int i = 0; i < count; i++ ) { m_AcceptedWars.Add( new WarDeclaration( reader ) ); } bool isAllianceLeader = reader.ReadBool(); if( isAllianceLeader ) m_AllianceInfo = new AllianceInfo( reader ); else m_AllianceLeader = reader.ReadGuild() as Guild; goto case 4; } case 4: { m_AllyDeclarations = reader.ReadStrongGuildList<Guild>(); m_AllyInvitations = reader.ReadStrongGuildList<Guild>(); goto case 3; } case 3: { m_TypeLastChange = reader.ReadDateTime(); goto case 2; } case 2: { m_Type = (GuildType)reader.ReadInt(); goto case 1; } case 1: { m_LastFealty = reader.ReadDateTime(); goto case 0; } case 0: { m_Leader = reader.ReadMobile(); if( m_Leader is PlayerMobile ) ((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader; m_Name = reader.ReadString(); m_Abbreviation = reader.ReadString(); m_Allies = reader.ReadStrongGuildList<Guild>(); m_Enemies = reader.ReadStrongGuildList<Guild>(); m_WarDeclarations = reader.ReadStrongGuildList<Guild>(); m_WarInvitations = reader.ReadStrongGuildList<Guild>(); m_Members = reader.ReadStrongMobileList(); m_Candidates = reader.ReadStrongMobileList(); m_Accepted = reader.ReadStrongMobileList(); m_Guildstone = reader.ReadItem(); m_Teleporter = reader.ReadItem(); m_Charter = reader.ReadString(); m_Website = reader.ReadString(); break; } } if ( m_AllyDeclarations == null ) m_AllyDeclarations = new List<Guild>(); if ( m_AllyInvitations == null ) m_AllyInvitations = new List<Guild>(); if ( m_AcceptedWars == null ) m_AcceptedWars = new List<WarDeclaration>(); if ( m_PendingWars == null ) m_PendingWars = new List<WarDeclaration>(); /* if ( ( !NewGuildSystem && m_Guildstone == null )|| m_Members.Count == 0 ) Disband(); */ Timer.DelayCall( TimeSpan.Zero, new TimerCallback( VerifyGuild_Callback ) ); }
public Arena(GenericReader reader) { int version = reader.ReadEncodedInt(); switch (version) { case 7: { m_IsGuarded = reader.ReadBool(); goto case 6; } case 6: { m_Ladder = reader.ReadItem() as LadderController; goto case 5; } case 5: { m_Tournament = reader.ReadItem() as TournamentController; m_Announcer = reader.ReadMobile(); goto case 4; } case 4: { m_Name = reader.ReadString(); goto case 3; } case 3: { m_Zone = reader.ReadRect2D(); goto case 2; } case 2: { m_GateIn = reader.ReadPoint3D(); m_GateOut = reader.ReadPoint3D(); m_Teleporter = reader.ReadItem(); goto case 1; } case 1: { m_Players = reader.ReadStrongMobileList(); goto case 0; } case 0: { m_Facet = reader.ReadMap(); m_Bounds = reader.ReadRect2D(); m_Outside = reader.ReadPoint3D(); m_Wall = reader.ReadPoint3D(); if (version == 0) { reader.ReadBool(); m_Players = new List <Mobile>(); } m_Active = reader.ReadBool(); m_Points = new ArenaStartPoints(reader); if (m_Active) { m_Arenas.Add(this); m_Arenas.Sort(); } break; } } if (m_Zone.Start != Point2D.Zero && m_Zone.End != Point2D.Zero && m_Facet != null) { m_Region = new SafeZone(m_Zone, m_Outside, m_Facet, m_IsGuarded); } if (IsOccupied) { Timer.DelayCall(TimeSpan.FromSeconds(2.0), new TimerCallback(Evict)); } if (m_Tournament != null) { Timer.DelayCall(TimeSpan.Zero, new TimerCallback(AttachToTournament_Sandbox)); } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 9: { m_IDList = reader.ReadStrongMobileList(); goto case 5; } case 8: case 7: case 6: case 5: { m_WeaponEffect = (WeaponEffect)reader.ReadEncodedInt(); m_Charges = reader.ReadInt(); SaveFlag flags = (SaveFlag)reader.ReadInt(); if ( GetSaveFlag( flags, SaveFlag.DamageLevel ) ) { m_DamageLevel = (WeaponDamageLevel)reader.ReadInt(); if ( m_DamageLevel > WeaponDamageLevel.Vanq ) m_DamageLevel = WeaponDamageLevel.Ruin; } if ( GetSaveFlag( flags, SaveFlag.AccuracyLevel ) ) { m_AccuracyLevel = (WeaponAccuracyLevel)reader.ReadInt(); if ( m_AccuracyLevel > WeaponAccuracyLevel.Supremely ) m_AccuracyLevel = WeaponAccuracyLevel.Accurate; } if ( GetSaveFlag( flags, SaveFlag.DurabilityLevel ) ) { m_DurabilityLevel = (WeaponDurabilityLevel)reader.ReadInt(); if ( m_DurabilityLevel > WeaponDurabilityLevel.Indestructible ) m_DurabilityLevel = WeaponDurabilityLevel.Durable; } if ( GetSaveFlag( flags, SaveFlag.Quality ) ) m_Quality = (WeaponQuality)reader.ReadInt(); else m_Quality = WeaponQuality.Regular; if ( GetSaveFlag( flags, SaveFlag.Hits ) ) m_Hits = reader.ReadInt(); if ( GetSaveFlag( flags, SaveFlag.MaxHits ) ) m_MaxHits = reader.ReadInt(); if ( GetSaveFlag( flags, SaveFlag.Slayer ) ) m_Slayer = (SlayerName)reader.ReadInt(); if ( GetSaveFlag( flags, SaveFlag.Poison ) ) m_Poison = Poison.Deserialize( reader ); if ( GetSaveFlag( flags, SaveFlag.PoisonCharges ) ) m_PoisonCharges = reader.ReadInt(); if ( GetSaveFlag( flags, SaveFlag.Crafter ) ) m_Crafter = reader.ReadMobile(); if ( GetSaveFlag( flags, SaveFlag.Identified ) ) m_Identified = ( version >= 6 || reader.ReadBool() ); if ( GetSaveFlag( flags, SaveFlag.StrReq ) ) m_StrReq = reader.ReadInt(); else m_StrReq = -1; if ( GetSaveFlag( flags, SaveFlag.DexReq ) ) m_DexReq = reader.ReadInt(); else m_DexReq = -1; if ( GetSaveFlag( flags, SaveFlag.IntReq ) ) m_IntReq = reader.ReadInt(); else m_IntReq = -1; if ( GetSaveFlag( flags, SaveFlag.MinDamage ) ) m_MinDamage = reader.ReadInt(); else m_MinDamage = -1; if ( GetSaveFlag( flags, SaveFlag.MaxDamage ) ) m_MaxDamage = reader.ReadInt(); else m_MaxDamage = -1; if ( GetSaveFlag( flags, SaveFlag.HitSound ) ) m_HitSound = reader.ReadInt(); else m_HitSound = -1; if ( GetSaveFlag( flags, SaveFlag.MissSound ) ) m_MissSound = reader.ReadInt(); else m_MissSound = -1; if ( GetSaveFlag( flags, SaveFlag.Speed ) ) { if ( version < 9 ) m_Speed = reader.ReadInt(); else m_Speed = reader.ReadInt(); } else m_Speed = -1; if ( GetSaveFlag( flags, SaveFlag.MaxRange ) ) m_MaxRange = reader.ReadInt(); else m_MaxRange = -1; if ( GetSaveFlag( flags, SaveFlag.Skill ) ) m_Skill = (SkillName)reader.ReadInt(); else m_Skill = (SkillName)(-1); if ( GetSaveFlag( flags, SaveFlag.Type ) ) m_Type = (WeaponType)reader.ReadInt(); else m_Type = (WeaponType)(-1); if ( GetSaveFlag( flags, SaveFlag.Animation ) ) m_Animation = (WeaponAnimation)reader.ReadInt(); else m_Animation = (WeaponAnimation)(-1); if ( GetSaveFlag( flags, SaveFlag.Resource ) ) m_Resource = (CraftResource)reader.ReadInt(); else m_Resource = CraftResource.Iron; if ( GetSaveFlag( flags, SaveFlag.xAttributes ) ) m_AosAttributes = new AosAttributes( this, reader ); else m_AosAttributes = new AosAttributes( this ); if ( GetSaveFlag( flags, SaveFlag.xWeaponAttributes ) ) m_AosWeaponAttributes = new AosWeaponAttributes( this, reader ); else m_AosWeaponAttributes = new AosWeaponAttributes( this ); if ( UseSkillMod && m_AccuracyLevel != WeaponAccuracyLevel.Regular && Parent is Mobile ) { m_SkillMod = new DefaultSkillMod( AccuracySkill, true, (int)m_AccuracyLevel * 5 ); ((Mobile)Parent).AddSkillMod( m_SkillMod ); } if ( version < 7 && m_AosWeaponAttributes.MageWeapon != 0 ) m_AosWeaponAttributes.MageWeapon = 30 - m_AosWeaponAttributes.MageWeapon; if ( Core.AOS && m_AosWeaponAttributes.MageWeapon != 0 && m_AosWeaponAttributes.MageWeapon != 30 && Parent is Mobile ) { m_MageMod = new DefaultSkillMod( SkillName.Magery, true, -30 + m_AosWeaponAttributes.MageWeapon ); ((Mobile)Parent).AddSkillMod( m_MageMod ); } if ( GetSaveFlag( flags, SaveFlag.PlayerConstructed ) ) m_PlayerConstructed = true; if( GetSaveFlag( flags, SaveFlag.SkillBonuses ) ) m_AosSkillBonuses = new AosSkillBonuses( this, reader ); else m_AosSkillBonuses = new AosSkillBonuses( this ); if( GetSaveFlag( flags, SaveFlag.Slayer2 ) ) m_Slayer2 = (SlayerName)reader.ReadInt(); if( GetSaveFlag( flags, SaveFlag.ElementalDamages ) ) m_AosElementDamages = new AosElementAttributes( this, reader ); else m_AosElementDamages = new AosElementAttributes( this ); if( GetSaveFlag( flags, SaveFlag.EngravedText ) ) m_EngravedText = reader.ReadString(); break; } case 4: { m_Slayer = (SlayerName)reader.ReadInt(); goto case 3; } case 3: { m_StrReq = reader.ReadInt(); m_DexReq = reader.ReadInt(); m_IntReq = reader.ReadInt(); goto case 2; } case 2: { m_Identified = reader.ReadBool(); goto case 1; } case 1: { m_MaxRange = reader.ReadInt(); goto case 0; } case 0: { if ( version == 0 ) m_MaxRange = 1; // default if ( version < 5 ) { m_Resource = CraftResource.Iron; m_AosAttributes = new AosAttributes( this ); m_AosWeaponAttributes = new AosWeaponAttributes( this ); m_AosElementDamages = new AosElementAttributes( this ); m_AosSkillBonuses = new AosSkillBonuses( this ); } m_MinDamage = reader.ReadInt(); m_MaxDamage = reader.ReadInt(); m_Speed = reader.ReadInt(); m_HitSound = reader.ReadInt(); m_MissSound = reader.ReadInt(); m_Skill = (SkillName)reader.ReadInt(); m_Type = (WeaponType)reader.ReadInt(); m_Animation = (WeaponAnimation)reader.ReadInt(); m_DamageLevel = (WeaponDamageLevel)reader.ReadInt(); m_AccuracyLevel = (WeaponAccuracyLevel)reader.ReadInt(); m_DurabilityLevel = (WeaponDurabilityLevel)reader.ReadInt(); m_Quality = (WeaponQuality)reader.ReadInt(); m_Crafter = reader.ReadMobile(); m_Poison = Poison.Deserialize( reader ); m_PoisonCharges = reader.ReadInt(); if ( m_StrReq == OldStrengthReq ) m_StrReq = -1; if ( m_DexReq == OldDexterityReq ) m_DexReq = -1; if ( m_IntReq == OldIntelligenceReq ) m_IntReq = -1; if ( m_MinDamage == OldMinDamage ) m_MinDamage = -1; if ( m_MaxDamage == OldMaxDamage ) m_MaxDamage = -1; if ( m_HitSound == OldHitSound ) m_HitSound = -1; if ( m_MissSound == OldMissSound ) m_MissSound = -1; if ( m_Speed == OldSpeed ) m_Speed = -1; if ( m_MaxRange == OldMaxRange ) m_MaxRange = -1; if ( m_Skill == OldSkill ) m_Skill = (SkillName)(-1); if ( m_Type == OldType ) m_Type = (WeaponType)(-1); if ( m_Animation == OldAnimation ) m_Animation = (WeaponAnimation)(-1); if ( UseSkillMod && m_AccuracyLevel != WeaponAccuracyLevel.Regular && Parent is Mobile ) { m_SkillMod = new DefaultSkillMod( AccuracySkill, true, (int)m_AccuracyLevel * 5); ((Mobile)Parent).AddSkillMod( m_SkillMod ); } break; } } if ( Core.AOS && Parent is Mobile ) m_AosSkillBonuses.AddTo( (Mobile)Parent ); int strBonus = m_AosAttributes.BonusStr; int dexBonus = m_AosAttributes.BonusDex; int intBonus = m_AosAttributes.BonusInt; if ( this.Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0) ) { Mobile m = (Mobile)this.Parent; string modName = this.Serial.ToString(); if ( strBonus != 0 ) m.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) ); if ( dexBonus != 0 ) m.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) ); if ( intBonus != 0 ) m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) ); } if ( Parent is Mobile ) ((Mobile)Parent).CheckStatTimers(); if ( m_Hits <= 0 && m_MaxHits <= 0 ) { m_Hits = m_MaxHits = Utility.RandomMinMax( InitMinHits, InitMaxHits ); } if ( version < 6 ) m_PlayerConstructed = true; // we don't know, so, assume it's crafted }
public object DeserializeObject(GenericReader reader) { object output = null; XmlObjectType xmlObjectType = (XmlObjectType)reader.ReadInt(); if (xmlObjectType == XmlObjectType.Mobile) { output = reader.ReadMobile(); } else if (xmlObjectType == XmlObjectType.Item) { output = reader.ReadItem(); } else if (xmlObjectType == XmlObjectType.MobileList) { output = reader.ReadStrongMobileList(); } else if (xmlObjectType == XmlObjectType.ItemList) { output = reader.ReadStrongItemList(); } else if (xmlObjectType == XmlObjectType.ArrayList) { int elements = reader.ReadInt(); ArrayList list = new ArrayList(elements); for (int i = 0; i < elements; i++) { list.Add(DeserializeObject(reader)); } output = list; } else if (xmlObjectType == XmlObjectType.DateTime) { output = reader.ReadDateTime(); } else if (xmlObjectType == XmlObjectType.DateTimeOffset) { output = reader.ReadDateTimeOffset(); } else if (xmlObjectType == XmlObjectType.BaseGuild) { output = reader.ReadGuild(); } else if (xmlObjectType == XmlObjectType.IPAddress) { output = reader.ReadIPAddress(); } else if (xmlObjectType == XmlObjectType.Map) { output = reader.ReadMap(); } else if (xmlObjectType == XmlObjectType.Point3D) { output = reader.ReadPoint3D(); } else if (xmlObjectType == XmlObjectType.Point2D) { output = reader.ReadPoint2D(); } else if (xmlObjectType == XmlObjectType.TimeSpan) { output = reader.ReadTimeSpan(); } else if (xmlObjectType == XmlObjectType.Rectangle2D) { output = reader.ReadRect2D(); } else if (xmlObjectType == XmlObjectType.Rectangle3D) { output = reader.ReadRect3D(); } else if (xmlObjectType == XmlObjectType.Double) { output = reader.ReadDouble(); } else if (xmlObjectType == XmlObjectType.Integer) { output = reader.ReadInt(); } else if (xmlObjectType == XmlObjectType.Boolean) { output = reader.ReadBool(); } else if (xmlObjectType == XmlObjectType.UInt64) { output = reader.ReadULong(); } else if (xmlObjectType == XmlObjectType.String) { output = reader.ReadString(); } else if (xmlObjectType == XmlObjectType.Type) { output = UberScriptFunctions.Methods.TYPE(null, reader.ReadString()); } else if (xmlObjectType == XmlObjectType.Other) { LoggingCustom.Log( "ERROR_Uberscript.txt", DateTime.Now + ": xmlobject: " + Name + " attached to " + AttachedTo + " with data of type other was deserialized"); } return(output); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 12: { if (reader.ReadBool()) { m_RestoreEquip = reader.ReadStrongItemList(); } goto case 11; } case 11: { // Version 11, we move all bools to a CorpseFlag m_Flags = (CorpseFlag)reader.ReadInt(); m_TimeOfDeath = reader.ReadDeltaTime(); int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (reader.ReadBool()) { SetRestoreInfo(item, reader.ReadPoint3D()); } else if (item != null) { SetRestoreInfo(item, item.Location); } } if (reader.ReadBool()) { BeginDecay(reader.ReadDeltaTime() - DateTime.Now); } m_Looters = reader.ReadStrongMobileList(); m_Killer = reader.ReadMobile(); m_Aggressors = reader.ReadStrongMobileList(); m_Owner = reader.ReadMobile(); m_CorpseName = reader.ReadString(); m_AccessLevel = (AccessLevel)reader.ReadInt(); reader.ReadInt(); // guild reserve m_Kills = reader.ReadInt(); m_EquipItems = reader.ReadStrongItemList(); break; } case 10: { m_TimeOfDeath = reader.ReadDeltaTime(); goto case 9; } case 9: { int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (reader.ReadBool()) { SetRestoreInfo(item, reader.ReadPoint3D()); } else if (item != null) { SetRestoreInfo(item, item.Location); } } goto case 8; } case 8: { SetFlag(CorpseFlag.VisitedByTaxidermist, reader.ReadBool()); goto case 7; } case 7: { if (reader.ReadBool()) { BeginDecay(reader.ReadDeltaTime() - DateTime.Now); } goto case 6; } case 6: { m_Looters = reader.ReadStrongMobileList(); m_Killer = reader.ReadMobile(); goto case 5; } case 5: { SetFlag(CorpseFlag.Carved, reader.ReadBool()); goto case 4; } case 4: { m_Aggressors = reader.ReadStrongMobileList(); goto case 3; } case 3: { m_Owner = reader.ReadMobile(); goto case 2; } case 2: { SetFlag(CorpseFlag.NoBones, reader.ReadBool()); goto case 1; } case 1: { m_CorpseName = reader.ReadString(); goto case 0; } case 0: { if (version < 10) { m_TimeOfDeath = DateTime.Now; } if (version < 7) { BeginDecay(m_DefaultDecayTime); } if (version < 6) { m_Looters = new List <Mobile>(); } if (version < 4) { m_Aggressors = new List <Mobile>(); } m_AccessLevel = (AccessLevel)reader.ReadInt(); reader.ReadInt(); // guild reserve m_Kills = reader.ReadInt(); SetFlag(CorpseFlag.Criminal, reader.ReadBool()); m_EquipItems = reader.ReadStrongItemList(); break; } } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 8: { m_IDList = reader.ReadStrongMobileList(); goto case 5; } case 7: case 6: case 5: { SaveFlag flags = (SaveFlag)reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.Attributes ) ) m_AosAttributes = new AosAttributes( this, reader ); else m_AosAttributes = new AosAttributes( this ); if ( GetSaveFlag( flags, SaveFlag.ArmorAttributes ) ) m_AosArmorAttributes = new AosArmorAttributes( this, reader ); else m_AosArmorAttributes = new AosArmorAttributes( this ); if ( GetSaveFlag( flags, SaveFlag.PhysicalBonus ) ) m_PhysicalBonus = reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.FireBonus ) ) m_FireBonus = reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.ColdBonus ) ) m_ColdBonus = reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.PoisonBonus ) ) m_PoisonBonus = reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.EnergyBonus ) ) m_EnergyBonus = reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.Identified ) ) m_Identified = ( version >= 7 || reader.ReadBool() ); if ( GetSaveFlag( flags, SaveFlag.MaxHitPoints ) ) m_MaxHitPoints = reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.HitPoints ) ) m_HitPoints = reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.Crafter ) ) m_Crafter = reader.ReadMobile(); if ( GetSaveFlag( flags, SaveFlag.Quality ) ) m_Quality = (ArmorQuality)reader.ReadEncodedInt(); else m_Quality = ArmorQuality.Regular; if ( version == 5 && m_Quality == ArmorQuality.Low ) m_Quality = ArmorQuality.Regular; if ( GetSaveFlag( flags, SaveFlag.Durability ) ) { m_Durability = (ArmorDurabilityLevel)reader.ReadEncodedInt(); if ( m_Durability > ArmorDurabilityLevel.Indestructible ) m_Durability = ArmorDurabilityLevel.Durable; } if ( GetSaveFlag( flags, SaveFlag.Protection ) ) { m_Protection = (ArmorProtectionLevel)reader.ReadEncodedInt(); if ( m_Protection > ArmorProtectionLevel.Invulnerability ) m_Protection = ArmorProtectionLevel.Defense; } if ( GetSaveFlag( flags, SaveFlag.Resource ) ) m_Resource = (CraftResource)reader.ReadEncodedInt(); else m_Resource = DefaultResource; if ( m_Resource == CraftResource.None ) m_Resource = DefaultResource; if ( GetSaveFlag( flags, SaveFlag.BaseArmor ) ) m_ArmorBase = reader.ReadEncodedInt(); else m_ArmorBase = -1; if ( GetSaveFlag( flags, SaveFlag.StrBonus ) ) m_StrBonus = reader.ReadEncodedInt(); else m_StrBonus = -1; if ( GetSaveFlag( flags, SaveFlag.DexBonus ) ) m_DexBonus = reader.ReadEncodedInt(); else m_DexBonus = -1; if ( GetSaveFlag( flags, SaveFlag.IntBonus ) ) m_IntBonus = reader.ReadEncodedInt(); else m_IntBonus = -1; if ( GetSaveFlag( flags, SaveFlag.StrReq ) ) m_StrReq = reader.ReadEncodedInt(); else m_StrReq = -1; if ( GetSaveFlag( flags, SaveFlag.DexReq ) ) m_DexReq = reader.ReadEncodedInt(); else m_DexReq = -1; if ( GetSaveFlag( flags, SaveFlag.IntReq ) ) m_IntReq = reader.ReadEncodedInt(); else m_IntReq = -1; if ( GetSaveFlag( flags, SaveFlag.MedAllowance ) ) m_Meditate = (AMA)reader.ReadEncodedInt(); else m_Meditate = (AMA)(-1); if ( GetSaveFlag( flags, SaveFlag.SkillBonuses ) ) m_AosSkillBonuses = new AosSkillBonuses( this, reader ); if ( GetSaveFlag( flags, SaveFlag.PlayerConstructed ) ) m_PlayerConstructed = true; break; } case 4: { m_AosAttributes = new AosAttributes( this, reader ); m_AosArmorAttributes = new AosArmorAttributes( this, reader ); goto case 3; } case 3: { m_PhysicalBonus = reader.ReadInt(); m_FireBonus = reader.ReadInt(); m_ColdBonus = reader.ReadInt(); m_PoisonBonus = reader.ReadInt(); m_EnergyBonus = reader.ReadInt(); goto case 2; } case 2: case 1: { m_Identified = reader.ReadBool(); goto case 0; } case 0: { m_ArmorBase = reader.ReadInt(); m_MaxHitPoints = reader.ReadInt(); m_HitPoints = reader.ReadInt(); m_Crafter = reader.ReadMobile(); m_Quality = (ArmorQuality)reader.ReadInt(); m_Durability = (ArmorDurabilityLevel)reader.ReadInt(); m_Protection = (ArmorProtectionLevel)reader.ReadInt(); AMT mat = (AMT)reader.ReadInt(); if ( m_ArmorBase == RevertArmorBase ) m_ArmorBase = -1; /*m_BodyPos = (ArmorBodyType)*/reader.ReadInt(); if ( version < 4 ) { m_AosAttributes = new AosAttributes( this ); m_AosArmorAttributes = new AosArmorAttributes( this ); } if ( version < 3 && m_Quality == ArmorQuality.Exceptional ) DistributeBonuses( 6 ); if ( version >= 2 ) { m_Resource = (CraftResource)reader.ReadInt(); } else { OreInfo info; switch ( reader.ReadInt() ) { default: case 0: info = OreInfo.Iron; break; case 1: info = OreInfo.DullCopper; break; case 2: info = OreInfo.ShadowIron; break; case 3: info = OreInfo.Copper; break; case 4: info = OreInfo.Bronze; break; case 5: info = OreInfo.Gold; break; case 6: info = OreInfo.Agapite; break; case 7: info = OreInfo.Verite; break; case 8: info = OreInfo.Valorite; break; } m_Resource = CraftResources.GetFromOreInfo( info, mat ); } m_StrBonus = reader.ReadInt(); m_DexBonus = reader.ReadInt(); m_IntBonus = reader.ReadInt(); m_StrReq = reader.ReadInt(); m_DexReq = reader.ReadInt(); m_IntReq = reader.ReadInt(); if ( m_StrBonus == OldStrBonus ) m_StrBonus = -1; if ( m_DexBonus == OldDexBonus ) m_DexBonus = -1; if ( m_IntBonus == OldIntBonus ) m_IntBonus = -1; if ( m_StrReq == OldStrReq ) m_StrReq = -1; if ( m_DexReq == OldDexReq ) m_DexReq = -1; if ( m_IntReq == OldIntReq ) m_IntReq = -1; m_Meditate = (AMA)reader.ReadInt(); if ( m_Meditate == OldMedAllowance ) m_Meditate = (AMA)(-1); if ( m_Resource == CraftResource.None ) { if ( mat == ArmorMaterialType.Studded || mat == ArmorMaterialType.Leather ) m_Resource = CraftResource.RegularLeather; else if ( mat == ArmorMaterialType.Spined ) m_Resource = CraftResource.SpinedLeather; else if ( mat == ArmorMaterialType.Horned ) m_Resource = CraftResource.HornedLeather; else if ( mat == ArmorMaterialType.Barbed ) m_Resource = CraftResource.BarbedLeather; else m_Resource = CraftResource.Iron; } if ( m_MaxHitPoints == 0 && m_HitPoints == 0 ) m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits ); break; } } if ( m_AosSkillBonuses == null ) m_AosSkillBonuses = new AosSkillBonuses( this ); if ( Core.AOS && Parent is Mobile ) m_AosSkillBonuses.AddTo( (Mobile)Parent ); int strBonus = ComputeStatBonus( StatType.Str ); int dexBonus = ComputeStatBonus( StatType.Dex ); int intBonus = ComputeStatBonus( StatType.Int ); if ( Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0) ) { Mobile m = (Mobile)Parent; string modName = Serial.ToString(); if ( strBonus != 0 ) m.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) ); if ( dexBonus != 0 ) m.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) ); if ( intBonus != 0 ) m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) ); } if ( Parent is Mobile ) ((Mobile)Parent).CheckStatTimers(); if ( version < 7 ) m_PlayerConstructed = true; // we don't know, so, assume it's crafted }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); if ( version >= 16 && version <= 18 ) reader.ReadItem(); // spawner m_CurrentAI = (AIType) reader.ReadInt(); m_DefaultAI = (AIType) reader.ReadInt(); m_iRangePerception = reader.ReadInt(); m_iRangeFight = reader.ReadInt(); m_iTeam = reader.ReadInt(); m_dActiveSpeed = reader.ReadDouble(); m_dPassiveSpeed = reader.ReadDouble(); m_dCurrentSpeed = reader.ReadDouble(); double activeSpeed = m_dActiveSpeed; double passiveSpeed = m_dPassiveSpeed; SpeedInfo.GetSpeeds( this, ref activeSpeed, ref passiveSpeed ); bool isStandardActive = false; for ( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i ) { isStandardActive = ( m_dActiveSpeed == m_StandardActiveSpeeds[i] ); } bool isStandardPassive = false; for ( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i ) { isStandardPassive = ( m_dPassiveSpeed == m_StandardPassiveSpeeds[i] ); } if ( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed ) { m_dCurrentSpeed = activeSpeed; } else if ( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed ) { m_dCurrentSpeed = passiveSpeed; } if ( isStandardActive ) { m_dActiveSpeed = activeSpeed; } if ( isStandardPassive ) { m_dPassiveSpeed = passiveSpeed; } if ( m_iRangePerception == OldRangePerception ) { m_iRangePerception = DefaultRangePerception; } m_pHome.X = reader.ReadInt(); m_pHome.Y = reader.ReadInt(); m_pHome.Z = reader.ReadInt(); if ( version >= 1 ) { m_iRangeHome = reader.ReadInt(); if ( version < 25 ) { int i, iCount; iCount = reader.ReadInt(); for ( i = 0; i < iCount; i++ ) reader.ReadString(); iCount = reader.ReadInt(); for ( i = 0; i < iCount; i++ ) reader.ReadString(); } } else { m_iRangeHome = 0; } if ( version >= 2 ) { m_FightMode = (FightMode) reader.ReadInt(); m_bControlled = reader.ReadBool(); m_ControlMaster = reader.ReadMobile(); m_ControlTarget = reader.ReadMobile(); m_ControlDest = reader.ReadPoint3D(); m_ControlOrder = (OrderType) reader.ReadInt(); m_dMinTameSkill = reader.ReadDouble(); if ( version < 9 ) reader.ReadDouble(); m_bTamable = reader.ReadBool(); m_bSummoned = reader.ReadBool(); if ( m_bSummoned ) { m_SummonEnd = reader.ReadDeltaTime(); new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.Now ).Start(); } m_iControlSlots = reader.ReadInt(); } else { m_FightMode = FightMode.Closest; m_bControlled = false; m_ControlMaster = null; m_ControlTarget = null; m_ControlOrder = OrderType.None; } if ( version >= 3 ) m_Loyalty = (PetLoyalty) reader.ReadInt(); else m_Loyalty = PetLoyalty.WonderfullyHappy; if ( version >= 4 ) m_CurrentWayPoint = reader.ReadItem() as WayPoint; if ( version >= 5 ) m_SummonMaster = reader.ReadMobile(); if ( version >= 6 ) { m_HitsMax = reader.ReadInt(); m_StamMax = reader.ReadInt(); m_ManaMax = reader.ReadInt(); m_DamageMin = reader.ReadInt(); m_DamageMax = reader.ReadInt(); } if ( version >= 7 ) { m_PhysicalResistance = reader.ReadInt(); m_PhysicalDamage = reader.ReadInt(); m_FireResistance = reader.ReadInt(); m_FireDamage = reader.ReadInt(); m_ColdResistance = reader.ReadInt(); m_ColdDamage = reader.ReadInt(); m_PoisonResistance = reader.ReadInt(); m_PoisonDamage = reader.ReadInt(); m_EnergyResistance = reader.ReadInt(); m_EnergyDamage = reader.ReadInt(); } if ( version >= 8 ) m_Owners = reader.ReadStrongMobileList(); else m_Owners = new List<Mobile>(); if ( version >= 10 ) { m_IsDeadPet = reader.ReadBool(); m_IsBonded = reader.ReadBool(); m_BondingBegin = reader.ReadDateTime(); m_OwnerAbandonTime = reader.ReadDateTime(); } if ( version >= 11 ) m_HasGeneratedLoot = reader.ReadBool(); else m_HasGeneratedLoot = true; if ( version >= 12 ) { m_Paragon = reader.ReadBool(); m_IsChampionMonster = reader.ReadBool(); } else { m_Paragon = false; m_IsChampionMonster = false; } if ( version >= 13 && reader.ReadBool() ) m_Friends = reader.ReadStrongMobileList(); else if ( version < 13 && m_ControlOrder >= OrderType.Unfriend ) ++m_ControlOrder; if ( version >= 14 ) m_SpawnLevel = reader.ReadInt(); else m_SpawnLevel = 0; if ( version >= 15 ) m_ChampionType = (ChampionSpawnType) reader.ReadInt(); if ( version >= 17 ) m_StolenFrom = reader.ReadBool(); if ( version >= 18 ) { int count = reader.ReadInt(); for ( int i = 0; i < count; i++ ) { Item rummaged = reader.ReadItem(); Mobile owner = reader.ReadMobile(); if ( rummaged != null && owner != null ) m_RummagedItems.Add( rummaged, owner ); } } if ( version >= 20 ) { m_IsMinichampMonster = reader.ReadBool(); m_MinichampType = (MiniChampType) reader.ReadInt(); } if ( version >= 21 ) { m_NextTastyTreat = reader.ReadDateTime(); } if ( version >= 22 ) { m_Petrified = reader.ReadBool(); if ( m_Petrified ) { m_StatueAnimation = reader.ReadInt(); m_StatueFrames = reader.ReadInt(); Frozen = true; HueMod = 2401; } } if ( version >= 23 ) { m_NextArmorEssence = reader.ReadDateTime(); } if ( version >= 24 ) { m_IsGolem = reader.ReadBool(); } else { m_IsGolem = this is Golem; } CheckStatTimers(); ChangeAIType( m_CurrentAI ); AddFollowers(); if ( IsAnimatedDead ) Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this ); if ( Controlled ) Skills.Cap = 15000; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 2: case 1: if (reader.ReadBool()) this.m_Helpers = reader.ReadStrongMobileList<BaseCreature>(); goto case 0; case 0: this.m_Peerless = reader.ReadMobile() as BasePeerless; this.m_BossLocation = reader.ReadPoint3D(); this.m_TeleportDest = reader.ReadPoint3D(); this.m_ExitDest = reader.ReadPoint3D(); this.m_Deadline = reader.ReadDateTime(); // deserialize master keys this.m_MasterKeys = reader.ReadStrongItemList(); // deserialize fightes this.m_Fighters = reader.ReadStrongMobileList(); // deserialize pets this.m_Pets = new Dictionary<Mobile, List<Mobile>>(); int count = reader.ReadInt(); for (int i = 0; i < count; i ++) this.m_Pets.Add(reader.ReadMobile(), reader.ReadStrongMobileList()); if (version < 2) reader.ReadBool(); break; } this.FinishSequence(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); reader.ReadInt(); AffectedMobiles = reader.ReadStrongMobileList(); for (int i = 0; i < AffectedMobiles.Count; i++) if (AffectedMobiles[i] != null) AffectedMobiles.Clear(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 3: { m_IDList = reader.ReadStrongMobileList(); goto case 2; } case 2: { m_Resource = (CraftResource)reader.ReadEncodedInt(); m_GemType = (GemType)reader.ReadEncodedInt(); m_Identified = reader.ReadBool(); m_Charges = reader.ReadInt(); m_JewelEffect = (JewelEffect)reader.ReadEncodedInt(); goto case 1; } case 1: { m_AosAttributes = new AosAttributes(this, reader); m_AosResistances = new AosElementAttributes(this, reader); m_AosSkillBonuses = new AosSkillBonuses(this, reader); if (Core.AOS && Parent is Mobile) { m_AosSkillBonuses.AddTo((Mobile)Parent); } int strBonus = m_AosAttributes.BonusStr; int dexBonus = m_AosAttributes.BonusDex; int intBonus = m_AosAttributes.BonusInt; if (Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0)) { Mobile m = (Mobile)Parent; string modName = Serial.ToString(); if (strBonus != 0) { m.AddStatMod(new StatMod(StatType.Str, modName + "Str", strBonus, TimeSpan.Zero)); } if (dexBonus != 0) { m.AddStatMod(new StatMod(StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero)); } if (intBonus != 0) { m.AddStatMod(new StatMod(StatType.Int, modName + "Int", intBonus, TimeSpan.Zero)); } } if (Parent is Mobile) { ((Mobile)Parent).CheckStatTimers(); } break; } case 0: { m_AosAttributes = new AosAttributes(this); m_AosResistances = new AosElementAttributes(this); m_AosSkillBonuses = new AosSkillBonuses(this); break; } } if (version < 2) { m_Resource = CraftResource.Iron; m_GemType = GemType.None; } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 0: { this.m_TrueForm = reader.ReadBool(); this.m_GateItem = reader.ReadItem(); this.m_Tentacles = reader.ReadStrongMobileList<HarrowerTentacles>(); this.m_Timer = new TeleportTimer(this); this.m_Timer.Start(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 0: { this.m_Items = reader.ReadStrongItemList(); this.m_Mobiles = reader.ReadStrongMobileList(); this.m_DecayTime = reader.ReadDeltaTime(); this.RefreshDecay(false); break; } } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_CurrentAI = (AIType)reader.ReadInt(); m_DefaultAI = (AIType)reader.ReadInt(); m_iRangePerception = reader.ReadInt(); m_iRangeFight = reader.ReadInt(); m_iTeam = reader.ReadInt(); m_dActiveSpeed = reader.ReadDouble(); m_dPassiveSpeed = reader.ReadDouble(); m_dCurrentSpeed = reader.ReadDouble(); if ( m_iRangePerception == OldRangePerception ) m_iRangePerception = DefaultRangePerception; m_Home.X = reader.ReadInt(); m_Home.Y = reader.ReadInt(); m_Home.Z = reader.ReadInt(); if ( version >= 1 ) { m_iRangeHome = reader.ReadInt(); int i, iCount; iCount = reader.ReadInt(); for ( i=0; i< iCount; i++ ) { string str = reader.ReadString(); Type type = Type.GetType( str ); if ( type != null ) { m_arSpellAttack.Add( type ); } } iCount = reader.ReadInt(); for ( i=0; i< iCount; i++ ) { string str = reader.ReadString(); Type type = Type.GetType( str ); if ( type != null ) { m_arSpellDefense.Add( type ); } } } else { m_iRangeHome = 0; } if ( version >= 2 ) { m_FightMode = ( FightMode )reader.ReadInt(); m_bControlled = reader.ReadBool(); m_ControlMaster = reader.ReadMobile(); m_ControlTarget = reader.ReadMobile(); m_ControlDest = reader.ReadPoint3D(); m_ControlOrder = (OrderType) reader.ReadInt(); m_dMinTameSkill = reader.ReadDouble(); if ( version < 9 ) reader.ReadDouble(); m_bTamable = reader.ReadBool(); m_bSummoned = reader.ReadBool(); if ( m_bSummoned ) { m_SummonEnd = reader.ReadDeltaTime(); new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.UtcNow ).Start(); } m_iControlSlots = reader.ReadInt(); } else { m_FightMode = FightMode.Closest; m_bControlled = false; m_ControlMaster = null; m_ControlTarget = null; m_ControlOrder = OrderType.None; } if ( version >= 3 ) m_Loyalty = reader.ReadInt(); else m_Loyalty = MaxLoyalty; // Wonderfully Happy if ( version >= 4 ) m_CurrentWayPoint = reader.ReadItem() as WayPoint; if ( version >= 5 ) m_SummonMaster = reader.ReadMobile(); if ( version >= 6 ) { m_HitsMax = reader.ReadInt(); m_StamMax = reader.ReadInt(); m_ManaMax = reader.ReadInt(); m_DamageMin = reader.ReadInt(); m_DamageMax = reader.ReadInt(); } if ( version >= 7 ) { m_PhysicalResistance = reader.ReadInt(); m_PhysicalDamage = reader.ReadInt(); m_FireResistance = reader.ReadInt(); m_FireDamage = reader.ReadInt(); m_ColdResistance = reader.ReadInt(); m_ColdDamage = reader.ReadInt(); m_PoisonResistance = reader.ReadInt(); m_PoisonDamage = reader.ReadInt(); m_EnergyResistance = reader.ReadInt(); m_EnergyDamage = reader.ReadInt(); } if ( version >= 8 ) m_Owners = reader.ReadStrongMobileList(); else m_Owners = new List<Mobile>(); if ( version >= 10 ) { m_IsDeadPet = reader.ReadBool(); m_IsBonded = reader.ReadBool(); m_BondingBegin = reader.ReadDateTime(); m_OwnerAbandonTime = reader.ReadDateTime(); } if ( version >= 11 ) m_HasGeneratedLoot = reader.ReadBool(); else m_HasGeneratedLoot = true; if ( version >= 12 ) { m_Paragon = reader.ReadBool(); if ( m_Paragon ) SolidHueOverride = Paragon.Hue; } else m_Paragon = false; if ( version >= 13 && reader.ReadBool() ) m_Friends = reader.ReadStrongMobileList(); else if ( version < 13 && m_ControlOrder >= OrderType.Unfriend ) ++m_ControlOrder; if ( version < 16 && Loyalty != MaxLoyalty ) Loyalty *= 10; double activeSpeed = m_dActiveSpeed; double passiveSpeed = m_dPassiveSpeed; SpeedInfo.GetSpeeds( this, ref activeSpeed, ref passiveSpeed ); bool isStandardActive = false; for ( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i ) isStandardActive = ( m_dActiveSpeed == m_StandardActiveSpeeds[i] ); bool isStandardPassive = false; for ( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i ) isStandardPassive = ( m_dPassiveSpeed == m_StandardPassiveSpeeds[i] ); if ( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed ) m_dCurrentSpeed = activeSpeed; else if ( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed ) m_dCurrentSpeed = passiveSpeed; if ( isStandardActive && !m_Paragon && !m_Corrupt) m_dActiveSpeed = activeSpeed; if (isStandardPassive && !m_Paragon && !m_Corrupt) m_dPassiveSpeed = passiveSpeed; if ( version >= 14 ) { m_RemoveIfUntamed = reader.ReadBool(); m_RemoveStep = reader.ReadInt(); } TimeSpan deleteTime = TimeSpan.Zero; if ( version >= 17 ) deleteTime = reader.ReadTimeSpan(); if ( ( deleteTime > TimeSpan.Zero || LastOwner != null ) && !Controlled && !IsStabled ) { if ( deleteTime == TimeSpan.Zero ) deleteTime = TimeSpan.FromDays( 3.0 ); m_DeleteTimer = new DeleteTimer( this, deleteTime ); m_DeleteTimer.Start(); } if ( version >= 18 ) m_StabledDate = reader.ReadDeltaTime(); /* if( version <= 14 && m_Paragon && Hue == 0x31 ) { Hue = Paragon.Hue; //Paragon hue fixed, should now be 0x501. } */ if ( version >= 19 ) m_HomeMap = reader.ReadMap(); if ( version >= 20 ) m_CorpseNameOverride = reader.ReadString(); if (version == 21 || version == 22) // NO LONGER USED! { m_KillCriminals = reader.ReadBool(); m_KillMurderers = reader.ReadBool(); m_InnocentDefault = reader.ReadBool(); m_Pseu_KeepKillCredit = reader.ReadBool(); m_PoisonCustomChance = reader.ReadDouble(); m_PoisonCustomImmune = Poison.GetPoison(reader.ReadInt()); m_PoisonCustomHit = Poison.GetPoison(reader.ReadInt()); m_CanBreathCustom = reader.ReadBool(); m_BreathDamageCustom = reader.ReadInt(); m_BreathCustomDelay = reader.ReadDouble(); m_Pseu_SpellDelay = reader.ReadTimeSpan(); m_BardImmuneCustom = reader.ReadBool(); m_Pseu_EQPlayerAllowed = reader.ReadBool(); m_Pseu_AllowFizzle = reader.ReadBool(); m_Pseu_AllowInterrupts = reader.ReadBool(); m_Pseu_CanBeHealed = reader.ReadBool(); m_WeaponDamage = reader.ReadBool(); m_TakesNormalDamage = reader.ReadBool(); m_PowerWords = reader.ReadBool(); m_ClearHandsOnCast = reader.ReadBool(); m_Pseu_ConsumeReagents = reader.ReadBool(); m_Pseu_SpellBookRequired = reader.ReadBool(); m_Speaks = reader.ReadBool(); } if (version == 22) // NO LONGER USED! { m_FreelyLootable = reader.ReadBool(); m_AutoDispelCustom = reader.ReadBool(); m_AutoDispelChanceCustom = reader.ReadDouble(); m_AlwaysMurdererCustom = reader.ReadBool(); m_IsScaryToPetsCustom = reader.ReadBool(); } if (version >= 23) { ExtSaveFlag flags = (ExtSaveFlag)reader.ReadInt(); if (GetExtSaveFlag(flags, ExtSaveFlag.KillCriminals)) m_KillCriminals = true; if (GetExtSaveFlag(flags, ExtSaveFlag.KillMurderers)) m_KillMurderers = true; if (GetExtSaveFlag(flags, ExtSaveFlag.InnocentDefault)) m_InnocentDefault = true; if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_KeepKillCredit)) m_Pseu_KeepKillCredit = true; if (GetExtSaveFlag(flags, ExtSaveFlag.CanBreathCustom)) m_CanBreathCustom = true; if (GetExtSaveFlag(flags, ExtSaveFlag.BardImmuneCustom)) m_BardImmuneCustom = true; if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_EQPlayerAllowed)) m_Pseu_EQPlayerAllowed = true; if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_AllowFizzle)) m_Pseu_AllowFizzle = false; if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_AllowInterrupts)) m_Pseu_AllowInterrupts = true; if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_CanBeHealed)) m_Pseu_CanBeHealed = false; if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_CanUseGates)) m_Pseu_CanUseGates = false; if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_CanUseRecall)) m_Pseu_CanUseRecall = false; if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_CanAttackInnocents)) m_Pseu_CanAttackInnocents = false; if (GetExtSaveFlag(flags, ExtSaveFlag.ReduceSpeedWithDamage)) m_ReduceSpeedWithDamageCustom = false; if (GetExtSaveFlag(flags, ExtSaveFlag.WeaponDamage)) m_WeaponDamage = true; if (GetExtSaveFlag(flags, ExtSaveFlag.TakesNormalDamage)) m_TakesNormalDamage = true; if (GetExtSaveFlag(flags, ExtSaveFlag.PowerWords)) m_PowerWords = true; if (GetExtSaveFlag(flags, ExtSaveFlag.ClearHandsOnCast)) m_ClearHandsOnCast = true; if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_ConsumeReagents)) m_Pseu_ConsumeReagents = true; if (GetExtSaveFlag(flags, ExtSaveFlag.Pseu_SpellBookRequired)) m_Pseu_SpellBookRequired = true; if (GetExtSaveFlag(flags, ExtSaveFlag.Speaks)) m_Speaks = false; if (GetExtSaveFlag(flags, ExtSaveFlag.FreelyLootable)) m_FreelyLootable = true; if (GetExtSaveFlag(flags, ExtSaveFlag.AutoDispelCustom)) m_AutoDispelCustom = true; if (GetExtSaveFlag(flags, ExtSaveFlag.AlwaysMurdererCustom)) m_AlwaysMurdererCustom = true; if (GetExtSaveFlag(flags, ExtSaveFlag.IsScaryToPetsCustom)) m_IsScaryToPetsCustom = true; m_PoisonCustomChance = reader.ReadDouble(); m_PoisonCustomImmune = Poison.GetPoison(reader.ReadInt()); m_PoisonCustomHit = Poison.GetPoison(reader.ReadInt()); m_BreathDamageCustom = reader.ReadInt(); m_BreathCustomDelay = reader.ReadDouble(); m_Pseu_SpellDelay = reader.ReadTimeSpan(); m_AutoDispelChanceCustom = reader.ReadDouble(); if (version >= 24) { if (GetExtSaveFlag(flags, ExtSaveFlag.Account)) { string username = reader.ReadString(); AccountDeserializateInfos.Add(new AccountDeserializeInfo(this, username)); } } if (version >= 25) { if (GetExtSaveFlag(flags, ExtSaveFlag.SkillGainMultiplier)) m_SkillGainMultiplier = reader.ReadDouble(); } if (version >= 26) { SpecialTitle = reader.ReadString(); TitleHue = reader.ReadInt(); } if (version >= 27) { Alignment = (Alignment)reader.ReadInt(); } if (version >= 28) { m_Corrupt = reader.ReadBool(); if (m_Corrupt) SolidHueOverride = HalloweenCorruption.Hue; } else m_Corrupt = false; } CheckStatTimers(); ChangeAIType(m_CurrentAI); AddFollowers(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); int count; bool loadedDynamicDecay = false; switch (version) { case 16: { VendorMultiplier = reader.ReadDouble(); StorageMultiplier = reader.ReadDouble(); goto case 15; } case 15: { int stage = reader.ReadInt(); if (stage != -1) { m_CurrentStage = (DecayLevel) stage; m_NextDecayStage = reader.ReadDateTime(); loadedDynamicDecay = true; } goto case 14; } case 14: { m_RelativeBanLocation = reader.ReadPoint3D(); goto case 13; } case 13: // removed ban location serialization case 12: { m_VendorRentalContracts = reader.ReadStrongItemList(); m_InternalizedVendors = reader.ReadStrongMobileList(); int relocatedCount = reader.ReadEncodedInt(); for (int i = 0; i < relocatedCount; i++) { Point3D relLocation = reader.ReadPoint3D(); IEntity entity = World.FindEntity(reader.ReadInt()); // DO NOT READ ENTITY DIRECTLY, BECAUSE IF IT ISN'T IN THE WORLD (Item or Mobile) // then it creates a new one, which caused a problem previously //IEntity entity = reader.ReadEntity(); if (entity != null) { m_RelocatedEntities.Add(new RelocatedEntity(entity, relLocation)); } } int inventoryCount = reader.ReadEncodedInt(); for (int i = 0; i < inventoryCount; i++) { var inventory = new VendorInventory(this, reader); m_VendorInventories.Add(inventory); } goto case 11; } case 11: { m_LastRefreshed = reader.ReadDateTime(); m_RestrictDecay = reader.ReadBool(); goto case 10; } case 10: // just a signal for updates case 9: { m_Visits = reader.ReadInt(); goto case 8; } case 8: { m_Price = reader.ReadInt(); goto case 7; } case 7: { m_Access = reader.ReadStrongMobileList(); goto case 6; } case 6: { m_BuiltOn = reader.ReadDateTime(); m_LastTraded = reader.ReadDateTime(); goto case 5; } case 5: // just removed fields case 4: { m_Addons = reader.ReadStrongItemList(); goto case 3; } case 3: { count = reader.ReadInt(); m_Secures = new List<SecureInfo>(count); for (int i = 0; i < count; ++i) { var info = new SecureInfo(reader); if (info.Item != null) { info.Item.IsSecure = true; m_Secures.Add(info); } } goto case 2; } case 2: { m_Public = reader.ReadBool(); goto case 1; } case 1: { if (version < 13) { reader.ReadPoint3D(); // house ban location } goto case 0; } case 0: { if (version < 14) { m_RelativeBanLocation = BaseBanLocation; } if (version < 12) { m_VendorRentalContracts = new List<Item>(); m_InternalizedVendors = new List<Mobile>(); } if (version < 4) { m_Addons = new List<Item>(); } if (version < 7) { m_Access = new List<Mobile>(); } if (version < 8) { m_Price = DefaultPrice; } m_Owner = reader.ReadMobile(); if (version < 5) { count = reader.ReadInt(); for (int i = 0; i < count; i++) { reader.ReadRect2D(); } } UpdateRegion(); m_CoOwners = reader.ReadStrongMobileList(); m_Friends = reader.ReadStrongMobileList(); m_Bans = reader.ReadStrongMobileList(); m_Sign = reader.ReadItem() as HouseSign; m_Trash = reader.ReadItem() as TrashBarrel; m_Doors = reader.ReadStrongItemList<Item>(); m_LockDowns = reader.ReadStrongItemList(); for (int i = 0; i < m_LockDowns.Count; ++i) { m_LockDowns[i].IsLockedDown = true; } for (int i = 0; i < m_VendorRentalContracts.Count; ++i) { m_VendorRentalContracts[i].IsLockedDown = true; } if (version < 3) { List<Item> items = reader.ReadStrongItemList(); m_Secures = new List<SecureInfo>(items.Count); for (int i = 0; i < items.Count; ++i) { var c = items[i] as Container; if (c != null) { c.IsSecure = true; m_Secures.Add(new SecureInfo(c, SecureLevel.CoOwners)); } } } m_MaxLockDowns = reader.ReadInt(); m_MaxSecures = reader.ReadInt(); if ((Map == null || Map == Map.Internal) && Location == Point3D.Zero) { Delete(); } if (m_Owner != null) { List<BaseHouse> list = null; m_Table.TryGetValue(m_Owner, out list); if (list == null) { m_Table[m_Owner] = list = new List<BaseHouse>(); } list.Add(this); } break; } } if (version <= 1) { ChangeSignType(0xBD2); //private house, plain brass sign } if (version < 10) { /* NOTE: This can exceed the house lockdown limit. It must be this way, because * we do not want players' items to decay without them knowing. Or not even * having a chance to fix it themselves. */ Timer.DelayCall(TimeSpan.Zero, FixLockdowns_Sandbox); } if (version < 11) { m_LastRefreshed = DateTime.UtcNow + TimeSpan.FromHours(24 * Utility.RandomDouble()); } if (DynamicDecay.Enabled && !loadedDynamicDecay) { DecayLevel old = GetOldDecayLevel(); if (old == DecayLevel.DemolitionPending) { old = DecayLevel.Collapsed; } SetDynamicDecay(old); } if (!CheckDecay()) { if (RelocatedEntities.Count > 0) { Timer.DelayCall(TimeSpan.Zero, RestoreRelocatedEntities); } //if ( m_Owner == null && m_Friends.Count == 0 && m_CoOwners.Count == 0 ) // Timer.DelayCall( TimeSpan.FromSeconds( 10.0 ), new TimerCallback( Delete ) ); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); this.m_DamageEntries = new Dictionary<Mobile, int>(); int version = reader.ReadInt(); switch( version ) { case 6: SpawnName = reader.ReadString(); AutoRestart = reader.ReadBool(); SpawnMod = reader.ReadDouble(); SpawnRadius = reader.ReadInt(); goto case 5; case 5: { int entries = reader.ReadInt(); Mobile m; int damage; for (int i = 0; i < entries; ++i) { m = reader.ReadMobile(); damage = reader.ReadInt(); if (m == null) continue; this.m_DamageEntries.Add(m, damage); } goto case 4; } case 4: { this.m_ConfinedRoaming = reader.ReadBool(); this.m_Idol = reader.ReadItem<IdolOfTheChampion>(); this.m_HasBeenAdvanced = reader.ReadBool(); goto case 3; } case 3: { this.m_SpawnArea = reader.ReadRect2D(); goto case 2; } case 2: { this.m_RandomizeType = reader.ReadBool(); goto case 1; } case 1: { if (version < 3) { int oldRange = reader.ReadInt(); this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - oldRange, this.Y - oldRange), new Point2D(this.X + oldRange, this.Y + oldRange)); } this.m_Kills = reader.ReadInt(); goto case 0; } case 0: { if (version < 1) this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - 24, this.Y - 24), new Point2D(this.X + 24, this.Y + 24)); //Default was 24 bool active = reader.ReadBool(); this.m_Type = (ChampionSpawnType)reader.ReadInt(); this.m_Creatures = reader.ReadStrongMobileList(); this.m_RedSkulls = reader.ReadStrongItemList(); this.m_WhiteSkulls = reader.ReadStrongItemList(); this.m_Platform = reader.ReadItem<ChampionPlatform>(); this.m_Altar = reader.ReadItem<ChampionAltar>(); this.m_ExpireDelay = reader.ReadTimeSpan(); this.m_ExpireTime = reader.ReadDeltaTime(); this.m_Champion = reader.ReadMobile(); this.m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { this.m_RestartTime = reader.ReadDeltaTime(); this.BeginRestart(this.m_RestartTime - DateTime.UtcNow); } if (version < 4) { this.m_Idol = new IdolOfTheChampion(this); this.m_Idol.MoveToWorld(new Point3D(this.X, this.Y, this.Z - 15), this.Map); } if (this.m_Platform == null || this.m_Altar == null || this.m_Idol == null) this.Delete(); else if (active) this.Start(); break; } } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion)); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 12: { if (reader.ReadBool()) { RestoreEquip = reader.ReadStrongItemList(); } goto case 11; } case 11: { // Version 11, we move all bools to a CorpseFlag m_Flags = (CorpseFlag)reader.ReadInt(); TimeOfDeath = reader.ReadDeltaTime(); int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (reader.ReadBool()) { SetRestoreInfo(item, reader.ReadPoint3D()); } else if (item != null) { SetRestoreInfo(item, item.Location); } } if (reader.ReadBool()) { BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow); } m_Looters = reader.ReadStrongMobileList(); m_Killer = reader.ReadMobile(); m_Aggressors = reader.ReadStrongMobileList(); m_Owner = reader.ReadMobile(); m_CorpseName = reader.ReadString(); m_AccessLevel = (AccessLevel)reader.ReadInt(); reader.ReadInt(); // guild reserve Kills = reader.ReadInt(); m_EquipItems = reader.ReadStrongItemList(); break; } } if (m_Owner is PlayerMobile) { if (PlayerCorpses == null) { PlayerCorpses = new Dictionary <Corpse, int>(); } PlayerCorpses[this] = 0; } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); //46+ (This should ALWAYS come just after the version!) if (version >= 46) { DeserializeSnapshot(reader); } if (LostStabledPetRecorder.Enabled) { LostStabledPetRecorder.PlayerMobiles.Add(this); } switch (version) { case 51: { HalloweenPaintExpirationOrange = reader.ReadTimeSpan(); if (HalloweenPaintExpirationOrange > TimeSpan.Zero) { BodyMod = (Female ? 184 : 183); HueMod = 1358; } HalloweenPaintExpirationPurple = reader.ReadTimeSpan(); if (HalloweenPaintExpirationPurple > TimeSpan.Zero) { BodyMod = (Female ? 184 : 183); HueMod = 1378; } } goto case 50; case 50: { ZombiePaintExperationBooger = reader.ReadTimeSpan(); if (ZombiePaintExperationBooger > TimeSpan.Zero) { BodyMod = (Female ? 184 : 183); HueMod = 61; } ZombiePaintExperationVesper = reader.ReadTimeSpan(); if (ZombiePaintExperationVesper > TimeSpan.Zero) { BodyMod = (Female ? 184 : 183); HueMod = 1159; } } goto case 49; case 49: { BattlePaintExpirationShadow = reader.ReadTimeSpan(); if (BattlePaintExpirationShadow > TimeSpan.Zero) { BodyMod = (Female ? 184 : 183); HueMod = 1175; } BattlePaintExpirationRed = reader.ReadTimeSpan(); if (BattlePaintExpirationRed > TimeSpan.Zero) { BodyMod = (Female ? 184 : 183); HueMod = 1157; } } goto case 48; case 48: { NewbieQuestCompleted = reader.ReadBool(); } goto case 47; case 47: { if (reader.ReadBool()) { BodyValue = Race.Body(this); } } goto case 46; case 46: case 45: { EventMsgFlag = reader.ReadBool(); EventPoints = reader.ReadInt(); } goto case 44; case 44: { int titleCount = reader.ReadInt(); if (titleCount > 0) { _ValorTitles = new List<string>(); for (int i = 0; i < titleCount; i++) { string title = reader.ReadString(); _ValorTitles.Add(title); } } } goto case 43; case 43: { Lastkilled = reader.ReadDateTime(); goto case 42; } case 42: _ValorRating = reader.ReadInt(); goto case 41; case 41: ValorQuests = reader.ReadInt(); goto case 40; case 40: ValorTitle = reader.ReadString(); goto case 39; case 39: ValorRank = reader.ReadInt(); goto case 38; case 38: MurderersKilled = reader.ReadInt(); goto case 37; case 37: ValorPoints = reader.ReadInt(); goto case 36; case 36: LongTermLastDecayGameTime = reader.ReadTimeSpan(); goto case 35; case 35: Companion = reader.ReadBool(); goto case 34; case 34: { // don't check stat loss decay here, just on login GameParticipant = reader.ReadBool(); } goto case 33; case 33: { // don't check stat loss decay here, just on login StatEnd = reader.ReadDateTime(); } goto case 32; case 32: reader.ReadInt(); //m_InStat = reader.ReadInt(); // TODO: Remove goto case 31; case 31: KMUsed = reader.ReadInt(); goto case 30; case 30: MurderBounty = reader.ReadInt(); goto case 29; case 29: { int skillgaincount = reader.ReadEncodedInt(); for (int i = 0; i < skillgaincount; i++) { SkillGainMods.Add(new SkillGainMod(this, reader)); } goto case 28; } case 28: PeacedUntil = reader.ReadDateTime(); goto case 27; case 27: AnkhNextUse = reader.ReadDateTime(); goto case 26; case 26: { AutoStabled = reader.ReadStrongMobileList(); CustomFlags = (CustomPlayerFlag)reader.ReadEncodedInt(); if (GetCustomFlag(CustomPlayerFlag.VisibilityList)) { int length = reader.ReadInt(); for (int i = 0; i < length; i++) { VisibilityList.Add(reader.ReadMobile()); } } if (GetCustomFlag(CustomPlayerFlag.StaffLevel)) { AccessLevelToggler.m_Mobiles.Add(this, new AccessLevelMod((AccessLevel)reader.ReadInt())); } if (GetCustomFlag(CustomPlayerFlag.StaffRank)) { m_StaffRank = (StaffRank)reader.ReadInt(); } if (GetCustomFlag(CustomPlayerFlag.DisplayStaffRank)) { m_StaffTitle = reader.ReadString(); } } goto case 25; case 25: { int recipeCount = reader.ReadInt(); if (recipeCount > 0) { m_AcquiredRecipes = new Dictionary<int, bool>(); for (int i = 0; i < recipeCount; i++) { int r = reader.ReadInt(); //Don't add in recipies which we haven't gotten or have been removed if (reader.ReadBool()) { m_AcquiredRecipes.Add(r, true); } } } } goto case 24; case 24: reader.ReadDeltaTime(); //m_LastHonorLoss = reader.ReadDeltaTime(); // TODO: Remove goto case 23; case 23: ChampionTitles = new ChampionTitleInfo(reader); goto case 22; case 22: reader.ReadDateTime(); //m_LastValorLoss = reader.ReadDateTime(); // TODO: Remove goto case 21; case 21: { ToTItemsTurnedIn = reader.ReadEncodedInt(); ToTTotalMonsterFame = reader.ReadInt(); } goto case 20; case 20: { AllianceMessageHue = reader.ReadEncodedInt(); GuildMessageHue = reader.ReadEncodedInt(); } goto case 19; case 19: { int rank = reader.ReadEncodedInt(); int maxRank = RankDefinition.Ranks.Length - 1; if (rank > maxRank) { rank = maxRank; } m_GuildRank = RankDefinition.Ranks[rank]; LastOnline = reader.ReadDateTime(); } goto case 18; case 18: SolenFriendship = (SolenFriendship)reader.ReadEncodedInt(); goto case 17; case 17: // changed how DoneQuests is serialized case 16: { Quest = QuestSerializer.DeserializeQuest(reader); if (Quest != null) { Quest.From = this; } int count = reader.ReadEncodedInt(); DoneQuests = new List<QuestRestartInfo>(count); if (count > 0) { for (int i = 0; i < count; ++i) { Type questType = QuestSerializer.ReadType(QuestSystem.QuestTypes, reader); DateTime restartTime = version < 17 ? DateTime.MaxValue : reader.ReadDateTime(); DoneQuests.Add(new QuestRestartInfo(questType, restartTime)); } } Profession = reader.ReadEncodedInt(); } goto case 15; case 15: reader.ReadDeltaTime(); //m_LastCompassionLoss = reader.ReadDeltaTime(); // TODO: Remove goto case 14; case 14: { // TODO: Remove if (reader.ReadEncodedInt() > 0) { reader.ReadDeltaTime(); //m_NextCompassionDay = reader.ReadDeltaTime(); } } goto case 13; case 13: // removed PaidInsurance list case 12: BOBFilter = new BOBFilter(reader); goto case 11; case 11: { if (version < 13) { List<Item> paid = reader.ReadStrongItemList(); foreach (Item i in paid) { i.PaidInsurance = true; } } } goto case 10; case 10: { if (reader.ReadBool()) { m_HairModID = reader.ReadInt(); m_HairModHue = reader.ReadInt(); m_BeardModID = reader.ReadInt(); m_BeardModHue = reader.ReadInt(); } } goto case 9; case 9: { SavagePaintExpiration = reader.ReadTimeSpan(); if (SavagePaintExpiration > TimeSpan.Zero) { BodyMod = (Female ? 184 : 183); HueMod = 0; } } goto case 8; case 8: { NpcGuild = (NpcGuild)reader.ReadInt(); NpcGuildJoinTime = reader.ReadDateTime(); NpcGuildGameTime = reader.ReadTimeSpan(); } goto case 7; case 7: m_PermaFlags = reader.ReadStrongMobileList(); goto case 6; case 6: NextTailorBulkOrder = reader.ReadTimeSpan(); goto case 5; case 5: NextSmithBulkOrder = reader.ReadTimeSpan(); goto case 4; case 4: case 3: case 2: Flags = (PlayerFlag)reader.ReadInt(); goto case 1; case 1: { m_ShortTermElapse = reader.ReadDateTime(); m_GameTime = reader.ReadTimeSpan(); } goto case 0; case 0: break; } if (RecentlyReported == null) { RecentlyReported = new List<Mobile>(); } // Professions weren't verified on 1.0 RC0 if (!CharacterCreation.VerifyProfession(Profession, Expansion)) { Profession = 0; } if (m_PermaFlags == null) { m_PermaFlags = new List<Mobile>(); } if (BOBFilter == null) { BOBFilter = new BOBFilter(); } if (m_GuildRank == null) { //Default to member if going from older version to new version (only time it should be null) m_GuildRank = RankDefinition.Member; } if (LastOnline == DateTime.MinValue && Account != null) { LastOnline = ((Account)Account).LastLogin; } if (ChampionTitles == null) { ChampionTitles = new ChampionTitleInfo(); } if (AccessLevel > AccessLevel.Player) { IgnoreMobiles = true; } List<Mobile> list = Stabled; foreach (BaseCreature bc in list.OfType<BaseCreature>()) { bc.IsStabled = true; //Charge date set in BaseCreature } CheckAtrophies(this); if (Hidden) //Hiding is the only buff where it has an effect that's serialized. { AddBuff(new BuffInfo(BuffIcon.HidingAndOrStealth, 1075655)); } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 1: { m_RegionBounds = reader.ReadRect2D(); m_Traps = reader.ReadStrongItemList<BaseTrap>(); goto case 0; } case 0: { if ( version < 1 ) { m_Traps = new List<BaseTrap>(); m_RegionBounds = new Rectangle2D( X - 40, Y - 40, 80, 80 ); } m_Creatures = reader.ReadStrongMobileList(); m_TypeName = reader.ReadString(); m_Door = reader.ReadItem<BaseDoor>(); ; m_Addon = reader.ReadItem<BaseAddon>(); ; m_Sequence = reader.ReadItem<GauntletSpawner>(); State = (GauntletSpawnerState)reader.ReadInt(); break; } } }
public override void Deserialize(GenericReader reader) { int version = reader.ReadInt(); switch (version) { case 7: case 6: case 5: { int count = reader.ReadInt(); PendingWars = new List <WarDeclaration>(); for (int i = 0; i < count; i++) { PendingWars.Add(new WarDeclaration(reader)); } count = reader.ReadInt(); AcceptedWars = new List <WarDeclaration>(); for (int i = 0; i < count; i++) { AcceptedWars.Add(new WarDeclaration(reader)); } bool isAllianceLeader = reader.ReadBool(); if (isAllianceLeader) { m_AllianceInfo = new AllianceInfo(reader); } else { m_AllianceLeader = reader.ReadGuild() as Guild; } goto case 4; } case 4: { AllyDeclarations = reader.ReadStrongGuildList <Guild>(); AllyInvitations = reader.ReadStrongGuildList <Guild>(); goto case 3; } case 3: { m_TypeLastChange = reader.ReadDateTime(); goto case 2; } case 2: { if (version < 6) { reader.ReadInt(); } goto case 1; } case 1: { LastFealty = reader.ReadDateTime(); goto case 0; } case 0: { m_Leader = reader.ReadMobile(); if (m_Leader is PlayerMobile) { ((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader; } m_Name = reader.ReadString(); m_Abbreviation = reader.ReadString(); Allies = reader.ReadStrongGuildList <Guild>(); Enemies = reader.ReadStrongGuildList <Guild>(); WarDeclarations = reader.ReadStrongGuildList <Guild>(); WarInvitations = reader.ReadStrongGuildList <Guild>(); Members = reader.ReadStrongMobileList(); Candidates = reader.ReadStrongMobileList(); Accepted = reader.ReadStrongMobileList(); if (version < 7) { reader.ReadItem(); reader.ReadItem(); } Charter = reader.ReadString(); Website = reader.ReadString(); break; } } if (AllyDeclarations == null) { AllyDeclarations = new List <Guild>(); } if (AllyInvitations == null) { AllyInvitations = new List <Guild>(); } if (AcceptedWars == null) { AcceptedWars = new List <WarDeclaration>(); } if (PendingWars == null) { PendingWars = new List <WarDeclaration>(); } Timer.DelayCall(TimeSpan.Zero, VerifyGuild_Callback); }
public override void Deserialize( GenericReader reader ) { base.Deserialize(reader); int version = reader.ReadInt(); switch( version ) { case 2: { alignment = (Alignment)reader.ReadInt(); goto case 1; } case 1: { TimeSpan deleteTime = TimeSpan.Zero; if( version >= 1 ) deleteTime = reader.ReadTimeSpan(); if( deleteTime > TimeSpan.Zero || LastOwner != null && !Controlled && !IsStabled ) { if( deleteTime <= TimeSpan.Zero || deleteTime > TimeSpan.FromDays(3.0) ) deleteTime = TimeSpan.FromDays(3.0); m_DeleteTimer = new DeleteTimer(this, deleteTime); m_DeleteTimer.Start(); } goto case 0; } case 0: { m_CurrentAI = (AIType)reader.ReadInt(); m_DefaultAI = (AIType)reader.ReadInt(); m_iRangePerception = reader.ReadInt(); m_iRangeFight = reader.ReadInt(); m_iRangeHome = reader.ReadInt(); m_iTeam = reader.ReadInt(); m_dActiveSpeed = reader.ReadDouble(); m_dPassiveSpeed = reader.ReadDouble(); m_dCurrentSpeed = reader.ReadDouble(); if( m_iRangePerception == OldRangePerception ) m_iRangePerception = DefaultRangePerception; m_pHome.X = reader.ReadInt(); m_pHome.Y = reader.ReadInt(); m_pHome.Z = reader.ReadInt(); int i, iCount; iCount = reader.ReadInt(); for( i = 0; i < iCount; i++ ) { string str = reader.ReadString(); Type type = Type.GetType(str); if( type != null ) { m_arSpellAttack.Add(type); } } iCount = reader.ReadInt(); for( i = 0; i < iCount; i++ ) { string str = reader.ReadString(); Type type = Type.GetType(str); if( type != null ) { m_arSpellDefense.Add(type); } } m_FightMode = (FightMode)reader.ReadInt(); m_bControlled = reader.ReadBool(); m_ControlMaster = reader.ReadMobile(); m_ControlTarget = reader.ReadMobile(); m_ControlDest = reader.ReadPoint3D(); m_ControlOrder = (OrderType)reader.ReadInt(); m_dMinTameSkill = reader.ReadDouble(); m_bTamable = reader.ReadBool(); m_bSummoned = reader.ReadBool(); if( m_bSummoned ) { m_SummonEnd = reader.ReadDeltaTime(); new UnsummonTimer(m_ControlMaster, this, m_SummonEnd - DateTime.Now).Start(); } m_iControlSlots = reader.ReadInt(); m_Loyalty = reader.ReadInt(); m_CurrentWayPoint = reader.ReadItem() as WayPoint; m_SummonMaster = reader.ReadMobile(); m_HitsMax = reader.ReadInt(); m_StamMax = reader.ReadInt(); m_ManaMax = reader.ReadInt(); m_DamageMin = reader.ReadInt(); m_DamageMax = reader.ReadInt(); m_PhysicalResistance = reader.ReadInt(); m_PhysicalDamage = reader.ReadInt(); m_FireResistance = reader.ReadInt(); m_FireDamage = reader.ReadInt(); m_ColdResistance = reader.ReadInt(); m_ColdDamage = reader.ReadInt(); m_PoisonResistance = reader.ReadInt(); m_PoisonDamage = reader.ReadInt(); m_EnergyResistance = reader.ReadInt(); m_EnergyDamage = reader.ReadInt(); m_Owners = reader.ReadStrongMobileList(); m_IsDeadPet = reader.ReadBool(); m_IsBonded = reader.ReadBool(); m_BondingBegin = reader.ReadDateTime(); m_OwnerAbandonTime = reader.ReadDateTime(); m_HasGeneratedLoot = reader.ReadBool(); bool hasFriends = reader.ReadBool(); if( hasFriends ) m_Friends = reader.ReadStrongMobileList(); else m_Friends = new List<Mobile>(); m_RemoveIfUntamed = reader.ReadBool(); m_RemoveStep = reader.ReadInt(); _spawner = reader.ReadItem(); _spawnerHome = reader.ReadPoint3D(); break; } } double activeSpeed = m_dActiveSpeed; double passiveSpeed = m_dPassiveSpeed; SpeedInfo.GetSpeeds(this, ref activeSpeed, ref passiveSpeed); bool isStandardActive = false; for( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i ) isStandardActive = (m_dActiveSpeed == m_StandardActiveSpeeds[i]); bool isStandardPassive = false; for( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i ) isStandardPassive = (m_dPassiveSpeed == m_StandardPassiveSpeeds[i]); if( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed ) m_dCurrentSpeed = activeSpeed; else if( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed ) m_dCurrentSpeed = passiveSpeed; if( isStandardActive ) m_dActiveSpeed = activeSpeed; if( isStandardPassive ) m_dPassiveSpeed = passiveSpeed; if( Core.AOS && NameHue == 0x35 ) NameHue = -1; CheckStatTimers(); ChangeAIType(m_CurrentAI); AddFollowers(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); m_DamageEntries = new Dictionary <Mobile, int>(); int version = reader.ReadInt(); switch (version) { case 7: { this.m_ExpireDelay = reader.ReadTimeSpan(); this.m_ExpireTime = reader.ReadDeltaTime(); goto case 6; } case 6: { this.m_Champion2 = reader.ReadMobile(); goto case 5; } case 5: { int entries = reader.ReadInt(); Mobile m; int damage; for (int i = 0; i < entries; ++i) { m = reader.ReadMobile(); damage = reader.ReadInt(); if (m == null) { continue; } this.m_DamageEntries.Add(m, damage); } goto case 4; } case 4: { this.m_ConfinedRoaming = reader.ReadBool(); this.m_HasBeenAdvanced = reader.ReadBool(); goto case 3; } case 3: { this.m_SpawnArea = reader.ReadRect2D(); goto case 2; } case 2: { this.m_RandomizeType = reader.ReadBool(); goto case 1; } case 1: { this.m_Kills = reader.ReadInt(); Spwnd = reader.ReadInt(); goto case 0; } case 0: { bool active = reader.ReadBool(); this.m_Type = (MiniChampType)reader.ReadInt(); this.m_Creatures = reader.ReadStrongMobileList(); this.m_Champion = reader.ReadMobile(); this.m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { this.m_RestartTime = reader.ReadDeltaTime(); BeginRestart(this.m_RestartTime - DateTime.Now); } if (active) { this.Start(); } break; } } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion)); }
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) { int version = reader.ReadInt(); switch (version) { case 5: { int count = reader.ReadInt(); m_PendingWars = new List<WarDeclaration>(); for (int i = 0; i < count; i++) { m_PendingWars.Add(new WarDeclaration(reader)); } count = reader.ReadInt(); m_AcceptedWars = new List<WarDeclaration>(); for (int i = 0; i < count; i++) { m_AcceptedWars.Add(new WarDeclaration(reader)); } bool isAllianceLeader = reader.ReadBool(); if (isAllianceLeader) { m_AllianceInfo = new AllianceInfo(reader); } else { m_AllianceLeader = reader.ReadGuild() as Guild; } goto case 4; } case 4: { m_AllyDeclarations = reader.ReadStrongGuildList<Guild>(); m_AllyInvitations = reader.ReadStrongGuildList<Guild>(); goto case 3; } case 3: { m_TypeLastChange = reader.ReadDateTime(); goto case 2; } case 2: { m_Type = (GuildType)reader.ReadInt(); goto case 1; } case 1: { m_LastFealty = reader.ReadDateTime(); goto case 0; } case 0: { m_Leader = reader.ReadMobile(); if (m_Leader is PlayerMobile) { ((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader; } m_Name = reader.ReadString(); m_Abbreviation = reader.ReadString(); m_Allies = reader.ReadStrongGuildList<Guild>(); m_Enemies = reader.ReadStrongGuildList<Guild>(); m_WarDeclarations = reader.ReadStrongGuildList<Guild>(); m_WarInvitations = reader.ReadStrongGuildList<Guild>(); m_Members = reader.ReadStrongMobileList(); m_Candidates = reader.ReadStrongMobileList(); m_Accepted = reader.ReadStrongMobileList(); m_Guildstone = reader.ReadItem(); m_Teleporter = reader.ReadItem(); m_Charter = reader.ReadString(); m_Website = reader.ReadString(); break; } } if (m_AllyDeclarations == null) { m_AllyDeclarations = new List<Guild>(); } if (m_AllyInvitations == null) { m_AllyInvitations = new List<Guild>(); } if (m_AcceptedWars == null) { m_AcceptedWars = new List<WarDeclaration>(); } if (m_PendingWars == null) { m_PendingWars = new List<WarDeclaration>(); } /* if ( ( !NewGuildSystem && m_Guildstone == null )|| m_Members.Count == 0 ) Disband(); */ Timer.DelayCall(TimeSpan.Zero, VerifyGuild_Callback); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); m_DamageEntries = new Dictionary <Mobile, int>(); int version = reader.ReadInt(); switch (version) { case 5: { int entries = reader.ReadInt(); Mobile m; int damage; for (int i = 0; i < entries; ++i) { m = reader.ReadMobile(); damage = reader.ReadInt(); if (m == null) { continue; } m_DamageEntries.Add(m, damage); } goto case 4; } case 4: { m_ConfinedRoaming = reader.ReadBool(); m_HasBeenAdvanced = reader.ReadBool(); goto case 3; } case 3: { m_SpawnArea = reader.ReadRect2D(); goto case 2; } case 2: { m_RandomizeType = reader.ReadBool(); goto case 1; } case 1: { if (version < 3) { int oldRange = reader.ReadInt(); m_SpawnArea = new Rectangle2D(new Point2D(X - oldRange, Y - oldRange), new Point2D(X + oldRange, Y + oldRange)); } m_Kills = reader.ReadInt(); goto case 0; } case 0: { if (version < 1) { m_SpawnArea = new Rectangle2D(new Point2D(X - 18, Y - 18), new Point2D(X + 18, Y + 18)); //Default was 24 } bool active = reader.ReadBool(); m_Type = (MiniChampType)reader.ReadInt(); m_Creatures = reader.ReadStrongMobileList(); m_RedSkulls = reader.ReadStrongItemList(); m_WhiteSkulls = reader.ReadStrongItemList(); m_MiniPlatform = reader.ReadItem <MiniChampPlatform>(); m_MiniAltar = reader.ReadItem <MiniChampAltar>(); m_ExpireDelay = reader.ReadTimeSpan(); m_ExpireTime = reader.ReadDeltaTime(); m_MiniChamp = reader.ReadMobile(); m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { m_RestartTime = reader.ReadDeltaTime(); BeginRestart(m_RestartTime - DateTime.Now); } if (m_MiniPlatform == null || m_MiniAltar == null) { Delete(); } else if (active) { Start(); } break; } } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion)); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 3: { m_IDList = reader.ReadStrongMobileList(); goto case 2; } case 2: { m_Resource = (CraftResource)reader.ReadEncodedInt(); m_GemType = (GemType)reader.ReadEncodedInt(); m_Identified = reader.ReadBool(); m_Charges = reader.ReadInt(); m_JewelEffect = (JewelEffect)reader.ReadEncodedInt(); goto case 1; } case 1: { m_AosAttributes = new AosAttributes( this, reader ); m_AosResistances = new AosElementAttributes( this, reader ); m_AosSkillBonuses = new AosSkillBonuses( this, reader ); if ( Core.AOS && Parent is Mobile ) m_AosSkillBonuses.AddTo( (Mobile)Parent ); int strBonus = m_AosAttributes.BonusStr; int dexBonus = m_AosAttributes.BonusDex; int intBonus = m_AosAttributes.BonusInt; if ( Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0) ) { Mobile m = (Mobile)Parent; string modName = Serial.ToString(); if ( strBonus != 0 ) m.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) ); if ( dexBonus != 0 ) m.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) ); if ( intBonus != 0 ) m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) ); } if ( Parent is Mobile ) ((Mobile)Parent).CheckStatTimers(); break; } case 0: { m_AosAttributes = new AosAttributes( this ); m_AosResistances = new AosElementAttributes( this ); m_AosSkillBonuses = new AosSkillBonuses( this ); break; } } if ( version < 2 ) { m_Resource = CraftResource.Iron; m_GemType = GemType.None; } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadEncodedInt(); m_Topic = new string[reader.ReadEncodedInt()]; for ( int i = 0; i < m_Topic.Length; i++ ) m_Topic[i] = reader.ReadString(); m_Yes = reader.ReadStrongMobileList(); m_No = reader.ReadStrongMobileList(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 5: { Owner = reader.ReadMobile(); goto case 4; } case 4: case 3: if (version < 5) { reader.ReadBool(); } goto case 2; case 2: case 1: if (reader.ReadBool()) { m_Helpers = reader.ReadStrongMobileList <BaseCreature>(); } goto case 0; case 0: Peerless = reader.ReadMobile() as BasePeerless; BossLocation = reader.ReadPoint3D(); TeleportDest = reader.ReadPoint3D(); ExitDest = reader.ReadPoint3D(); Deadline = reader.ReadDateTime(); MasterKeys = reader.ReadStrongItemList(); Fighters = reader.ReadStrongMobileList(); if (version < 4) { int count = reader.ReadInt(); for (int i = 0; i < count; i++) { reader.ReadMobile(); reader.ReadStrongMobileList(); } } if (version < 2) { reader.ReadBool(); } if (Peerless == null && m_Helpers.Count > 0) { Timer.DelayCall(TimeSpan.FromSeconds(30), CleanupHelpers); } break; } if (Owner != null && Peerless == null) { FinishSequence(); } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 28: { m_PeacedUntil = reader.ReadDateTime(); goto case 27; } case 27: { m_AnkhNextUse = reader.ReadDateTime(); goto case 26; } case 26: { m_AutoStabled = reader.ReadStrongMobileList(); goto case 25; } case 25: { int recipeCount = reader.ReadInt(); if( recipeCount > 0 ) { m_AcquiredRecipes = new Dictionary<int, bool>(); for( int i = 0; i < recipeCount; i++ ) { int r = reader.ReadInt(); if( reader.ReadBool() ) //Don't add in recipies which we haven't gotten or have been removed m_AcquiredRecipes.Add( r, true ); } } goto case 24; } case 24: { m_LastHonorLoss = reader.ReadDeltaTime(); goto case 23; } case 23: { m_ChampionTitles = new ChampionTitleInfo( reader ); goto case 22; } case 22: { m_LastValorLoss = reader.ReadDateTime(); goto case 21; } case 21: { m_ToTItemsTurnedIn = reader.ReadEncodedInt(); m_ToTTotalMonsterFame = reader.ReadInt(); goto case 20; } case 20: { m_AllianceMessageHue = reader.ReadEncodedInt(); m_GuildMessageHue = reader.ReadEncodedInt(); goto case 19; } case 19: { int rank = reader.ReadEncodedInt(); int maxRank = Guilds.RankDefinition.Ranks.Length -1; if( rank > maxRank ) rank = maxRank; m_GuildRank = Guilds.RankDefinition.Ranks[rank]; m_LastOnline = reader.ReadDateTime(); goto case 18; } case 18: { m_SolenFriendship = (SolenFriendship) reader.ReadEncodedInt(); goto case 17; } case 17: // changed how DoneQuests is serialized case 16: { m_Quest = QuestSerializer.DeserializeQuest( reader ); if ( m_Quest != null ) m_Quest.From = this; int count = reader.ReadEncodedInt(); if ( count > 0 ) { m_DoneQuests = new List<QuestRestartInfo>(); for ( int i = 0; i < count; ++i ) { Type questType = QuestSerializer.ReadType( QuestSystem.QuestTypes, reader ); DateTime restartTime; if ( version < 17 ) restartTime = DateTime.MaxValue; else restartTime = reader.ReadDateTime(); m_DoneQuests.Add( new QuestRestartInfo( questType, restartTime ) ); } } m_Profession = reader.ReadEncodedInt(); goto case 15; } case 15: { m_LastCompassionLoss = reader.ReadDeltaTime(); goto case 14; } case 14: { m_CompassionGains = reader.ReadEncodedInt(); if ( m_CompassionGains > 0 ) m_NextCompassionDay = reader.ReadDeltaTime(); goto case 13; } case 13: // just removed m_PayedInsurance list case 12: { m_BOBFilter = new Engines.BulkOrders.BOBFilter( reader ); goto case 11; } case 11: { if ( version < 13 ) { List<Item> payed = reader.ReadStrongItemList(); for ( int i = 0; i < payed.Count; ++i ) payed[i].PayedInsurance = true; } goto case 10; } case 10: { if ( reader.ReadBool() ) { m_HairModID = reader.ReadInt(); m_HairModHue = reader.ReadInt(); m_BeardModID = reader.ReadInt(); m_BeardModHue = reader.ReadInt(); } goto case 9; } case 9: { SavagePaintExpiration = reader.ReadTimeSpan(); if ( SavagePaintExpiration > TimeSpan.Zero ) { BodyMod = ( Female ? 184 : 183 ); HueMod = 0; } goto case 8; } case 8: { m_NpcGuild = (NpcGuild)reader.ReadInt(); m_NpcGuildJoinTime = reader.ReadDateTime(); m_NpcGuildGameTime = reader.ReadTimeSpan(); goto case 7; } case 7: { m_PermaFlags = reader.ReadStrongMobileList(); goto case 6; } case 6: { NextTailorBulkOrder = reader.ReadTimeSpan(); goto case 5; } case 5: { NextSmithBulkOrder = reader.ReadTimeSpan(); goto case 4; } case 4: { m_LastJusticeLoss = reader.ReadDeltaTime(); m_JusticeProtectors = reader.ReadStrongMobileList(); goto case 3; } case 3: { m_LastSacrificeGain = reader.ReadDeltaTime(); m_LastSacrificeLoss = reader.ReadDeltaTime(); m_AvailableResurrects = reader.ReadInt(); goto case 2; } case 2: { m_Flags = (PlayerFlag)reader.ReadInt(); goto case 1; } case 1: { m_LongTermElapse = reader.ReadTimeSpan(); m_ShortTermElapse = reader.ReadTimeSpan(); m_GameTime = reader.ReadTimeSpan(); goto case 0; } case 0: { if( version < 26 ) m_AutoStabled = new List<Mobile>(); break; } } if (m_RecentlyReported == null) m_RecentlyReported = new List<Mobile>(); // Professions weren't verified on 1.0 RC0 if ( !CharacterCreation.VerifyProfession( m_Profession ) ) m_Profession = 0; if ( m_PermaFlags == null ) m_PermaFlags = new List<Mobile>(); if ( m_JusticeProtectors == null ) m_JusticeProtectors = new List<Mobile>(); if ( m_BOBFilter == null ) m_BOBFilter = new Engines.BulkOrders.BOBFilter(); if( m_GuildRank == null ) m_GuildRank = Guilds.RankDefinition.Member; //Default to member if going from older verstion to new version (only time it should be null) if( m_LastOnline == DateTime.MinValue && Account != null ) m_LastOnline = ((Account)Account).LastLogin; if( m_ChampionTitles == null ) m_ChampionTitles = new ChampionTitleInfo(); if ( AccessLevel > AccessLevel.Player ) m_IgnoreMobiles = true; List<Mobile> list = this.Stabled; for ( int i = 0; i < list.Count; ++i ) { BaseCreature bc = list[i] as BaseCreature; if ( bc != null ) bc.IsStabled = true; } CheckAtrophies( this ); if( Hidden ) //Hiding is the only buff where it has an effect that's serialized. AddBuff( new BuffInfo( BuffIcon.HidingAndOrStealth, 1075655 ) ); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 5: { m_BeginGame = reader.ReadBool(); } goto case 4; case 4: { int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { PlayerMobile player = reader.ReadMobile() as PlayerMobile; EquipmentStorage storage = reader.ReadItem() as EquipmentStorage; m_PlayerSupplies.Add(player, storage); } goto case 3; } case 3: { m_UseGump = reader.ReadBool(); m_GameName = reader.ReadString(); m_EventType = (EventType)reader.ReadInt(); int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { m_PlayerScores.Add(reader.ReadMobile(), reader.ReadInt()); } goto case 2; } case 2: { Open = reader.ReadBool(); m_GiveSupplies = reader.ReadBool(); m_Supplier = reader.ReadItem() as EventSupplier; goto case 1; } case 1: { m_Players = reader.ReadStrongMobileList(); m_GameMaster = reader.ReadMobile(); m_MsgStaff = reader.ReadBool(); m_Running = reader.ReadBool(); m_StartTime = reader.ReadDateTime(); m_Length = reader.ReadTimeSpan(); m_MaxScore = reader.ReadInt(); m_Lobby = reader.ReadPoint3D(); m_LobbyMap = reader.ReadMap(); break; } } }