Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public override void Deserialize( GenericReader reader )
- {
- base.Deserialize( reader );
- int version = reader.ReadInt();
- switch ( version )
- {
- case 28:
- {
- m_JailTime = reader.ReadEncodedInt();
- goto case 27;
- }
- case 27:
- {
- m_AnkhNextUse = reader.ReadDateTime();
- goto case 26;
- }
- case 26:
- {
- m_AutoStabled = reader.ReadStrongMobileList();
- goto case 25;
- }
- case 25:
- {
- int recipeCount = reader.ReadInt();
- if( recipeCount > 0 )
- {
- m_AcquiredRecipes = new Dictionary<int, bool>();
- for( int i = 0; i < recipeCount; i++ )
- {
- int r = reader.ReadInt();
- if( reader.ReadBool() ) //Don't add in recipies which we haven't gotten or have been removed
- m_AcquiredRecipes.Add( r, true );
- }
- }
- goto case 24;
- }
- case 24:
- {
- m_LastHonorLoss = reader.ReadDeltaTime();
- goto case 23;
- }
- case 23:
- {
- m_ChampionTitles = new ChampionTitleInfo( reader );
- goto case 22;
- }
- case 22:
- {
- m_LastValorLoss = reader.ReadDateTime();
- goto case 21;
- }
- case 21:
- {
- m_ToTItemsTurnedIn = reader.ReadEncodedInt();
- m_ToTTotalMonsterFame = reader.ReadInt();
- goto case 20;
- }
- case 20:
- {
- m_AllianceMessageHue = reader.ReadEncodedInt();
- m_GuildMessageHue = reader.ReadEncodedInt();
- goto case 19;
- }
- case 19:
- {
- int rank = reader.ReadEncodedInt();
- int maxRank = Guilds.RankDefinition.Ranks.Length -1;
- if( rank > maxRank )
- rank = maxRank;
- m_GuildRank = Guilds.RankDefinition.Ranks[rank];
- m_LastOnline = reader.ReadDateTime();
- goto case 18;
- }
- case 18:
- {
- m_SolenFriendship = (SolenFriendship) reader.ReadEncodedInt();
- goto case 17;
- }
- case 17: // changed how DoneQuests is serialized
- case 16:
- {
- m_Quest = QuestSerializer.DeserializeQuest( reader );
- if ( m_Quest != null )
- m_Quest.From = this;
- int count = reader.ReadEncodedInt();
- if ( count > 0 )
- {
- m_DoneQuests = new List<QuestRestartInfo>();
- for ( int i = 0; i < count; ++i )
- {
- Type questType = QuestSerializer.ReadType( QuestSystem.QuestTypes, reader );
- DateTime restartTime;
- if ( version < 17 )
- restartTime = DateTime.MaxValue;
- else
- restartTime = reader.ReadDateTime();
- m_DoneQuests.Add( new QuestRestartInfo( questType, restartTime ) );
- }
- }
- m_Profession = reader.ReadEncodedInt();
- goto case 15;
- }
- case 15:
- {
- m_LastCompassionLoss = reader.ReadDeltaTime();
- goto case 14;
- }
- case 14:
- {
- m_CompassionGains = reader.ReadEncodedInt();
- if ( m_CompassionGains > 0 )
- m_NextCompassionDay = reader.ReadDeltaTime();
- goto case 13;
- }
- case 13: // just removed m_PayedInsurance list
- case 12:
- {
- m_BOBFilter = new Engines.BulkOrders.BOBFilter( reader );
- goto case 11;
- }
- case 11:
- {
- if ( version < 13 )
- {
- List<Item> payed = reader.ReadStrongItemList();
- for ( int i = 0; i < payed.Count; ++i )
- payed[i].PayedInsurance = true;
- }
- goto case 10;
- }
- case 10:
- {
- if ( reader.ReadBool() )
- {
- m_HairModID = reader.ReadInt();
- m_HairModHue = reader.ReadInt();
- m_BeardModID = reader.ReadInt();
- m_BeardModHue = reader.ReadInt();
- // 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.ReadStrongMobileList();
- goto case 6;
- }
- case 6:
- {
- NextTailorBulkOrder = reader.ReadTimeSpan();
- goto case 5;
- }
- case 5:
- {
- NextSmithBulkOrder = reader.ReadTimeSpan();
- goto case 4;
- }
- case 4:
- {
- m_LastJusticeLoss = reader.ReadDeltaTime();
- m_JusticeProtectors = reader.ReadStrongMobileList();
- goto case 3;
- }
- case 3:
- {
- m_LastSacrificeGain = reader.ReadDeltaTime();
- m_LastSacrificeLoss = reader.ReadDeltaTime();
- m_AvailableResurrects = reader.ReadInt();
- goto case 2;
- }
- case 2:
- {
- m_Flags = (PlayerFlag)reader.ReadInt();
- goto case 1;
- }
- case 1:
- {
- m_LongTermElapse = reader.ReadTimeSpan();
- m_ShortTermElapse = reader.ReadTimeSpan();
- m_GameTime = reader.ReadTimeSpan();
- goto case 0;
- }
- case 0:
- {
- if( version < 26 )
- m_AutoStabled = new List<Mobile>();
- break;
- }
- }
- // Professions weren't verified on 1.0 RC0
- if ( !CharacterCreation.VerifyProfession( m_Profession ) )
- m_Profession = 0;
- if ( m_PermaFlags == null )
- m_PermaFlags = new List<Mobile>();
- if ( m_JusticeProtectors == null )
- m_JusticeProtectors = new List<Mobile>();
- if ( m_BOBFilter == null )
- m_BOBFilter = new Engines.BulkOrders.BOBFilter();
- if( m_GuildRank == null )
- m_GuildRank = Guilds.RankDefinition.Member; //Default to member if going from older verstion to new version (only time it should be null)
- if( m_LastOnline == DateTime.MinValue && Account != null )
- m_LastOnline = ((Account)Account).LastLogin;
- if( m_ChampionTitles == null )
- m_ChampionTitles = new ChampionTitleInfo();
- List<Mobile> list = this.Stabled;
- for ( int i = 0; i < list.Count; ++i )
- {
- BaseCreature bc = list[i] as BaseCreature;
- if ( bc != null )
- bc.IsStabled = true;
- }
- CheckAtrophies( this );
- if( Hidden ) //Hiding is the only buff where it has an effect that's serialized.
- AddBuff( new BuffInfo( BuffIcon.HidingAndOrStealth, 1075655 ) );
- }
- public override void Serialize( GenericWriter writer )
- {
- //cleanup our anti-macro table
- foreach ( Hashtable t in m_AntiMacroTable.Values )
- {
- ArrayList remove = new ArrayList();
- foreach ( CountAndTimeStamp time in t.Values )
- {
- if ( time.TimeStamp + SkillCheck.AntiMacroExpire <= DateTime.Now )
- remove.Add( time );
- }
- for (int i=0;i<remove.Count;++i)
- t.Remove( remove[i] );
- }
- //decay our kills
- if ( m_ShortTermElapse < this.GameTime )
- {
- m_ShortTermElapse += TimeSpan.FromHours( 8 );
- if ( ShortTermMurders > 0 )
- --ShortTermMurders;
- }
- if ( m_LongTermElapse < this.GameTime )
- {
- m_LongTermElapse += TimeSpan.FromHours( 40 );
- if ( Kills > 0 )
- --Kills;
- }
- CheckAtrophies( this );
- base.Serialize( writer );
- writer.Write( (int) 28 ); // version
- writer.Write( (DateTime) m_AnkhNextUse );
- writer.Write( m_AutoStabled, true );
- if( m_AcquiredRecipes == null )
- {
- writer.Write( (int)0 );
- }
- else
- {
- writer.Write( m_AcquiredRecipes.Count );
- foreach( KeyValuePair<int, bool> kvp in m_AcquiredRecipes )
- {
- writer.Write( kvp.Key );
- writer.Write( kvp.Value );
- }
- }
- writer.WriteDeltaTime( m_LastHonorLoss );
- ChampionTitleInfo.Serialize( writer, m_ChampionTitles );
- writer.Write( m_LastValorLoss );
- writer.WriteEncodedInt( m_ToTItemsTurnedIn );
- writer.Write( m_ToTTotalMonsterFame ); //This ain't going to be a small #.
- writer.WriteEncodedInt( m_AllianceMessageHue );
- writer.WriteEncodedInt( m_GuildMessageHue );
- writer.WriteEncodedInt( m_JailTime );
- writer.WriteEncodedInt( m_GuildRank.Rank );
- writer.Write( m_LastOnline );
- writer.WriteEncodedInt( (int) m_SolenFriendship );
- QuestSerializer.Serialize( m_Quest, writer );
- if ( m_DoneQuests == null )
- {
- writer.WriteEncodedInt( (int) 0 );
- }
- else
- {
- writer.WriteEncodedInt( (int) m_DoneQuests.Count );
- for ( int i = 0; i < m_DoneQuests.Count; ++i )
- {
- QuestRestartInfo restartInfo = m_DoneQuests[i];
- QuestSerializer.Write( (Type) restartInfo.QuestType, QuestSystem.QuestTypes, writer );
- writer.Write( (DateTime) restartInfo.RestartTime );
- }
- }
- writer.WriteEncodedInt( (int) m_Profession );
- writer.WriteDeltaTime( m_LastCompassionLoss );
- writer.WriteEncodedInt( m_CompassionGains );
- if ( m_CompassionGains > 0 )
- writer.WriteDeltaTime( m_NextCompassionDay );
- m_BOBFilter.Serialize( writer );
- bool useMods = ( m_HairModID != -1 || m_BeardModID != -1 );
- writer.Write( useMods );
- if ( useMods )
- {
- writer.Write( (int) m_HairModID );
- writer.Write( (int) m_HairModHue );
- writer.Write( (int) m_BeardModID );
- writer.Write( (int) m_BeardModHue );
- }
- writer.Write( SavagePaintExpiration );
- writer.Write( (int) m_NpcGuild );
- writer.Write( (DateTime) m_NpcGuildJoinTime );
- writer.Write( (TimeSpan) m_NpcGuildGameTime );
- writer.Write( m_PermaFlags, true );
- writer.Write( NextTailorBulkOrder );
- writer.Write( NextSmithBulkOrder );
- writer.WriteDeltaTime( m_LastJusticeLoss );
- writer.Write( m_JusticeProtectors, true );
- writer.WriteDeltaTime( m_LastSacrificeGain );
- writer.WriteDeltaTime( m_LastSacrificeLoss );
- writer.Write( m_AvailableResurrects );
- writer.Write( (int) m_Flags );
- writer.Write( m_LongTermElapse );
- writer.Write( m_ShortTermElapse );
- writer.Write( this.GameTime );
- }
Add Comment
Please, Sign In to add comment