public static TEnum ReadFlag <TEnum>(this GenericReader reader) where TEnum : struct, IComparable, IFormattable, IConvertible { var type = typeof(TEnum); var flag = default(TEnum); if (!type.IsEnum) { return(flag); } switch (reader.ReadByte()) { case 0x01: flag = ToEnum <TEnum>(reader.ReadByte()); break; case 0x02: flag = ToEnum <TEnum>(reader.ReadShort()); break; case 0x03: flag = ToEnum <TEnum>(reader.ReadUShort()); break; case 0x04: flag = ToEnum <TEnum>(reader.ReadInt()); break; case 0x05: flag = ToEnum <TEnum>(reader.ReadUInt()); break; case 0x06: flag = ToEnum <TEnum>(reader.ReadLong()); break; case 0x07: flag = ToEnum <TEnum>(reader.ReadULong()); break; } return(flag); }
public static TEnum ReadFlag <TEnum>(this GenericReader reader) where TEnum : struct { TEnum flag = default(TEnum); if (!typeof(TEnum).IsEnum) { return(flag); } switch (reader.ReadByte()) { case 0x01: flag = ToEnum <TEnum>(reader.ReadByte()); break; case 0x02: flag = ToEnum <TEnum>(reader.ReadShort()); break; case 0x03: flag = ToEnum <TEnum>(reader.ReadUShort()); break; case 0x04: flag = ToEnum <TEnum>(reader.ReadInt()); break; case 0x05: flag = ToEnum <TEnum>(reader.ReadUInt()); break; case 0x06: flag = ToEnum <TEnum>(reader.ReadLong()); break; case 0x07: flag = ToEnum <TEnum>(reader.ReadULong()); break; } return(flag); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 5: { #region Mondain's Legacy m_Quality = (BookQuality) reader.ReadByte(); #endregion goto case 4; } case 4: { #region Mondain's Legacy m_EngravedText = reader.ReadString(); #endregion goto case 3; } case 3: { m_Crafter = reader.ReadMobile(); goto case 2; } case 2: { m_Slayer = (SlayerName)reader.ReadInt(); m_Slayer2 = (SlayerName)reader.ReadInt(); goto case 1; } case 1: { m_AosAttributes = new AosAttributes( this, reader ); m_AosSkillBonuses = new AosSkillBonuses( this, reader ); goto case 0; } case 0: { m_Content = reader.ReadULong(); m_Count = reader.ReadInt(); break; } } if ( m_AosAttributes == null ) m_AosAttributes = new AosAttributes( this ); if ( m_AosSkillBonuses == null ) m_AosSkillBonuses = new AosSkillBonuses( this ); if ( Core.AOS && Parent is Mobile ) m_AosSkillBonuses.AddTo( (Mobile) Parent ); int strBonus = m_AosAttributes.BonusStr; int dexBonus = m_AosAttributes.BonusDex; int intBonus = m_AosAttributes.BonusInt; if ( Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0) ) { Mobile m = (Mobile)Parent; string modName = Serial.ToString(); if ( strBonus != 0 ) m.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) ); if ( dexBonus != 0 ) m.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) ); if ( intBonus != 0 ) m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) ); } if ( Parent is Mobile ) ((Mobile)Parent).CheckStatTimers(); }
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) { 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 override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_Active = reader.ReadBool(); m_Theme = (ThemeType)reader.ReadInt(); m_TotalSpins = reader.ReadULong(); m_TotalCollected = reader.ReadULong(); m_TotalWon = reader.ReadULong(); m_ErrorCode = reader.ReadInt(); m_OrigHue = reader.ReadInt(); m_Throttle = reader.ReadBool(); m_ThrottleSeconds = reader.ReadDouble(); m_CardClubOnly = reader.ReadBool(); m_MembershipCard = reader.ReadBool(); m_LastWonBy = reader.ReadMobile(); m_LastWonByDate = reader.ReadDateTime(); m_LastWonAmount = reader.ReadInt(); m_SecurityCamMobile = reader.ReadMobile(); m_SecurityChatter = (VerboseType)reader.ReadInt(); m_TotalPlayers = reader.ReadInt(); InvalidateProperties(); if (m_TotalPlayers > 0) { for (int i = 0; i < m_TotalPlayers; i++) { PlayerInfo player = new PlayerInfo(); player.mobile = reader.ReadMobile(); player.LastPlayed = reader.ReadDateTime(); player.OnCredit = reader.ReadInt(); player.Cost = reader.ReadInt(); PlayerList.Add(player); } } for (int i = 0; i < m_HitStats.Length; i++) m_HitStats[i] = reader.ReadULong(); if (m_OrigHue != -1 && m_Active) { this.Hue = m_OrigHue; m_OrigHue = -1; } SetupTheme(m_Theme); ActivateIdleTimer(TimeSpan.FromMinutes(5)); m_GameSpeed = Utility.RandomList(5, 6, 7, 8, 9, 10, 11, 12); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); LootType = LootType.Blessed; int version = reader.ReadInt(); switch ( version ) { case 0: { m_Content = reader.ReadULong(); m_Count = reader.ReadInt(); break; } } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); if ( !( this is TomeOfEnlightenment || this is TomeOfLostKnowledge || this is FactionTomeOfLostKnowledge ) ) LootType = LootType.Blessed; int version = reader.ReadInt(); switch ( version ) { case 7: { m_Exceptional = reader.ReadBool(); m_Crafter = reader.ReadMobile(); goto case 6; } case 6: case 5: { m_Slayer2 = (SlayerName) reader.ReadEncodedInt(); goto case 4; } case 4: { m_EngraveString = reader.ReadString(); goto case 3; } case 3: case 2: { m_Slayer = (SlayerName) reader.ReadEncodedInt(); goto case 1; } case 1: { m_MagicalAttributes = new MagicalAttributes( this, reader ); m_SkillBonuses = new SkillBonuses( this, reader ); if ( this is ScrappersCompendium ) { Attributes.SpellDamage = 25; Attributes.LowerManaCost = 10; } else if ( this is ClaininsSpellbook ) { Attributes.LowerRegCost = 15; Attributes.RegenMana = 3; } else if ( this is TomeOfEnlightenment ) { Attributes.BonusInt = 5; Attributes.SpellDamage = 10; Attributes.CastSpeed = 1; } else if ( this is TomeOfLostKnowledge ) { SkillBonuses.SetValues( 0, SkillName.Magery, 15.0 ); Attributes.BonusInt = 8; Attributes.SpellDamage = 15; Attributes.LowerManaCost = 15; } else if ( this is FactionTomeOfLostKnowledge ) { SkillBonuses.SetValues( 0, SkillName.Magery, 15.0 ); Attributes.BonusInt = 8; Attributes.SpellDamage = 15; Attributes.LowerManaCost = 15; Attributes.RegenMana = 3; } else if ( this is ConjurersGrimoire ) { SkillBonuses.SetValues( 0, SkillName.Magery, 15.0 ); Attributes.BonusInt = 8; Attributes.SpellDamage = 15; Attributes.LowerManaCost = 10; } else if ( this is FallenMysticsSpellbook ) { Attributes.SpellDamage = 10; } else { FixAttributes(); } goto case 0; } case 0: { m_Content = reader.ReadULong(); m_Count = reader.ReadInt(); break; } } if ( m_MagicalAttributes == null ) m_MagicalAttributes = new MagicalAttributes( this ); if ( m_SkillBonuses == null ) m_SkillBonuses = new SkillBonuses( this ); if ( Parent is Mobile ) m_SkillBonuses.AddTo( (Mobile) Parent ); int strBonus = m_MagicalAttributes.BonusStr; int dexBonus = m_MagicalAttributes.BonusDex; int intBonus = m_MagicalAttributes.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(); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); if ( version >= 4 ) { activeListA = reader.ReadBool(); DeserializeList( reader, true ); DeserializeList( reader, false ); } else { activeListA = false; RestoreDefaultList(); activeListA = true; DeserializeList( reader, true ); } GoldLedger = reader.ReadBool(); TokenLedger = reader.ReadBool(); if ( version >= 3 ) { try { lootSettings = (LootSettingsEnum)reader.ReadInt(); } catch { lootSettings = LootSettingsEnum.From_List; } } else lootSettings = reader.ReadBool()?LootSettingsEnum.Currency_Only:LootSettingsEnum.From_List; GoldAmount = reader.ReadULong(); TokensAmount = reader.ReadULong(); Owner = reader.ReadInt(); if ( version > 1 ) DeleteAllCorpses = reader.ReadBool(); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch( version ) { // version 0 reads second integer, version 1 no longer // needs it. No going to case 0 or serialization error // will occur!! case 2: m_Charges = reader.ReadInt(); goto case 1; case 1: m_Content = reader.ReadULong(); break; case 0: m_Content = reader.ReadULong(); int m_Count = reader.ReadInt(); break; } }