Still working. First, regarding Ravon's problem: MobileUpdate did what I thought it did in PlayUO only. My mistake for not testing it the base UO. It's a CPU hog, and I don't like to run it.
The code in question is here:
Code:
if ( CanSee( m ) )
{
//ourState.Send( new MobileIncoming( this, m ) );
ourState.Send( new MobileUpdate( m ) );
if ( m.IsDeadBondedPet )
ourState.Send( new BondedStatus( 0, m.m_Serial, 1 ) );
if ( ObjectPropertyList.Enabled )
{
ourState.Send( m.OPLPacket );
}
}
Note the line that is currently commented out. It should be commented back in, and the one below it commented out.
Now. On this issue of all names. I've discovered a snag. MobileUpdate() just doesn't do what I need it to do. That leaves me with some painful compromise decisions to make.
It turns out that the information is not in the MobileIncoming packet I'm sending out to the client at all, but rather the client is responding to the server with a "LookReq" (packet 0x09, the same packet that is sent when you single click a mob) whenever MobileIncoming is sent to the client. I have no way of knowing reliably whether or not that single click is initiated by the player directly, or by the software.
This is a tough one, because I'm facing choices like disabling the single click response for 60 seconds every time I send the MobileIncoming packet to the client. That very same interval will keep the name from appearing over the mobs head for 60 second periods, but if you go in and out of LOS alot, you could see it several times.
See the problem I'm facing here?
I'm being pushed towards altering code that will impact the player directly. If I do it, things will work, but then a single click on a mob for a name you missed will silently fail during the quiet period. You'd have to double-click instead.
C//