public void SetCustomFlag(CustomPlayerFlag flag, bool value) { if (value) { CustomFlags |= flag; } else { CustomFlags &= ~flag; } }
public bool GetCustomFlag( CustomPlayerFlag flag ) { return ( (m_CustomFlags & flag) != 0 ); }
public bool GetCustomFlag(CustomPlayerFlag flag) { return CustomFlags.HasFlag(flag); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 36: { m_PeacedUntil = reader.ReadDateTime(); goto case 35; } case 35: { m_AnkhNextUse = reader.ReadDateTime(); goto case 34; } case 34: { m_AutoStabled = reader.ReadStrongMobileList(); m_CustomFlags = (CustomPlayerFlag)reader.ReadEncodedInt(); if ( GetCustomFlag( CustomPlayerFlag.VisibilityList ) ) { int length = reader.ReadInt(); for( int i = 0; i < length; i++ ) VisibilityList.Add( reader.ReadMobile() ); } if ( GetCustomFlag( CustomPlayerFlag.StaffLevel ) ) AccessLevelToggler.m_Mobiles.Add( this, new AccessLevelMod( (AccessLevel)reader.ReadInt() ) ); if ( GetCustomFlag( CustomPlayerFlag.StaffRank ) ) m_StaffRank = (StaffRank)reader.ReadInt(); if ( GetCustomFlag( CustomPlayerFlag.DisplayStaffRank ) ) m_StaffTitle = reader.ReadString(); goto case 33; } case 33: // Added by Blady for Sphynx { m_FortuneType = reader.ReadEncodedInt(); if ( m_FortuneType > 0 ) { m_FortunePower = reader.ReadEncodedInt(); FortuneExpire = reader.ReadDateTime(); if ( FortuneExpire > DateTime.Now ) { ApplyFortune( m_FortuneType, m_FortunePower ); FortuneGump.Told.Add( this ); } else m_FortuneType = m_FortunePower = 0; } goto case 32; } case 32: //PowerHour added by Blady { m_PowerHourStart = reader.ReadDeltaTime(); goto case 31; } //*** Edit by Sunny ***\\ case 31: case 30: { m_OSIHouseLoading = reader.ReadBool(); goto case 29; } //*** End edit ***\\ case 29: { 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 28; } case 28: { m_LastHonorLoss = reader.ReadDeltaTime(); goto case 27; } case 27: { m_ChampionTitles = new ChampionTitleInfo(reader); goto case 26; } case 26: { m_LastValorLoss = reader.ReadDateTime(); goto case 25; } case 25: { m_ToTItemsTurnedIn = reader.ReadEncodedInt(); m_ToTTotalMonsterFame = reader.ReadInt(); goto case 24; } case 24: { m_AllianceMessageHue = reader.ReadEncodedInt(); m_GuildMessageHue = reader.ReadEncodedInt(); goto case 23; } case 23: { 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 22; } case 22: { if (version < 31) reader.ReadInt(); goto case 21; } // *** Added for Hunting Contracts *** case 21: { m_NextHuntContract = reader.ReadDateTime(); goto case 20; } // *** *** // *** Added for Honor *** case 20: { if (version < 29) { double m_HonorGain = reader.ReadDouble(); DateTime m_LastHonorLoss = reader.ReadDateTime(); DateTime m_LastEmbrace = reader.ReadDateTime(); } goto case 19; } // *** *** // *** Added for Valor *** case 19: { if (version < 29) { double m_ValorGain = reader.ReadDouble(); DateTime m_LastValorLoss = reader.ReadDeltaTime(); } 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_PaidInsurance list case 12: { m_BOBFilter = new Engines.BulkOrders.BOBFilter( reader ); goto case 11; } case 11: { if ( version < 13 ) { List<Item> paid = reader.ReadStrongItemList(); for ( int i = 0; i < paid.Count; ++i ) paid[i].PaidInsurance = 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 < 34 ) 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(); if ( AccessLevel > AccessLevel.Player ) m_IgnoreMobiles = true; 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 ) ); }