]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameTick.cpp
License: Update GPLv2+ header to match current FSF recommendation
[lugaru.git] / Source / GameTick.cpp
index 1a743f3979536ff84e0a6d6ca002d6932cf472e9..685b4730ab952c17cf72bd8016d159777e558c1d 100644 (file)
@@ -3,20 +3,18 @@ Copyright (C) 2003, 2010 - Wolfire Games
 
 This file is part of Lugaru.
 
-Lugaru is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
+Lugaru is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
 
-This program is distributed in the hope that it will be useful,
+Lugaru is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-See the GNU General Public License for more details.
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+along with Lugaru.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 // Enable full math definitions
@@ -582,7 +580,7 @@ static void ch_save(const char *args)
     if (Person::players.size() > maxplayers) {
         cout << "Warning: this level contains more players than allowed" << endl;
     }
-    for (int j = 1; j < Person::players.size(); j++) {
+    for (unsigned j = 1; j < Person::players.size(); j++) {
         fpackf(tfile, "Bi Bi Bf Bf Bf Bi Bi Bf Bb Bf", Person::players[j]->whichskin, Person::players[j]->creature,
                Person::players[j]->coords.x, Person::players[j]->coords.y, Person::players[j]->coords.z,
                Person::players[j]->num_weapons, Person::players[j]->howactive, Person::players[j]->scale, Person::players[j]->immobile, Person::players[j]->yaw);
@@ -698,7 +696,7 @@ static int findClosestPlayer()
     int closest = -1;
     float closestdist = std::numeric_limits<float>::max();
 
-    for (int i = 1; i < Person::players.size(); i++) {
+    for (unsigned i = 1; i < Person::players.size(); i++) {
         float distance = distsq(&Person::players[i]->coords, &Person::players[0]->coords);
         if (distance < closestdist) {
             closestdist = distance;
@@ -969,7 +967,7 @@ static void ch_black(const char *args)
 
 static void ch_sizemin(const char *args)
 {
-    for (int i = 1; i < Person::players.size(); i++)
+    for (unsigned i = 1; i < Person::players.size(); i++)
         if (Person::players[i]->scale < 0.8 * 0.2)
             Person::players[i]->scale = 0.8 * 0.2;
 }
@@ -1076,7 +1074,7 @@ static void ch_dialogue(const char *args)
     }
 
     for (int i = 0; i < numdialogueboxes[numdialogues]; i++) {
-        for (int j = 0; j < Person::players.size(); j++) {
+        for (unsigned j = 0; j < Person::players.size(); j++) {
             participantfacing[numdialogues][i][j] = Person::players[j]->facing;
         }
     }
@@ -1159,7 +1157,7 @@ static void ch_immobile(const char *args)
 
 static void ch_allimmobile(const char *args)
 {
-    for (int i = 1; i < Person::players.size(); i++)
+    for (unsigned i = 1; i < Person::players.size(); i++)
         Person::players[i]->immobile = 1;
 }
 
@@ -1322,18 +1320,17 @@ static void cmd_dispatch(const string cmd)
 extern bool save_image(const char * fname);
 void Screenshot (void)
 {
-    char temp[1024];
+    char filename[1024];
     time_t t = time(NULL);
     struct tm *tme = localtime(&t);
-    sprintf(temp, "Screenshots/Screenshot_%04d_%02d_%02d--%02d_%02d_%02d.png", tme->tm_year + 1900, tme->tm_mon + 1, tme->tm_mday, tme->tm_hour, tme->tm_min, tme->tm_sec);
+    sprintf(filename, "Screenshots/Screenshot-%04d%02d%02d-%02d%02d%02d.png",
+            tme->tm_year + 1900, tme->tm_mon + 1, tme->tm_mday, tme->tm_hour, tme->tm_min, tme->tm_sec);
 
 #if defined(_WIN32)
     mkdir("Screenshots");
-#else
-    mkdir("Screenshots", S_IRWXU);
 #endif
 
-    save_image(temp);
+    save_image(filename);
 }
 
 void Game::SetUpLighting()
@@ -2149,7 +2146,7 @@ void Loadlevel(const char *name)
 
         fclose(tfile);
 
-        for (int i = 0; i < Person::players.size(); i++) {
+        for (unsigned i = 0; i < Person::players.size(); i++) {
             if (visibleloading)
                 LoadingScreen();
             Person::players[i]->burnt = 0;
@@ -3057,7 +3054,7 @@ void doDebugKeys()
             int closest = -1;
             float closestdist = std::numeric_limits<float>::max();
 
-            for (int i = 1; i < Person::players.size(); i++) {
+            for (unsigned i = 1; i < Person::players.size(); i++) {
                 float distance = distsq(&Person::players[i]->coords, &Person::players[0]->coords);
                 if (!Person::players[i]->headless)
                     if (distance < closestdist) {
@@ -3182,8 +3179,8 @@ void doDebugKeys()
                 }
 
                 XYZ temppos;
-                for (int j = 0; j < Person::players.size(); j++) {
-                    if (j != closest) {
+                for (unsigned j = 0; j < Person::players.size(); j++) {
+                    if (int(j) != closest) {
                         if (distsq(&Person::players[j]->coords, &Person::players[closest]->coords) < 25) {
                             Person::players[j]->DoDamage((25 - distsq(&Person::players[j]->coords, &Person::players[closest]->coords)) * 60);
                             if (Person::players[j]->skeleton.free == 2)
@@ -3579,8 +3576,8 @@ void doDebugKeys()
 
 void doJumpReversals()
 {
-    for (int k = 0; k < Person::players.size(); k++)
-        for (int i = k; i < Person::players.size(); i++) {
+    for (unsigned k = 0; k < Person::players.size(); k++)
+        for (unsigned i = k; i < Person::players.size(); i++) {
             if (i == k)
                 continue;
             if (     Person::players[k]->skeleton.free == 0 &&
@@ -3589,8 +3586,8 @@ void doJumpReversals()
                       Person::players[k]->animTarget == jumpupanim) &&
                      (Person::players[i]->aitype == playercontrolled ||
                       Person::players[k]->aitype == playercontrolled) &&
-                     (Person::players[i]->aitype == attacktypecutoff && Person::players[i]->stunned <= 0 ||
-                      Person::players[k]->aitype == attacktypecutoff && Person::players[k]->stunned <= 0)) {
+                     ((Person::players[i]->aitype == attacktypecutoff && Person::players[i]->stunned <= 0) ||
+                      (Person::players[k]->aitype == attacktypecutoff && Person::players[k]->stunned <= 0))) {
                 if (     distsq(&Person::players[i]->coords, &Person::players[k]->coords) < 10 * sq((Person::players[i]->scale + Person::players[k]->scale) * 2.5) &&
                          distsqflat(&Person::players[i]->coords, &Person::players[k]->coords) < 2 * sq((Person::players[i]->scale + Person::players[k]->scale) * 2.5)) {
                     //TODO: refactor two huge similar ifs
@@ -3599,7 +3596,7 @@ void doJumpReversals()
                             Person::players[k]->animTarget != getupfromfrontanim &&
                             animation[Person::players[k]->animTarget].height == middleheight &&
                             normaldotproduct(Person::players[i]->velocity, Person::players[k]->coords - Person::players[i]->coords) < 0 &&
-                            (Person::players[k]->aitype == playercontrolled && Person::players[k]->attackkeydown ||
+                            ((Person::players[k]->aitype == playercontrolled && Person::players[k]->attackkeydown) ||
                              Person::players[k]->aitype != playercontrolled)) {
                         Person::players[i]->victim = Person::players[k];
                         Person::players[i]->velocity = 0;
@@ -3680,7 +3677,7 @@ void doJumpReversals()
 void doAerialAcrobatics()
 {
     static XYZ facing, flatfacing;
-    for (int k = 0; k < Person::players.size(); k++) {
+    for (unsigned k = 0; k < Person::players.size(); k++) {
         Person::players[k]->turnspeed = 500;
 
         if ((Person::players[k]->isRun() &&
@@ -4081,7 +4078,7 @@ void doAttacks()
     if (Input::isKeyDown(attackkey) &&
             !oldattackkey &&
             !Person::players[0]->backkeydown) {
-        for (int k = 0; k < Person::players.size(); k++) {
+        for (unsigned k = 0; k < Person::players.size(); k++) {
             if ((Person::players[k]->animTarget == swordslashanim ||
                     Person::players[k]->animTarget == staffhitanim ||
                     Person::players[k]->animTarget == staffspinhitanim) &&
@@ -4094,7 +4091,7 @@ void doAttacks()
     if (!hostile || indialogue != -1)
         Person::players[0]->attackkeydown = 0;
 
-    for (int k = 0; k < Person::players.size(); k++) {
+    for (unsigned k = 0; k < Person::players.size(); k++) {
         if (indialogue != -1)
             Person::players[k]->attackkeydown = 0;
         if (Person::players[k]->animTarget != rabbitrunninganim && Person::players[k]->animTarget != wolfrunninganim) {
@@ -4112,7 +4109,7 @@ void doAttacks()
                     if (Person::players[k]->jumppower <= 1) {
                         Person::players[k]->jumppower -= 2;
                     } else {
-                        for (int i = 0; i < Person::players.size(); i++) {
+                        for (unsigned i = 0; i < Person::players.size(); i++) {
                             if (i == k)
                                 continue;
                             if (Person::players[i]->animTarget == swordslashanim ||
@@ -4151,7 +4148,7 @@ void doAttacks()
                     //normal attacks (?)
                     Person::players[k]->hasvictim = 0;
                     if (Person::players.size() > 1)
-                        for (int i = 0; i < Person::players.size(); i++) {
+                        for (unsigned i = 0; i < Person::players.size(); i++) {
                             if (i == k || !(k == 0 || i == 0))
                                 continue;
                             if (!Person::players[k]->hasvictim)
@@ -4422,7 +4419,7 @@ void doAttacks()
                         }
                     const bool hasstaff = attackweapon == staff;
                     if (k == 0 && Person::players.size() > 1)
-                        for (int i = 0; i < Person::players.size(); i++) {
+                        for (unsigned i = 0; i < Person::players.size(); i++) {
                             if (i == k)
                                 continue;
                             if ((playerrealattackkeydown || Person::players[i]->dead || !hasstaff) &&
@@ -4547,7 +4544,7 @@ void doAttacks()
                         }
                     if (!Person::players[k]->hasvictim) {
                         //find victim
-                        for (int i = 0; i < Person::players.size(); i++) {
+                        for (unsigned i = 0; i < Person::players.size(); i++) {
                             if (i == k || !(i == 0 || k == 0))
                                 continue;
                             if (!Person::players[i]->skeleton.free) {
@@ -4610,8 +4607,8 @@ void doPlayerCollisions()
     static XYZ rotatetarget;
     static float collisionradius;
     if (Person::players.size() > 1)
-        for (int k = 0; k < Person::players.size(); k++)
-            for (int i = k + 1; i < Person::players.size(); i++) {
+        for (unsigned k = 0; k < Person::players.size(); k++)
+            for (unsigned i = k + 1; i < Person::players.size(); i++) {
                 //neither player is part of a reversal
                 if ((animation[Person::players[i]->animTarget].attack != reversed &&
                         animation[Person::players[i]->animTarget].attack != reversal &&
@@ -4809,7 +4806,7 @@ void doPlayerCollisions()
             }
 }
 
-void doAI(int i)
+void doAI(unsigned i)
 {
     static bool connected;
     if (Person::players[i]->aitype != playercontrolled && indialogue == -1) {
@@ -4969,7 +4966,7 @@ void doAI(int i)
 
                 if (Person::players[i]->losupdatedelay < 0 && !editorenabled && Person::players[i]->occluded < 2) {
                     Person::players[i]->losupdatedelay = .2;
-                    for (int j = 0; j < Person::players.size(); j++)
+                    for (unsigned j = 0; j < Person::players.size(); j++)
                         if (j == 0 || Person::players[j]->skeleton.free || Person::players[j]->aitype != passivetype)
                             if (abs(Random() % 2) || animation[Person::players[j]->animTarget].height != lowheight || j != 0)
                                 if (distsq(&Person::players[i]->coords, &Person::players[j]->coords) < 400)
@@ -5090,7 +5087,7 @@ void doAI(int i)
                 //wolf smell
                 if (Person::players[i]->creature == wolftype) {
                     XYZ windsmell;
-                    for (int j = 0; j < Person::players.size(); j++) {
+                    for (unsigned j = 0; j < Person::players.size(); j++) {
                         if (j == 0 || (Person::players[j]->dead && Person::players[j]->bloodloss > 0)) {
                             float smelldistance = 50;
                             if (j == 0 && Person::players[j]->num_weapons > 0) {
@@ -5113,7 +5110,7 @@ void doAI(int i)
 
                 if (Person::players[i]->howactive < typesleeping && Person::players[i]->losupdatedelay < 0 && !editorenabled && Person::players[i]->occluded < 2) {
                     Person::players[i]->losupdatedelay = .2;
-                    for (int j = 0; j < Person::players.size(); j++) {
+                    for (unsigned j = 0; j < Person::players.size(); j++) {
                         if (j == 0 || Person::players[j]->skeleton.free || Person::players[j]->aitype != passivetype) {
                             if (abs(Random() % 2) || animation[Person::players[j]->animTarget].height != lowheight || j != 0)
                                 if (distsq(&Person::players[i]->coords, &Person::players[j]->coords) < 400)
@@ -5303,7 +5300,7 @@ void doAI(int i)
                 if (!Person::players[i]->ally) {
                     int closest = -1;
                     float closestdist = -1;
-                    for (int k = 0; k < Person::players.size(); k++) {
+                    for (unsigned k = 0; k < Person::players.size(); k++) {
                         if (k != i && k != 0 && !Person::players[k]->dead &&
                                 Person::players[k]->howactive < typedead1 &&
                                 !Person::players[k]->skeleton.free &&
@@ -5403,7 +5400,7 @@ void doAI(int i)
                 if (Person::players[i]->ally < 0) {
                     int closest = -1;
                     float closestdist = -1;
-                    for (int k = 0; k < weapons.size(); k++)
+                    for (unsigned k = 0; k < weapons.size(); k++)
                         if (weapons[k].owner == -1) {
                             float distance = distsq(&Person::players[i]->coords, &weapons[k].position);
                             if (closestdist == -1 || distance < closestdist) {
@@ -5515,7 +5512,7 @@ void doAI(int i)
             }
             //go for weapon on the ground
             if (Person::players[i]->wentforweapon < 3)
-                for (int k = 0; k < weapons.size(); k++)
+                for (unsigned k = 0; k < weapons.size(); k++)
                     if (Person::players[i]->creature != wolftype)
                         if (Person::players[i]->num_weapons == 0 &&
                                 weapons[k].owner == -1 &&
@@ -5652,7 +5649,7 @@ void doAI(int i)
                          Person::players[i]->isCrouch() ||
                          Person::players[i]->isRun())) {
                     int target = -2;
-                    for (int j = 0; j < Person::players.size(); j++)
+                    for (unsigned j = 0; j < Person::players.size(); j++)
                         if (j != i && !Person::players[j]->skeleton.free &&
                                 Person::players[j]->hasvictim &&
                                 (tutoriallevel == 1 && reversaltrain ||
@@ -6034,8 +6031,6 @@ void MenuTick()
 
     static int oldmainmenu = mainmenu;
 
-    char sbuf[256];
-
     if (Input::MouseClicked() && (selected >= 0)) { // handling of the left mouse clic in menus
         set<pair<int,int>>::iterator newscreenresolution;
         switch (mainmenu) {
@@ -6629,8 +6624,9 @@ void Game::Tick()
 
             if (talkdelay <= 0 && indialogue == -1 && animation[Person::players[0]->animTarget].height != highheight)
                 for (int i = 0; i < numdialogues; i++) {
-                    int realdialoguetype;
+                    unsigned realdialoguetype;
                     bool special;
+                    /* FIXME - Seems like modulo done with ifs */
                     if (dialoguetype[i] > 49) {
                         realdialoguetype = dialoguetype[i] - 50;
                         special = 1;
@@ -6866,7 +6862,7 @@ void Game::Tick()
                             }
                         }
 
-                        for (int j = 0; j < Person::players.size(); j++) {
+                        for (unsigned j = 0; j < Person::players.size(); j++) {
                             participantfacing[whichdialogue][indialogue][j] = participantfacing[whichdialogue][indialogue - 1][j];
                         }
                     }
@@ -6954,7 +6950,7 @@ void Game::Tick()
                         }
                         if (dialoguetype[whichdialogue] > 49 && dialoguetype[whichdialogue] < 60) {
                             hostile = 1;
-                            for (int i = 1; i < Person::players.size(); i++) {
+                            for (unsigned i = 1; i < Person::players.size(); i++) {
                                 Person::players[i]->aitype = attacktypecutoff;
                             }
                         }
@@ -6993,11 +6989,11 @@ void Game::Tick()
 
             doJumpReversals();
 
-            for (int k = 0; k < Person::players.size(); k++)
+            for (unsigned k = 0; k < Person::players.size(); k++)
                 if (k != 0 && Person::players[k]->immobile)
                     Person::players[k]->coords = Person::players[k]->realoldcoords;
 
-            for (int k = 0; k < Person::players.size(); k++) {
+            for (unsigned k = 0; k < Person::players.size(); k++) {
                 if (!isnormal(Person::players[k]->coords.x) || !isnormal(Person::players[k]->coords.y) || !isnormal(Person::players[k]->coords.z)) {
                     if (!isnormal(Person::players[k]->coords.x) || !isnormal(Person::players[k]->coords.y) || !isnormal(Person::players[k]->coords.z)) {
                         Person::players[k]->DoDamage(1000);
@@ -7031,7 +7027,7 @@ void Game::Tick()
             static bool movekey;
 
             //?
-            for (int i = 0; i < Person::players.size(); i++) {
+            for (unsigned i = 0; i < Person::players.size(); i++) {
                 static float oldtargetyaw;
                 if (!Person::players[i]->skeleton.free) {
                     oldtargetyaw = Person::players[i]->targetyaw;
@@ -7119,7 +7115,7 @@ void Game::Tick()
                                 }
 
                     //avoid flaming players
-                    for (int j = 0; j < Person::players.size(); j++)
+                    for (unsigned j = 0; j < Person::players.size(); j++)
                         if (Person::players[j]->onfire)
                             if (distsq(&Person::players[j]->coords, &Person::players[i]->coords) < sq(0.3) * 200)
                                 if (     distsq(&Person::players[i]->coords, &Person::players[j]->coords) <
@@ -7202,7 +7198,7 @@ void Game::Tick()
                                  Person::players[i]->isFlip() ||
                                  Person::players[i]->isFlip() ||
                                  Person::players[i]->aitype != playercontrolled)) {
-                            for (int j = 0; j < weapons.size(); j++) {
+                            for (unsigned j = 0; j < weapons.size(); j++) {
                                 if ((weapons[j].velocity.x == 0 && weapons[j].velocity.y == 0 && weapons[j].velocity.z == 0 ||
                                         Person::players[i]->aitype == playercontrolled) &&
                                         weapons[j].owner == -1 &&
@@ -7227,7 +7223,7 @@ void Game::Tick()
                                                         Person::players[i]->aitype == playercontrolled) &&
                                                         weapons[j].owner == -1 ||
                                                         Person::players[i]->victim &&
-                                                        weapons[j].owner == Person::players[i]->victim->id)
+                                                        weapons[j].owner == int(Person::players[i]->victim->id))
                                                     if (distsqflat(&Person::players[i]->coords, &weapons[j].position) < 2 && Person::players[i]->weaponactive == -1)
                                                         if (distsq(&Person::players[i]->coords, &weapons[j].position) < 1 || Person::players[i]->victim) {
                                                             if (weapons[j].getType() != staff)
@@ -7255,13 +7251,13 @@ void Game::Tick()
                                                 Person::players[i]->throwtogglekeydown = 1;
                                                 Person::players[i]->hasvictim = 0;
 
-                                                for (int k = 0; k < weapons.size(); k++) {
+                                                for (unsigned k = 0; k < weapons.size(); k++) {
                                                     if (Person::players[i]->weaponactive == -1)
                                                         if ((weapons[k].velocity.x == 0 && weapons[k].velocity.y == 0 && weapons[k].velocity.z == 0 ||
                                                                 Person::players[i]->aitype == playercontrolled) &&
                                                                 weapons[k].owner == -1 ||
                                                                 Person::players[i]->victim &&
-                                                                weapons[k].owner == Person::players[i]->victim->id)
+                                                                weapons[k].owner == int(Person::players[i]->victim->id))
                                                             if (distsqflat(&Person::players[i]->coords, &weapons[k].position) < 3 &&
                                                                     Person::players[i]->weaponactive == -1) {
                                                                 if (weapons[k].getType() != staff)
@@ -7285,7 +7281,7 @@ void Game::Tick()
                                     Person::players[i]->isIdle() || Person::players[i]->animTarget == rollanim ||
                                     Person::players[i]->animTarget == backhandspringanim) {
                                 if (Person::players.size() > 1)
-                                    for (int j = 0; j < Person::players.size(); j++) {
+                                    for (unsigned j = 0; j < Person::players.size(); j++) {
                                         if (Person::players[i]->weaponactive == -1)
                                             if (j != i)
                                                 if (Person::players[j]->num_weapons &&
@@ -7392,7 +7388,7 @@ void Game::Tick()
                                         Person::players[i]->animTarget == sneakanim ||
                                         Person::players[i]->isFlip())
                                     if (Person::players.size() > 1)
-                                        for (int j = 0; j < Person::players.size(); j++) {
+                                        for (unsigned j = 0; j < Person::players.size(); j++) {
                                             if (i != j)
                                                 if (tutoriallevel != 1 || tutorialstage == 49)
                                                     if (hostile)
@@ -7456,7 +7452,7 @@ void Game::Tick()
                                 }
 
                                 Person::players[i]->weaponactive = -1;
-                                for (int j = 0; j < Person::players.size(); j++) {
+                                for (unsigned j = 0; j < Person::players.size(); j++) {
                                     Person::players[j]->wentforweapon = 0;
                                 }
                             }
@@ -7553,14 +7549,14 @@ void Game::Tick()
                             if (i == 0) {
                                 Person::players[i]->superruntoggle = 1;
                                 if (Person::players.size() > 1)
-                                    for (int j = 0; j < Person::players.size(); j++)
+                                    for (unsigned j = 0; j < Person::players.size(); j++)
                                         if (j != i && !Person::players[j]->skeleton.free && Person::players[j]->aitype == passivetype)
                                             if (distsq(&Person::players[j]->coords, &Person::players[i]->coords) < 16)
                                                 Person::players[i]->superruntoggle = 0;
                             }
 
                             if (Person::players.size() > 1)
-                                for (int j = 0; j < Person::players.size(); j++) {
+                                for (unsigned j = 0; j < Person::players.size(); j++) {
                                     if (j != i && !Person::players[j]->skeleton.free && Person::players[j]->victim && Person::players[i]->lowreversaldelay <= 0) {
                                         if (distsq(&Person::players[j]->coords, &Person::players[j]->victim->coords) < 3 &&
                                                 Person::players[j]->victim == Person::players[i] &&
@@ -7604,7 +7600,7 @@ void Game::Tick()
                             target = -2;
                             if (Person::players[i]->isCrouch()) {
                                 if (Person::players.size() > 1)
-                                    for (int j = 0; j < Person::players.size(); j++) {
+                                    for (unsigned j = 0; j < Person::players.size(); j++) {
                                         if (j != i &&
                                                 !Person::players[j]->skeleton.free &&
                                                 Person::players[j]->victim &&
@@ -7794,7 +7790,7 @@ void Game::Tick()
                                 //Dodge sweep?
                                 target = -2;
                                 if (Person::players.size() > 1)
-                                    for (int j = 0; j < Person::players.size(); j++) {
+                                    for (unsigned j = 0; j < Person::players.size(); j++) {
                                         if (j != i && !Person::players[j]->skeleton.free && Person::players[j]->victim) {
                                             if (distsq(&Person::players[j]->coords, &Person::players[j]->victim->coords) < 3 &&
                                                     (Person::players[j]->victim == Person::players[i]) &&
@@ -7879,7 +7875,7 @@ void Game::Tick()
             }
 
             //Rotation
-            for (int k = 0; k < Person::players.size(); k++) {
+            for (unsigned k = 0; k < Person::players.size(); k++) {
                 if (fabs(Person::players[k]->yaw - Person::players[k]->targetyaw) > 180) {
                     if (Person::players[k]->yaw > Person::players[k]->targetyaw)
                         Person::players[k]->yaw -= 360;
@@ -7916,7 +7912,7 @@ void Game::Tick()
             }
 
             //do animations
-            for (int k = 0; k < Person::players.size(); k++) {
+            for (unsigned k = 0; k < Person::players.size(); k++) {
                 Person::players[k]->DoAnimations();
                 Person::players[k]->whichpatchx = Person::players[k]->coords.x / (terrain.size / subdivision * terrain.scale);
                 Person::players[k]->whichpatchz = Person::players[k]->coords.z / (terrain.size / subdivision * terrain.scale);
@@ -8100,7 +8096,7 @@ void Game::TickOnceAfter()
         realthreat = 0;
 
         musictype = leveltheme;
-        for (int i = 0; i < Person::players.size(); i++) {
+        for (unsigned i = 0; i < Person::players.size(); i++) {
             if ((Person::players[i]->aitype == attacktypecutoff ||
                     Person::players[i]->aitype == getweapontype ||
                     Person::players[i]->aitype == gethelptype ||
@@ -8217,7 +8213,7 @@ void Game::TickOnceAfter()
                     winhotspot = true;
 
         int numalarmed = 0;
-        for (int i = 1; i < Person::players.size(); i++)
+        for (unsigned i = 1; i < Person::players.size(); i++)
             if (!Person::players[i]->dead && Person::players[i]->aitype == attacktypecutoff && Person::players[i]->surprised <= 0)
                 numalarmed++;
         if (numalarmed > maxalarmed)
@@ -8229,7 +8225,7 @@ void Game::TickOnceAfter()
                 targetlevel = whichlevel;
             }
             alldead = true;
-            for (int i = 1; i < Person::players.size(); i++) {
+            for (unsigned i = 1; i < Person::players.size(); i++) {
                 if (!Person::players[i]->dead && Person::players[i]->howactive < typedead1) {
                     alldead = false;
                     break;