public CrateRectangle(GenericReader reader) { int version = reader.ReadInt(); Rectangle = reader.ReadRect2D(); FirstDirection = (Direction)reader.ReadInt(); SecondDirection = (Direction)reader.ReadInt(); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); if( version >= 1 ) { m_Owner = reader.ReadMobile(); m_Tent = reader.ReadItem() as TentAddon; m_Bedroll = reader.ReadItem() as TentBedroll; m_Chest = reader.ReadItem() as SecureTentChest; m_Bounds = reader.ReadRect2D(); if( m_Owner != null && m_Chest != null && m_Tent != null ) m_Region = new TravelTentRegion( m_Owner, m_Chest, m_Tent.Map, m_Bounds, 16 ); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 2: { m_GameItems = reader.ReadStrongItemList(); m_WinnerLocation = reader.ReadPoint3D(); goto case 1; } case 1: { m_GameArea = reader.ReadRect2D(); break; } } }
public void Deserialize(GenericReader reader) { reader.ReadByte(); Level = reader.ReadInt(); Decoder = reader.ReadMobile(); Map = reader.ReadMap(); Location = reader.ReadPoint2D(); Bounds = reader.ReadRect2D(); }
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) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 14: { //version 14 m_Coords = ReadRect3DArray(reader); m_InnBounds = ReadRect3DArray(reader); goto case 13; } case 13: { m_TargetMap = reader.ReadMap(); m_GoLocation = reader.ReadPoint3D(); m_MinZ = reader.ReadInt(); m_MaxZ = reader.ReadInt(); goto case 12; } case 12: { m_Enabled = reader.ReadBool(); goto case 11; } case 11: { int size = reader.ReadInt(); m_Types = new ArrayList(size); for (int i = 0; i < size; ++i) { string typeName = reader.ReadString(); m_Types.Add(typeName); } goto case 10; } case 10: { m_MaxFollowers = reader.ReadInt(); goto case 9; } case 9: { m_RestrictedMagicMsg = reader.ReadString(); goto case 8; } case 8: { m_Music = (MusicName)reader.ReadInt(); goto case 7; } case 7: { if (m_InnBounds == null) { m_InnBounds = ReadRect2DArray(reader); } else { m_InnBounds.AddRange(ReadRect2DArray(reader)); } m_InnLogoutDelay = reader.ReadTimeSpan(); goto case 6; } case 6: { m_PlayerLogoutDelay = reader.ReadTimeSpan(); goto case 5; } case 5: { if (version < 13) { // converted to a flag bool m_IsDungeon = (bool)reader.ReadBool(); IsDungeon = m_IsDungeon; } goto case 4; } case 4: { m_IOBAlignment = (IOBAlignment)reader.ReadInt(); goto case 3; } case 3: { m_LightLevel = reader.ReadInt(); goto case 2; } case 2: { goto case 1; } case 1: { if (Coords == null) { Coords = ReadRect2DArray(reader); } else { Coords.AddRange(ReadRect2DArray(reader)); } m_Priority = (CustomRegionPriority)reader.ReadInt(); m_RestrictedSpells = ReadBitArray(reader); m_RestrictedSkills = ReadBitArray(reader); m_Flags = (RegionFlag)reader.ReadInt(); m_RegionName = reader.ReadString(); break; } case 0: { Coords = new ArrayList(); Coords.Add(reader.ReadRect2D()); m_RestrictedSpells = ReadBitArray(reader); m_RestrictedSkills = ReadBitArray(reader); m_Flags = (RegionFlag)reader.ReadInt(); m_RegionName = reader.ReadString(); break; } } if (version < 12) { m_Enabled = true; } if (version < 11) { m_Types = new ArrayList(); } if (version < 8) { m_Music = MusicName.Invalid; } // fixup this table if Skills have been added or removed. if (SkillInfo.Table.Length != m_RestrictedSkills.Count) { BitArray temp = new BitArray(SkillInfo.Table.Length); int MaxIterations = Math.Min(temp.Length, m_RestrictedSkills.Count); for (int ix = 0; ix < MaxIterations; ix++) { temp[ix] = m_RestrictedSkills[ix]; } m_RestrictedSkills = temp; } // fixup this table if Spells have been added or removed. if (SpellRegistry.Types.Length != m_RestrictedSpells.Count) { BitArray temp = new BitArray(SpellRegistry.Types.Length); int MaxIterations = Math.Min(temp.Length, m_RestrictedSpells.Count); for (int ix = 0; ix < MaxIterations; ix++) { temp[ix] = m_RestrictedSpells[ix]; } m_RestrictedSkills = temp; } UpdateRegion(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 6: { m_MobilesSeekHome = reader.ReadBool(); m_UsesSpawnerHome = reader.ReadBool(); goto case 5; } case 5: { m_SpawnArea = reader.ReadRect2D(); m_UsesSpawnerHome = reader.ReadBool(); goto case 4; } case 4: { m_WalkingRange = reader.ReadInt(); goto case 3; } case 3: case 2: { m_WayPoint = reader.ReadItem() as WayPoint; goto case 1; } case 1: { m_Group = reader.ReadBool(); goto case 0; } case 0: { m_MinDelay = reader.ReadTimeSpan(); m_MaxDelay = reader.ReadTimeSpan(); m_Count = reader.ReadInt(); m_Team = reader.ReadInt(); m_HomeRange = reader.ReadInt(); m_Running = reader.ReadBool(); TimeSpan ts = TimeSpan.Zero; if (m_Running) ts = reader.ReadDeltaTime() - DateTime.Now; int size = reader.ReadInt(); m_SpawnNames = new List<string>(size); for (int i = 0; i < size; ++i) { string creatureString = reader.ReadString(); m_SpawnNames.Add(creatureString); string typeName = ParseType(creatureString); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add(Location, Map, typeName); } } int count = reader.ReadInt(); m_Spawned = new List<ISpawnable>(count); for (int i = 0; i < count; ++i) { ISpawnable e = World.FindEntity(reader.ReadInt()) as ISpawnable; if (e != null) { e.Spawner = this; m_Spawned.Add(e); } } if (m_Running) { RemoveSpawned(); m_Running = false; } break; } } if (version < 3 && Weight == 0) Weight = -1; }
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 3: { m_State = (HouseRaffleState)reader.ReadEncodedInt(); goto case 2; } case 2: { m_ExpireAction = (HouseRaffleExpireAction)reader.ReadEncodedInt(); goto case 1; } case 1: { m_Deed = reader.ReadItem <HouseRaffleDeed>(); goto case 0; } case 0: { bool oldActive = (version < 3) ? reader.ReadBool() : false; m_Bounds = reader.ReadRect2D(); m_Facet = reader.ReadMap(); m_Winner = reader.ReadMobile(); m_TicketPrice = reader.ReadInt(); m_Started = reader.ReadDateTime(); m_Duration = reader.ReadTimeSpan(); int entryCount = reader.ReadInt(); m_Entries = new List <RaffleEntry>(entryCount); for (int i = 0; i < entryCount; i++) { RaffleEntry entry = new RaffleEntry(reader, version); if (entry.From == null) { continue; // Character was deleted } m_Entries.Add(entry); } InvalidateRegion(); m_AllStones.Add(this); if (version < 3) { if (oldActive) { m_State = HouseRaffleState.Active; } else if (m_Winner != null) { m_State = HouseRaffleState.Completed; } else { m_State = HouseRaffleState.Inactive; } } break; } } }
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 Arena(GenericReader reader) { int version = reader.ReadEncodedInt(); switch ( version ) { case 7: { this.m_IsGuarded = reader.ReadBool(); goto case 6; } case 6: { this.m_Ladder = reader.ReadItem() as LadderController; goto case 5; } case 5: { this.m_Tournament = reader.ReadItem() as TournamentController; this.m_Announcer = reader.ReadMobile(); goto case 4; } case 4: { this.m_Name = reader.ReadString(); goto case 3; } case 3: { this.m_Zone = reader.ReadRect2D(); goto case 2; } case 2: { this.m_GateIn = reader.ReadPoint3D(); this.m_GateOut = reader.ReadPoint3D(); this.m_Teleporter = reader.ReadItem(); goto case 1; } case 1: { this.m_Players = reader.ReadStrongMobileList(); goto case 0; } case 0: { this.m_Facet = reader.ReadMap(); this.m_Bounds = reader.ReadRect2D(); this.m_Outside = reader.ReadPoint3D(); this.m_Wall = reader.ReadPoint3D(); if (version == 0) { reader.ReadBool(); this.m_Players = new List<Mobile>(); } this.m_Active = reader.ReadBool(); this.m_Points = new ArenaStartPoints(reader); if (this.m_Active) { m_Arenas.Add(this); m_Arenas.Sort(); } break; } } if (this.m_Zone.Start != Point2D.Zero && this.m_Zone.End != Point2D.Zero && this.m_Facet != null) this.m_Region = new SafeZone(this.m_Zone, this.m_Outside, this.m_Facet, this.m_IsGuarded); if (this.IsOccupied) Timer.DelayCall(TimeSpan.FromSeconds(2.0), new TimerCallback(Evict)); if (this.m_Tournament != null) Timer.DelayCall(TimeSpan.Zero, new TimerCallback(AttachToTournament_Sandbox)); }
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(); this.m_ChallengeArea = new Rectangle3D[0]; switch (version) { case 2: case 1: { this.m_Disable = reader.ReadBool(); goto case 0; } case 0: { this.m_Music = (MusicName)reader.ReadInt(); this.m_Priority = reader.ReadInt(); if (version < 2) { // old region area reader.ReadRect2D(); } this.m_ChallengeRegionName = reader.ReadString(); string mapname = reader.ReadString(); try { this.m_ChallengeMap = Map.Parse(mapname); } catch { } this.m_CopiedRegion = reader.ReadString(); // do the coord list int count = reader.ReadInt(); if (count > 0) { // the old version used 2D rectangles for the region area. The new version uses 3D if (version < 2) { Rectangle2D[] area = new Rectangle2D[count]; for (int i = 0; i < count; i++) { area[i] = reader.ReadRect2D(); } this.m_ChallengeArea = Region.ConvertTo3D(area); } else { this.m_ChallengeArea = new Rectangle3D[count]; for (int i = 0; i < count; i++) { this.m_ChallengeArea[i] = new Rectangle3D(reader.ReadPoint3D(), reader.ReadPoint3D()); } } } break; } } // refresh the region Timer.DelayCall(TimeSpan.Zero, new TimerCallback(RefreshRegions)); }
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); 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 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 override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadEncodedInt(); this.m_Active = reader.ReadBool(); this.m_Word = reader.ReadString(); this.m_Destination = reader.ReadRect2D(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 8: { m_MinimumDuelers = (int)reader.ReadInt(); m_LastReset = (DateTime)reader.ReadDateTime(); goto case 7; } case 7: { m_TimerEnabled = (bool)reader.ReadBool(); goto case 6; } case 6: { m_CoinsPerRound = (int)reader.ReadInt(); m_CoinsWinner = (int)reader.ReadInt(); goto case 5; } case 5: { m_BroadcastHue = (int)reader.ReadInt(); goto case 4; } case 4: { m_WallHue = (int)reader.ReadInt(); m_WallID = (int)reader.ReadInt(); goto case 3; } case 3: { m_WallMidPoint = (Point3D)reader.ReadPoint3D(); m_WallExtendWidth = (int)reader.ReadInt();; m_WallNorthToSouth = (bool)reader.ReadBool(); goto case 2; } case 2: { m_CurrentRound = (int)reader.ReadInt(); m_TotalParticipants = (int)reader.ReadInt(); goto case 1; } case 1: { m_Running = (bool)reader.ReadBool(); m_AcceptingPlayers = (bool)reader.ReadBool(); m_MapLocation = (Map)reader.ReadMap(); goto case 0; } case 0: { m_EventRate = (TimeSpan)reader.ReadTimeSpan(); m_StartLocation = (Point3D)reader.ReadPoint3D(); m_LostLocation = (Point3D)reader.ReadPoint3D(); m_DuelLocation1 = (Point3D)reader.ReadPoint3D(); m_DuelLocation2 = (Point3D)reader.ReadPoint3D(); m_LastEvent = (DateTime)reader.ReadDateTime(); m_DuelingArea = (Rectangle2D)reader.ReadRect2D(); m_StageingArea = (Rectangle2D)reader.ReadRect2D(); m_ViewingArea = (Rectangle2D)reader.ReadRect2D(); break; } } if (version == 7) { m_LastReset = DateTime.Now; } if (version == 5) { m_CoinsPerRound = 2; m_CoinsWinner = 10; } if (version == 4) { m_BroadcastHue = 269; } if (version == 3) { m_WallHue = 0; m_WallID = 0x0081; } if (m_DuelList == null) { m_DuelList = new List <Mobile>(); } if (m_CurrentDuelers == null) { m_CurrentDuelers = new List <Mobile>(); } if (m_WallList == null) { m_WallList = new List <Item>(); } if (m_BroadcastList == null) { m_BroadcastList = new List <Mobile>(); } m_CountDown = 0; UpdateRegions(false); m_RestartTimer = new InternalTimer(this, TimeSpan.FromSeconds(1.0)); if (m_TimerEnabled) { m_RestartTimer.Start(); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 0: { this.m_Bounds = reader.ReadRect2D(); this.m_Width = reader.ReadInt(); this.m_Height = reader.ReadInt(); this.m_Protected = reader.ReadBool(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) this.m_Pins.Add(reader.ReadPoint2D()); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 3: { this.m_State = (HouseRaffleState)reader.ReadEncodedInt(); goto case 2; } case 2: { this.m_ExpireAction = (HouseRaffleExpireAction)reader.ReadEncodedInt(); goto case 1; } case 1: { this.m_Deed = reader.ReadItem<HouseRaffleDeed>(); goto case 0; } case 0: { bool oldActive = (version < 3) ? reader.ReadBool() : false; this.m_Bounds = reader.ReadRect2D(); this.m_Facet = reader.ReadMap(); this.m_Winner = reader.ReadMobile(); this.m_TicketPrice = reader.ReadInt(); this.m_Started = reader.ReadDateTime(); this.m_Duration = reader.ReadTimeSpan(); int entryCount = reader.ReadInt(); this.m_Entries = new List<RaffleEntry>(entryCount); for (int i = 0; i < entryCount; i++) { RaffleEntry entry = new RaffleEntry(reader, version); if (entry.From == null) continue; // Character was deleted this.m_Entries.Add(entry); } this.InvalidateRegion(); m_AllStones.Add(this); if (version < 3) { if (oldActive) this.m_State = HouseRaffleState.Active; else if (this.m_Winner != null) this.m_State = HouseRaffleState.Completed; else this.m_State = HouseRaffleState.Inactive; } break; } } }
public static List<Rectangle2D> ReadRect2DArray(GenericReader reader) { int size = reader.ReadInt(); List<Rectangle2D> newAry = new List<Rectangle2D>(); for (int i = 0; i < size; i++) { newAry.Add(reader.ReadRect2D()); } return newAry; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_MobFactionArea = new Rectangle3D[0]; switch (version) { case 1: { m_EjectLocation = reader.ReadPoint3D(); string ejectmap = reader.ReadString(); try { m_EjectMap = Map.Parse(ejectmap); } catch { } string factiontype = reader.ReadString(); try { m_FactionType = (XmlMobFactions.GroupTypes)Enum.Parse(typeof(XmlMobFactions.GroupTypes), factiontype); } catch {} m_FactionLevel = reader.ReadInt(); goto case 0; } case 0: { m_Music = (MusicName)reader.ReadInt(); m_MobFactionPriority = reader.ReadInt(); if (version < 1) { // old region area reader.ReadRect2D(); } m_MobFactionRegionName = reader.ReadString(); string mapname = reader.ReadString(); try { m_MobFactionMap = Map.Parse(mapname); } catch { } m_CopiedRegion = reader.ReadString(); // do the coord list int count = reader.ReadInt(); if (count > 0) { // the old version used 2D rectangles for the region area. The new version uses 3D if (version < 1) { Rectangle2D[] area = new Rectangle2D[count]; for (int i = 0; i < count; i++) { area[i] = reader.ReadRect2D(); } m_MobFactionArea = Region.ConvertTo3D(area); } else { m_MobFactionArea = new Rectangle3D[count]; for (int i = 0; i < count; i++) { m_MobFactionArea[i] = new Rectangle3D(reader.ReadPoint3D(), reader.ReadPoint3D()); } } } break; } } // refresh the region Timer.DelayCall(TimeSpan.Zero, new TimerCallback(RefreshRegions)); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); Spawn = new Dictionary <BaseCreature, List <BaseCreature> >(); SpawnZones = new List <Rectangle2D>(); if (Map == Map.Trammel) { TramInstance = this; } if (Map == Map.Felucca) { FelInstance = this; } CurrentInvasion = (City)reader.ReadInt(); InvasionType = (InvasionType)reader.ReadInt(); Beacon = reader.ReadItem() as InvasionBeacon; CurrentWave = reader.ReadInt(); if (Beacon != null) { Beacon.Controller = this; } int count = reader.ReadInt(); for (int i = 0; i < count; i++) { SpawnZones.Add(reader.ReadRect2D()); } count = reader.ReadInt(); for (int i = 0; i < count; i++) { BaseCreature captain = reader.ReadMobile() as BaseCreature; int c = reader.ReadInt(); List <BaseCreature> list = new List <BaseCreature>(); for (int j = 0; j < c; j++) { BaseCreature spawn = reader.ReadMobile() as BaseCreature; if (spawn != null) { list.Add(spawn); } } if (captain != null) { Spawn[captain] = list; } else { list.Clear(); } } Timer.DelayCall(TimeSpan.FromSeconds(10), () => { if (Beacon == null || Beacon.Destroyed) { Timer.DelayCall(TimeSpan.FromMinutes(2), () => { Cleanup(); BeginInvasion(); }); } }); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); _mPlayerScores = new Dictionary<Mobile, double>(); var version = reader.ReadInt(); switch (version) { case 0: { var entries = reader.ReadInt(); for (var i = 0; i < entries; ++i) { var m = reader.ReadMobile(); var damage = reader.ReadDouble(); if (m != null) _mPlayerScores.Add(m, damage); } _mNextActiveTime = reader.ReadDeltaTime(); _mArea = reader.ReadRect2D(); _mAlwaysGrey = reader.ReadBool(); _mNoCorpseCarving = reader.ReadBool(); var active = reader.ReadBool(); _mExpireDelay = reader.ReadTimeSpan(); _mExpireTime = reader.ReadDeltaTime(); _mRestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool()) { _mRestartTime = reader.ReadDeltaTime(); BeginRestart(_mRestartTime - DateTime.UtcNow); } if (active) Start(); break; } } Timer.DelayCall(TimeSpan.Zero, UpdateRegion); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); int count; bool loadedDynamicDecay = false; switch ( version ) { case 15: { int stage = reader.ReadInt(); if (stage != -1) { this.m_CurrentStage = (DecayLevel)stage; this.m_NextDecayStage = reader.ReadDateTime(); loadedDynamicDecay = true; } goto case 14; } case 14: { this.m_RelativeBanLocation = reader.ReadPoint3D(); goto case 13; } case 13: // removed ban location serialization case 12: { this.m_VendorRentalContracts = reader.ReadItemList(); this.m_InternalizedVendors = reader.ReadMobileList(); int relocatedCount = reader.ReadEncodedInt(); for (int i = 0; i < relocatedCount; i++) { Point3D relLocation = reader.ReadPoint3D(); IEntity entity = World.FindEntity(reader.ReadInt()); if (entity != null) this.m_RelocatedEntities.Add(new RelocatedEntity(entity, relLocation)); } int inventoryCount = reader.ReadEncodedInt(); for (int i = 0; i < inventoryCount; i++) { VendorInventory inventory = new VendorInventory(this, reader); this.m_VendorInventories.Add(inventory); } goto case 11; } case 11: { this.m_LastRefreshed = reader.ReadDateTime(); this.m_RestrictDecay = reader.ReadBool(); goto case 10; } case 10: // just a signal for updates case 9: { this.m_Visits = reader.ReadInt(); goto case 8; } case 8: { this.m_Price = reader.ReadInt(); goto case 7; } case 7: { this.m_Access = reader.ReadMobileList(); goto case 6; } case 6: { this.m_BuiltOn = reader.ReadDateTime(); this.m_LastTraded = reader.ReadDateTime(); goto case 5; } case 5: // just removed fields case 4: { this.m_Addons = reader.ReadItemList(); goto case 3; } case 3: { count = reader.ReadInt(); this.m_Secures = new ArrayList(count); for (int i = 0; i < count; ++i) { SecureInfo info = new SecureInfo(reader); if (info.Item != null) { info.Item.IsSecure = true; this.m_Secures.Add(info); } } goto case 2; } case 2: { this.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) this.m_RelativeBanLocation = this.BaseBanLocation; if (version < 12) { this.m_VendorRentalContracts = new ArrayList(); this.m_InternalizedVendors = new ArrayList(); } if (version < 4) this.m_Addons = new ArrayList(); if (version < 7) this.m_Access = new ArrayList(); if (version < 8) this.m_Price = this.DefaultPrice; this.m_Owner = reader.ReadMobile(); if (version < 5) { count = reader.ReadInt(); for (int i = 0; i < count; i++) reader.ReadRect2D(); } this.UpdateRegion(); this.m_CoOwners = reader.ReadMobileList(); this.m_Friends = reader.ReadMobileList(); this.m_Bans = reader.ReadMobileList(); this.m_Sign = reader.ReadItem() as HouseSign; this.m_Trash = reader.ReadItem() as TrashBarrel; this.m_Doors = reader.ReadItemList(); this.m_LockDowns = reader.ReadItemList(); for (int i = 0; i < this.m_LockDowns.Count; ++i) ((Item)this.m_LockDowns[i]).IsLockedDown = true; for (int i = 0; i < this.m_VendorRentalContracts.Count; ++i) ((Item)this.m_VendorRentalContracts[i]).IsLockedDown = true; if (version < 3) { ArrayList items = reader.ReadItemList(); this.m_Secures = new ArrayList(items.Count); for (int i = 0; i < items.Count; ++i) { Container c = items[i] as Container; if (c != null) { c.IsSecure = true; this.m_Secures.Add(new SecureInfo(c, SecureLevel.CoOwners)); } } } this.m_MaxLockDowns = reader.ReadInt(); this.m_MaxSecures = reader.ReadInt(); if ((this.Map == null || this.Map == Map.Internal) && this.Location == Point3D.Zero) this.Delete(); if (this.m_Owner != null) { List<BaseHouse> list = null; m_Table.TryGetValue(this.m_Owner, out list); if (list == null) m_Table[this.m_Owner] = list = new List<BaseHouse>(); list.Add(this); } break; } } if (version <= 1) this.ChangeSignType(0xBD2);//private house, plain brass sign if (version < 10) { /* NOTE: This can exceed the house lockdown limit. It must be this way, because * we do not want players' items to decay without them knowing. Or not even * having a chance to fix it themselves. */ Timer.DelayCall(TimeSpan.Zero, new TimerCallback(FixLockdowns_Sandbox)); } if (version < 11) this.m_LastRefreshed = DateTime.UtcNow + TimeSpan.FromHours(24 * Utility.RandomDouble()); if (DynamicDecay.Enabled && !loadedDynamicDecay) { DecayLevel old = this.GetOldDecayLevel(); if (old == DecayLevel.DemolitionPending) old = DecayLevel.Collapsed; this.SetDynamicDecay(old); } if (!this.CheckDecay()) { if (this.RelocatedEntities.Count > 0) Timer.DelayCall(TimeSpan.Zero, new TimerCallback(RestoreRelocatedEntities)); if (this.m_Owner == null && this.m_Friends.Count == 0 && this.m_CoOwners.Count == 0) Timer.DelayCall(TimeSpan.FromSeconds(10.0), new TimerCallback(Delete)); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); this.m_ChallengeArea = new Rectangle3D[0]; switch ( version ) { case 2: case 1: { this.m_Disable = reader.ReadBool(); goto case 0; } case 0: { this.m_Music = (MusicName)reader.ReadInt(); this.m_Priority = reader.ReadInt(); if (version < 2) { // old region area reader.ReadRect2D(); } this.m_ChallengeRegionName = reader.ReadString(); string mapname = reader.ReadString(); try { this.m_ChallengeMap = Map.Parse(mapname); } catch { } this.m_CopiedRegion = reader.ReadString(); // do the coord list int count = reader.ReadInt(); if (count > 0) { // the old version used 2D rectangles for the region area. The new version uses 3D if (version < 2) { Rectangle2D[] area = new Rectangle2D[count]; for (int i = 0; i < count; i++) { area[i] = reader.ReadRect2D(); } this.m_ChallengeArea = Region.ConvertTo3D(area); } else { this.m_ChallengeArea = new Rectangle3D[count]; for (int i = 0; i < count; i++) { this.m_ChallengeArea[i] = new Rectangle3D(reader.ReadPoint3D(), reader.ReadPoint3D()); } } } break; } } // refresh the region Timer.DelayCall(TimeSpan.Zero, new TimerCallback(RefreshRegions)); }
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(); int count; switch ( version ) { case 15: { goto case 14; } case 14: { m_RelativeBanLocation = reader.ReadPoint3D(); goto case 13; } case 13: // removed ban location serialization case 12: { m_InternalizedVendors = reader.ReadMobileList(); int inventoryCount = reader.ReadEncodedInt(); for ( int i = 0; i < inventoryCount; i++ ) { VendorInventory inventory = new VendorInventory( this, reader ); m_VendorInventories.Add( inventory ); } goto case 11; } case 11: { m_LastRefreshed = reader.ReadDateTime(); m_RestrictDecay = reader.ReadBool(); goto case 10; } case 10: // just a signal for updates case 9: { m_Visits = reader.ReadInt(); goto case 8; } case 8: { m_Price = reader.ReadInt(); goto case 7; } case 7: { m_Access = reader.ReadMobileList(); goto case 6; } case 6: { m_BuiltOn = reader.ReadDateTime(); goto case 5; } case 5: // just removed fields case 4: { m_Addons = reader.ReadItemList(); goto case 3; } case 3: case 2: { m_Public = reader.ReadBool(); goto case 1; } case 1: { if ( version < 13 ) reader.ReadPoint3D(); // house ban location goto case 0; } case 0: { if ( version < 14 ) m_RelativeBanLocation = this.BaseBanLocation; if ( version < 12 ) { m_InternalizedVendors = new ArrayList(); } if ( version < 4 ) m_Addons = new ArrayList(); if ( version < 7 ) m_Access = new ArrayList(); if ( version < 8 ) m_Price = DefaultPrice; m_Owner = reader.ReadMobile(); if ( version < 5 ) { count = reader.ReadInt(); for(int i=0;i<count;i++) reader.ReadRect2D(); } UpdateRegion(); m_CoOwners = reader.ReadMobileList(); m_Friends = reader.ReadMobileList(); m_Bans = reader.ReadMobileList(); m_Sign = reader.ReadItem() as HouseSign; m_Trash = reader.ReadItem() as TrashBarrel; m_Doors = reader.ReadItemList(); m_LockDowns = reader.ReadItemList(); for ( int i = 0; i < m_LockDowns.Count; ++i ) ((Item)m_LockDowns[i]).IsLockedDown = true; m_Secures = reader.ReadItemList(); for (int i = 0; i < m_Secures.Count; ++i) ((Item)m_Secures[i]).IsSecure = true; m_MaxLockDowns = reader.ReadInt(); m_MaxSecures = reader.ReadInt(); if ( (Map == null || Map == Map.Internal) && Location == Point3D.Zero ) Delete(); if ( m_Owner != null ) { List<BaseHouse> list = null; m_Table.TryGetValue( m_Owner, out list ); if ( list == null ) m_Table[m_Owner] = list = new List<BaseHouse>(); list.Add( this ); } break; } } if ( version <= 1 ) ChangeSignType( 0xBD2 );//private house, plain brass sign if ( version < 10 ) { /* NOTE: This can exceed the house lockdown limit. It must be this way, because * we do not want players' items to decay without them knowing. Or not even * having a chance to fix it themselves. */ Timer.DelayCall( TimeSpan.Zero, new TimerCallback( FixLockdowns_Sandbox ) ); } if ( version < 11 ) m_LastRefreshed = DateTime.Now + TimeSpan.FromHours( 24 * Utility.RandomDouble() ); if ( !CheckDecay() ) { if ( 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); int version = reader.ReadInt(); switch (version) { case 6: { m_MobilesSeekHome = reader.ReadBool(); m_UsesSpawnerHome = reader.ReadBool(); goto case 5; } case 5: { m_SpawnArea = reader.ReadRect2D(); m_UsesSpawnerHome = reader.ReadBool(); goto case 4; } case 4: { m_WalkingRange = reader.ReadInt(); goto case 3; } case 3: case 2: { m_WayPoint = reader.ReadItem() as WayPoint; goto case 1; } case 1: { m_Group = reader.ReadBool(); goto case 0; } case 0: { m_MinDelay = reader.ReadTimeSpan(); m_MaxDelay = reader.ReadTimeSpan(); m_Count = reader.ReadInt(); m_Team = reader.ReadInt(); m_HomeRange = reader.ReadInt(); m_Running = reader.ReadBool(); TimeSpan ts = TimeSpan.Zero; if (m_Running) { ts = reader.ReadDeltaTime() - DateTime.UtcNow; } int size = reader.ReadInt(); m_SpawnNames = new List <string>(size); for (int i = 0; i < size; ++i) { string creatureString = reader.ReadString(); m_SpawnNames.Add(creatureString); string typeName = ParseType(creatureString); if (ScriptCompiler.FindTypeByName(typeName) == null) { if (m_WarnTimer == null) { m_WarnTimer = new WarnTimer(); } m_WarnTimer.Add(Location, Map, typeName); } } int count = reader.ReadInt(); m_Spawned = new List <ISpawnable>(count); for (int i = 0; i < count; ++i) { ISpawnable e = World.FindEntity(reader.ReadInt()) as ISpawnable; if (e != null) { e.Spawner = this; m_Spawned.Add(e); } } if (m_Running) { DoTimer(ts); } break; } } if (version < 3 && Weight == 0) { Weight = -1; } }
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 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 DaviesDeedEntry(GenericReader reader) { int version = reader.ReadByte(); m_type = reader.ReadInt(); m_Level = reader.ReadInt(); m_Decoder = reader.ReadMobile(); m_Map = reader.ReadMap(); m_Location2d = reader.ReadPoint2D(); m_Location3d = reader.ReadPoint3D(); m_Bounds = reader.ReadRect2D(); m_Mapnumber = reader.ReadString(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); if (version >= 13) { c_ForcePrivate = reader.ReadBool(); c_ForcePublic = reader.ReadBool(); c_NoTrade = reader.ReadBool(); } if (version >= 12) { c_Free = reader.ReadBool(); } if (version >= 11) { c_Murderers = (Intu)reader.ReadInt(); } if (version >= 10) { c_LeaveItems = reader.ReadBool(); } if (version >= 9) { c_RentToOwn = reader.ReadBool(); c_OriginalRentTime = reader.ReadTimeSpan(); c_RTOPayments = reader.ReadInt(); } c_PreviewItems = new ArrayList(); if (version >= 7) { c_PreviewItems = reader.ReadItemList(); } if (version >= 6) { c_ItemsPrice = reader.ReadInt(); c_KeepItems = reader.ReadBool(); } c_DecoreItemInfos = new ArrayList(); if (version >= 5) { int decorecount = reader.ReadInt(); DecoreItemInfo info; for (int i = 0; i < decorecount; ++i) { info = new DecoreItemInfo(); info.Load(reader); c_DecoreItemInfos.Add(info); } c_Relock = reader.ReadBool(); } if (version >= 4) { c_RecurRent = reader.ReadBool(); c_RentByTime = reader.ReadTimeSpan(); c_RentTime = reader.ReadDateTime(); c_DemolishTime = reader.ReadDateTime(); c_YoungOnly = reader.ReadBool(); c_MinTotalSkill = reader.ReadInt(); c_MaxTotalSkill = reader.ReadInt(); } if (version >= 3) { c_MinZ = reader.ReadInt(); c_MaxZ = reader.ReadInt(); } if (version >= 2) { c_House = (TownHouse)reader.ReadItem(); } c_Price = reader.ReadInt(); c_Locks = reader.ReadInt(); c_Secures = reader.ReadInt(); c_BanLoc = reader.ReadPoint3D(); c_SignLoc = reader.ReadPoint3D(); c_Skill = reader.ReadString(); c_SkillReq = reader.ReadDouble(); c_Blocks = new ArrayList(); int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { c_Blocks.Add(reader.ReadRect2D()); } if (c_RentTime > DateTime.Now) { BeginRentTimer(c_RentTime - DateTime.Now); } Timer.DelayCall(TimeSpan.Zero, new TimerCallback(StartTimers)); ClearPreview(); s_TownHouseSigns.Add(this); }
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(); this.m_MobFactionArea = new Rectangle3D[0]; switch (version) { case 1: { this.m_EjectLocation = reader.ReadPoint3D(); string ejectmap = reader.ReadString(); try { this.m_EjectMap = Map.Parse(ejectmap); } catch { } string factiontype = reader.ReadString(); try { this.m_FactionType = (XmlMobFactions.GroupTypes)Enum.Parse(typeof(XmlMobFactions.GroupTypes), factiontype); } catch { } this.m_FactionLevel = reader.ReadInt(); goto case 0; } case 0: { this.m_Music = (MusicName)reader.ReadInt(); this.m_MobFactionPriority = reader.ReadInt(); if (version < 1) { // old region area reader.ReadRect2D(); } this.m_MobFactionRegionName = reader.ReadString(); string mapname = reader.ReadString(); try { this.m_MobFactionMap = Map.Parse(mapname); } catch { } this.m_CopiedRegion = reader.ReadString(); // do the coord list int count = reader.ReadInt(); if (count > 0) { // the old version used 2D rectangles for the region area. The new version uses 3D if (version < 1) { Rectangle2D[] area = new Rectangle2D[count]; for (int i = 0; i < count; i++) { area[i] = reader.ReadRect2D(); } this.m_MobFactionArea = Region.ConvertTo3D(area); } else { this.m_MobFactionArea = new Rectangle3D[count]; for (int i = 0; i < count; i++) { this.m_MobFactionArea[i] = new Rectangle3D(reader.ReadPoint3D(), reader.ReadPoint3D()); } } } break; } } // refresh the region Timer.DelayCall(TimeSpan.Zero, new TimerCallback(RefreshRegions)); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); _LinkedCreatureGuardType = ScriptCompiler.FindTypeByName( reader.ReadString() ); _GuardedRegion = reader.ReadRect2D(); _GuardedMap = reader.ReadMap(); _TossPoint = reader.ReadPoint3D(); _TossMap = reader.ReadMap(); }