Example #1
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 #2
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 = m_Members[i].Mobile;

                    f.Send( memberList );

                    if ( f != m )
                    {
                        f.Send( new MobileStatusCompact( m.CanBeRenamedBy( f ), m ) );
                        f.Send( attrs );
                        f.Send( new DisplayWaypoint( m, WaypointType.PartyMember, false, 1062613, m.Name ) );
                        m.Send( new MobileStatusCompact( f.CanBeRenamedBy( m ), f ) );
                        m.Send( new MobileAttributesN( f ) );
                        m.Send( new DisplayWaypoint( f, WaypointType.PartyMember, false, 1062613, f.Name ) );
                    }
                }

                Packet.Release( memberList );
                Packet.Release( attrs );
            }
        }
Example #3
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 #4
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 );

            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 );
            }
        }
Example #5
0
        public MobileStatus( Mobile beholder, Mobile beheld, NetState ns )
            : base(0x11)
        {
            //string name = beheld.Name;
            string name = beheld.GetNameUseBy(beholder);
            if ( name == null ) name = "";

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

            this.EnsureCapacity( 43 + (beholder == beheld ? (sendMLExtended ? 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)(sendMLExtended ? 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) (Mobile.BodyWeight + beheld.TotalWeight) );

                if( sendMLExtended )
                {
                    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 )
                {
                    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 #6
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 ) );
                        #region GeNova: KR Support
                        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, 2, f.Name));
                        }
                        #endregion
					}
				}

				Packet.Release( memberList );
				Packet.Release( attrs );
			}
		}
Example #7
0
        public MobileStatus( Mobile beholder, Mobile beheld )
            : base(0x11)
        {
            string name = beheld.Name;

            if ( name == null )
                name = "";

            byte type = 0x0;

            if ( beholder == beheld )
                type = 0x6;

            int size = 0;

            bool isEnhancedClient = beholder.Client != null && beholder.Client.Version.IsEnhanced;

            if ( type == 0 )
                size = 43;
            else if ( isEnhancedClient )
                size = 149;
            else
                size = 121;

            this.EnsureCapacity( size );

            m_Stream.Write( beheld.Serial );

            m_Stream.WriteAsciiFixed( name, 30 );

            if ( type > 0x0 )
                WriteAttr( beheld.Hits, beheld.HitsMax );
            else
                WriteAttrNorm( beheld.Hits, beheld.HitsMax );

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

            m_Stream.Write( type );

            if ( type > 0x0 )
            {
                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) beheld.PhysicalResistance );
                m_Stream.Write( (short) ( Mobile.BodyWeight + beheld.TotalWeight ) );

                m_Stream.Write( (short) beheld.GetMaxWeight() );
                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 );

                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 );

                if ( type >= 0x6 )
                {
                    m_Stream.Write( (short) beheld.GetMaxResistance( ResistanceType.Physical ) );
                    m_Stream.Write( (short) beheld.GetMaxResistance( ResistanceType.Fire ) );
                    m_Stream.Write( (short) beheld.GetMaxResistance( ResistanceType.Cold ) );
                    m_Stream.Write( (short) beheld.GetMaxResistance( ResistanceType.Poison ) );
                    m_Stream.Write( (short) beheld.GetMaxResistance( ResistanceType.Energy ) );
                    m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.DefendChance ) );
                    m_Stream.Write( (short) 45 ); // Max dci
                    m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.AttackChance ) );
                    m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.WeaponSpeed ) );
                    m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.WeaponDamage ) );
                    m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.LowerRegCost ) );
                    m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.SpellDamage ) );
                    m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.CastRecovery ) );
                    m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.CastSpeed ) );
                    m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.LowerManaCost ) );

                    if ( isEnhancedClient )
                    {
                        m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.RegenHits ) );
                        m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.RegenStam ) );
                        m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.RegenMana ) );
                        m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.ReflectPhysical ) );
                        m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.EnhancePotions ) );
                        m_Stream.Write( (short) beheld.GetStatOffset( StatType.Str ) );
                        m_Stream.Write( (short) beheld.GetStatOffset( StatType.Dex ) );
                        m_Stream.Write( (short) beheld.GetStatOffset( StatType.Int ) );
                        m_Stream.Write( (short) 0 );
                        m_Stream.Write( (short) 0 );
                        m_Stream.Write( (short) 0 );
                        m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.BonusHits ) );
                        m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.BonusStam ) );
                        m_Stream.Write( (short) beheld.GetMagicalAttribute( MagicalAttribute.BonusMana ) );
                    }
                }
            }
        }
Example #8
0
		public void Add( Mobile m )
		{
			PartyMemberInfo mi = this[m];

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

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

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

					f.Send( memberList );

					if (! f.HasGump( typeof( PartyRadarGump)))
					{
						PartyRadarGump pr = new PartyRadarGump( f, m );
						f.SendGump( pr ); // Custom Radar Gump

						GumpTimer gumpTimer = new GumpTimer( f, m );
						gumpTimer.Start();

						GumpTimer gumpTimerT = new GumpTimer( m, f );
						gumpTimerT.Start();
					}

					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 ) );
					}
				}
			}
		}