On Wed, Jun 28, 2000 at 11:09:20AM -0600, ronbarry at es.com wrote:
> There is an swarning constructed in phaser.c that does this:
> (mine->ph_damage & 768)>>2 

It is shifting bits around.  Include the full context ... line 252
of ntserv/phaser.c

if (send_short && (target_player->p_no < 64) && (mine->ph_damage < 1024)) {
  swarning(PHASER_HIT_TEXT,
           (target_player->p_no & 0x3f) | ((mine->ph_damage & 768) >> 2),
           (unsigned char) mine->ph_damage & 0xff);
  return;
}
new_warning(UNDEF, "Phaser burst hit %s for %d points",
            target_player->p_name, mine->ph_damage);
return;

Seems quite reasonable.  The event is being coded into short packet
format, two eight bit fields for the data.  The first field has the
player number in the low six bits.  The damage is coded into the
eight bits of the second field with two extra bits placed in the
spare bits of the first field.

> The only thing that could cause that to be non-zero is an ATT.  

So you are saying that the short packets format supports ATT class.
That's good, isn't it?  It also provides for expansion in case of very
strong phasers.

The same person (Heiko) did the client and the server at the same time,
so you should look at a short packet modified client.

-- 
James Cameron    mailto:quozl at us.netrek.org     http://quozl.netrek.org/