Example #1
0
        public MobileStatus( Mobile beholder, Mobile beheld )
            : base(0x11)
        {
            string name = beheld.Name;
            if ( name == null ) name = "";

            this.EnsureCapacity( 43 + (beholder == beheld ? 45 : 0) );

            m_Stream.Write( beheld.Serial );

            m_Stream.WriteAsciiFixed( name, 30 );

            if ( beholder == beheld )
                WriteAttr( beheld.Hits, beheld.HitsMax );
            else
                WriteAttrNorm( beheld.Hits, beheld.HitsMax );

            m_Stream.Write( beheld.CanBeRenamedBy( beholder ) );

            if ( beholder == beheld )
            {
                m_Stream.Write( (byte) (m_SendAosInfo ? 0x04 : 0x03) );

                m_Stream.Write( beheld.Female );

                m_Stream.Write( (short) beheld.Str );
                m_Stream.Write( (short) beheld.Dex );
                m_Stream.Write( (short) beheld.Int );

                WriteAttr( beheld.Stam, beheld.StamMax );
                WriteAttr( beheld.Mana, beheld.ManaMax );

                m_Stream.Write( (int) beheld.TotalGold );
                m_Stream.Write( (short) (Core.AOS ? beheld.PhysicalResistance : (int)(beheld.ArmorRating + 0.5)) );
                m_Stream.Write( (short) (Mobile.BodyWeight + beheld.TotalWeight) );

                m_Stream.Write( (short) beheld.StatCap );

                m_Stream.Write( (byte) beheld.Followers );
                m_Stream.Write( (byte) beheld.FollowersMax );

                if ( m_SendAosInfo )
                {
                    m_Stream.Write( (short) beheld.FireResistance ); // Fire
                    m_Stream.Write( (short) beheld.ColdResistance ); // Cold
                    m_Stream.Write( (short) beheld.PoisonResistance ); // Poison
                    m_Stream.Write( (short) beheld.EnergyResistance ); // Energy
                    m_Stream.Write( (short) beheld.Luck ); // Luck

                    IWeapon weapon = beheld.Weapon;

                    int min = 0, max = 0;

                    if ( weapon != null )
                        weapon.GetStatusDamage( beheld, out min, out max );

                    m_Stream.Write( (short) min ); // Damage min
                    m_Stream.Write( (short) max ); // Damage max

                    m_Stream.Write( (int) beheld.TithingPoints );
                }
            }
            else
            {
                m_Stream.Write( (byte) 0x00 );
            }
        }
Example #2
0
        public MobileStatusExtended( Mobile m )
            : base(0x11)
        {
            string name = m.Name;
            if ( name == null ) name = "";

            this.EnsureCapacity( 88 );

            m_Stream.Write( (int) m.Serial );
            m_Stream.WriteAsciiFixed( name, 30 );

            m_Stream.Write( (short) m.Hits );
            m_Stream.Write( (short) m.HitsMax );

            m_Stream.Write( m.CanBeRenamedBy( m ) );

            m_Stream.Write( (byte) (MobileStatus.SendAosInfo ? 0x04 : 0x03) ); // type

            m_Stream.Write( m.Female );

            m_Stream.Write( (short) m.Str );
            m_Stream.Write( (short) m.Dex );
            m_Stream.Write( (short) m.Int );

            m_Stream.Write( (short) m.Stam );
            m_Stream.Write( (short) m.StamMax );

            m_Stream.Write( (short) m.Mana );
            m_Stream.Write( (short) m.ManaMax );

            m_Stream.Write( (int) m.TotalGold );
            m_Stream.Write( (short) (Core.AOS ? m.PhysicalResistance : (int)(m.ArmorRating + 0.5)) );
            m_Stream.Write( (short) (Mobile.BodyWeight + m.TotalWeight) );

            m_Stream.Write( (short) m.StatCap );

            m_Stream.Write( (byte) m.Followers );
            m_Stream.Write( (byte) m.FollowersMax );

            if ( MobileStatus.SendAosInfo )
            {
                m_Stream.Write( (short) m.FireResistance ); // Fire
                m_Stream.Write( (short) m.ColdResistance ); // Cold
                m_Stream.Write( (short) m.PoisonResistance ); // Poison
                m_Stream.Write( (short) m.EnergyResistance ); // Energy
                m_Stream.Write( (short) m.Luck ); // Luck

                IWeapon weapon = m.Weapon;

                int min = 0, max = 0;

                if ( weapon != null )
                    weapon.GetStatusDamage( m, out min, out max );

                m_Stream.Write( (short) min ); // Damage min
                m_Stream.Write( (short) max ); // Damage max

                m_Stream.Write( (int) m.TithingPoints );
            }
        }
Example #3
0
		public MobileStatus(Mobile beholder, Mobile beheld)
			: base(0x11)
		{
			string name = beheld.Name;
			if (name == null) name = "";

			bool sendMaxWeight = (Core.ML && beheld.NetState != null && beheld.NetState.SupportsExpansion(Expansion.ML));

			this.EnsureCapacity(43 + (beholder == beheld ? (sendMaxWeight ? 48 : 45) : 0));

			m_Stream.Write(beheld.Serial);

			m_Stream.WriteAsciiFixed(name, 30);

			if (beholder == beheld)
				WriteAttr(beheld.Hits, beheld.HitsMax);
			else
				WriteAttrNorm(beheld.Hits, beheld.HitsMax);

			m_Stream.Write(beheld.CanBeRenamedBy(beholder));

			if (beholder == beheld)
			{
				m_Stream.Write((byte)(sendMaxWeight ? 0x05 : Core.AOS ? 0x04 : 0x03)); // type

				m_Stream.Write(beheld.Female);

				m_Stream.Write((short)beheld.Str);
				m_Stream.Write((short)beheld.Dex);
				m_Stream.Write((short)beheld.Int);

				WriteAttr(beheld.Stam, beheld.StamMax);
				WriteAttr(beheld.Mana, beheld.ManaMax);

				m_Stream.Write((int)beheld.TotalGold);
				//m_Stream.Write( (short) (Core.AOS ? beheld.PhysicalResistance : (int)(beheld.ArmorRating + 0.5)) );
				m_Stream.Write((short)((int)(beheld.ArmorRating + 0.5)));
				m_Stream.Write((short)(Mobile.BodyWeight + beheld.TotalWeight));

				if (sendMaxWeight)
				{
					//SMD: we're never ML, so we shouldn't need this!
					//m_Stream.Write( (short)beheld.MaxWeight );
					//m_Stream.Write( (byte)(beheld.Race.RaceID + 1) );	// Would be 0x00 if it's a non-ML enabled account but...
				}

				m_Stream.Write((short)beheld.StatCap);

				m_Stream.Write((byte)beheld.Followers);
				m_Stream.Write((byte)beheld.FollowersMax);

				if (Core.AOS)
				{
					//SMD: We're never AOS, so we shouldn't need this!
					//					m_Stream.Write( (short) beheld.FireResistance ); // Fire
					//					m_Stream.Write( (short) beheld.ColdResistance ); // Cold
					//					m_Stream.Write( (short) beheld.PoisonResistance ); // Poison
					//					m_Stream.Write( (short) beheld.EnergyResistance ); // Energy
					//					m_Stream.Write( (short) beheld.Luck ); // Luck
					//
					//					IWeapon weapon = beheld.Weapon;
					//
					//					int min = 0, max = 0;
					//
					//					if ( weapon != null )
					//						weapon.GetStatusDamage( beheld, out min, out max );
					//
					//					m_Stream.Write( (short) min ); // Damage min
					//					m_Stream.Write( (short) max ); // Damage max
					//
					//					m_Stream.Write( (int) beheld.TithingPoints );
				}
			}
			else
			{
				m_Stream.Write((byte)0x00);
			}
		}
Example #4
0
        public MobileStatusExtended( Mobile m, NetState ns )
            : base(0x11)
        {
            string name = m.Name;
            if ( name == null ) name = "";

            int type;

            if ( Core.HS && ns != null && ns.ExtendedStatus )
            {
                type = 6;
                EnsureCapacity( 121 );
            }
            else if ( Core.ML && ns != null && ns.SupportsExpansion( Expansion.ML ) )
            {
                type = 5;
                EnsureCapacity( 91 );
            }
            else
            {
                type = Core.AOS ? 4 : 3;
                EnsureCapacity( 88 );
            }

            m_Stream.Write( (int) m.Serial );
            m_Stream.WriteAsciiFixed( name, 30 );

            m_Stream.Write( (short) m.Hits );
            m_Stream.Write( (short) m.HitsMax );

            m_Stream.Write( m.CanBeRenamedBy( m ) );

            m_Stream.Write( (byte) type );

            m_Stream.Write( m.Female );

            m_Stream.Write( (short) m.Str );
            m_Stream.Write( (short) m.Dex );
            m_Stream.Write( (short) m.Int );

            m_Stream.Write( (short) m.Stam );
            m_Stream.Write( (short) m.StamMax );

            m_Stream.Write( (short) m.Mana );
            m_Stream.Write( (short) m.ManaMax );

            m_Stream.Write( (int) m.TotalGold );
            m_Stream.Write( (short) (Core.AOS ? m.PhysicalResistance : (int)(m.ArmorRating + 0.5)) );
            m_Stream.Write( (short) (Mobile.BodyWeight + m.TotalWeight) );

            if ( type >= 5 )
            {
                m_Stream.Write( (short)m.MaxWeight );
                m_Stream.Write( (byte)(m.Race.RaceID + 1));	// Would be 0x00 if it's a non-ML enabled account but...
            }

            m_Stream.Write( (short) m.StatCap );

            m_Stream.Write( (byte) m.Followers );
            m_Stream.Write( (byte) m.FollowersMax );

            if ( type >= 4 )
            {
                m_Stream.Write( (short) m.FireResistance ); // Fire
                m_Stream.Write( (short) m.ColdResistance ); // Cold
                m_Stream.Write( (short) m.PoisonResistance ); // Poison
                m_Stream.Write( (short) m.EnergyResistance ); // Energy
                m_Stream.Write( (short) m.Luck ); // Luck

                IWeapon weapon = m.Weapon;

                int min = 0, max = 0;

                if ( weapon != null )
                    weapon.GetStatusDamage( m, out min, out max );

                m_Stream.Write( (short) min ); // Damage min
                m_Stream.Write( (short) max ); // Damage max

                m_Stream.Write( (int) m.TithingPoints );
            }

            if ( type >= 6 )
            {
                for ( int i = 0; i < 15; ++i )
                    m_Stream.Write( (short) m.GetAOSStatus( i ) );
            }
        }
        public MobileStatusExtended( Mobile m, NetState ns )
            : base(0x11)
        {
            string name = m.Name;
            if ( name == null ) name = "";

            bool sendMLExtended = (Core.ML && ns != null && ns.SupportsExpansion( Expansion.ML ));

            #region UOSA: KR Support
            this.EnsureCapacity((m.NetState != null && m.NetState.IsKRClient) ? 161 : (sendMLExtended ? 91 : 88));
            #endregion

            m_Stream.Write( (int) m.Serial );
            m_Stream.WriteAsciiFixed( name, 30 );

            m_Stream.Write( (short) m.Hits );
            m_Stream.Write( (short) m.HitsMax );

            m_Stream.Write( m.CanBeRenamedBy( m ) );

            #region UOSA: KR Support
            m_Stream.Write((byte)((m.NetState != null && m.NetState.IsKRClient) ? 0x06 : (sendMLExtended ? 0x05 : Core.AOS ? 0x04 : 0x03))); // type
            #endregion

            m_Stream.Write( m.Female );

            m_Stream.Write( (short) m.Str );
            m_Stream.Write( (short) m.Dex );
            m_Stream.Write( (short) m.Int );

            m_Stream.Write( (short) m.Stam );
            m_Stream.Write( (short) m.StamMax );

            m_Stream.Write( (short) m.Mana );
            m_Stream.Write( (short) m.ManaMax );

            m_Stream.Write( (int) m.TotalGold );
            m_Stream.Write( (short) (Core.AOS ? m.PhysicalResistance : (int)(m.ArmorRating + 0.5)) );
            m_Stream.Write( (short) (Mobile.BodyWeight + m.TotalWeight) );

            if( sendMLExtended )
            {
                m_Stream.Write( (short)m.MaxWeight );
                m_Stream.Write( (byte)(m.Race.RaceID + 1));	// Would be 0x00 if it's a non-ML enabled account but...
            }

            m_Stream.Write( (short) m.StatCap );

            m_Stream.Write( (byte) m.Followers );
            m_Stream.Write( (byte) m.FollowersMax );

            if ( Core.AOS )
            {
                m_Stream.Write( (short) m.FireResistance ); // Fire
                m_Stream.Write( (short) m.ColdResistance ); // Cold
                m_Stream.Write( (short) m.PoisonResistance ); // Poison
                m_Stream.Write( (short) m.EnergyResistance ); // Energy
                m_Stream.Write( (short) m.Luck ); // Luck

                IWeapon weapon = m.Weapon;

                int min = 0, max = 0;

                if ( weapon != null )
                    weapon.GetStatusDamage( m, out min, out max );

                m_Stream.Write( (short) min ); // Damage min
                m_Stream.Write( (short) max ); // Damage max

                m_Stream.Write( (int) m.TithingPoints );
            }

            #region UOSA: KR Support
            if (m.NetState != null && m.NetState.IsKRClient)
            {
                m_Stream.Write((short)m.AttackChance); // Hit Chance Increase
                m_Stream.Write((short)m.WeaponSpeed); // Swing Speed Increase
                m_Stream.Write((short)m.WeaponDamage); // Damage Increase
                m_Stream.Write((short)m.LowerRegCost); // Lower Reagent Cost
                m_Stream.Write((short)m.RegenHits); // Hit Points Regeneration
                m_Stream.Write((short)m.RegenStam); // Stamina Regeneration
                m_Stream.Write((short)m.RegenMana); // Mana Regeneration
                m_Stream.Write((short)m.ReflectPhysical); // Reflect Physical Damage
                m_Stream.Write((short)m.EnhancePotions); // Enhance Potions
                m_Stream.Write((short)m.DefendChance); // Defense Chance Increase
                m_Stream.Write((short)m.SpellDamage); // Spell Damage Increase
                m_Stream.Write((short)m.CastRecovery); // Faster Cast Recovery
                m_Stream.Write((short)m.CastSpeed); // Faster Casting
                m_Stream.Write((short)m.LowerManaCost); // Lower Mana Cost
                m_Stream.Write((short)m.BonusStr); // Strength Increase
                m_Stream.Write((short)m.BonusDex); // Dexterity Increase
                m_Stream.Write((short)m.BonusInt); // Intelligence Increase
                m_Stream.Write((short)m.BonusHits); // Hit Points Increase
                m_Stream.Write((short)m.BonusStam); // Stamina Increase
                m_Stream.Write((short)m.BonusMana); // Mana Increase
                m_Stream.Write((short)m.MaxHitIncrease); // Maximum Hit Points Increase
                m_Stream.Write((short)m.MaxStamIncrease); // Maximum Stamina Increase
                m_Stream.Write((short)m.MaxManaIncrease); // Maximum Mana Increase
            }
            #endregion
        }
Example #6
0
		public MobileStatusExtended(Mobile m)
			: base(0x11)
		{
			string name = m.Name;
			if (name == null) name = "";

			bool sendMaxWeight = (Core.ML && m.NetState != null && m.NetState.SupportsExpansion(Expansion.ML));


			this.EnsureCapacity(sendMaxWeight ? 91 : 88);

			m_Stream.Write((int)m.Serial);
			m_Stream.WriteAsciiFixed(name, 30);

			m_Stream.Write((short)m.Hits);
			m_Stream.Write((short)m.HitsMax);

			m_Stream.Write(m.CanBeRenamedBy(m));

			m_Stream.Write((byte)(sendMaxWeight ? 0x05 : Core.AOS ? 0x04 : 0x03)); // type

			m_Stream.Write(m.Female);

			m_Stream.Write((short)m.Str);
			m_Stream.Write((short)m.Dex);
			m_Stream.Write((short)m.Int);

			m_Stream.Write((short)m.Stam);
			m_Stream.Write((short)m.StamMax);

			m_Stream.Write((short)m.Mana);
			m_Stream.Write((short)m.ManaMax);

			m_Stream.Write((int)m.TotalGold);
			//m_Stream.Write( (short) (Core.AOS ? m.PhysicalResistance : (int)(m.ArmorRating + 0.5)) );
			m_Stream.Write((short)((int)(m.ArmorRating + 0.5)));
			m_Stream.Write((short)(Mobile.BodyWeight + m.TotalWeight));

			if (sendMaxWeight)
			{
				//SMD: we're never ML, so we shouldn't need this!
				//				m_Stream.Write( (short)m.MaxWeight );
				//				m_Stream.Write( (byte)(m.Race.RaceID + 1));	// Would be 0x00 if it's a non-ML enabled account but...
			}

			m_Stream.Write((short)m.StatCap);

			m_Stream.Write((byte)m.Followers);
			m_Stream.Write((byte)m.FollowersMax);

			if (Core.AOS)
			{
				//SMD: we're never AOS, so we shouldn't need this!
				//                m_Stream.Write( (short) m.FireResistance ); // Fire
				//				m_Stream.Write( (short) m.ColdResistance ); // Cold
				//				m_Stream.Write( (short) m.PoisonResistance ); // Poison
				//				m_Stream.Write( (short) m.EnergyResistance ); // Energy
				//				m_Stream.Write( (short) m.Luck ); // Luck
				//
				//				IWeapon weapon = m.Weapon;
				//
				//				int min = 0, max = 0;
				//
				//				if ( weapon != null )
				//					weapon.GetStatusDamage( m, out min, out max );
				//
				//				m_Stream.Write( (short) min ); // Damage min
				//				m_Stream.Write( (short) max ); // Damage max
				//
				//				m_Stream.Write( (int) m.TithingPoints );
			}
		}
Example #7
0
		public void OnStatsQuery( Mobile beholder, Mobile beheld )
		{
			if ( beholder != beheld && Contains( beholder ) && beholder.Map == beheld.Map && Utility.InUpdateRange( beholder, beheld ) )
			{
				if ( !beholder.CanSee( beheld ) )
					beholder.Send( new MobileStatusCompact( beheld.CanBeRenamedBy( beholder ), beheld ) );

				beholder.Send( new MobileAttributesN( beheld ) );
			}
		}
Example #8
0
        public MobileStatus(Mobile beholder, Mobile beheld, NetState ns)
            : base(0x11)
        {
            string name = beheld.Name;
            if (name == null)
            {
                name = "";
            }

            int type;

            if (beholder != beheld)
            {
                type = 0;
                EnsureCapacity(43);
            }
            else if (Core.HS && ns != null && ns.ExtendedStatus)
            {
                type = 6;
                EnsureCapacity(121);
            }
            else if (Core.ML && ns != null && ns.SupportsExpansion(Expansion.ML))
            {
                type = 5;
                EnsureCapacity(91);
            }
            else
            {
                type = Core.AOS ? 4 : 3;
                EnsureCapacity(88);
            }

            m_Stream.Write(beheld.Serial);

            m_Stream.WriteAsciiFixed(name, 30);

            if (beholder == beheld)
            {
                WriteAttr(beheld.Hits, beheld.HitsMax);
            }
            else
            {
                WriteAttrNorm(beheld.Hits, beheld.HitsMax);
            }

            m_Stream.Write(beheld.CanBeRenamedBy(beholder));

            m_Stream.Write((byte)type);

            if (type > 0)
            {
                m_Stream.Write(beheld.Female);

                m_Stream.Write((short)beheld.Str);
                m_Stream.Write((short)beheld.Dex);
                m_Stream.Write((short)beheld.Int);

                WriteAttr(beheld.Stam, beheld.StamMax);
                WriteAttr(beheld.Mana, beheld.ManaMax);

                m_Stream.Write(beheld.TotalGold);
                m_Stream.Write((short)(Core.AOS ? beheld.PhysicalResistance : (int)(beheld.ArmorRating + 0.5)));
                m_Stream.Write((short)(Mobile.BodyWeight + beheld.TotalWeight));

                if (type >= 5)
                {
                    m_Stream.Write((short)beheld.MaxWeight);
                    m_Stream.Write((byte)(beheld.Race.RaceID + 1)); // Would be 0x00 if it's a non-ML enabled account but...
                }

                m_Stream.Write((short)beheld.StatCap);

                m_Stream.Write((byte)beheld.Followers);
                m_Stream.Write((byte)beheld.FollowersMax);

                if (type >= 4)
                {
                    m_Stream.Write((short)beheld.FireResistance); // Fire
                    m_Stream.Write((short)beheld.ColdResistance); // Cold
                    m_Stream.Write((short)beheld.PoisonResistance); // Poison
                    m_Stream.Write((short)beheld.EnergyResistance); // Energy
                    m_Stream.Write((short)beheld.Luck); // Luck

                    IWeapon weapon = beheld.Weapon;

                    int min = 0, max = 0;

                    if (weapon != null)
                    {
                        weapon.GetStatusDamage(beheld, out min, out max);
                    }

                    m_Stream.Write((short)min); // Damage min
                    m_Stream.Write((short)max); // Damage max

                    m_Stream.Write(beheld.TithingPoints);
                }

                if (type >= 6)
                {
                    for (int i = 0; i < 15; ++i)
                    {
                        m_Stream.Write((short)beheld.GetAOSStatus(i));
                    }
                }
            }
        }
Example #9
0
        public MobileStatus(Mobile beholder, Mobile beheld, NetState ns)
            : base(0x11)
        {
            string name = beheld.Name;
            if (name == null)
                name = "";

            bool sendMLExtended = (Core.ML && ns != null && ns.SupportsExpansion(Expansion.ML));

            this.EnsureCapacity(43 + (beholder == beheld ? (sendMLExtended ? 48 : 45) : 0));

            this.m_Stream.Write(beheld.Serial);

            this.m_Stream.WriteAsciiFixed(name, 30);

            if (beholder == beheld)
                this.WriteAttr(beheld.Hits, beheld.HitsMax);
            else
                this.WriteAttrNorm(beheld.Hits, beheld.HitsMax);

            this.m_Stream.Write(beheld.CanBeRenamedBy(beholder));

            if (beholder == beheld)
            {
                this.m_Stream.Write((byte)(sendMLExtended ? 0x05 : Core.AOS ? 0x04 : 0x03)); // type

                this.m_Stream.Write(beheld.Female);

                this.m_Stream.Write((short)beheld.Str);
                this.m_Stream.Write((short)beheld.Dex);
                this.m_Stream.Write((short)beheld.Int);

                this.WriteAttr(beheld.Stam, beheld.StamMax);
                this.WriteAttr(beheld.Mana, beheld.ManaMax);

                this.m_Stream.Write((int)beheld.TotalGold);
                this.m_Stream.Write((short)(Core.AOS ? beheld.PhysicalResistance : (int)(beheld.ArmorRating + 0.5)));
                this.m_Stream.Write((short)(Mobile.BodyWeight + beheld.TotalWeight));

                if (sendMLExtended)
                {
                    this.m_Stream.Write((short)beheld.MaxWeight);
                    this.m_Stream.Write((byte)(beheld.Race.RaceID + 1));	// Would be 0x00 if it's a non-ML enabled account but...
                }

                this.m_Stream.Write((short)beheld.StatCap);

                this.m_Stream.Write((byte)beheld.Followers);
                this.m_Stream.Write((byte)beheld.FollowersMax);

                if (Core.AOS)
                {
                    this.m_Stream.Write((short)beheld.FireResistance); // Fire
                    this.m_Stream.Write((short)beheld.ColdResistance); // Cold
                    this.m_Stream.Write((short)beheld.PoisonResistance); // Poison
                    this.m_Stream.Write((short)beheld.EnergyResistance); // Energy
                    this.m_Stream.Write((short)beheld.Luck); // Luck

                    IWeapon weapon = beheld.Weapon;

                    int min = 0, max = 0;

                    if (weapon != null)
                        weapon.GetStatusDamage(beheld, out min, out max);

                    this.m_Stream.Write((short)min); // Damage min
                    this.m_Stream.Write((short)max); // Damage max

                    this.m_Stream.Write((int)beheld.TithingPoints);
                }
            }
            else
            {
                this.m_Stream.Write((byte)0x00);
            }
        }
Example #10
0
		public void Add( Mobile m )
		{
			PartyMemberInfo mi = this[m];

			if ( mi == null )
			{
				m_Members.Add( new PartyMemberInfo( m ) );
				m.Party = this;

				Packet memberList = Packet.Acquire( new PartyMemberList( this ) );
				Packet attrs = Packet.Acquire( new MobileAttributesN( m ) );

				for ( int i = 0; i < m_Members.Count; ++i )
				{
					Mobile f = ((PartyMemberInfo)m_Members[i]).Mobile;

					f.Send( memberList );

					if ( f != m )
					{
						f.Send( new MobileStatusCompact( m.CanBeRenamedBy( f ), m ) );
						f.Send( attrs );
						m.Send( new MobileStatusCompact( f.CanBeRenamedBy( m ), f ) );
						m.Send( new MobileAttributesN( f ) );
					}
				}

				Packet.Release( memberList );
				Packet.Release( attrs );
			}
		}
Example #11
0
        public MobileStatus(Mobile beholder, Mobile beheld, NetState ns)
            : base(0x11)
        {
            string name = beheld.Name;
            if (name == null)
            {
                name = "";
            }

            int type;

            // bool isEnhancedClient = beholder.NetState != null && beholder.NetState.Version.IsEnhanced;

            if (beholder != beheld)
            {
                type = 0;
                EnsureCapacity(43);
            }
            //else if (isEnhancedClient)
            //{
            //type = 7;
            //EnsureCapacity(149);
            //}
            else if (Core.HS && ns != null && ns.ExtendedStatus)
            {
                type = 6;
                EnsureCapacity(121);
            }
            else if (Core.ML && ns != null && ns.SupportsExpansion(Expansion.ML))
            {
                type = 5;
                EnsureCapacity(91);
            }
            else
            {
                type = Core.AOS ? 4 : 3;
                EnsureCapacity(88);
            }

            m_Stream.Write(beheld.Serial);

            m_Stream.WriteAsciiFixed(name, 30);

            if (beholder == beheld)
            {
                WriteAttr(beheld.Hits, beheld.HitsMax);
            }
            else
            {
                WriteAttrNorm(beheld.Hits, beheld.HitsMax);
            }

            m_Stream.Write(beheld.CanBeRenamedBy(beholder));

            m_Stream.Write((byte)type);

            if (type > 0)
            {
                m_Stream.Write(beheld.Female);

                m_Stream.Write((short)beheld.Str);
                m_Stream.Write((short)beheld.Dex);
                m_Stream.Write((short)beheld.Int);

                WriteAttr(beheld.Stam, beheld.StamMax);
                WriteAttr(beheld.Mana, beheld.ManaMax);

                m_Stream.Write(beheld.TotalGold);
                m_Stream.Write((short)(Core.AOS ? beheld.PhysicalResistance : (int)(beheld.ArmorRating + 0.5)));
                m_Stream.Write((short)(Mobile.BodyWeight + beheld.TotalWeight));

                if (type >= 5)
                {
                    m_Stream.Write((short)beheld.MaxWeight);
                    m_Stream.Write((byte)(beheld.Race.RaceID + 1)); // Would be 0x00 if it's a non-ML enabled account but...
                }

                m_Stream.Write((short)beheld.StatCap);

                m_Stream.Write((byte)beheld.Followers);
                m_Stream.Write((byte)beheld.FollowersMax);

                if (type >= 4)
                {
                    m_Stream.Write((short)beheld.FireResistance); // Fire
                    m_Stream.Write((short)beheld.ColdResistance); // Cold
                    m_Stream.Write((short)beheld.PoisonResistance); // Poison
                    m_Stream.Write((short)beheld.EnergyResistance); // Energy
                    m_Stream.Write((short)beheld.Luck); // Luck

                    IWeapon weapon = beheld.Weapon;

                    int min = 0, max = 0;

                    if (weapon != null)
                    {
                        weapon.GetStatusDamage(beheld, out min, out max);
                    }

                    m_Stream.Write((short)min); // Damage min
                    m_Stream.Write((short)max); // Damage max

                    m_Stream.Write(beheld.TithingPoints);
                }

                if (type >= 6)
                {
                    for (int i = 0; i < 15; ++i)
                    {
                        m_Stream.Write((short)beheld.GetAOSStatus(i));
                    }

                    //if (isEnhancedClient)
                    //{
                    /*
                        m_Stream.Write((short)beheld.AttackChance); // Hit Chance Increase
                        m_Stream.Write((short)beheld.WeaponSpeed); // Swing Speed Increase
                        m_Stream.Write((short)beheld.WeaponDamage); // Damage Increase
                        m_Stream.Write((short)beheld.LowerRegCost); // Lower Reagent Cost
                        m_Stream.Write((short)beheld.RegenHits); // Hit Points Regeneration
                        m_Stream.Write((short)beheld.RegenStam); // Stamina Regeneration
                        m_Stream.Write((short)beheld.RegenMana); // Mana Regeneration
                        m_Stream.Write((short)beheld.ReflectPhysical); // Reflect Physical Damage
                        m_Stream.Write((short)beheld.EnhancePotions); // Enhance Potions
                        m_Stream.Write((short)beheld.DefendChance); // Defense Chance Increase
                        m_Stream.Write((short)beheld.SpellDamage); // Spell Damage Increase
                        m_Stream.Write((short)beheld.CastRecovery); // Faster Cast Recovery
                        m_Stream.Write((short)beheld.CastSpeed); // Faster Casting
                        m_Stream.Write((short)beheld.LowerManaCost); // Lower Mana Cost
                        m_Stream.Write((short)beheld.BonusStr); // Strength Increase
                        m_Stream.Write((short)beheld.BonusDex); // Dexterity Increase
                        m_Stream.Write((short)beheld.BonusInt); // Intelligence Increase
                        m_Stream.Write((short)beheld.BonusHits); // Hit Points Increase
                        m_Stream.Write((short)beheld.BonusStam); // Stamina Increase
                        m_Stream.Write((short)beheld.BonusMana); // Mana Increase
                        m_Stream.Write((short)beheld.MaxHitIncrease); // Maximum Hit Points Increase
                        m_Stream.Write((short)beheld.MaxStamIncrease); // Maximum Stamina Increase
                        m_Stream.Write((short)beheld.MaxManaIncrease); // Maximum Mana Increase
                     */
                    //}

                    #region EC Support
                    if (beheld.NetState != null && beheld.NetState.IsKRClient)
                    {
                        m_Stream.Write((short)beheld.AttackChance); // Hit Chance Increase
                        m_Stream.Write((short)beheld.WeaponSpeed); // Swing Speed Increase
                        m_Stream.Write((short)beheld.WeaponDamage); // Damage Increase
                        m_Stream.Write((short)beheld.LowerRegCost); // Lower Reagent Cost
                        m_Stream.Write((short)beheld.RegenHits); // Hit Points Regeneration
                        m_Stream.Write((short)beheld.RegenStam); // Stamina Regeneration
                        m_Stream.Write((short)beheld.RegenMana); // Mana Regeneration
                        m_Stream.Write((short)beheld.ReflectPhysical); // Reflect Physical Damage
                        m_Stream.Write((short)beheld.EnhancePotions); // Enhance Potions
                        m_Stream.Write((short)beheld.DefendChance); // Defense Chance Increase
                        m_Stream.Write((short)beheld.SpellDamage); // Spell Damage Increase
                        m_Stream.Write((short)beheld.CastRecovery); // Faster Cast Recovery
                        m_Stream.Write((short)beheld.CastSpeed); // Faster Casting
                        m_Stream.Write((short)beheld.LowerManaCost); // Lower Mana Cost
                        m_Stream.Write((short)beheld.BonusStr); // Strength Increase
                        m_Stream.Write((short)beheld.BonusDex); // Dexterity Increase
                        m_Stream.Write((short)beheld.BonusInt); // Intelligence Increase
                        m_Stream.Write((short)beheld.BonusHits); // Hit Points Increase
                        m_Stream.Write((short)beheld.BonusStam); // Stamina Increase
                        m_Stream.Write((short)beheld.BonusMana); // Mana Increase
                        m_Stream.Write((short)beheld.MaxHitIncrease); // Maximum Hit Points Increase
                        m_Stream.Write((short)beheld.MaxStamIncrease); // Maximum Stamina Increase
                        m_Stream.Write((short)beheld.MaxManaIncrease); // Maximum Mana Increase
                    }
                    #endregion
                }
            }
        }
Example #12
0
		public MobileStatus( Mobile beholder, Mobile beheld ) : base( 0x11 )
		{
			string name = beheld.Name;
			if ( name == null ) name = "";

			int type;

			if ( beholder != beheld )
			{
				type = 0;
				EnsureCapacity( 43 );
			}
			else
			{
				type = 3;
				EnsureCapacity( 88 );
			}

			m_Stream.Write( beheld.Serial );

			m_Stream.WriteAsciiFixed( name, 30 );

			if ( beholder == beheld )
				WriteAttr( beheld.Hits, beheld.HitsMax );
			else
				WriteAttrNorm( beheld.Hits, beheld.HitsMax );

			m_Stream.Write( beheld.CanBeRenamedBy( beholder ) );

			m_Stream.Write( (byte) type );

			if ( type > 0 )
			{
				m_Stream.Write( beheld.Female );

				m_Stream.Write( (short) beheld.Str );
				m_Stream.Write( (short) beheld.Dex );
				m_Stream.Write( (short) beheld.Int );

				WriteAttr( beheld.Stam, beheld.StamMax );
				WriteAttr( beheld.Mana, beheld.ManaMax );

				m_Stream.Write( (int) beheld.TotalGold );
				m_Stream.Write( (short) (int)(beheld.ArmorRating + 0.5) );
				m_Stream.Write( (short) (Mobile.BodyWeight + beheld.TotalWeight) );

				m_Stream.Write( (short) beheld.StatCap );

				m_Stream.Write( (byte) beheld.Followers );
				m_Stream.Write( (byte) beheld.FollowersMax );
			}
		}
Example #13
0
		public MobileStatusExtended( Mobile m ) : base( 0x11 )
		{
			string name = m.Name;
			if ( name == null ) name = "";

			EnsureCapacity( 88 );

			m_Stream.Write( (int) m.Serial );
			m_Stream.WriteAsciiFixed( name, 30 );

			m_Stream.Write( (short) m.Hits );
			m_Stream.Write( (short) m.HitsMax );

			m_Stream.Write( m.CanBeRenamedBy( m ) );

			m_Stream.Write( (byte) 3 ); // Expantions Type 

			m_Stream.Write( m.Female );

			m_Stream.Write( (short) m.Str );
			m_Stream.Write( (short) m.Dex );
			m_Stream.Write( (short) m.Int );

			m_Stream.Write( (short) m.Stam );
			m_Stream.Write( (short) m.StamMax );

			m_Stream.Write( (short) m.Mana );
			m_Stream.Write( (short) m.ManaMax );

			m_Stream.Write( (int) m.TotalGold );
			m_Stream.Write( (short) (int)(m.ArmorRating + 0.5) );
			m_Stream.Write( (short) (Mobile.BodyWeight + m.TotalWeight) );

			m_Stream.Write( (short) m.StatCap );

			m_Stream.Write( (byte) m.Followers );
			m_Stream.Write( (byte) m.FollowersMax );
		}
Example #14
0
        public MobileStatusExtended(Mobile m, NetState ns)
            : base(0x11)
        {
			string name = m.Name;
			if ( name == null ) name = "";

            bool sendMLExtended = (Core.ML && ns != null && ns.SupportsExpansion(Expansion.ML));

            this.EnsureCapacity(sendMLExtended ? 91 : 88);

			m_Stream.Write( (int) m.Serial );
			m_Stream.WriteAsciiFixed( name, 30 );

			m_Stream.Write( (short) m.Hits );
			m_Stream.Write( (short) m.HitsMax );

			m_Stream.Write( m.CanBeRenamedBy( m ) );

            m_Stream.Write((byte)(sendMLExtended ? 0x05 : Core.AOS ? 0x04 : 0x03)); // type

			m_Stream.Write( m.Female );

			m_Stream.Write( (short) m.Str );
			m_Stream.Write( (short) m.Dex );
			m_Stream.Write( (short) m.Int );

			m_Stream.Write( (short) m.Stam );
			m_Stream.Write( (short) m.StamMax );

			m_Stream.Write( (short) m.Mana );
			m_Stream.Write( (short) m.ManaMax );

            int totalGold = m.TotalGold;

            if (m.BankBox != null)
                totalGold += m.BankBox.TotalGold;

            m_Stream.Write(totalGold);
			m_Stream.Write( (short) (Core.AOS ? m.PhysicalResistance : (int)(m.ArmorRating + 0.5)) );
			m_Stream.Write( (short) (Mobile.BodyWeight + m.TotalWeight) );

            if (sendMLExtended)
			{
				m_Stream.Write( (short)m.MaxWeight );
				m_Stream.Write( (byte)(m.Race.RaceID + 1));	// Would be 0x00 if it's a non-ML enabled account but...
			}

			m_Stream.Write( (short) m.StatCap );

			m_Stream.Write( (byte) m.Followers );
			m_Stream.Write( (byte) m.FollowersMax );

			if ( Core.AOS )
			{
				m_Stream.Write( (short) m.FireResistance ); // Fire
				m_Stream.Write( (short) m.ColdResistance ); // Cold
				m_Stream.Write( (short) m.PoisonResistance ); // Poison
				m_Stream.Write( (short) m.EnergyResistance ); // Energy
				m_Stream.Write( (short) m.Luck ); // Luck

				IWeapon weapon = m.Weapon;

				int min = 0, max = 0;

				if ( weapon != null )
					weapon.GetStatusDamage( m, out min, out max );

				m_Stream.Write( (short) min ); // Damage min
				m_Stream.Write( (short) max ); // Damage max

				m_Stream.Write( (int) m.TithingPoints );
			}
		}
Example #15
0
        public void Add(Mobile m)
        {
            PartyMemberInfo mi = this[m];

            if (mi == null)
            {
                this.m_Members.Add(new PartyMemberInfo(m));
                m.Party = this;

                Packet memberList = Packet.Acquire(new PartyMemberList(this));
                Packet attrs = Packet.Acquire(new MobileAttributesN(m));

                for (int i = 0; i < this.m_Members.Count; ++i)
                {
                    Mobile f = ((PartyMemberInfo)this.m_Members[i]).Mobile;

                    f.Send(memberList);

                    if (f != m)
                    {
                        #region Enhance Client
                        f.Send(new MobileStatusCompact(m.CanBeRenamedBy(f), m));
                        f.Send(attrs);
                        f.Send(new KRDisplayWaypoint(m, WaypointType.PartyMember, false, 1062613, m.Name));
                        m.Send(new MobileStatusCompact(f.CanBeRenamedBy(m), f));
                        m.Send(new MobileAttributesN(f));
                        m.Send(new KRDisplayWaypoint(f, WaypointType.PartyMember, false, 1062613, f.Name));
                        /*
                        for (int i2 = 0; i2 < m_Members.Count; ++i2)
                        {
                            Mobile f2 = ((PartyMemberInfo)m_Members[i2]).Mobile;

                            if (f2.NetState != null && f2.NetState.IsKRClient)
                            {
                                f2.NetState.Send(new DisplayWaypoint(f.Serial, f.X, f.Y, f.Z, f.Map.MapID, WaypointType.PartyMember, f.Name));
                            }
                        }
                         */
                        #endregion
                    }
                }

                Packet.Release(memberList);
                Packet.Release(attrs);
            }
        }