Date: Tuesday February 5, 2002 @ 6:06 Author: xyzzy Update of /home/netrek/cvsroot/Vanilla/ntserv In directory swashbuckler.real-time.com:/var/tmp/cvs-serv5459 Modified Files: redraw.c Log Message: Fix several bugs with observers and transferring armies. Observers didn't have p_docked or p_planet set to the base docked on or planet orbited. When the army messages were generated, they referenced the wrong planet/player. Fixed this by setting p_docked/p_planet for observers, hopefully this won't trigger any bugs I didn't find. Also fix calculation of army capacity for observers, so the kills of the person being observed are used instead of the observer's kills, which are always zero. **************************************** Index: Vanilla/ntserv/redraw.c diff -u Vanilla/ntserv/redraw.c:1.10 Vanilla/ntserv/redraw.c:1.11 --- Vanilla/ntserv/redraw.c:1.10 Thu May 10 18:19:46 2001 +++ Vanilla/ntserv/redraw.c Tue Feb 5 06:06:40 2002 @@ -217,7 +217,8 @@ /* me->p_flags |= PFCLOAK; */ me->p_dir = pl->p_dir; me->p_tractor = pl->p_tractor; - + me->p_docked = pl->p_docked; + me->p_planet = pl->p_planet; me->p_speed = pl->p_speed; /* me->p_kills = pl->p_kills; Very bad: will confuse enemies */ } @@ -252,7 +253,7 @@ me->p_y = pln->pl_y; } return; - } /* end if I am locked onto a player */ + } /* end if I am locked onto a planet */ /* We are not locked onto anything */ me->p_x = -100000; @@ -406,14 +407,17 @@ } } - if (me->p_ship.s_type == ASSAULT) - troop_capacity = (((me->p_kills * 3) > myship->s_maxarmies) ? - myship->s_maxarmies : (int) (me->p_kills * 3)); - else if (me->p_ship.s_type != STARBASE) - troop_capacity = (((me->p_kills * 2) > myship->s_maxarmies) ? - myship->s_maxarmies : (int) (me->p_kills * 2)); +#ifdef OBSERVERS + /* Use person observed for kills if we are an observer */ + if(Observer && (me->p_flags&PFPLOCK)) pl = &players[me->p_playerl]; else - troop_capacity = me->p_ship.s_maxarmies; +#endif + pl = me; /* Not observer, just use my kills */ + + troop_capacity = pl->p_kills * (myship->s_type == ASSAULT)?3:2; + if (myship->s_type == STARBASE || troop_capacity > myship->s_maxarmies) + troop_capacity = myship->s_maxarmies; + if (me->p_flags & PFBEAMUP) { /* Messages rewritten for stats 10/20/96 [007] */ char *txt;