Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv7387/src

Modified Files:
	dashboard.c local.c warning.c 
Log Message:
Fixed bug with lock icon and orbiting
Fixed short packet phaser stats for phaser hits > 1024 damage (only noticeable with ATTs,
server sends phaser hit packet as long packet instead)

Index: dashboard.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/dashboard.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- dashboard.c	2 Jun 2006 21:06:55 -0000	1.10
+++ dashboard.c	3 Jun 2006 21:52:11 -0000	1.11
@@ -860,6 +860,7 @@
     int hulltime = 0;
     int shieldneeded, hullneeded;
     float shieldrate = 0.0, hullrate = 0.0;
+    short planet;
     struct player *plr;
 
     if ((me->p_flags & (PFPLOCK | PFOBSERV)) == (PFPLOCK | PFOBSERV))
@@ -882,9 +883,9 @@
             /* And since observers don't get war flags, assume that if ship is orbiting a repair
     	       planet in repair mode, the planet is friendly - best we can do until server
     	       sends us more info */
-            me->p_planet = get_closest_planet(me->p_x, me->p_y);
-            if ((planets[me->p_planet].pl_flags & PLREPAIR)
-            &&(obs || !(planets[me->p_planet].pl_owner & (plr->p_swar | plr->p_hostile))))
+            planet = get_closest_planet(me->p_x, me->p_y);
+            if ((planets[planet].pl_flags & PLREPAIR)
+            &&(obs || !(planets[planet].pl_owner & (plr->p_swar | plr->p_hostile))))
                 me->p_subshield += me->p_ship.s_repair * 4;
     	}
     	if (me->p_flags & PFDOCK)
@@ -904,9 +905,9 @@
     	    /* And since observers don't get war flags, assume that if ship is orbiting a repair
     	       planet in repair mode, the planet is friendly - best we can do until server
     	       sends us more info */
-            me->p_planet = get_closest_planet(me->p_x, me->p_y);
-    	    if ((planets[me->p_planet].pl_flags & PLREPAIR)
-    	    && (obs || !(planets[me->p_planet].pl_owner & (plr->p_swar | plr->p_hostile))))
+            planet = get_closest_planet(me->p_x, me->p_y);
+    	    if ((planets[planet].pl_flags & PLREPAIR)
+    	    && (obs || !(planets[planet].pl_owner & (plr->p_swar | plr->p_hostile))))
     	        me->p_subdamage += me->p_ship.s_repair * 2;
     	}
     	if (me->p_flags & PFDOCK)

Index: local.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/local.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- local.c	3 Jun 2006 07:03:42 -0000	1.38
+++ local.c	3 Jun 2006 21:52:11 -0000	1.39
@@ -528,7 +528,7 @@
         }
         
         if (showArmy && (me->p_flags & PFORBIT)
-        && (me->p_planet = get_closest_planet(me->p_x, me->p_y)) == l->pl_no)
+        && (get_closest_planet(me->p_x, me->p_y) == l->pl_no))
         {
             char armbuf[4];
             int armbuflen;

Index: warning.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/warning.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- warning.c	20 May 2006 03:55:23 -0000	1.7
+++ warning.c	3 Jun 2006 21:52:11 -0000	1.8
@@ -27,7 +27,7 @@
 void
 warning (char *text)
 {
-    int doPhaser, doRefit, doDeclare;
+    int doPhaser, doRefit, doDeclare, damage = 0;
     time_t curtime;
     struct tm *tm;
     char newtext[128];
@@ -50,16 +50,30 @@
        delay = time (0) + DECLARETIME;
        
 #ifdef PHASER_STATS
-    if (!recv_short)   /* Gotta parse phaser info for long packets here */
+    if (doPhaser)   /* Parse out damage */
     {
-        if (strncmp(text, "You destroyed the plasma", 24) == 0)       /* Plasma hit */
+        char *d;
+        d = &text[warncount];
+        /* find the last number in the string, should be damage */
+        while (!isdigit(*d) && d > text) 
+            d--;
+        while (d > text && isdigit(*d))
+            d--;
+        if (d > text)
+            damage = atoi(d);
+    }
+    /* Gotta parse phaser info for long packets here, or for phaser hits with
+       damage > 1024, which are sent as a long packet by server */
+    if (!recv_short || damage > 1024)                   
+    {
+        if (!recv_short && strncmp(text, "You destroyed the plasma", 24) == 0)       /* Plasma hit */
         {
             phaserStatTry++;
             phaserStatHit++;
             /* Record as an average damage hit so as not to skew overall average */
             phaserStatDamage += phaserStatDamage / phaserStatTry;
         }
-        if (strncmp(text, "Phaser missed", 13) == 0)        /* Miss */
+        if (!recv_short && strncmp(text, "Phaser missed", 13) == 0)        /* Miss */
         {
             phaserStatTry++;
             if (phaserStats)
@@ -77,16 +91,6 @@
         }
         if (doPhaser)     /* Parse out damage and record to average */
         {
-            char *d;
-            register int damage;
-            d = &text[warncount];
-            /* find the last number in the string, should be damage */
-            while (!isdigit(*d) && d > text) 
-                d--;
-            while (d > text && isdigit(*d))
-               d--;
-            if (d > text)
-                damage = atoi(d);
             phaserStatTry++;
             phaserStatHit++;
             phaserStatDamage += damage;
@@ -97,7 +101,7 @@
         sprintf (newtext, "%s [%3d%%] [%2u]", text,
                  phaserStatTry ? (phaserStatHit * 100) / phaserStatTry : 0,
                  phaserStatTry ? phaserStatDamage / phaserStatTry : 0);
-        warncount += 13;
+        warncount += 14;
         W_WriteText (warnw, 5, 5, textColor, newtext, warncount,
                      W_RegularFont);
     }