public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadByte(); if ( version == 0 ) { Timer.DelayCall( TimeSpan.Zero, delegate() { for ( int i = 0; i < Components.Count; ++i ) { AddonComponent ac = Components[i] as AddonComponent; if ( ac != null && ac.Hue == 2118 ) ac.Hue = 1161; } } ); } if ( version <= 1 ) { Timer.DelayCall( TimeSpan.Zero, delegate() { for ( int i = 0; i < Components.Count; ++i ) { AddonComponent ac = Components[i] as AddonComponent; if ( ac != null ) ac.Name = "jack-o-lantern"; } } ); } }
public VirtueInfo( GenericReader reader ) { int version = reader.ReadByte(); switch ( version ) { case 1: //Changed the values throughout the virtue system case 0: { int mask = reader.ReadByte(); if ( mask != 0 ) { m_Values = new int[8]; for ( int i = 0; i < 8; ++i ) if ( (mask & (1 << i)) != 0 ) m_Values[i] = reader.ReadInt(); } break; } } if( version == 0 ) { Compassion *= 200; Sacrifice *= 250; //Even though 40 (the max) only gives 10k, It's because it was formerly too easy //No direct conversion factor for Justice, this is just an approximation Justice *= 500; //All the other virtues haven't been defined at 'version 0' point in time in the scripts. } }
public VirtueInfo( GenericReader reader ) { int version = reader.ReadByte(); switch ( version ) { case 1: // Changed the values throughout the virtue system case 0: { int mask = reader.ReadByte(); if ( mask != 0 ) { m_Values = new int[8]; for ( int i = 0; i < 8; ++i ) if ( ( mask & ( 1 << i ) ) != 0 ) m_Values[i] = reader.ReadInt(); } break; } } if ( version == 0 ) { Compassion *= 200; Sacrifice *= 250; Justice *= 500; Honor *= 500; Valor *= 400; } }
public DeathEntry( GenericReader reader ) { int version = reader.ReadByte(); m_Name = reader.ReadString(); m_Deaths = reader.ReadInt(); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadByte(); if ( ItemID == 4678 || ItemID == 4679 ) ItemID = 4656; else if ( ItemID == 4712 || ItemID == 4713 ) ItemID = 4702; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); reader.GetVersion(); AccessPrefixes = new WorldChatAccessPrefixOptions(reader); ChatPrefix = reader.ReadChar(); HistoryBuffer = reader.ReadByte(); }
public ClilocInfo Lookup(GenericReader bin) { bin.Seek(Offset, SeekOrigin.Begin); var data = new byte[Length]; for (long i = 0; i < data.Length; i++) { data[i] = bin.ReadByte(); } return Info = new ClilocInfo(Language, Index, Encoding.UTF8.GetString(data)); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_Code = reader.ReadByte(); m_Controller = reader.ReadItem() as PrimevalLichPuzzle; // remove if no controller exists or is deleted if ( null == m_Controller || m_Controller.Deleted ) Delete(); }
public VirtueInfo( GenericReader reader ) { int version = reader.ReadByte(); switch ( version ) { case 0: { int mask = reader.ReadByte(); if ( mask != 0 ) { m_Values = new int[8]; for ( int i = 0; i < 8; ++i ) if ( (mask & (1 << i)) != 0 ) m_Values[i] = reader.ReadInt(); } break; } } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); int dictcount = reader.ReadInt(); for ( int i = 0; i < dictcount; i++ ) { IMailMessage message = NewMailMessage( reader.ReadByte(), reader.ReadInt() ); message.Deserialize( reader ); } }
public static ulong ReadEncodedLong( GenericReader reader ) { ulong v = 0; int shift = 0; byte b; do { b = reader.ReadByte(); v |= (b & 0x7Ful) << shift; shift += 7; } while( b >= 0x80 ); return v; }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadByte(); switch ( version ) { case 0: { m_LabelNumber = reader.ReadEncodedInt(); break; } } }
public static object Object( GenericReader reader ) { if ( reader == null ) return null; byte type = reader.ReadByte(); switch ( type ) { case 0x0: return null; // invalid case 0x1: return reader.ReadInt(); case 0x2: return reader.ReadString(); case 0x3: return reader.ReadItem(); case 0x4: return reader.ReadMobile(); } return null; }
public virtual void Deserialize( GenericReader reader ) { int version = reader.ReadInt(); switch ( version ) { case 28: { m_LastStatGain = reader.ReadDeltaTime(); goto case 27; } case 27: { m_TithingPoints = reader.ReadInt(); goto case 26; } case 26: case 25: case 24: { m_Corpse = reader.ReadItem() as Container; goto case 23; } case 23: { m_CreationTime = reader.ReadDateTime(); goto case 22; } case 22: // Just removed followers case 21: { m_Stabled = reader.ReadMobileListOrNull(); goto case 20; } case 20: { m_CantWalk = reader.ReadBool(); goto case 19; } case 19: // Just removed variables case 18: { m_Virtues = VirtueInfo.Deserialize( reader ); goto case 17; } case 17: { m_Thirst = reader.ReadInt(); m_BAC = reader.ReadInt(); goto case 16; } case 16: { m_ShortTermMurders = reader.ReadInt(); if ( version <= 24 ) { reader.ReadDateTime(); reader.ReadDateTime(); } goto case 15; } case 15: { if ( version < 22 ) reader.ReadInt(); // followers m_FollowersMax = reader.ReadInt(); goto case 14; } case 14: { m_MagicDamageAbsorb = reader.ReadInt(); goto case 13; } case 13: { m_GuildFealty = reader.ReadMobile(); goto case 12; } case 12: { m_Guild = reader.ReadGuild(); goto case 11; } case 11: { m_DisplayGuildTitle = reader.ReadBool(); goto case 10; } case 10: { m_CanSwim = reader.ReadBool(); goto case 9; } case 9: { m_Squelched = reader.ReadBool(); goto case 8; } case 8: { m_Holding = reader.ReadItem(); goto case 7; } case 7: { m_VirtualArmor = reader.ReadInt(); goto case 6; } case 6: { m_BaseSoundID = reader.ReadInt(); goto case 5; } case 5: { m_DisarmReady = reader.ReadBool(); m_StunReady = reader.ReadBool(); goto case 4; } case 4: { if ( version <= 25 ) { Poison.Deserialize( reader ); /*if ( m_Poison != null ) { m_PoisonTimer = new PoisonTimer( this ); m_PoisonTimer.Start(); }*/ } goto case 3; } case 3: { m_StatCap = reader.ReadInt(); goto case 2; } case 2: { m_NameHue = reader.ReadInt(); goto case 1; } case 1: { m_Hunger = reader.ReadInt(); goto case 0; } case 0: { if ( version < 11 ) m_DisplayGuildTitle = true; if ( version < 3 ) m_StatCap = 225; if ( version < 15 ) { m_Followers = 0; m_FollowersMax = 5; } m_Location = reader.ReadPoint3D(); m_Body = new Body( reader.ReadInt() ); m_Name = reader.ReadString(); if (m_Name != null) m_Name = string.Intern(m_Name); m_GuildTitle = reader.ReadString(); m_Criminal = reader.ReadBool(); m_Kills = reader.ReadInt(); m_SpeechHue = reader.ReadInt(); m_EmoteHue = reader.ReadInt(); m_WhisperHue = reader.ReadInt(); m_YellHue = reader.ReadInt(); m_Language = reader.ReadString(); if (m_Language != null) m_Language = string.Intern(m_Language); m_Female = reader.ReadBool(); m_Warmode = reader.ReadBool(); m_Hidden = reader.ReadBool(); m_Direction = (Direction) reader.ReadByte(); m_Hue = reader.ReadInt(); m_Str = reader.ReadInt(); m_Dex = reader.ReadInt(); m_Int = reader.ReadInt(); m_Hits = reader.ReadInt(); m_Stam = reader.ReadInt(); m_Mana = reader.ReadInt(); m_Map = reader.ReadMap(); m_Blessed = reader.ReadBool(); m_Fame = reader.ReadInt(); m_Karma = reader.ReadInt(); m_AccessLevel = (AccessLevel) reader.ReadByte(); m_Skills = new Skills( this, reader ); int itemCount = reader.ReadInt(); m_Items = new ArrayList( itemCount ); for ( int i = 0; i < itemCount; ++i ) { Item item = reader.ReadItem(); if ( item != null ) m_Items.Add( item ); } m_Player = reader.ReadBool(); m_Title = reader.ReadString(); if (m_Title != null) m_Title = string.Intern(m_Title); m_Profile = reader.ReadString(); m_ProfileLocked = reader.ReadBool(); if ( version <= 18 ) { /*m_LightLevel =*/ reader.ReadInt(); /*m_TotalGold =*/ reader.ReadInt(); /*m_TotalWeight =*/ reader.ReadInt(); } m_AutoPageNotify = reader.ReadBool(); m_LogoutLocation = reader.ReadPoint3D(); m_LogoutMap = reader.ReadMap(); m_StrLock = (StatLockType)reader.ReadByte(); m_DexLock = (StatLockType)reader.ReadByte(); m_IntLock = (StatLockType)reader.ReadByte(); if ( reader.ReadBool() ) { m_StuckMenuUses = new DateTime[reader.ReadInt()]; for ( int i = 0; i < m_StuckMenuUses.Length; ++i ) { m_StuckMenuUses[i] = reader.ReadDateTime(); } } else { m_StuckMenuUses = null; } if ( m_Player && m_Map != Map.Internal ) { m_LogoutLocation = m_Location; m_LogoutMap = m_Map; m_Map = Map.Internal; } if ( m_Map != null ) m_Map.OnEnter( this ); if ( m_Criminal ) { if ( m_ExpireCriminal == null ) m_ExpireCriminal = new ExpireCriminalTimer( this ); m_ExpireCriminal.Start(); } if ( ShouldCheckStatTimers ) CheckStatTimers(); if ( !m_Player && m_Dex <= 100 && m_CombatTimer != null ) m_CombatTimer.Priority = TimerPriority.FiftyMS; else if ( m_CombatTimer != null ) m_CombatTimer.Priority = TimerPriority.EveryTick; m_Region = Region.Find( m_Location, m_Map ); m_Region.InternalEnter( this ); UpdateResistances(); break; } } }
public Skill( Skills owner, SkillInfo info, GenericReader reader ) { m_Owner = owner; m_Info = info; int version = reader.ReadByte(); switch ( version ) { case 0: { m_Base = reader.ReadUShort(); m_Cap = reader.ReadUShort(); m_Lock = (SkillLock)reader.ReadByte(); break; } case 0xFF: { m_Base = 0; m_Cap = 1000; m_Lock = SkillLock.Up; break; } default: { if ( (version & 0xC0) == 0x00 ) { if ( (version & 0x1) != 0 ) m_Base = reader.ReadUShort(); if ( (version & 0x2) != 0 ) m_Cap = reader.ReadUShort(); else m_Cap = 1000; if ( (version & 0x4) != 0 ) m_Lock = (SkillLock)reader.ReadByte(); } break; } } if ( m_Lock < SkillLock.Up || m_Lock > SkillLock.Locked ) { Console.WriteLine( "Bad skill lock -> {0}.{1}", owner.Owner, m_Lock ); m_Lock = SkillLock.Up; } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 4: { m_SecureLevel = (SecureLevel)reader.ReadInt(); goto case 3; } case 3: case 2: { BookContent content = this.DefaultContent; SaveFlags flags = (SaveFlags) reader.ReadByte(); if ( (flags & SaveFlags.Title) != 0 ) m_Title = Utility.Intern( reader.ReadString() ); else if ( content != null ) m_Title = content.Title; if ( (flags & SaveFlags.Author) != 0 ) m_Author = reader.ReadString(); else if ( content != null ) m_Author = content.Author; m_Writable = ( flags & SaveFlags.Writable ) != 0; if ( (flags & SaveFlags.Content) != 0 ) { m_Pages = new BookPageInfo[reader.ReadEncodedInt()]; for ( int i = 0; i < m_Pages.Length; ++i ) m_Pages[i] = new BookPageInfo( reader ); } else { if ( content != null ) m_Pages = content.Copy(); else m_Pages = new BookPageInfo[0]; } break; } case 1: case 0: { m_Title = reader.ReadString(); m_Author = reader.ReadString(); m_Writable = reader.ReadBool(); if ( version == 0 || reader.ReadBool() ) { m_Pages = new BookPageInfo[reader.ReadInt()]; for ( int i = 0; i < m_Pages.Length; ++i ) m_Pages[i] = new BookPageInfo( reader ); } else { BookContent content = this.DefaultContent; if ( content != null ) m_Pages = content.Copy(); else m_Pages = new BookPageInfo[0]; } break; } } if ( version < 3 && ( Weight == 1 || Weight == 2 ) ) Weight = -1; }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 18: { m_NextBountyDecay = reader.ReadDateTime(); goto case 17; } case 17: { m_LastUpdate = reader.ReadInt(); m_LastLogin = reader.ReadDateTime(); goto case 16; } case 16: { m_NextNotoUp = reader.ReadDateTime(); m_Cohesion = reader.ReadInt(); m_LastCohesion = DateTime.Now - reader.ReadTimeSpan(); m_AssumeGhost = reader.ReadBool(); int skillCount = reader.ReadByte(); m_SkillUsageOrder = new byte[skillCount]; for(int i=0;i<skillCount;i++) m_SkillUsageOrder[i] = reader.ReadByte(); goto case 15; } case 15: { m_Bounty = reader.ReadInt(); goto case 14; } case 14: { m_CompassionGains = reader.ReadEncodedInt(); if ( m_CompassionGains > 0 ) m_NextCompassionDay = reader.ReadDeltaTime(); goto case 13; } case 13: // just removed m_PayedInsurance list case 12: { goto case 11; } case 11: { if ( version < 13 ) { ArrayList payed = reader.ReadItemList(); for ( int i = 0; i < payed.Count; ++i ) ((Item)payed[i]).PayedInsurance = true; } goto case 10; } case 10: { if ( reader.ReadBool() ) { m_HairModID = reader.ReadInt(); m_HairModHue = reader.ReadInt(); m_BeardModID = reader.ReadInt(); m_BeardModHue = reader.ReadInt(); // We cannot call SetHairMods( -1, -1 ) here because the items have not yet loaded Timer.DelayCall( TimeSpan.Zero, new TimerCallback( RevertHair ) ); } goto case 9; } case 9: { SavagePaintExpiration = reader.ReadTimeSpan(); if ( SavagePaintExpiration > TimeSpan.Zero ) { BodyMod = ( Female ? 184 : 183 ); HueMod = 0; } goto case 8; } case 8: { m_NpcGuild = (NpcGuild)reader.ReadInt(); m_NpcGuildJoinTime = reader.ReadDateTime(); m_NpcGuildGameTime = reader.ReadTimeSpan(); goto case 7; } case 7: { /*m_PermaFlags =*/ reader.ReadMobileList(); goto case 6; } case 6: { NextTailorBulkOrder = reader.ReadTimeSpan(); goto case 5; } case 5: { NextSmithBulkOrder = reader.ReadTimeSpan(); goto case 4; } case 4: { m_LastJusticeLoss = reader.ReadDeltaTime(); m_JusticeProtectors = reader.ReadMobileList(); goto case 3; } case 3: { m_LastSacrificeGain = reader.ReadDeltaTime(); m_LastSacrificeLoss = reader.ReadDeltaTime(); m_AvailableResurrects = reader.ReadInt(); goto case 2; } case 2: { m_Flags = (PlayerFlag)reader.ReadInt(); goto case 1; } case 1: { m_LongTermElapse = reader.ReadTimeSpan(); m_ShortTermElapse = reader.ReadTimeSpan(); m_GameTime = reader.ReadTimeSpan(); goto case 0; } case 0: { break; } } if ( m_PermaFlags == null ) m_PermaFlags = new ArrayList(); if ( m_JusticeProtectors == null ) m_JusticeProtectors = new ArrayList(); List<Mobile> list = this.Stabled; for ( int i = 0; i < list.Count; ++i ) { BaseCreature bc = list[i] as BaseCreature; if ( bc != null ) bc.IsStabled = true; } if ( m_NextBountyDecay == DateTime.MinValue ) { if ( m_LastLogin != DateTime.MinValue ) m_NextBountyDecay = m_LastLogin + TimeSpan.FromDays( 1.0 ); } while ( m_Bounty > 0 && m_NextBountyDecay < DateTime.Now ) { m_Bounty -= 100; m_NextBountyDecay += TimeSpan.FromDays( 1.0 ); } if ( m_Bounty <= 0 ) { m_Bounty = 0; Kills = 0; } if ( m_Bounty > 0 && m_Bounty > BountyBoard.LowestBounty ) BountyBoard.Update( this ); if ( m_SkillUsageOrder == null ) { m_SkillUsageOrder = new byte[PlayerMobile.SkillCount]; for(int i=0;i<PlayerMobile.SkillCount;i++) m_SkillUsageOrder[i] = (byte)i; } }
public BaseAttributes( Item owner, GenericReader reader ) { m_Owner = owner; int version = reader.ReadByte(); switch( version ) { case 1: { m_Names = reader.ReadUInt(); m_Values = new int[reader.ReadEncodedInt()]; for( int i = 0; i < m_Values.Length; ++i ) m_Values[i] = reader.ReadEncodedInt(); break; } case 0: { m_Names = reader.ReadUInt(); m_Values = new int[reader.ReadInt()]; for( int i = 0; i < m_Values.Length; ++i ) m_Values[i] = reader.ReadInt(); break; } } }
public static Skill Deserialize( Skills owner, SkillInfo info, GenericReader reader ) { int version = reader.ReadByte(); ushort m_Base = 0; ushort m_Cap = 0; SkillLock m_Lock = SkillLock.Up; switch ( version ) { case 0: { m_Base = reader.ReadUShort(); m_Cap = reader.ReadUShort(); m_Lock = (SkillLock)reader.ReadByte(); break; } case 0xFF: return null; default: { if ( (version & 0xC0) == 0x00 ) { if ( (version & 0x1) != 0 ) m_Base = reader.ReadUShort(); if ( (version & 0x2) != 0 ) m_Cap = reader.ReadUShort(); else m_Cap = 1000; if ( (version & 0x4) != 0 ) m_Lock = (SkillLock)reader.ReadByte(); } break; } } return new Skill(owner, info, m_Base, m_Cap, m_Lock); }
public Skill(Skills owner, SkillInfo info, GenericReader reader) { m_Owner = owner; m_Info = info; int version = reader.ReadByte(); switch (version) { case 0: { m_Base = reader.ReadUShort(); m_Cap = reader.ReadUShort(); m_Lock = (SkillLock)reader.ReadByte(); break; } case 0xFF: { m_Base = 0; m_Cap = 1000; m_Lock = SkillLock.Up; break; } default: { if ((version & 0xC0) == 0x00) { if ((version & 0x1) != 0) { m_Base = reader.ReadUShort(); } if ((version & 0x2) != 0) { m_Cap = reader.ReadUShort(); } else { m_Cap = 1000; } if ((version & 0x4) != 0) { m_Lock = (SkillLock)reader.ReadByte(); } } break; } } if (m_Lock < SkillLock.Up || m_Lock > SkillLock.Locked) { Console.WriteLine("Bad skill lock -> {0}.{1}", owner.Owner, m_Lock); m_Lock = SkillLock.Up; } }
public RunebookEntry( GenericReader reader ) { int version = reader.ReadByte(); switch ( version ) { case 1: { m_House = reader.ReadItem() as BaseHouse; goto case 0; } case 0: { m_Location = reader.ReadPoint3D(); m_Map = reader.ReadMap(); m_Description = reader.ReadString(); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); var version = reader.GetVersion(); switch (version) { case 1: { Mode = reader.ReadFlag<SkillCodexMode>(); Flags = reader.ReadFlag<SkillCodexFlags>(); Count = reader.ReadInt(); Value = reader.ReadDouble(); DeleteWhenEmpty = reader.ReadBool(); IgnoredSkills = reader.ReadList(r => r.ReadFlag<SkillName>()); } break; case 0: { Mode = (SkillCodexMode)reader.ReadByte(); Flags = (SkillCodexFlags)reader.ReadByte(); Count = reader.ReadInt(); Value = reader.ReadDouble(); DeleteWhenEmpty = reader.ReadBool(); IgnoredSkills = reader.ReadList(() => (SkillName)reader.ReadShort()); } break; } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); LootType = LootType.Blessed; if( Core.SE && Weight == 3.0 ) Weight = 1.0; int version = reader.ReadInt(); switch ( version ) { case 3: { m_Quality = (BookQuality)reader.ReadByte(); goto case 2; } case 2: { m_Crafter = reader.ReadMobile(); goto case 1; } case 1: { m_Level = (SecureLevel)reader.ReadInt(); goto case 0; } case 0: { int count = reader.ReadInt(); m_Entries = new List<RunebookEntry>( 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 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 static Poison Deserialize( GenericReader reader ) { switch ( reader.ReadByte() ) { case 1: return GetPoison( reader.ReadByte() ); case 2: //no longer used, safe to remove? reader.ReadInt(); reader.ReadDouble(); reader.ReadInt(); reader.ReadTimeSpan(); break; } return null; }
/// <summary> /// Loads an AuctionItem /// </summary> /// <returns>An AuctionItem</returns> public static AuctionItem Deserialize( GenericReader reader, int version ) { AuctionItem auction = new AuctionItem(); switch ( version ) { case 1: auction.m_BuyNow = reader.ReadInt(); goto case 0; case 0: auction.m_Owner = reader.ReadMobile(); auction.m_StartTime = reader.ReadDateTime(); auction.m_Duration = reader.ReadTimeSpan(); auction.m_MinBid = reader.ReadInt(); auction.m_Reserve = reader.ReadInt(); auction.m_Duration = reader.ReadTimeSpan(); auction.m_Description = reader.ReadString(); auction.m_WebLink = reader.ReadString(); auction.m_Pending = reader.ReadBool(); auction.m_ItemName = reader.ReadString(); auction.m_Item = reader.ReadItem(); auction.m_ID = new Guid( reader.ReadString() ); auction.m_EndTime = reader.ReadDeltaTime(); auction.m_OwnerPendency = (AuctionPendency) reader.ReadByte(); auction.m_BuyerPendency = (AuctionPendency) reader.ReadByte(); auction.m_OwnerMessage = (AuctionMessage) reader.ReadByte(); auction.m_BuyerMessage = (AuctionMessage) reader.ReadByte(); auction.m_PendingEnd = reader.ReadDeltaTime(); int count = reader.ReadInt(); auction.m_Items = new ItemInfo[ count ]; for ( int i = 0; i < count; i++ ) { auction.m_Items[ i ] = ItemInfo.Deserialize( reader, version ); } count = reader.ReadInt(); for ( int i = 0; i < count; i++ ) { auction.Bids.Add( Bid.Deserialize( reader, version ) ); } break; } return auction; }
public SecureInfo( GenericReader reader ) { m_Item = reader.ReadItem() as Container; m_Level = (SecureLevel)reader.ReadByte(); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadByte(); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 1: m_Game = reader.ReadItem() as BombermanGame; goto case 0; case 0: { m_UpgradeType = (BombermanUpgradeType)reader.ReadByte(); break; } } }
public void Deserialize( GenericReader reader ) { int version = reader.ReadEncodedInt(); byte type = reader.ReadByte(); switch ( type ) { case 0x1: m_Message = reader.ReadInt(); break; case 0x2: m_Message = reader.ReadString(); break; } m_Arguments = new string[ reader.ReadEncodedInt() ]; for ( int i = 0; i < m_Arguments.Length; i++ ) m_Arguments[ i ] = reader.ReadString(); }
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 Skill(Skills owner, SkillInfo info, GenericReader reader) { Owner = owner; Info = info; int version = reader.ReadByte(); switch (version) { case 0: { m_Base = reader.ReadUShort(); m_Cap = reader.ReadUShort(); Lock = (SkillLock)reader.ReadByte(); break; } case 0xFF: { m_Base = 0; m_Cap = 1000; Lock = SkillLock.Up; break; } default: { if ((version & 0xC0) == 0x00) { if ((version & 0x1) != 0) { m_Base = reader.ReadUShort(); } if ((version & 0x2) != 0) { m_Cap = reader.ReadUShort(); } else { m_Cap = 1000; } if ((version & 0x4) != 0) { Lock = (SkillLock)reader.ReadByte(); } if ((version & 0x8) != 0) { VolumeLearned = reader.ReadInt(); } if ((version & 0x10) != 0) { NextGGSGain = reader.ReadDateTime(); } } break; } } if (Lock < SkillLock.Up || Lock > SkillLock.Locked) { Console.WriteLine("Bad skill lock -> {0}.{1}", owner.Owner, Lock); Lock = SkillLock.Up; } }