]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameTick.cpp
Pass killeveryone maps when friends are alive
[lugaru.git] / Source / GameTick.cpp
index 1a22117142c4727a5902142b209fefe00f0a8a4b..dbd6f0e3977541aba323b8ae2e6668b188aecd7f 100644 (file)
@@ -1472,6 +1472,9 @@ void Game::ProcessDevInput()
             Person::players.back()->power = Person::players[0]->power;
             Person::players.back()->speedmult = Person::players[0]->speedmult;
 
+            if (Input::isKeyDown(SDL_SCANCODE_RSHIFT))
+                Person::players.back()->isplayerfriend = true;
+
             Person::players.back()->loaded = true;
         }
 
@@ -2190,7 +2193,23 @@ void doAttacks()
         }
         if (Person::players[k]->animTarget != rabbitrunninganim && Person::players[k]->animTarget != wolfrunninganim) {
             if (!Person::players[k]->isPlayerControlled()) {
-                Person::players[k]->victim = Person::players[0];
+                if (Person::players[k]->isPlayerFriend()) {
+                    bool found = false;
+                    for (unsigned k2 = 1; k2 < Person::players.size(); k2++) {
+                        if (k != k2 &&
+                            !Person::players[k2]->dead &&
+                            Person::players[k2]->aitype == attacktypecutoff) {
+                            Person::players[k]->victim = Person::players[k2];
+                            found = true;
+                            break;
+                        }
+                    }
+                    if (!found) {
+                        Person::players[k]->attackkeydown = 0;
+                    }
+                } else {
+                    Person::players[k]->victim = Person::players[0];
+                }
             }
             //attack key pressed
             if (Person::players[k]->attackkeydown) {
@@ -4484,6 +4503,7 @@ void Game::TickOnceAfter()
                  Person::players[i]->aitype == gethelptype ||
                  Person::players[i]->aitype == searchtype) &&
                 !Person::players[i]->dead &&
+                !Person::players[i]->isPlayerFriend() &&
                 (Person::players[i]->animTarget != sneakattackedanim &&
                  Person::players[i]->animTarget != knifesneakattackedanim &&
                  Person::players[i]->animTarget != swordsneakattackedanim)) {
@@ -4634,7 +4654,7 @@ void Game::TickOnceAfter()
             }
             alldead = true;
             for (unsigned i = 1; i < Person::players.size(); i++) {
-                if (!Person::players[i]->dead && Person::players[i]->howactive < typedead1) {
+              if (!Person::players[i]->dead && Person::players[i]->howactive < typedead1 && !Person::players[i]->isPlayerFriend()) {
                     alldead = false;
                     break;
                 }