]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/do_attack.cpp
Refactored playerGO a bit
[irc/gameservirc.git] / gameserv / do_attack.cpp
index 70aa62b5c4bf22eb740157ff01e90d5a131a62a2..e123d276bbcffa7f8c3b87ef54b186c27d9087fa 100644 (file)
@@ -1,5 +1,6 @@
 #include "aClient.h"
 #include "extern.h"
+#include "options.h"
 #include "flags.h"
 #include "level.h"
 #include "player.h"
@@ -14,7 +15,7 @@ void do_attack(char *u)
   
   if (!(ni = find(u)))
     {
-      notice(s_GameServ, u, "Fatal error in do_attack. Contact a(n) %S admin for help.");
+      notice(s_GameServ, u, "Fatal error in do_attack. Contact a(n) <S admin for help.");
       return;
     }
   else if (isIgnore(ni))
@@ -210,13 +211,18 @@ void do_attack(char *u)
     {
       if (is_playing(battle))
                {
-                 if (!isYourTurn(ni->stats))
+                 if (!isYourTurn(ni->stats) && isYourTurn(battle->stats))
                        {
                          notice(s_GameServ, u, "Please wait until %s decides what to do!",
                                         battle->stats->getName().c_str());
                          return;
                        }
-                 if (hit > 0)
+                 else if (!isYourTurn(ni->stats) && !isYourTurn(battle->stats))
+                       {
+                         // If somehow the player vs. player fight hangs, give the turn to the first attacker
+                         setYourTurn(ni->stats);
+                       }
+                if (hit > 0)
                        {
                          notice(s_GameServ, u, "You attack \1f%s\1f for \ 2%d\ 2 points!", battle->stats->getName().c_str(), hit);
                          
@@ -261,6 +267,7 @@ void do_attack(char *u)
                        {
                          if (hit > 0)
                                battle->stats->subtractHP(hit);
+
                          clearYourTurn(ni->stats);
                          setYourTurn(battle->stats);
                          display_players(battle);