public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_TreasureLevel = (TreasureLevel)reader.ReadByte(); m_MinSpawnTime = reader.ReadShort(); m_MaxSpawnTime = reader.ReadShort(); if( !Locked ) StartResetTimer(); }
public MultiComponentList(GenericReader reader) { int version = reader.ReadInt(); m_Min = reader.ReadPoint2D(); m_Max = reader.ReadPoint2D(); m_Center = reader.ReadPoint2D(); m_Width = reader.ReadInt(); m_Height = reader.ReadInt(); int length = reader.ReadInt(); var allTiles = m_List = new MultiTileEntry[length]; if (version == 0) { for (int i = 0; i < length; ++i) { int id = reader.ReadShort(); if (id >= 0x4000) { id -= 0x4000; } allTiles[i].m_ItemID = (ushort)id; allTiles[i].m_OffsetX = reader.ReadShort(); allTiles[i].m_OffsetY = reader.ReadShort(); allTiles[i].m_OffsetZ = reader.ReadShort(); allTiles[i].m_Flags = reader.ReadInt(); } } else { for (int i = 0; i < length; ++i) { allTiles[i].m_ItemID = reader.ReadUShort(); allTiles[i].m_OffsetX = reader.ReadShort(); allTiles[i].m_OffsetY = reader.ReadShort(); allTiles[i].m_OffsetZ = reader.ReadShort(); allTiles[i].m_Flags = reader.ReadInt(); } } var tiles = new TileList[m_Width][]; m_Tiles = new StaticTile[m_Width][][]; for (int x = 0; x < m_Width; ++x) { tiles[x] = new TileList[m_Height]; m_Tiles[x] = new StaticTile[m_Height][]; for (int y = 0; y < m_Height; ++y) { tiles[x][y] = new TileList(); } } for (int i = 0; i < allTiles.Length; ++i) { if (i == 0 || allTiles[i].m_Flags != 0) { int xOffset = allTiles[i].m_OffsetX + m_Center.m_X; int yOffset = allTiles[i].m_OffsetY + m_Center.m_Y; #region Stygian Abyss //tiles[xOffset][yOffset].Add( (ushort)allTiles[i].m_ItemID, (sbyte)allTiles[i].m_OffsetZ ); tiles[xOffset][yOffset].Add( (ushort)((allTiles[i].m_ItemID & TileData.MaxItemValue) | 0x10000), (sbyte)allTiles[i].m_OffsetZ); #endregion } } for (int x = 0; x < m_Width; ++x) { for (int y = 0; y < m_Height; ++y) { m_Tiles[x][y] = tiles[x][y].ToArray(); } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); var version = reader.GetVersion(); switch (version) { case 1: { Mode = reader.ReadFlag<SkillCodexMode>(); Flags = reader.ReadFlag<SkillCodexFlags>(); Count = reader.ReadInt(); Value = reader.ReadDouble(); DeleteWhenEmpty = reader.ReadBool(); IgnoredSkills = reader.ReadList(r => r.ReadFlag<SkillName>()); } break; case 0: { Mode = (SkillCodexMode)reader.ReadByte(); Flags = (SkillCodexFlags)reader.ReadByte(); Count = reader.ReadInt(); Value = reader.ReadDouble(); DeleteWhenEmpty = reader.ReadBool(); IgnoredSkills = reader.ReadList(() => (SkillName)reader.ReadShort()); } break; } }
public MultiComponentList(GenericReader reader) { int num3; int num4; int num5; int num6; int num7; int num8; int num9; int num10; MultiTileEntry[] entryArray2; int num11 = reader.ReadInt(); if (num11 != 0) { return; } this.m_Min = reader.ReadPoint2D(); this.m_Max = reader.ReadPoint2D(); this.m_Center = reader.ReadPoint2D(); this.m_Width = reader.ReadInt(); this.m_Height = reader.ReadInt(); int num2 = reader.ReadInt(); this.m_List = (entryArray2 = new MultiTileEntry[num2]); MultiTileEntry[] entryArray1 = entryArray2; for (num3 = 0; (num3 < num2); ++num3) { entryArray1[num3].m_ItemID = reader.ReadShort(); entryArray1[num3].m_OffsetX = reader.ReadShort(); entryArray1[num3].m_OffsetY = reader.ReadShort(); entryArray1[num3].m_OffsetZ = reader.ReadShort(); entryArray1[num3].m_Flags = reader.ReadInt(); } TileList[][] listArrayArray1 = new TileList[this.m_Width][]; this.m_Tiles = new Tile[this.m_Width][][]; for (num4 = 0; (num4 < this.m_Width); ++num4) { listArrayArray1[num4] = new TileList[this.m_Height]; this.m_Tiles[num4] = new Tile[this.m_Height][]; for (num5 = 0; (num5 < this.m_Height); ++num5) { listArrayArray1[num4][num5] = new TileList(); } } for (num6 = 0; (num6 < entryArray1.Length); ++num6) { if ((num6 == 0) || (entryArray1[num6].m_Flags != 0)) { num7 = (entryArray1[num6].m_OffsetX + this.m_Center.m_X); num8 = (entryArray1[num6].m_OffsetY + this.m_Center.m_Y); listArrayArray1[num7][num8].Add(((short)((entryArray1[num6].m_ItemID & 16383) | 16384)), ((sbyte)entryArray1[num6].m_OffsetZ)); } } for (num9 = 0; (num9 < this.m_Width); ++num9) { for (num10 = 0; (num10 < this.m_Height); ++num10) { this.m_Tiles[num9][num10] = listArrayArray1[num9][num10].ToArray(); } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 0: { m_Job = (JobFragment)reader.ReadShort(); m_Mood = (Attitude)reader.ReadByte(); m_Soph = (Sophistication)reader.ReadByte(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_Active = reader.ReadBool(); m_Casino = (Casino)reader.ReadInt(); m_CasinoName = reader.ReadString(); m_TotalPlays = reader.ReadULong(); m_TotalCollected = reader.ReadULong(); m_TotalWon = reader.ReadULong(); m_ErrorCode = reader.ReadInt(); m_OrigHue = reader.ReadInt(); m_InUseBy = reader.ReadMobile(); m_OnCredit = reader.ReadInt(); m_Escrow = reader.ReadInt(); m_SecurityCamMobile = reader.ReadMobile(); m_SecurityChatter = (VerboseType)reader.ReadInt(); m_Bet = reader.ReadInt(); m_TestMode = reader.ReadBool(); m_DealerDelay = reader.ReadBool(); m_DoubleAfterSplit = reader.ReadBool(); m_DealerHitsSoft17 = reader.ReadBool(); m_DealerTakesPush = reader.ReadBool(); m_Resplits = reader.ReadBool(); m_SplitAces = (SplitAces)reader.ReadInt(); m_BJSplitAces21 = reader.ReadBool(); m_BJSplitAcesPaysEven = reader.ReadBool(); m_DoubleDown = (DoubleDown)reader.ReadInt(); m_PlayerCardsFaceUp = reader.ReadBool(); m_DealerCardsFaceUp = reader.ReadBool(); m_NumberOfDecks = reader.ReadShort(); m_ContinuousShuffle = reader.ReadBool(); m_MinBet = (BetValues)reader.ReadInt(); m_MaxBet = (BetValues)reader.ReadInt(); m_BlackJackPays = (BlackJackPays)reader.ReadInt(); m_CardSounds = reader.ReadBool(); carddeck = new CardDeck(m_NumberOfDecks,0); m_BJInfo.HandInfo = new HandStruct[5]; for (int h = 0; h < 5; h++) { m_BJInfo.HandInfo[h].bet = 0; m_BJInfo.HandInfo[h].totalcards = 0; m_BJInfo.HandInfo[h].card = new short[12]; for (int c = 0; c < 12; c++) m_BJInfo.HandInfo[h].card[c] = -1; m_BJInfo.HandInfo[h].bestscore = 0; m_BJInfo.HandInfo[h].altscore = 0; } }
public MultiComponentList(GenericReader reader) { int version = reader.ReadInt(); switch (version) { case 0: { m_Min = reader.ReadPoint2D(); m_Max = reader.ReadPoint2D(); m_Center = reader.ReadPoint2D(); m_Width = reader.ReadInt(); m_Height = reader.ReadInt(); int length = reader.ReadInt(); MultiTileEntry[] allTiles = m_List = new MultiTileEntry[length]; for (int i = 0; i < length; ++i) { allTiles[i].m_ItemID = reader.ReadShort(); allTiles[i].m_OffsetX = reader.ReadShort(); allTiles[i].m_OffsetY = reader.ReadShort(); allTiles[i].m_OffsetZ = reader.ReadShort(); allTiles[i].m_Flags = reader.ReadInt(); } TileList[][] tiles = new TileList[m_Width][]; m_Tiles = new Tile[m_Width][][]; for (int x = 0; x < m_Width; ++x) { tiles[x] = new TileList[m_Height]; m_Tiles[x] = new Tile[m_Height][]; for (int y = 0; y < m_Height; ++y) { tiles[x][y] = new TileList(); } } for (int i = 0; i < allTiles.Length; ++i) { if (i == 0 || allTiles[i].m_Flags != 0) { int xOffset = allTiles[i].m_OffsetX + m_Center.m_X; int yOffset = allTiles[i].m_OffsetY + m_Center.m_Y; tiles[xOffset][yOffset].Add((short)((allTiles[i].m_ItemID & 0x3FFF) | 0x4000), (sbyte)allTiles[i].m_OffsetZ); } } for (int x = 0; x < m_Width; ++x) { for (int y = 0; y < m_Height; ++y) { m_Tiles[x][y] = tiles[x][y].ToArray(); } } break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.GetVersion(); switch (version) { case 0: { Port = reader.ReadShort(); MaxConnections = reader.ReadInt(); UpdateInterval = reader.ReadTimeSpan(); RequestFlags = reader.ReadFlag<WebStatsRequestFlags>(); } break; } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 0: { m_Poster = reader.ReadMobile(); m_Subject = reader.ReadString(); m_Time = reader.ReadDateTime(); bool hasThread = reader.ReadBool(); if ( hasThread ) m_Thread = reader.ReadItem() as BulletinMessage; m_PostedName = reader.ReadString(); m_PostedBody = reader.ReadShort(); m_PostedHue = reader.ReadShort(); m_PostedEquip = new BulletinEquip[reader.ReadByte()]; for ( int i = 0; i < m_PostedEquip.Length; ++i ) { m_PostedEquip[i].itemID = reader.ReadShort(); m_PostedEquip[i].hue = reader.ReadShort(); } m_Lines = new string[reader.ReadByte()]; for ( int i = 0; i < m_Lines.Length; ++i ) m_Lines[i] = reader.ReadString(); if ( hasThread && m_Thread == null ) Delete(); break; } } }
public MultiComponentList(GenericReader reader) { var version = reader.ReadInt(); m_Min = reader.ReadPoint2D(); m_Max = reader.ReadPoint2D(); m_Center = reader.ReadPoint2D(); Width = reader.ReadInt(); Height = reader.ReadInt(); var length = reader.ReadInt(); var allTiles = m_List = new MultiTileEntry[length]; if (version == 0) { for (var i = 0; i < length; ++i) { int id = reader.ReadShort(); if (id >= 0x4000) { id -= 0x4000; } allTiles[i].m_ItemID = (ushort)id; allTiles[i].m_OffsetX = reader.ReadShort(); allTiles[i].m_OffsetY = reader.ReadShort(); allTiles[i].m_OffsetZ = reader.ReadShort(); allTiles[i].m_Flags = (TileFlag)reader.ReadUInt(); } } else { for (var i = 0; i < length; ++i) { allTiles[i].m_ItemID = reader.ReadUShort(); allTiles[i].m_OffsetX = reader.ReadShort(); allTiles[i].m_OffsetY = reader.ReadShort(); allTiles[i].m_OffsetZ = reader.ReadShort(); if (version > 1) { allTiles[i].m_Flags = (TileFlag)reader.ReadULong(); } else { allTiles[i].m_Flags = (TileFlag)reader.ReadUInt(); } } } var tiles = new TileList[Width][]; Tiles = new StaticTile[Width][][]; for (var x = 0; x < Width; ++x) { tiles[x] = new TileList[Height]; Tiles[x] = new StaticTile[Height][]; for (var y = 0; y < Height; ++y) { tiles[x][y] = new TileList(); } } for (var i = 0; i < allTiles.Length; ++i) { if (i == 0 || allTiles[i].m_Flags != 0) { var xOffset = allTiles[i].m_OffsetX + m_Center.m_X; var yOffset = allTiles[i].m_OffsetY + m_Center.m_Y; var itemID = (allTiles[i].m_ItemID & TileData.MaxItemValue) | 0x10000; tiles[xOffset][yOffset].Add((ushort)itemID, (sbyte)allTiles[i].m_OffsetZ); } } for (var x = 0; x < Width; ++x) { for (var y = 0; y < Height; ++y) { Tiles[x][y] = tiles[x][y].ToArray(); } } }
public virtual void Deserialize(GenericReader reader) { int version = reader.ReadInt(); SetLastMoved(); // must always read this first SaveFlag flags = 0; if (version >= 5) flags = (SaveFlag)reader.ReadInt32(); switch (version) { case 10: { // get the per item custom drop rate if (GetSaveFlag(flags, SaveFlag.DropRate)) m_DropRate = reader.ReadDouble(); } goto case 9; case 9: goto case 8; case 8: goto case 7;// change is at bottom of file after ImplFlags are read case 7: goto case 6; case 6: { if (version < 7) { LastMoved = reader.ReadDeltaTime(); } else { int minutes = reader.ReadEncodedInt(); try { LastMoved = DateTime.Now - TimeSpan.FromMinutes(minutes); } catch { LastMoved = DateTime.Now; } } if (GetSaveFlag(flags, SaveFlag.Direction)) m_Direction = (Direction)reader.ReadByte(); if (GetSaveFlag(flags, SaveFlag.Bounce)) m_Bounce = BounceInfo.Deserialize(reader); if (GetSaveFlag(flags, SaveFlag.LootType)) m_LootType = (LootType)reader.ReadByte(); int x = 0, y = 0, z = 0; if (GetSaveFlag(flags, SaveFlag.LocationFull)) { x = reader.ReadEncodedInt(); y = reader.ReadEncodedInt(); z = reader.ReadEncodedInt(); } else { if (GetSaveFlag(flags, SaveFlag.LocationByteXY)) { x = reader.ReadByte(); y = reader.ReadByte(); } else if (GetSaveFlag(flags, SaveFlag.LocationShortXY)) { x = reader.ReadShort(); y = reader.ReadShort(); } if (GetSaveFlag(flags, SaveFlag.LocationSByteZ)) z = reader.ReadSByte(); } m_Location = new Point3D(x, y, z); if (GetSaveFlag(flags, SaveFlag.ItemID)) m_ItemID = reader.ReadEncodedInt(); if (GetSaveFlag(flags, SaveFlag.Hue)) m_Hue = reader.ReadEncodedInt(); if (GetSaveFlag(flags, SaveFlag.Amount)) m_Amount = reader.ReadEncodedInt(); else m_Amount = 1; if (GetSaveFlag(flags, SaveFlag.Layer)) m_Layer = (Layer)reader.ReadByte(); if (GetSaveFlag(flags, SaveFlag.Name)) m_Name = reader.ReadString(); if (GetSaveFlag(flags, SaveFlag.Parent)) { Serial parent = reader.ReadInt32(); if (parent.IsMobile) m_Parent = World.FindMobile(parent); else if (parent.IsItem) m_Parent = World.FindItem(parent); else m_Parent = null; if (m_Parent == null && (parent.IsMobile || parent.IsItem)) Delete(); } if (GetSaveFlag(flags, SaveFlag.Items)) m_Items = reader.ReadItemList(); //else // m_Items = new ArrayList( 1 ); if (GetSaveFlag(flags, SaveFlag.IntWeight)) m_Weight = reader.ReadEncodedInt(); else if (GetSaveFlag(flags, SaveFlag.WeightNot1or0)) m_Weight = reader.ReadDouble(); else if (GetSaveFlag(flags, SaveFlag.WeightIs0)) m_Weight = 0.0; else m_Weight = 1.0; if (GetSaveFlag(flags, SaveFlag.Map)) m_Map = reader.ReadMap(); else m_Map = Map.Internal; if (GetSaveFlag(flags, SaveFlag.Visible)) SetFlag(ImplFlag.Visible, reader.ReadBool()); else SetFlag(ImplFlag.Visible, true); if (GetSaveFlag(flags, SaveFlag.Movable)) SetFlag(ImplFlag.Movable, reader.ReadBool()); else SetFlag(ImplFlag.Movable, true); if (GetSaveFlag(flags, SaveFlag.Stackable)) SetFlag(ImplFlag.Stackable, reader.ReadBool()); if (GetSaveFlag(flags, SaveFlag.ImplFlags)) { m_Flags = (ImplFlag)reader.ReadEncodedInt(); } // don't confuse ImplFlag.FreezeDried with SaveFlag.FreezeDried // we check different flags because of a version quirk - ask Taran if (GetFlag(ImplFlag.FreezeDried)) { TotalWeight = reader.ReadInt32(); TotalItems = reader.ReadInt32(); TotalGold = reader.ReadInt32(); } if (GetSaveFlag(flags, SaveFlag.FreezeDried)) { int count = reader.ReadInt(); m_SerializedContentsIdx = new byte[count]; for (int i = 0; i < count; i++) m_SerializedContentsIdx[i] = reader.ReadByte(); count = reader.ReadInt(); m_SerializedContentsBin = new byte[count]; for (int i = 0; i < count; i++) m_SerializedContentsBin[i] = reader.ReadByte(); } if (GetSaveFlag(flags, SaveFlag.InsuredFor)) /*m_InsuredFor = */ reader.ReadMobile(); if (GetSaveFlag(flags, SaveFlag.BlessedFor)) m_BlessedFor = reader.ReadMobile(); if (GetSaveFlag(flags, SaveFlag.HeldBy)) m_HeldBy = reader.ReadMobile(); if (GetSaveFlag(flags, SaveFlag.SavedFlags)) m_SavedFlags = reader.ReadEncodedInt(); //wea: 13/Mar/2007 Rare Factory if (GetSaveFlag(flags, SaveFlag.RareData)) m_RareData = (UInt32)reader.ReadInt(); if (m_Map != null && m_Parent == null) m_Map.OnEnter(this); break; } case 5: { //SaveFlag flags = (SaveFlag)reader.ReadInt(); LastMoved = reader.ReadDeltaTime(); if (GetSaveFlag(flags, SaveFlag.Direction)) m_Direction = (Direction)reader.ReadByte(); if (GetSaveFlag(flags, SaveFlag.Bounce)) m_Bounce = BounceInfo.Deserialize(reader); if (GetSaveFlag(flags, SaveFlag.LootType)) m_LootType = (LootType)reader.ReadByte(); if (GetSaveFlag(flags, SaveFlag.LocationFull)) m_Location = reader.ReadPoint3D(); if (GetSaveFlag(flags, SaveFlag.ItemID)) m_ItemID = reader.ReadInt(); if (GetSaveFlag(flags, SaveFlag.Hue)) m_Hue = reader.ReadInt(); if (GetSaveFlag(flags, SaveFlag.Amount)) m_Amount = reader.ReadInt(); else m_Amount = 1; if (GetSaveFlag(flags, SaveFlag.Layer)) m_Layer = (Layer)reader.ReadByte(); if (GetSaveFlag(flags, SaveFlag.Name)) m_Name = reader.ReadString(); if (GetSaveFlag(flags, SaveFlag.Parent)) { Serial parent = reader.ReadInt(); if (parent.IsMobile) m_Parent = World.FindMobile(parent); else if (parent.IsItem) m_Parent = World.FindItem(parent); else m_Parent = null; if (m_Parent == null && (parent.IsMobile || parent.IsItem)) Delete(); } if (GetSaveFlag(flags, SaveFlag.Items)) m_Items = reader.ReadItemList(); //else // m_Items = new ArrayList( 1 ); if (GetSaveFlag(flags, SaveFlag.IntWeight)) m_Weight = reader.ReadEncodedInt(); else if (GetSaveFlag(flags, SaveFlag.WeightNot1or0)) m_Weight = reader.ReadDouble(); else if (GetSaveFlag(flags, SaveFlag.WeightIs0)) m_Weight = 0.0; else m_Weight = 1.0; if (GetSaveFlag(flags, SaveFlag.Map)) m_Map = reader.ReadMap(); else m_Map = Map.Internal; if (GetSaveFlag(flags, SaveFlag.Visible)) SetFlag(ImplFlag.Visible, reader.ReadBool()); else SetFlag(ImplFlag.Visible, true); if (GetSaveFlag(flags, SaveFlag.Movable)) SetFlag(ImplFlag.Movable, reader.ReadBool()); else SetFlag(ImplFlag.Movable, true); if (GetSaveFlag(flags, SaveFlag.Stackable)) SetFlag(ImplFlag.Stackable, reader.ReadBool()); if (m_Map != null && m_Parent == null) m_Map.OnEnter(this); break; } case 4: // Just removed variables case 3: { m_Direction = (Direction)reader.ReadInt(); goto case 2; } case 2: { m_Bounce = BounceInfo.Deserialize(reader); LastMoved = reader.ReadDeltaTime(); goto case 1; } case 1: { m_LootType = (LootType)reader.ReadByte();//m_Newbied = reader.ReadBool(); goto case 0; } case 0: { m_Location = reader.ReadPoint3D(); m_ItemID = reader.ReadInt(); m_Hue = reader.ReadInt(); m_Amount = reader.ReadInt(); m_Layer = (Layer)reader.ReadByte(); m_Name = reader.ReadString(); Serial parent = reader.ReadInt(); if (parent.IsMobile) m_Parent = World.FindMobile(parent); else if (parent.IsItem) m_Parent = World.FindItem(parent); else m_Parent = null; if (m_Parent == null && (parent.IsMobile || parent.IsItem)) Delete(); int count = reader.ReadInt(); if (count > 0) { m_Items = new ArrayList(count); for (int i = 0; i < count; ++i) { Item item = reader.ReadItem(); if (item != null) m_Items.Add(item); } } m_Weight = reader.ReadDouble(); if (version <= 3) { /*m_TotalItems =*/ reader.ReadInt(); /*m_TotalWeight =*/ reader.ReadInt(); /*m_TotalGold =*/ reader.ReadInt(); } m_Map = reader.ReadMap(); SetFlag(ImplFlag.Visible, reader.ReadBool()); SetFlag(ImplFlag.Movable, reader.ReadBool()); if (version <= 3) /*m_Deleted =*/ reader.ReadBool(); Stackable = reader.ReadBool(); if (m_Map != null && m_Parent == null) m_Map.OnEnter(this); break; } } if (m_HeldBy != null) Timer.DelayCall(TimeSpan.Zero, new TimerCallback(FixHolding_Sandbox)); }
public MultiComponentList(GenericReader reader) { int version = reader.ReadInt(); switch (version) { case 1: case 0: { m_Min = reader.ReadPoint2D(); m_Max = reader.ReadPoint2D(); Center = reader.ReadPoint2D(); Width = reader.ReadInt(); Height = reader.ReadInt(); int length = reader.ReadInt(); MultiTileEntry[] allTiles = List = new MultiTileEntry[length]; for (int i = 0; i < length; ++i) { ushort id = reader.ReadUShort(); if (version == 0 && id >= 0x8000) { id -= 0x8000; } allTiles[i].m_ItemID = id; allTiles[i].m_OffsetX = reader.ReadShort(); allTiles[i].m_OffsetY = reader.ReadShort(); allTiles[i].m_OffsetZ = reader.ReadShort(); allTiles[i].m_Flags = reader.ReadInt(); } TileList[][] tiles = new TileList[Width][]; Tiles = new Tile[Width][][]; for (int x = 0; x < Width; ++x) { tiles[x] = new TileList[Height]; Tiles[x] = new Tile[Height][]; for (int y = 0; y < Height; ++y) { tiles[x][y] = new TileList(); } } for (int i = 0; i < allTiles.Length; ++i) { if (i == 0 || allTiles[i].m_Flags != 0) { int xOffset = allTiles[i].m_OffsetX + Center.X; int yOffset = allTiles[i].m_OffsetY + Center.Y; tiles[xOffset][yOffset].Add((ushort)allTiles[i].m_ItemID, (sbyte)allTiles[i].m_OffsetZ); } } for (int x = 0; x < Width; ++x) { for (int y = 0; y < Height; ++y) { Tiles[x][y] = tiles[x][y].ToArray(); } } break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); var version = reader.GetVersion(); switch (version) { case 1: case 0: { if (version < 1) { reader.ReadShort(); reader.ReadInt(); } UpdateInterval = reader.ReadTimeSpan(); RequestFlags = reader.ReadFlag<ReqFlags>(); } break; } }
public MultiComponentList( GenericReader reader ) { int version = reader.ReadInt(); switch ( version ) { case 0: { m_Min = reader.ReadPoint2D(); m_Max = reader.ReadPoint2D(); m_Center = reader.ReadPoint2D(); m_Width = reader.ReadInt(); m_Height = reader.ReadInt(); int length = reader.ReadInt(); MultiTileEntry[] allTiles = m_List = new MultiTileEntry[length]; for ( int i = 0; i < length; ++i ) { allTiles[i].m_ItemID = reader.ReadShort(); allTiles[i].m_OffsetX = reader.ReadShort(); allTiles[i].m_OffsetY = reader.ReadShort(); allTiles[i].m_OffsetZ = reader.ReadShort(); allTiles[i].m_Flags = reader.ReadInt(); } TileList[][] tiles = new TileList[m_Width][]; m_Tiles = new Tile[m_Width][][]; for ( int x = 0; x < m_Width; ++x ) { tiles[x] = new TileList[m_Height]; m_Tiles[x] = new Tile[m_Height][]; for ( int y = 0; y < m_Height; ++y ) tiles[x][y] = new TileList(); } for ( int i = 0; i < allTiles.Length; ++i ) { if ( i == 0 || allTiles[i].m_Flags != 0 ) { int xOffset = allTiles[i].m_OffsetX + m_Center.m_X; int yOffset = allTiles[i].m_OffsetY + m_Center.m_Y; tiles[xOffset][yOffset].Add( (short)((allTiles[i].m_ItemID & 0x3FFF) | 0x4000), (sbyte)allTiles[i].m_OffsetZ ); } } for ( int x = 0; x < m_Width; ++x ) for ( int y = 0; y < m_Height; ++y ) m_Tiles[x][y] = tiles[x][y].ToArray(); break; } } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); LootType = LootType.Blessed; if ( Weight == 0.0 ) Weight = 3.0; int version = reader.ReadInt(); switch ( version ) { case 2: { m_Crafter = reader.ReadMobile(); m_Quality = (RunebookQuality)reader.ReadShort(); goto case 1; } case 1: { m_Level = (SecureLevel)reader.ReadInt(); goto case 0; } case 0: { int count = reader.ReadInt(); m_Entries = new ArrayList( count ); for ( int i = 0; i < count; ++i ) m_Entries.Add( new RunebookEntry( reader ) ); m_Description = reader.ReadString(); m_CurCharges = reader.ReadInt(); m_MaxCharges = reader.ReadInt(); m_DefaultIndex = reader.ReadInt(); break; } } }
public virtual void Deserialize( GenericReader reader ) { int version = reader.ReadInt(); SetLastMoved(); switch ( version ) { case 14: { m_InstanceID = reader.ReadInt(); SaveFlag flags = (SaveFlag) reader.ReadInt(); int minutes = reader.ReadEncodedInt(); try { LastMoved = DateTime.Now - TimeSpan.FromMinutes( minutes ); } catch { LastMoved = DateTime.Now; } if ( GetSaveFlag( flags, SaveFlag.Direction ) ) m_Direction = (Direction) reader.ReadByte(); if ( GetSaveFlag( flags, SaveFlag.LightType ) ) m_LightType = (LightType) reader.ReadByte(); if ( GetSaveFlag( flags, SaveFlag.Bounce ) ) m_Bounce = BounceInfo.Deserialize( reader ); if ( GetSaveFlag( flags, SaveFlag.LootType ) ) m_LootType = (LootType) reader.ReadByte(); int x = 0, y = 0, z = 0; if ( GetSaveFlag( flags, SaveFlag.LocationFull ) ) { x = reader.ReadEncodedInt(); y = reader.ReadEncodedInt(); z = reader.ReadEncodedInt(); } else { if ( GetSaveFlag( flags, SaveFlag.LocationByteXY ) ) { x = reader.ReadByte(); y = reader.ReadByte(); } else if ( GetSaveFlag( flags, SaveFlag.LocationShortXY ) ) { x = reader.ReadShort(); y = reader.ReadShort(); } if ( GetSaveFlag( flags, SaveFlag.LocationSByteZ ) ) z = reader.ReadSByte(); } m_Location = new Point3D( x, y, z ); if ( GetSaveFlag( flags, SaveFlag.ItemID ) ) m_ItemID = reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.Hue ) ) m_Hue = reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.Amount ) ) m_Amount = reader.ReadEncodedInt(); else m_Amount = 1; if ( GetSaveFlag( flags, SaveFlag.Layer ) ) m_Layer = (Layer) reader.ReadByte(); if ( GetSaveFlag( flags, SaveFlag.Name ) ) m_Name = string.Intern( reader.ReadString() ); if ( GetSaveFlag( flags, SaveFlag.Parent ) ) { Serial parent = reader.ReadInt(); if ( parent.IsMobile ) m_Parent = World.Instance.FindMobile( parent ); else if ( parent.IsItem ) m_Parent = World.Instance.FindItem( parent ); else m_Parent = null; if ( m_Parent == null && ( parent.IsMobile || parent.IsItem ) ) Delete(); } if ( GetSaveFlag( flags, SaveFlag.Items ) ) m_Items = reader.ReadStrongItemList(); if ( GetSaveFlag( flags, SaveFlag.IntWeight ) ) m_Weight = reader.ReadEncodedInt(); else if ( GetSaveFlag( flags, SaveFlag.WeightNot1or0 ) ) m_Weight = reader.ReadDouble(); else if ( GetSaveFlag( flags, SaveFlag.WeightIs0 ) ) m_Weight = 0.0; else m_Weight = 1.0; if ( GetSaveFlag( flags, SaveFlag.Map ) ) m_Map = reader.ReadMap(); else m_Map = Map.Internal; if ( GetSaveFlag( flags, SaveFlag.Visible ) ) SetFlag( ImplFlag.Visible, reader.ReadBool() ); else SetFlag( ImplFlag.Visible, true ); if ( GetSaveFlag( flags, SaveFlag.Movable ) ) SetFlag( ImplFlag.Movable, reader.ReadBool() ); else SetFlag( ImplFlag.Movable, true ); if ( GetSaveFlag( flags, SaveFlag.Stackable ) ) SetFlag( ImplFlag.Stackable, reader.ReadBool() ); if ( GetSaveFlag( flags, SaveFlag.ImplFlags ) ) m_Flags = (ImplFlag) reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.BlessedFor ) ) m_BlessedFor = reader.ReadMobile(); if ( GetSaveFlag( flags, SaveFlag.HeldBy ) ) m_HeldBy = reader.ReadMobile(); if ( GetSaveFlag( flags, SaveFlag.LabelNumber ) ) m_LabelNumber = reader.ReadInt(); #region Labels if ( GetSaveFlag( flags, SaveFlag.Labels ) ) { int length = reader.ReadInt(); m_Labels = new string[length]; for ( int i = 0; i < length; i++ ) m_Labels[i] = reader.ReadString(); } #endregion if ( GetSaveFlag( flags, SaveFlag.SavedFlags ) ) m_SavedFlags = reader.ReadEncodedInt(); if ( m_Map != null && m_Parent == null ) m_Map.OnEnter( this ); break; } } if ( m_HeldBy != null ) Timer.DelayCall( TimeSpan.Zero, new TimerCallback( FixHolding_Sandbox ) ); }
public MultiComponentList(GenericReader reader) { int version = reader.ReadInt(); m_Min = reader.ReadPoint2D(); m_Max = reader.ReadPoint2D(); m_Center = reader.ReadPoint2D(); m_Width = reader.ReadInt(); m_Height = reader.ReadInt(); int length = reader.ReadInt(); MultiTileEntry[] allTiles = m_List = new MultiTileEntry[length]; if (version == 0) { for (int i = 0; i < length; ++i) { int id = reader.ReadShort(); if (id >= 0x4000) { id -= 0x4000; } allTiles[i].m_ItemID = (ushort)id; allTiles[i].m_OffsetX = reader.ReadShort(); allTiles[i].m_OffsetY = reader.ReadShort(); allTiles[i].m_OffsetZ = reader.ReadShort(); allTiles[i].m_Flags = reader.ReadInt(); } } else { for (int i = 0; i < length; ++i) { allTiles[i].m_ItemID = reader.ReadUShort(); allTiles[i].m_OffsetX = reader.ReadShort(); allTiles[i].m_OffsetY = reader.ReadShort(); allTiles[i].m_OffsetZ = reader.ReadShort(); allTiles[i].m_Flags = reader.ReadInt(); } } TileList[][] tiles = new TileList[m_Width][]; m_Tiles = new StaticTile[m_Width][][]; for (int x = 0; x < m_Width; ++x) { tiles[x] = new TileList[m_Height]; m_Tiles[x] = new StaticTile[m_Height][]; for (int y = 0; y < m_Height; ++y) { tiles[x][y] = new TileList(); } } for (int i = 0; i < allTiles.Length; ++i) { if (i == 0 || allTiles[i].m_Flags != 0) { int xOffset = allTiles[i].m_OffsetX + m_Center.m_X; int yOffset = allTiles[i].m_OffsetY + m_Center.m_Y; tiles[xOffset][yOffset].Add((ushort)allTiles[i].m_ItemID, (sbyte)allTiles[i].m_OffsetZ); } } for (int x = 0; x < m_Width; ++x) { for (int y = 0; y < m_Height; ++y) { m_Tiles[x][y] = tiles[x][y].ToArray(); } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); var version = reader.GetVersion(); if (version < 4) { WebServer = true; DirectoryIndex = true; } if (version < 3) { MaxSendBufferSize = 32; MaxReceiveBufferSize = 32; } if (version < 2) { Whitelist = new List<string>(); Blacklist = new List<string>(); } switch (version) { case 4: { WebServer = reader.ReadBool(); DirectoryIndex = reader.ReadBool(); } goto case 3; case 3: case 2: { MaxSendBufferSize = reader.ReadInt(); MaxReceiveBufferSize = reader.ReadInt(); } goto case 1; case 1: { Whitelist = reader.ReadList(r => r.ReadString(), Whitelist); Blacklist = reader.ReadList(r => r.ReadString(), Blacklist); UseWhitelist = reader.ReadBool(); } goto case 0; case 0: { Port = reader.ReadShort(); MaxConnections = reader.ReadInt(); } break; } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 1: { m_IsTrapable = reader.ReadBool(); m_TrapChance = reader.ReadInt(); goto case 0; } case 0: { m_TreasureLevel = (TreasureLevel)reader.ReadByte(); m_MinSpawnTime = reader.ReadShort(); m_MaxSpawnTime = reader.ReadShort(); break; } } StartResetTimer(); }
public MultiComponentList( GenericReader reader ) { int version = reader.ReadInt(); m_Min = reader.ReadPoint2D(); m_Max = reader.ReadPoint2D(); m_Center = reader.ReadPoint2D(); m_Width = reader.ReadInt(); m_Height = reader.ReadInt(); int length = reader.ReadInt(); MultiTileEntry[] allTiles = m_List = new MultiTileEntry[length]; if ( version == 0 ) { for ( int i = 0; i < length; ++i ) { int id = reader.ReadShort(); if ( id >= 0x4000 ) id -= 0x4000; allTiles[i].m_ItemID = (ushort)id; allTiles[i].m_OffsetX = reader.ReadShort(); allTiles[i].m_OffsetY = reader.ReadShort(); allTiles[i].m_OffsetZ = reader.ReadShort(); allTiles[i].m_Flags = reader.ReadInt(); } } else { for ( int i = 0; i < length; ++i ) { allTiles[i].m_ItemID = reader.ReadUShort(); allTiles[i].m_OffsetX = reader.ReadShort(); allTiles[i].m_OffsetY = reader.ReadShort(); allTiles[i].m_OffsetZ = reader.ReadShort(); allTiles[i].m_Flags = reader.ReadInt(); } } TileList[][] tiles = new TileList[m_Width][]; m_Tiles = new StaticTile[m_Width][][]; for ( int x = 0; x < m_Width; ++x ) { tiles[x] = new TileList[m_Height]; m_Tiles[x] = new StaticTile[m_Height][]; for ( int y = 0; y < m_Height; ++y ) tiles[x][y] = new TileList(); } for ( int i = 0; i < allTiles.Length; ++i ) { if ( i == 0 || allTiles[i].m_Flags != 0 ) { int xOffset = allTiles[i].m_OffsetX + m_Center.m_X; int yOffset = allTiles[i].m_OffsetY + m_Center.m_Y; tiles[xOffset][yOffset].Add( (ushort)allTiles[i].m_ItemID, (sbyte)allTiles[i].m_OffsetZ ); } } for ( int x = 0; x < m_Width; ++x ) for ( int y = 0; y < m_Height; ++y ) m_Tiles[x][y] = tiles[x][y].ToArray(); }
public MultiComponentList( GenericReader reader ) { int version = reader.ReadInt(); switch ( version ) { case 0: { m_Min = reader.ReadPoint2D(); m_Max = reader.ReadPoint2D(); m_Center = reader.ReadPoint2D(); m_Width = reader.ReadInt(); m_Height = reader.ReadInt(); int length = reader.ReadInt(); MultiTileEntry[] allTiles = m_List = new MultiTileEntry[length]; for ( int i = 0; i < length; ++i ) { allTiles[i].m_ItemID = reader.ReadShort(); allTiles[i].m_OffsetX = reader.ReadShort(); allTiles[i].m_OffsetY = reader.ReadShort(); allTiles[i].m_OffsetZ = reader.ReadShort(); allTiles[i].m_Flags = reader.ReadInt(); } TileList[][] tiles = new TileList[m_Width][]; m_Tiles = new Tile[m_Width][][]; for ( int x = 0; x < m_Width; ++x ) { tiles[x] = new TileList[m_Height]; m_Tiles[x] = new Tile[m_Height][]; for ( int y = 0; y < m_Height; ++y ) tiles[x][y] = new TileList(); } for ( int i = 0; i < allTiles.Length; ++i ) { if ( i == 0 || allTiles[i].m_Flags != 0 ) { int xOffset = allTiles[i].m_OffsetX + m_Center.m_X; int yOffset = allTiles[i].m_OffsetY + m_Center.m_Y; #region SA // Note #1 | 0x8000 produces problems, namely the server doesn't increase your Z when climbing stairs thus the itemid isn't reconized properly. tiles[xOffset][yOffset].Add( (short)((allTiles[i].m_ItemID & 0x7FFF) | 0x4000), (sbyte)allTiles[i].m_OffsetZ ); #endregion } } for ( int x = 0; x < m_Width; ++x ) for ( int y = 0; y < m_Height; ++y ) m_Tiles[x][y] = tiles[x][y].ToArray(); break; } } }
public virtual void Deserialize( GenericReader reader ) { int version = reader.ReadInt(); SetLastMoved(); switch ( version ) { case 7: case 6: { SaveFlag flags = (SaveFlag)reader.ReadInt(); if ( version < 7 ) { LastMoved = reader.ReadDeltaTime(); } else { int minutes = reader.ReadEncodedInt(); try{ LastMoved = Core.Now - TimeSpan.FromMinutes( minutes ); } catch{ LastMoved = Core.Now; } } if ( GetSaveFlag( flags, SaveFlag.Direction ) ) m_Direction = (Direction)reader.ReadByte(); if ( GetSaveFlag( flags, SaveFlag.Bounce ) ) m_Bounce = BounceInfo.Deserialize( reader ); if ( GetSaveFlag( flags, SaveFlag.LootType ) ) m_LootType = (LootType)reader.ReadByte(); int x = 0, y = 0, z = 0; if ( GetSaveFlag( flags, SaveFlag.LocationFull ) ) { x = reader.ReadEncodedInt(); y = reader.ReadEncodedInt(); z = reader.ReadEncodedInt(); } else { if ( GetSaveFlag( flags, SaveFlag.LocationByteXY ) ) { x = reader.ReadByte(); y = reader.ReadByte(); } else if ( GetSaveFlag( flags, SaveFlag.LocationShortXY ) ) { x = reader.ReadShort(); y = reader.ReadShort(); } if ( GetSaveFlag( flags, SaveFlag.LocationSByteZ ) ) z = reader.ReadSByte(); } m_Location = new Point3D( x, y, z ); if ( GetSaveFlag( flags, SaveFlag.ItemID ) ) m_ItemID = reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.Hue ) ) m_Hue = reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.Amount ) ) m_Amount = reader.ReadEncodedInt(); else m_Amount = 1; if ( GetSaveFlag( flags, SaveFlag.Layer ) ) m_Layer = (Layer)reader.ReadByte(); if ( GetSaveFlag( flags, SaveFlag.Name ) ) m_Name = string.Intern(reader.ReadString()); if ( GetSaveFlag( flags, SaveFlag.Parent ) ) { Serial parent = reader.ReadInt(); if ( parent.IsMobile ) m_Parent = World.FindMobile( parent ); else if ( parent.IsItem ) m_Parent = World.FindItem( parent ); else m_Parent = null; if ( m_Parent == null && (parent.IsMobile || parent.IsItem) ) Delete(); } if ( GetSaveFlag( flags, SaveFlag.Items ) ) m_Items = reader.ReadItemList(); //else // m_Items = new ArrayList( 1 ); if ( GetSaveFlag( flags, SaveFlag.IntWeight ) ) m_Weight = reader.ReadEncodedInt(); else if ( GetSaveFlag( flags, SaveFlag.WeightNot1or0 ) ) m_Weight = reader.ReadDouble(); else if ( GetSaveFlag( flags, SaveFlag.WeightIs0 ) ) m_Weight = 0.0; else m_Weight = 1.0; if ( GetSaveFlag( flags, SaveFlag.Map ) ) m_Map = reader.ReadMap(); else m_Map = Map.Internal; if ( GetSaveFlag( flags, SaveFlag.Visible ) ) SetFlag( ImplFlag.Visible, reader.ReadBool() ); else SetFlag( ImplFlag.Visible, true ); if ( GetSaveFlag( flags, SaveFlag.Movable ) ) SetFlag( ImplFlag.Movable, reader.ReadBool() ); else SetFlag( ImplFlag.Movable, true ); if ( GetSaveFlag( flags, SaveFlag.Stackable ) ) SetFlag( ImplFlag.Stackable, reader.ReadBool() ); if ( GetSaveFlag( flags, SaveFlag.ImplFlags ) ) m_Flags = (ImplFlag)reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.InsuredFor ) ) /*m_InsuredFor = */reader.ReadMobile(); if ( GetSaveFlag( flags, SaveFlag.BlessedFor ) ) m_BlessedFor = reader.ReadMobile(); if ( GetSaveFlag( flags, SaveFlag.HeldBy ) ) m_HeldBy = reader.ReadMobile(); if ( GetSaveFlag( flags, SaveFlag.SavedFlags ) ) m_SavedFlags = reader.ReadEncodedInt(); if ( m_Map != null && m_Parent == null ) m_Map.OnEnter( this ); break; } case 5: { SaveFlag flags = (SaveFlag)reader.ReadInt(); LastMoved = reader.ReadDeltaTime(); if ( GetSaveFlag( flags, SaveFlag.Direction ) ) m_Direction = (Direction)reader.ReadByte(); if ( GetSaveFlag( flags, SaveFlag.Bounce ) ) m_Bounce = BounceInfo.Deserialize( reader ); if ( GetSaveFlag( flags, SaveFlag.LootType ) ) m_LootType = (LootType)reader.ReadByte(); if ( GetSaveFlag( flags, SaveFlag.LocationFull ) ) m_Location = reader.ReadPoint3D(); if ( GetSaveFlag( flags, SaveFlag.ItemID ) ) m_ItemID = reader.ReadInt(); if ( GetSaveFlag( flags, SaveFlag.Hue ) ) m_Hue = reader.ReadInt(); if ( GetSaveFlag( flags, SaveFlag.Amount ) ) m_Amount = reader.ReadInt(); else m_Amount = 1; if ( GetSaveFlag( flags, SaveFlag.Layer ) ) m_Layer = (Layer)reader.ReadByte(); if ( GetSaveFlag( flags, SaveFlag.Name ) ) m_Name = string.Intern(reader.ReadString()); if ( GetSaveFlag( flags, SaveFlag.Parent ) ) { Serial parent = reader.ReadInt(); if ( parent.IsMobile ) m_Parent = World.FindMobile( parent ); else if ( parent.IsItem ) m_Parent = World.FindItem( parent ); else m_Parent = null; if ( m_Parent == null && (parent.IsMobile || parent.IsItem) ) Delete(); } if ( GetSaveFlag( flags, SaveFlag.Items ) ) m_Items = reader.ReadItemList(); //else // m_Items = new ArrayList( 1 ); if ( GetSaveFlag( flags, SaveFlag.IntWeight ) ) m_Weight = reader.ReadEncodedInt(); else if ( GetSaveFlag( flags, SaveFlag.WeightNot1or0 ) ) m_Weight = reader.ReadDouble(); else if ( GetSaveFlag( flags, SaveFlag.WeightIs0 ) ) m_Weight = 0.0; else m_Weight = 1.0; if ( GetSaveFlag( flags, SaveFlag.Map ) ) m_Map = reader.ReadMap(); else m_Map = Map.Internal; if ( GetSaveFlag( flags, SaveFlag.Visible ) ) SetFlag( ImplFlag.Visible, reader.ReadBool() ); else SetFlag( ImplFlag.Visible, true ); if ( GetSaveFlag( flags, SaveFlag.Movable ) ) SetFlag( ImplFlag.Movable, reader.ReadBool() ); else SetFlag( ImplFlag.Movable, true ); if ( GetSaveFlag( flags, SaveFlag.Stackable ) ) SetFlag( ImplFlag.Stackable, reader.ReadBool() ); if ( m_Map != null && m_Parent == null ) m_Map.OnEnter( this ); break; } case 4: // Just removed variables case 3: { m_Direction = (Direction)reader.ReadInt(); goto case 2; } case 2: { m_Bounce = BounceInfo.Deserialize( reader ); LastMoved = reader.ReadDeltaTime(); goto case 1; } case 1: { m_LootType = (LootType) reader.ReadByte();//m_Newbied = reader.ReadBool(); goto case 0; } case 0: { m_Location = reader.ReadPoint3D(); m_ItemID = reader.ReadInt(); m_Hue = reader.ReadInt(); m_Amount = reader.ReadInt(); m_Layer = (Layer) reader.ReadByte(); m_Name = reader.ReadString(); if (m_Name != null) m_Name = string.Intern(m_Name); Serial parent = reader.ReadInt(); if ( parent.IsMobile ) m_Parent = World.FindMobile( parent ); else if ( parent.IsItem ) m_Parent = World.FindItem( parent ); else m_Parent = null; if ( m_Parent == null && (parent.IsMobile || parent.IsItem) ) Delete(); int count = reader.ReadInt(); if ( count > 0 ) { m_Items = new ArrayList( count ); for ( int i = 0; i < count; ++i ) { Item item = reader.ReadItem(); if ( item != null ) m_Items.Add( item ); } } m_Weight = reader.ReadDouble(); if ( version <= 3 ) { /*m_TotalItems =*/ reader.ReadInt(); /*m_TotalWeight =*/ reader.ReadInt(); /*m_TotalGold =*/ reader.ReadInt(); } m_Map = reader.ReadMap(); SetFlag( ImplFlag.Visible, reader.ReadBool() ); SetFlag( ImplFlag.Movable, reader.ReadBool() ); if ( version <= 3 ) /*m_Deleted =*/ reader.ReadBool(); Stackable = reader.ReadBool(); if ( m_Map != null && m_Parent == null ) m_Map.OnEnter( this ); break; } } if ( m_HeldBy != null ) Timer.DelayCall( TimeSpan.Zero, new TimerCallback( FixHolding_Sandbox ) ); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 5: { // erl: New "crafted by" and quality properties m_Crafter = reader.ReadMobile(); m_Quality = (JewelQuality)reader.ReadShort(); goto case 4; } case 4: { // remove AOS crap // see case 1 below goto case 3; } case 3: { m_MagicType = (JewelMagicEffect) reader.ReadInt(); m_MagicCharges = reader.ReadInt(); m_Identified = reader.ReadBool(); goto case 2; } case 2: { m_Resource = (CraftResource)reader.ReadEncodedInt(); m_GemType = (GemType)reader.ReadEncodedInt(); goto case 1; } case 1: { // pack these out of furture versions. if (version < 4) { AosAttributes dmy_AosAttributes; AosElementAttributes dmy_AosResistances; AosSkillBonuses dmy_AosSkillBonuses; dmy_AosAttributes = new AosAttributes( this, reader ); dmy_AosResistances = new AosElementAttributes( this, reader ); dmy_AosSkillBonuses = new AosSkillBonuses( this, reader ); if ( Core.AOS && Parent is Mobile ) dmy_AosSkillBonuses.AddTo( (Mobile)Parent ); int strBonus = dmy_AosAttributes.BonusStr; int dexBonus = dmy_AosAttributes.BonusDex; int intBonus = dmy_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: { // pack these out of furture versions. if (version < 4) { AosAttributes dmy_AosAttributes; AosElementAttributes dmy_AosResistances; AosSkillBonuses dmy_AosSkillBonuses; dmy_AosAttributes = new AosAttributes( this ); dmy_AosResistances = new AosElementAttributes( this ); dmy_AosSkillBonuses = new AosSkillBonuses( this ); } break; } } if ( version < 2 ) { m_Resource = CraftResource.Iron; m_GemType = GemType.None; } if ( version < 5 ) { m_Quality = JewelQuality.Regular; } }
public DesignState( HouseFoundation foundation, GenericReader reader ) { m_Foundation = foundation; int version = reader.ReadInt(); switch ( version ) { case 0: { m_Components = new MultiComponentList( reader ); int length = reader.ReadInt(); m_Fixtures = new MultiTileEntry[length]; for ( int i = 0; i < length; ++i ) { m_Fixtures[i].m_ItemID = reader.ReadShort(); m_Fixtures[i].m_OffsetX = reader.ReadShort(); m_Fixtures[i].m_OffsetY = reader.ReadShort(); m_Fixtures[i].m_OffsetZ = reader.ReadShort(); m_Fixtures[i].m_Flags = reader.ReadInt(); } m_Revision = reader.ReadInt(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 8: //erl - added to handle packing out of PlayerConstructed property { goto case 7; } case 7: //erl - added for clothing wear { m_HitPoints = reader.ReadShort(); m_MaxHitPoints = reader.ReadShort(); goto case 6; } case 6: //Adam - Addition for Scissorable attribute { m_Scissorable = reader.ReadBool(); goto case 5; } case 5: //Adam - Addition for Dyable attribute { m_Dyable = reader.ReadBool(); goto case 4; } case 4: //Pigpen - Addition for IOB System { m_IOBAlignment = (IOBAlignment)reader.ReadInt(); goto case 3; } case 3: { m_MagicType = (MagicEffect)reader.ReadInt(); m_MagicCharges = reader.ReadInt(); m_Identified = reader.ReadBool(); goto case 2; } case 2: { // erl: this is the old PlayerConstructed flag, which will no longer // exist for anything over version 7... made obsolete by PlayerCrafted if( version < 8 ) PlayerCrafted = reader.ReadBool(); goto case 1; } case 1: { m_Crafter = reader.ReadMobile(); m_Quality = (ClothingQuality)reader.ReadInt(); break; } case 0: { m_Crafter = null; m_Quality = ClothingQuality.Regular; break; } } if (version < 5) // Adam - addition for dye control { // Allow for other non-dyable clothes outside the IOB system if (m_IOBAlignment != IOBAlignment.None) m_Dyable = false; } if (version < 7) { // erl: this pre-dates hit point additions, so calculate values // .. // Check the quality of the piece. If it's exceptional or low, we want // the piece's hitpoint to reflect this int iMax = InitMaxHits; int iMin = InitMinHits; if( Quality == ClothingQuality.Exceptional ) { // Add 50% to both iMax = ( iMax * 3 ) / 2; // Fixed order of precedence bug iMin = ( iMin * 3 ) / 2; } else if(Quality == ClothingQuality.Low ) { // Lose 20% to both iMax = ( iMax * 4) / 5; // Fixed order of precedence bug iMin = ( iMin * 4) / 5; } m_HitPoints = m_MaxHitPoints = (short) Utility.RandomMinMax( iMin, iMax ); } // adam: To keep players from farming new characters for newbie clothes // we are moving this valuable resource into the hands of crafters. if (version <= 7) { if( Quality == ClothingQuality.Exceptional && MagicCharges == 0 ) { // make exceptional clothes newbied LootType = LootType.Newbied; } else if( MagicCharges > 0 ) { // erl: explicitly change these pieces so they aren't newbied LootType = LootType.Regular; } } }