tInitial support for new fighting code added to GTK+ client - 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 001a80142b0fb405b15b8353bc9427cffd05228a
 (DIR) parent 72b7a1e3f3c0b29e27f2b98445df4ccde9f95913
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Sun, 22 Oct 2000 16:35:29 +0000
       
       Initial support for new fighting code added to GTK+ client
       
       
       Diffstat:
         M src/curses_client.c                 |       1 +
         M src/gtk_client.c                    |       1 +
         M src/message.c                       |      21 +++++++++++++++++++--
         M src/message.h                       |       1 +
         M src/serverside.c                    |       2 +-
       
       5 files changed, 23 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/src/curses_client.c b/src/curses_client.c
       t@@ -1421,6 +1421,7 @@ static void Curses_DoGame(Player *Play) {
           display_message("");
        
           InitAbilities(Play);
       +   SetAbility(Play,A_NEWFIGHT,FALSE);
           SendAbilities(Play);
           SetPlayerName(Play,buf);
           SendNullClientMessage(Play,C_NONE,C_NAME,NULL,buf);
 (DIR) diff --git a/src/gtk_client.c b/src/gtk_client.c
       t@@ -1200,6 +1200,7 @@ void StartGame() {
           Play=ClientData.Play=g_new(Player,1);
           FirstClient=AddPlayer(0,Play,FirstClient);
           Play->fd=ClientSock;
       +   InitAbilities(Play);
           SendAbilities(Play);
           SetPlayerName(Play,ClientData.PlayerName);
           SendNullClientMessage(Play,C_NONE,C_NAME,NULL,ClientData.PlayerName);
 (DIR) diff --git a/src/message.c b/src/message.c
       t@@ -209,9 +209,14 @@ void InitAbilities(Player *Play) {
              Play->Abil.Remote[i]=FALSE;
              Play->Abil.Shared[i]=FALSE;
           }
       -/* Set local abilities */
       +/* Set local abilities; abilities that are client-dependent
       +   (e.g. A_NEWFIGHT) can be overridden by individual clients if required,
       +   by calling SetAbility, prior to calling SendAbilities */
       +
           Play->Abil.Local[A_PLAYERID]=TRUE;
       +   Play->Abil.Local[A_NEWFIGHT]=TRUE;
           Play->Abil.Local[A_DRUGVALUE]=(DrugValue ? TRUE : FALSE);
       +
           if (!Network) for (i=0;i<A_NUM;i++) {
              Play->Abil.Remote[i]=Play->Abil.Shared[i]=Play->Abil.Local[i];
           }
       t@@ -252,6 +257,18 @@ void CombineAbilities(Player *Play) {
           }
        }
        
       +void SetAbility(Player *Play,gint Type,gboolean Set) {
       +/* Sets ability "Type" of player "Play", and also sets shared abilities if  */
       +/* networking is not active (the local server should support all abilities  */
       +/* that the client uses). Call this function prior to calling SendAbilities */
       +/* so that the ability is recognised properly when networking _is_ active   */
       +   if (Type<0 || Type>=A_NUM) return;
       +   Play->Abil.Local[Type]=Set;
       +   if (!Network) {
       +      Play->Abil.Remote[Type]=Play->Abil.Shared[Type]=Play->Abil.Local[Type];
       +   }
       +}
       +
        gboolean HaveAbility(Player *Play,gint Type) {
        /* Returns TRUE if ability "Type" is one of player "Play"'s shared abilities */
           if (Type<0 || Type>=A_NUM) return FALSE;
       t@@ -769,7 +786,7 @@ int ProcessMessage(char *Msg,Player *Play,Player **Other,char *AICode,
           gchar *pt,*buf;
           guint ID;
        
       -   if (!First || !Play) return;
       +   if (!First || !Play) return -1;
        
           *AICode=*Code=C_NONE;
           *Other=&Noone;
 (DIR) diff --git a/src/message.h b/src/message.h
       t@@ -160,6 +160,7 @@ void InitAbilities(Player *Play);
        void SendAbilities(Player *Play);
        void ReceiveAbilities(Player *Play,gchar *Data);
        void CombineAbilities(Player *Play);
       +void SetAbility(Player *Play,gint Type,gboolean Set);
        gboolean HaveAbility(Player *Play,gint Type);
        void SendFightReload(Player *To);
        void SendOldCanFireMessage(Player *To,GString *text);
 (DIR) diff --git a/src/serverside.c b/src/serverside.c
       t@@ -664,7 +664,7 @@ gboolean HandleServerCommand(char *string) {
                    g_print(_("Users currently logged on:-\n"));
                    for (list=FirstServer;list;list=g_slist_next(list)) {
                       tmp=(Player *)list->data;
       -               g_print("%s\n",GetPlayerName(tmp));
       +               if (!tmp->IsCop) g_print("%s\n",GetPlayerName(tmp));
                    }
                 } else g_message(_("No users currently logged on!"));
              } else if (strncasecmp(string,"push ",5)==0) {