tSome bugs with player-player fighting fixed - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 7a73b4f2abd069c39c355077ce7a6a466a420f22
 (DIR) parent b09cd2804b9450424e2b1f257c70fdf2f3d0c456
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Tue,  9 Jan 2001 00:21:08 +0000
       
       Some bugs with player-player fighting fixed
       
       
       Diffstat:
         M src/curses_client.c                 |       2 +-
         M src/gtk_client.c                    |      11 ++++++++++-
         M src/serverside.c                    |      17 +++++++++--------
         M src/serverside.h                    |       3 ++-
       
       4 files changed, 22 insertions(+), 11 deletions(-)
       ---
 (DIR) diff --git a/src/curses_client.c b/src/curses_client.c
       t@@ -121,7 +121,7 @@ void CheckForResize(Player *Play) {
              Width=COLS; Depth=LINES;
              attrset(TextAttr); clear_screen();
              display_message("");
       -      DisplayFightMessage(Play,NULL);
       +      DisplayFightMessage(Play,"");
              print_status(Play,1);
           }
           sigprocmask(SIG_UNBLOCK,&sigset,NULL);
 (DIR) diff --git a/src/gtk_client.c b/src/gtk_client.c
       t@@ -635,6 +635,7 @@ static void CreateFightDialog() {
        void DisplayFightMessage(char *Data) {
           Player *Play;
           gint EditPos;
       +   GtkAccelGroup *accel_group;
           GtkWidget *Deal,*Fight,*Stand,*Run,*Text;
           char cr[] = "\n";
           gchar *AttackName,*DefendName,FightPoint,*Message;
       t@@ -652,7 +653,7 @@ void DisplayFightMessage(char *Data) {
           } else {
              CreateFightDialog();
           }
       -   if (!FightDialog) return;
       +   if (!FightDialog || !Data[0]) return;
        
           Deal=GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(FightDialog),"deal"));
           Fight=GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(FightDialog),"fight"));
       t@@ -666,6 +667,14 @@ void DisplayFightMessage(char *Data) {
              ReceiveFightMessage(Data,&AttackName,&DefendName,&DefendHealth,
                                  &DefendBitches,&BitchesKilled,&ArmPercent,
                                  &FightPoint,&CanRunHere,&Loot,&CanFire,&Message);
       +      if (FightPoint==F_LASTLEAVE) {
       +         Play->Flags&= ~FIGHTING;
       +      } else {
       +         Play->Flags|=FIGHTING;
       +      }
       +      accel_group=(GtkAccelGroup *)
       +             gtk_object_get_data(GTK_OBJECT(ClientData.window),"accel_group");
       +      SetJetButtonTitle(accel_group);
           } else {
              Message=Data;
              if (Play->Flags&FIGHTING) FightPoint=F_MSG; else FightPoint=F_LASTLEAVE;
 (DIR) diff --git a/src/serverside.c b/src/serverside.c
       t@@ -1226,29 +1226,30 @@ void AttackPlayer(Player *Play,Player *Attacked) {
        
           if (Play->FightArray) {
              FightArray=Play->FightArray;
       -      AddPlayerToFight(Attacked,FightArray,Play);
       +      AddPlayerToFight(Attacked,FightArray,Play,TRUE);
           } else if (Attacked->FightArray) {
              FightArray=Attacked->FightArray;
       -      AddPlayerToFight(Play,FightArray,Attacked);
       +      AddPlayerToFight(Play,FightArray,Attacked,TRUE);
           } else {
              FightArray=g_ptr_array_new();
       -      AddPlayerToFight(Attacked,FightArray,Play);
       -      AddPlayerToFight(Play,FightArray,Attacked);
       +      AddPlayerToFight(Attacked,FightArray,Play,TRUE);
       +      AddPlayerToFight(Play,FightArray,Attacked,FALSE);
           }
           
           Fire(Play);
        }
        
       -void AddPlayerToFight(Player *NewPlay,GPtrArray *Fight,Player *Other) {
       +void AddPlayerToFight(Player *NewPlay,GPtrArray *Fight,Player *Other,
       +                      gboolean Inform) {
        /* Adds the player "NewPlay" to the fight "Fight", and informs any      */
       -/* players already in the fight of the new player's arrival. "Other" is */
       -/* a player already in the fight                                        */
       +/* players already in the fight of the new player's arrival, if         */
       +/* "Inform" is TRUE. "Other" is a player already in the fight.          */
           NewPlay->FightArray=Fight;
           NewPlay->ResyncNum=NewPlay->EventNum;
           NewPlay->EventNum=E_FIGHT;
        
           g_ptr_array_add(Fight,NewPlay);
       -   SendFightMessage(NewPlay,Other,0,F_ARRIVED,FALSE,TRUE,NULL);
       +   if (Inform) SendFightMessage(NewPlay,Other,0,F_ARRIVED,FALSE,TRUE,NULL);
        }
        
        gboolean IsOpponent(Player *Play,Player *Other) {
 (DIR) diff --git a/src/serverside.h b/src/serverside.h
       t@@ -69,7 +69,8 @@ gboolean CheckHighScoreFile();
        int HighScoreRead(struct HISCORE *MultiScore,struct HISCORE *AntiqueScore);
        void CopsAttackPlayer(Player *Play);
        void AttackPlayer(Player *Play,Player *Attacked);
       -void AddPlayerToFight(Player *NewPlay,GPtrArray *Fight,Player *Other);
       +void AddPlayerToFight(Player *NewPlay,GPtrArray *Fight,Player *Other,
       +                      gboolean Inform);
        gboolean IsOpponent(Player *Play,Player *Other);
        void Fire(Player *Play);
        void WithdrawFromCombat(Player *Play);