Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
            public override void Deserialize( GenericReader reader )
            {
                base.Deserialize( reader );

                /*int version = */reader.ReadInt();

                m_Mobiles = reader.ReadMobileListOrNull();

                if (m_Mobiles != null) {
                    for ( int i = 0; i < m_Mobiles.Count; ++i )
                        ((Mobile)m_Mobiles[i]).Delete();

                    m_Mobiles.Clear();
                    m_Mobiles = null;
                }

                for ( int i = Items.Count - 1; i >= 0; --i )
                {
                    if ( i < Items.Count )
                        ((Item)Items[i]).Delete();
                }

                if ( m_Cache == null )
                    m_Cache = this;
                else
                    Delete();
            }
Ejemplo n.º 3
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            m_CurrentAI = (AIType)reader.ReadInt();
            m_DefaultAI = (AIType)reader.ReadInt();

            m_iRangePerception = reader.ReadInt();
            m_iRangeFight = reader.ReadInt();

            m_iTeam = reader.ReadInt();

            m_dActiveSpeed = reader.ReadDouble();
            m_dPassiveSpeed = reader.ReadDouble();
            m_dCurrentSpeed = reader.ReadDouble();

            double activeSpeed = m_dActiveSpeed;
            double passiveSpeed = m_dPassiveSpeed;

            SpeedInfo.GetSpeeds( this, ref activeSpeed, ref passiveSpeed );

            bool isStandardActive = false;
            for ( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i )
                isStandardActive = ( m_dActiveSpeed == m_StandardActiveSpeeds[i] );

            bool isStandardPassive = false;
            for ( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i )
                isStandardPassive = ( m_dPassiveSpeed == m_StandardPassiveSpeeds[i] );

            if ( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed )
                m_dCurrentSpeed = activeSpeed;
            else if ( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed )
                m_dCurrentSpeed = passiveSpeed;

            if ( isStandardActive )
                m_dActiveSpeed = activeSpeed;

            if ( isStandardPassive )
                m_dPassiveSpeed = passiveSpeed;

            if ( m_iRangePerception == OldRangePerception )
                m_iRangePerception = DefaultRangePerception;

            m_pHome.X = reader.ReadInt();
            m_pHome.Y = reader.ReadInt();
            m_pHome.Z = reader.ReadInt();

            if ( version >= 1 )
            {
                m_iRangeHome = reader.ReadInt();

             				m_arSpellAttack = ReadTypeArray(reader);
             				m_arSpellDefense = ReadTypeArray(reader);
            }
            else
            {
                m_iRangeHome = 0;
            }

            if ( version >= 2 )
            {
                m_FightMode = ( FightMode )reader.ReadInt();

                m_bControled = reader.ReadBool();
                m_ControlMaster = reader.ReadMobile();
                m_ControlTarget = reader.ReadMobile();
                m_ControlDest = reader.ReadPoint3D();
                m_ControlOrder = (OrderType) reader.ReadInt();

                m_dMinTameSkill = reader.ReadDouble();

                if ( version < 9 )
                    reader.ReadDouble();

                m_bTamable = reader.ReadBool();
                m_bSummoned = reader.ReadBool();

                if ( m_bSummoned )
                {
                    m_SummonEnd = reader.ReadDeltaTime();
                    new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - Core.Now ).Start();
                }

                m_iControlSlots = reader.ReadInt();
            }
            else
            {
                m_FightMode = FightMode.Closest;

                m_bControled = false;
                m_ControlMaster = null;
                m_ControlTarget = null;
                m_ControlOrder = OrderType.None;
            }

            if ( version >= 3 )
                m_Loyalty = (PetLoyalty)reader.ReadInt();
            else
                m_Loyalty = PetLoyalty.WonderfullyHappy;

            if ( version >= 4 )
                m_CurrentWayPoint = reader.ReadItem() as WayPoint;

            if ( version >= 5 )
                m_SummonMaster = reader.ReadMobile();

            if ( version >= 6 )
            {
                m_HitsMax = reader.ReadInt();
                m_StamMax = reader.ReadInt();
                m_ManaMax = reader.ReadInt();
                m_DamageMin = reader.ReadInt();
                m_DamageMax = reader.ReadInt();
            }

            if ( version >= 7 )
            {
                m_PhysicalResistance = reader.ReadInt();
                m_PhysicalDamage = reader.ReadInt();

                m_FireResistance = reader.ReadInt();
                m_FireDamage = reader.ReadInt();

                m_ColdResistance = reader.ReadInt();
                m_ColdDamage = reader.ReadInt();

                m_PoisonResistance = reader.ReadInt();
                m_PoisonDamage = reader.ReadInt();

                m_EnergyResistance = reader.ReadInt();
                m_EnergyDamage = reader.ReadInt();
            }

            if ( version >= 8 )
                m_Owners = reader.ReadMobileListOrNull();

            if ( version >= 10 )
            {
                m_IsDeadPet = reader.ReadBool();
                m_IsBonded = reader.ReadBool();
                m_BondingBegin = reader.ReadDateTime();
                m_OwnerAbandonTime = reader.ReadDateTime();
            }

            if ( version >= 11 )
                m_HasGeneratedLoot = reader.ReadBool();
            else
                m_HasGeneratedLoot = true;

            if ( version >= 12 )
                m_Paragon = reader.ReadBool();
            else
                m_Paragon = false;

            if ( version >= 13 && reader.ReadBool() )
                m_Friends = reader.ReadMobileList();
            else if ( version < 13 && m_ControlOrder >= OrderType.Unfriend )
                ++m_ControlOrder;

            CheckStatTimers();

            ChangeAIType(m_CurrentAI);

            AddFollowers();

            if ( IsAnimatedDead )
                Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this );
        }
Ejemplo n.º 4
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
            int version = reader.ReadInt();

            switch ( version )
            {
                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 ArrayList();

                        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 )
                    {
                        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.ReadMobileListOrNull();
                    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.ReadMobileListOrNull();
                    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;
                }
            }

            // Professions weren't verified on 1.0 RC0
            if ( !CharacterCreation.VerifyProfession( m_Profession ) )
                m_Profession = 0;

            if ( m_BOBFilter == null )
                m_BOBFilter = new Engines.BulkOrders.BOBFilter();

            IList list = this.StabledOrNull;
            for (int i = 0; list != null && i < list.Count; ++i)
            {
                BaseCreature bc = list[i] as BaseCreature;

                if ( bc != null )
                    bc.IsStabled = true;
            }
        }
Ejemplo n.º 5
0
        public override void Deserialize( GenericReader reader )
        {
            int version = reader.ReadInt();

            switch ( version )
            {
                case 4:
                {
                    m_AllyDeclarations = reader.ReadGuildListOrNull();
                    m_AllyInvitations = reader.ReadGuildListOrNull();

                    goto case 3;
                }
                case 3:
                {
                    m_TypeLastChange = reader.ReadDateTime();

                    goto case 2;
                }
                case 2:
                {
                    m_Type = (GuildType)reader.ReadInt();

                    goto case 1;
                }
                case 1:
                {
                    m_LastFealty = reader.ReadDateTime();

                    goto case 0;
                }
                case 0:
                {
                    m_Leader = reader.ReadMobile();
                    m_Name = reader.ReadString();
                    m_Abbreviation = reader.ReadString();

                    m_Allies = reader.ReadGuildListOrNull();
                    m_Enemies = reader.ReadGuildListOrNull();
                    m_WarDeclarations = reader.ReadGuildListOrNull();
                    m_WarInvitations = reader.ReadGuildListOrNull();

                    m_Members = reader.ReadMobileList();
                    m_Candidates = reader.ReadMobileListOrNull();
                    m_Accepted = reader.ReadMobileListOrNull();

                    m_Guildstone = reader.ReadItem();
                    m_Teleporter = reader.ReadItem();

                    m_Charter = reader.ReadString();
                    m_Website = reader.ReadString();

                    break;
                }
            }

            if ( m_Guildstone == null || m_Members.Count == 0 )
                Disband();
        }