Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv30172/src
Modified Files:
local.c
Log Message:
BRMH shrink phasers working proper, both obeying shrink phaser
on miss, as well as shrinking enemy phaser hits.
Index: local.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/local.c,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -d -r1.69 -r1.70
--- local.c 13 Mar 2007 22:31:17 -0000 1.69
+++ local.c 15 Mar 2007 03:09:16 -0000 1.70
@@ -623,7 +623,7 @@
static void
get_shrink_phaser_coords(int *rx, int *ry, int dx, int dy, int tx,
- int ty, int curr_fuse, int max_fuse)
+ int ty, int curr_fuse, int max_fuse, int shrink_amount)
{
register int ph_dir, range, phaser_shrink;
@@ -641,7 +641,7 @@
* Calculate current drawing range of phaser based on distance and phaser
* fuse
*/
- phaser_shrink = 16 - phaserShrink;
+ phaser_shrink = 16 - shrink_amount;
if (phaser_shrink < 5)
phaser_shrink = 5;
@@ -1393,8 +1393,6 @@
tx = (j->p_x + tx - me->p_x) / SCALE + WINSIDE / 2;
ty = (j->p_y + ty - me->p_y) / SCALE + WINSIDE / 2;
- php->ph_fuse = 0;
-
}
else if (php->ph_status == PHHIT2)
{
@@ -1419,12 +1417,19 @@
if (shrinkPhaserOnMiss || php->ph_status != PHMISS)
{
+
if (myPlayer(j) || isObsLockPlayer(j))
{
if (phaserShrinkStyle == 1)
{
px = (dx * 16 + 8) / 16;
py = (dy * 16 + 8) / 16;
+ get_shrink_phaser_coords(&new_dx, &new_dy,
+ px, py, tx, ty,
+ php->ph_fuse, php->ph_maxfuse,
+ phaserShrink);
+ px = new_dx;
+ py = new_dy;
}
else
{
@@ -1436,11 +1441,25 @@
}
else
{
- px = (dx * (16 - theirPhaserShrink) +
- tx * theirPhaserShrink + 8) / 16;
+ if (phaserShrinkStyle == 1)
+ {
+ px = (dx * 16 + 8) / 16;
+ py = (dy * 16 + 8) / 16;
+ get_shrink_phaser_coords(&new_dx, &new_dy,
+ px, py, tx, ty,
+ php->ph_fuse, php->ph_maxfuse,
+ theirPhaserShrink);
+ px = new_dx;
+ py = new_dy;
+ }
+ else
+ {
+ px = (dx * (16 - theirPhaserShrink) +
+ tx * theirPhaserShrink + 8) / 16;
- py = (dy * (16 - theirPhaserShrink) +
- ty * theirPhaserShrink + 8) / 16;
+ py = (dy * (16 - theirPhaserShrink) +
+ ty * theirPhaserShrink + 8) / 16;
+ }
}
}
else
@@ -1483,28 +1502,12 @@
}
ph_col += (10/j->p_ship.s_phaserfuse);
scaled_ph_col = ph_col * 10 / server_ups;
- if (phaserShrinkStyle == 1)
- {
- get_shrink_phaser_coords(&new_dx, &new_dy,
- px, py, tx, ty,
- php->ph_fuse, php->ph_maxfuse);
- px = new_dx;
- py = new_dy;
- }
W_CacheLine (w, px, py, tx, ty, col);
}
else
{
if (php->ph_status != PHMISS)
{
- if (phaserShrinkStyle == 1 && (myPlayer(j) || isObsLockPlayer(j)))
- {
- get_shrink_phaser_coords(&new_dx, &new_dy,
- px, py, tx, ty,
- php->ph_fuse, php->ph_maxfuse);
- px = new_dx;
- py = new_dy;
- }
if (highlightFriendlyPhasers)
W_CacheLine (w, px, py, tx, ty, foreColor);
else