Exemplo n.º 1
0
		public void SetCustomFlag(CustomPlayerFlag flag, bool value)
		{
			if (value)
			{
				CustomFlags |= flag;
			}
			else
			{
				CustomFlags &= ~flag;
			}
		}
 public bool GetCustomFlag( CustomPlayerFlag flag )
 {
     return ( (m_CustomFlags & flag) != 0 );
 }
Exemplo n.º 3
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 ) );
        }