]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameTick.cpp
Added a warning when loading a map with an old map version
[lugaru.git] / Source / GameTick.cpp
index 13eb1cbff770768c09f14b06622ef81508e62a93..a7b91b4cf1f93233fd5bfefa910d8e45cb367b79 100644 (file)
@@ -899,6 +899,9 @@ void Game::Loadlevel(const std::string& name)
     Person::players.resize(1);
 
     funpackf(tfile, "Bi", &mapvers);
+    if (mapvers < 12) {
+        cerr << name << " has obsolete map version " << mapvers << endl;
+    }
     if (mapvers >= 15)
         funpackf(tfile, "Bi", &indemo);
     else
@@ -992,6 +995,10 @@ void Game::Loadlevel(const std::string& name)
     if (mapvers >= 7) {
         int numhotspots;
         funpackf(tfile, "Bi", &numhotspots);
+        if (numhotspots < 0) {
+            cerr << "Map " << name << " have an invalid number of hotspots" << endl;
+            numhotspots = 0;
+        }
         Hotspot::hotspots.resize(numhotspots);
         for (int i = 0; i < Hotspot::hotspots.size(); i++) {
             funpackf(tfile, "Bi Bf Bf Bf Bf", &Hotspot::hotspots[i].type, &Hotspot::hotspots[i].size, &Hotspot::hotspots[i].position.x, &Hotspot::hotspots[i].position.y, &Hotspot::hotspots[i].position.z);
@@ -1771,7 +1778,12 @@ void doTutorial()
 void doDebugKeys()
 {
     float headprop, bodyprop, armprop, legprop;
-    if (debugmode) {
+    if (!debugmode) {
+        return;
+    }
+
+    if (Input::isKeyDown(SDL_SCANCODE_LALT)) {
+        /* Invicible */
         if (Input::isKeyPressed(SDL_SCANCODE_H)) {
             Person::players[0]->damagetolerance = 200000;
             Person::players[0]->damage = 0;
@@ -1780,6 +1792,7 @@ void doDebugKeys()
             Person::players[0]->superpermanentdamage = 0;
         }
 
+        /* Change environment */
         if (Input::isKeyPressed(SDL_SCANCODE_J)) {
             environment++;
             if (environment > 2)
@@ -1787,33 +1800,49 @@ void doDebugKeys()
             Setenvironment(environment);
         }
 
+        /* Camera mode */
         if (Input::isKeyPressed(SDL_SCANCODE_C)) {
             cameramode = !cameramode;
         }
 
-        if (Input::isKeyPressed(SDL_SCANCODE_X) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
-            if (Person::players[0]->num_weapons > 0) {
-                if (weapons[Person::players[0]->weaponids[0]].getType() == sword)
-                    weapons[Person::players[0]->weaponids[0]].setType(staff);
-                else if (weapons[Person::players[0]->weaponids[0]].getType() == staff)
-                    weapons[Person::players[0]->weaponids[0]].setType(knife);
-                else
-                    weapons[Person::players[0]->weaponids[0]].setType(sword);
+        /* Toggle Slow motion */
+        if (Input::isKeyPressed(SDL_SCANCODE_B)) {
+            slomo = 1 - slomo;
+            slomodelay = 1000;
+        }
+
+        /* Ragdoll */
+        if (Input::isKeyPressed(SDL_SCANCODE_N)) {
+            Person::players[0]->RagDoll(0);
+
+            emit_sound_at(whooshsound, Person::players[0]->coords, 128.);
+        }
+
+        /* Grow tree leaves?? */
+        if (Input::isKeyPressed(SDL_SCANCODE_Y)) {
+            for (int i = 0; i < objects.numobjects; i++) {
+                if (objects.type[i] == treeleavestype) {
+                    objects.scale[i] *= .9;
+                }
             }
         }
 
-        if (Input::isKeyPressed(SDL_SCANCODE_X) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
-            int closest = findClosestPlayer();
+        /* Change (or add) weapon */
+        if (Input::isKeyPressed(SDL_SCANCODE_X)) {
+            int closest = 0;
+            if (!Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+                closest = findClosestPlayer();
+            }
+
             if (closest >= 0) {
-                if (Person::players[closest]->num_weapons) {
+                if (Person::players[closest]->num_weapons > 0) {
                     if (weapons[Person::players[closest]->weaponids[0]].getType() == sword)
                         weapons[Person::players[closest]->weaponids[0]].setType(staff);
                     else if (weapons[Person::players[closest]->weaponids[0]].getType() == staff)
                         weapons[Person::players[closest]->weaponids[0]].setType(knife);
                     else
                         weapons[Person::players[closest]->weaponids[0]].setType(sword);
-                }
-                if (!Person::players[closest]->num_weapons) {
+                } else {
                     Person::players[closest]->weaponids[0] = weapons.size();
 
                     weapons.push_back(Weapon(knife, closest));
@@ -1823,19 +1852,37 @@ void doDebugKeys()
             }
         }
 
+        /* Change yaw? */
         if (Input::isKeyDown(SDL_SCANCODE_U)) {
-            int closest = findClosestPlayer();
+            int closest = 0;
+            if (!Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+                closest = findClosestPlayer();
+            }
+
             if (closest >= 0) {
                 Person::players[closest]->yaw += multiplier * 50;
                 Person::players[closest]->targetyaw = Person::players[closest]->yaw;
             }
         }
 
+        /* Toggle fire */
+        if (Input::isKeyPressed(SDL_SCANCODE_F)) {
+            Person::players[0]->onfire = 1 - Person::players[0]->onfire;
+            if (Person::players[0]->onfire) {
+                Person::players[0]->CatchFire();
+            }
+            if (!Person::players[0]->onfire) {
+                emit_sound_at(fireendsound, Person::players[0]->coords);
+                pause_sound(stream_firesound);
+            }
+        }
 
+        /* Change skin */
         if (Input::isKeyPressed(SDL_SCANCODE_O) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
-            int closest = findClosestPlayer();
-            if (Input::isKeyDown(SDL_SCANCODE_LCTRL))
-                closest = 0;
+            int closest = 0;
+            if (!Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+                closest = findClosestPlayer();
+            }
 
             if (closest >= 0) {
                 Person::players[closest]->whichskin++;
@@ -1851,8 +1898,13 @@ void doDebugKeys()
             Person::players[closest]->addClothes();
         }
 
+        /* Change creature type */
         if (Input::isKeyPressed(SDL_SCANCODE_O) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
-            int closest = findClosestPlayer();
+            int closest = 0;
+            if (!Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+                closest = findClosestPlayer();
+            }
+
             if (closest >= 0) {
                 if (Person::players[closest]->creature == wolftype) {
                     headprop = Person::players[closest]->proportionhead.x / 1.1;
@@ -1915,12 +1967,7 @@ void doDebugKeys()
             }
         }
 
-        if (Input::isKeyPressed(SDL_SCANCODE_B) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
-            slomo = 1 - slomo;
-            slomodelay = 1000;
-        }
-
-
+        /* Decapitate */
         if (((Input::isKeyPressed(SDL_SCANCODE_I) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)))) {
             int closest = -1;
             float closestdist = std::numeric_limits<float>::max();
@@ -1975,6 +2022,7 @@ void doDebugKeys()
             }
         }
 
+        /* Explode */
         if (((Input::isKeyPressed(SDL_SCANCODE_I) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)))) {
             int closest = findClosestPlayer();
             XYZ flatfacing2, flatvelocity2;
@@ -2081,32 +2129,8 @@ void doDebugKeys()
             }
         }
 
-        if (Input::isKeyPressed(SDL_SCANCODE_F)) {
-            Person::players[0]->onfire = 1 - Person::players[0]->onfire;
-            if (Person::players[0]->onfire) {
-                Person::players[0]->CatchFire();
-            }
-            if (!Person::players[0]->onfire) {
-                emit_sound_at(fireendsound, Person::players[0]->coords);
-                pause_sound(stream_firesound);
-            }
-        }
-
-        if (Input::isKeyPressed(SDL_SCANCODE_N) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-            Person::players[0]->RagDoll(0);
-
-            emit_sound_at(whooshsound, Person::players[0]->coords, 128.);
-        }
-
-        if (Input::isKeyPressed(SDL_SCANCODE_N) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-            for (int i = 0; i < objects.numobjects; i++) {
-                if (objects.type[i] == treeleavestype) {
-                    objects.scale[i] *= .9;
-                }
-            }
-        }
-
-        if (Input::isKeyPressed(SDL_SCANCODE_M) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
+        /* Enable editor */
+        if (Input::isKeyPressed(SDL_SCANCODE_M) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
             editorenabled = !editorenabled;
             if (editorenabled) {
                 Person::players[0]->damagetolerance = 100000;
@@ -2119,283 +2143,283 @@ void doDebugKeys()
             Person::players[0]->bloodloss = 0;
             Person::players[0]->deathbleeding = 0;
         }
+    }
 
-        //skip level
-        if (whichlevel != -2 && Input::isKeyPressed(SDL_SCANCODE_K) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !editorenabled) {
-            targetlevel++;
-            if (targetlevel > numchallengelevels - 1)
-                targetlevel = 0;
-            loading = 1;
-            leveltime = 5;
-        }
+    //skip level
+    if (whichlevel != -2 && Input::isKeyPressed(SDL_SCANCODE_K) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !editorenabled) {
+        targetlevel++;
+        if (targetlevel > numchallengelevels - 1)
+            targetlevel = 0;
+        loading = 1;
+        leveltime = 5;
+    }
 
-        if (editorenabled) {
-            if (Input::isKeyPressed(SDL_SCANCODE_DELETE) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
-                int closest = findClosestPlayer();
-                if (closest >= 0) {
-                    Person::players.erase(Person::players.begin()+closest);
-                }
+    if (editorenabled) {
+        if (Input::isKeyPressed(SDL_SCANCODE_DELETE) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
+            int closest = findClosestPlayer();
+            if (closest >= 0) {
+                Person::players.erase(Person::players.begin()+closest);
             }
+        }
 
-            if (Input::isKeyPressed(SDL_SCANCODE_DELETE) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-                int closest = findClosestObject();
-                if (closest >= 0)
-                    objects.position[closest].y -= 500;
-            }
+        if (Input::isKeyPressed(SDL_SCANCODE_DELETE) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            int closest = findClosestObject();
+            if (closest >= 0)
+                objects.position[closest].y -= 500;
+        }
 
-            if (Input::isKeyPressed(SDL_SCANCODE_M) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
-                if (objects.numobjects < max_objects - 1) {
-                    XYZ scenecoords;
-                    scenecoords.x = Person::players[0]->coords.x;
-                    scenecoords.z = Person::players[0]->coords.z;
-                    scenecoords.y = Person::players[0]->coords.y - 3;
-                    if (editortype == bushtype)
-                        scenecoords.y = Person::players[0]->coords.y - .5;
-                    if (editortype == firetype)
-                        scenecoords.y = Person::players[0]->coords.y - .5;
-                    //objects.MakeObject(abs(Random()%3),scenecoords,Random()%360);
-                    float temprotat, temprotat2;
-                    temprotat = editoryaw;
-                    temprotat2 = editorpitch;
-                    if (temprotat < 0 || editortype == bushtype)
-                        temprotat = Random() % 360;
-                    if (temprotat2 < 0)
-                        temprotat2 = Random() % 360;
-
-                    objects.MakeObject(editortype, scenecoords, (int)temprotat - ((int)temprotat) % 30, (int)temprotat2, editorsize);
-                    if (editortype == treetrunktype)
-                        objects.MakeObject(treeleavestype, scenecoords, Random() % 360 * (temprotat2 < 2) + (int)editoryaw - ((int)editoryaw) % 30, editorpitch, editorsize);
-                }
+        if (Input::isKeyPressed(SDL_SCANCODE_M) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
+            if (objects.numobjects < max_objects - 1) {
+                XYZ scenecoords;
+                scenecoords.x = Person::players[0]->coords.x;
+                scenecoords.z = Person::players[0]->coords.z;
+                scenecoords.y = Person::players[0]->coords.y - 3;
+                if (editortype == bushtype)
+                    scenecoords.y = Person::players[0]->coords.y - .5;
+                if (editortype == firetype)
+                    scenecoords.y = Person::players[0]->coords.y - .5;
+                //objects.MakeObject(abs(Random()%3),scenecoords,Random()%360);
+                float temprotat, temprotat2;
+                temprotat = editoryaw;
+                temprotat2 = editorpitch;
+                if (temprotat < 0 || editortype == bushtype)
+                    temprotat = Random() % 360;
+                if (temprotat2 < 0)
+                    temprotat2 = Random() % 360;
+
+                objects.MakeObject(editortype, scenecoords, (int)temprotat - ((int)temprotat) % 30, (int)temprotat2, editorsize);
+                if (editortype == treetrunktype)
+                    objects.MakeObject(treeleavestype, scenecoords, Random() % 360 * (temprotat2 < 2) + (int)editoryaw - ((int)editoryaw) % 30, editorpitch, editorsize);
             }
+        }
 
-            if (Input::isKeyPressed(SDL_SCANCODE_P) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-                Person::players.push_back(shared_ptr<Person>(new Person()));
+        if (Input::isKeyPressed(SDL_SCANCODE_P) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            Person::players.push_back(shared_ptr<Person>(new Person()));
 
-                Person::players.back()->id = Person::players.size()-1;
+            Person::players.back()->id = Person::players.size()-1;
 
-                Person::players.back()->scale = Person::players[0]->scale;
-                Person::players.back()->creature = rabbittype;
-                Person::players.back()->howactive = editoractive;
+            Person::players.back()->scale = Person::players[0]->scale;
+            Person::players.back()->creature = rabbittype;
+            Person::players.back()->howactive = editoractive;
 
-                int k = abs(Random() % 2) + 1;
-                if (k == 0) {
-                    Person::players.back()->whichskin = 0;
-                } else if (k == 1) {
-                    Person::players.back()->whichskin = 1;
-                } else {
-                    Person::players.back()->whichskin = 2;
-                }
+            int k = abs(Random() % 2) + 1;
+            if (k == 0) {
+                Person::players.back()->whichskin = 0;
+            } else if (k == 1) {
+                Person::players.back()->whichskin = 1;
+            } else {
+                Person::players.back()->whichskin = 2;
+            }
 
-                Person::players.back()->skeletonLoad(true);
+            Person::players.back()->skeletonLoad(true);
 
-                Person::players.back()->skeleton.drawmodelclothes.textureptr.load("Textures/Belt.png", 1);
-                Person::players.back()->speed = 1 + (float)(Random() % 100) / 1000;
+            Person::players.back()->skeleton.drawmodelclothes.textureptr.load("Textures/Belt.png", 1);
+            Person::players.back()->speed = 1 + (float)(Random() % 100) / 1000;
 
-                Person::players.back()->targetyaw = Person::players[0]->targetyaw;
-                Person::players.back()->yaw = Person::players[0]->yaw;
+            Person::players.back()->targetyaw = Person::players[0]->targetyaw;
+            Person::players.back()->yaw = Person::players[0]->yaw;
 
-                Person::players.back()->coords = Person::players[0]->coords;
-                Person::players.back()->oldcoords = Person::players.back()->coords;
-                Person::players.back()->realoldcoords = Person::players.back()->coords;
+            Person::players.back()->coords = Person::players[0]->coords;
+            Person::players.back()->oldcoords = Person::players.back()->coords;
+            Person::players.back()->realoldcoords = Person::players.back()->coords;
 
-                if (Person::players[0]->creature == wolftype) {
-                    headprop = Person::players[0]->proportionhead.x / 1.1;
-                    bodyprop = Person::players[0]->proportionbody.x / 1.1;
-                    armprop = Person::players[0]->proportionarms.x / 1.1;
-                    legprop = Person::players[0]->proportionlegs.x / 1.1;
-                }
+            if (Person::players[0]->creature == wolftype) {
+                headprop = Person::players[0]->proportionhead.x / 1.1;
+                bodyprop = Person::players[0]->proportionbody.x / 1.1;
+                armprop = Person::players[0]->proportionarms.x / 1.1;
+                legprop = Person::players[0]->proportionlegs.x / 1.1;
+            }
 
-                if (Person::players[0]->creature == rabbittype) {
-                    headprop = Person::players[0]->proportionhead.x / 1.2;
-                    bodyprop = Person::players[0]->proportionbody.x / 1.05;
-                    armprop = Person::players[0]->proportionarms.x / 1.00;
-                    legprop = Person::players[0]->proportionlegs.x / 1.1;
-                }
+            if (Person::players[0]->creature == rabbittype) {
+                headprop = Person::players[0]->proportionhead.x / 1.2;
+                bodyprop = Person::players[0]->proportionbody.x / 1.05;
+                armprop = Person::players[0]->proportionarms.x / 1.00;
+                legprop = Person::players[0]->proportionlegs.x / 1.1;
+            }
 
-                if (Person::players.back()->creature == wolftype) {
-                    Person::players.back()->proportionhead = 1.1 * headprop;
-                    Person::players.back()->proportionbody = 1.1 * bodyprop;
-                    Person::players.back()->proportionarms = 1.1 * armprop;
-                    Person::players.back()->proportionlegs = 1.1 * legprop;
-                }
+            if (Person::players.back()->creature == wolftype) {
+                Person::players.back()->proportionhead = 1.1 * headprop;
+                Person::players.back()->proportionbody = 1.1 * bodyprop;
+                Person::players.back()->proportionarms = 1.1 * armprop;
+                Person::players.back()->proportionlegs = 1.1 * legprop;
+            }
 
-                if (Person::players.back()->creature == rabbittype) {
-                    Person::players.back()->proportionhead = 1.2 * headprop;
-                    Person::players.back()->proportionbody = 1.05 * bodyprop;
-                    Person::players.back()->proportionarms = 1.00 * armprop;
-                    Person::players.back()->proportionlegs = 1.1 * legprop;
-                    Person::players.back()->proportionlegs.y = 1.05 * legprop;
-                }
+            if (Person::players.back()->creature == rabbittype) {
+                Person::players.back()->proportionhead = 1.2 * headprop;
+                Person::players.back()->proportionbody = 1.05 * bodyprop;
+                Person::players.back()->proportionarms = 1.00 * armprop;
+                Person::players.back()->proportionlegs = 1.1 * legprop;
+                Person::players.back()->proportionlegs.y = 1.05 * legprop;
+            }
 
-                if (cellophane) {
-                    Person::players.back()->proportionhead.z = 0;
-                    Person::players.back()->proportionbody.z = 0;
-                    Person::players.back()->proportionarms.z = 0;
-                    Person::players.back()->proportionlegs.z = 0;
-                }
+            if (cellophane) {
+                Person::players.back()->proportionhead.z = 0;
+                Person::players.back()->proportionbody.z = 0;
+                Person::players.back()->proportionarms.z = 0;
+                Person::players.back()->proportionlegs.z = 0;
+            }
 
-                Person::players.back()->tempanimation = Animation("Tempanim", lowheight, neutral);
+            Person::players.back()->tempanimation = Animation("Tempanim", lowheight, neutral);
 
-                Person::players.back()->damagetolerance = 200;
+            Person::players.back()->damagetolerance = 200;
 
-                Person::players.back()->protectionhead = Person::players[0]->protectionhead;
-                Person::players.back()->protectionhigh = Person::players[0]->protectionhigh;
-                Person::players.back()->protectionlow = Person::players[0]->protectionlow;
-                Person::players.back()->armorhead = Person::players[0]->armorhead;
-                Person::players.back()->armorhigh = Person::players[0]->armorhigh;
-                Person::players.back()->armorlow = Person::players[0]->armorlow;
-                Person::players.back()->metalhead = Person::players[0]->metalhead;
-                Person::players.back()->metalhigh = Person::players[0]->metalhigh;
-                Person::players.back()->metallow = Person::players[0]->metallow;
+            Person::players.back()->protectionhead = Person::players[0]->protectionhead;
+            Person::players.back()->protectionhigh = Person::players[0]->protectionhigh;
+            Person::players.back()->protectionlow = Person::players[0]->protectionlow;
+            Person::players.back()->armorhead = Person::players[0]->armorhead;
+            Person::players.back()->armorhigh = Person::players[0]->armorhigh;
+            Person::players.back()->armorlow = Person::players[0]->armorlow;
+            Person::players.back()->metalhead = Person::players[0]->metalhead;
+            Person::players.back()->metalhigh = Person::players[0]->metalhigh;
+            Person::players.back()->metallow = Person::players[0]->metallow;
 
-                Person::players.back()->immobile = Person::players[0]->immobile;
+            Person::players.back()->immobile = Person::players[0]->immobile;
 
-                Person::players.back()->numclothes = Person::players[0]->numclothes;
-                for (int i = 0; i < Person::players.back()->numclothes; i++) {
-                    strcpy(Person::players.back()->clothes[i], Person::players[0]->clothes[i]);
-                    Person::players.back()->clothestintr[i] = Person::players[0]->clothestintr[i];
-                    Person::players.back()->clothestintg[i] = Person::players[0]->clothestintg[i];
-                    Person::players.back()->clothestintb[i] = Person::players[0]->clothestintb[i];
-                }
-                Person::players.back()->addClothes();
+            Person::players.back()->numclothes = Person::players[0]->numclothes;
+            for (int i = 0; i < Person::players.back()->numclothes; i++) {
+                strcpy(Person::players.back()->clothes[i], Person::players[0]->clothes[i]);
+                Person::players.back()->clothestintr[i] = Person::players[0]->clothestintr[i];
+                Person::players.back()->clothestintg[i] = Person::players[0]->clothestintg[i];
+                Person::players.back()->clothestintb[i] = Person::players[0]->clothestintb[i];
+            }
+            Person::players.back()->addClothes();
 
-                Person::players.back()->power = Person::players[0]->power;
-                Person::players.back()->speedmult = Person::players[0]->speedmult;
+            Person::players.back()->power = Person::players[0]->power;
+            Person::players.back()->speedmult = Person::players[0]->speedmult;
 
-                Person::players.back()->loaded = true;
-            }
+            Person::players.back()->loaded = true;
+        }
 
-            if (Input::isKeyPressed(SDL_SCANCODE_P) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
-                if (Person::players.back()->numwaypoints < 90) {
-                    Person::players.back()->waypoints[Person::players.back()->numwaypoints] = Person::players[0]->coords;
-                    Person::players.back()->waypointtype[Person::players.back()->numwaypoints] = editorpathtype;
-                    Person::players.back()->numwaypoints++;
-                }
+        if (Input::isKeyPressed(SDL_SCANCODE_P) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
+            if (Person::players.back()->numwaypoints < 90) {
+                Person::players.back()->waypoints[Person::players.back()->numwaypoints] = Person::players[0]->coords;
+                Person::players.back()->waypointtype[Person::players.back()->numwaypoints] = editorpathtype;
+                Person::players.back()->numwaypoints++;
             }
+        }
 
-            if (Input::isKeyPressed(SDL_SCANCODE_P) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-                if (numpathpoints < 30) {
-                    bool connected, alreadyconnected;
-                    connected = 0;
-                    if (numpathpoints > 1)
-                        for (int i = 0; i < numpathpoints; i++) {
-                            if (distsq(&pathpoint[i], &Person::players[0]->coords) < .5 && i != pathpointselected && !connected) {
-                                alreadyconnected = 0;
-                                for (int j = 0; j < numpathpointconnect[pathpointselected]; j++) {
-                                    if (pathpointconnect[pathpointselected][j] == i)
-                                        alreadyconnected = 1;
-                                }
-                                if (!alreadyconnected) {
-                                    numpathpointconnect[pathpointselected]++;
-                                    connected = 1;
-                                    pathpointconnect[pathpointselected][numpathpointconnect[pathpointselected] - 1] = i;
-                                }
+        if (Input::isKeyPressed(SDL_SCANCODE_P) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            if (numpathpoints < 30) {
+                bool connected, alreadyconnected;
+                connected = 0;
+                if (numpathpoints > 1)
+                    for (int i = 0; i < numpathpoints; i++) {
+                        if (distsq(&pathpoint[i], &Person::players[0]->coords) < .5 && i != pathpointselected && !connected) {
+                            alreadyconnected = 0;
+                            for (int j = 0; j < numpathpointconnect[pathpointselected]; j++) {
+                                if (pathpointconnect[pathpointselected][j] == i)
+                                    alreadyconnected = 1;
+                            }
+                            if (!alreadyconnected) {
+                                numpathpointconnect[pathpointselected]++;
+                                connected = 1;
+                                pathpointconnect[pathpointselected][numpathpointconnect[pathpointselected] - 1] = i;
                             }
                         }
-                    if (!connected) {
-                        numpathpoints++;
-                        pathpoint[numpathpoints - 1] = Person::players[0]->coords;
-                        numpathpointconnect[numpathpoints - 1] = 0;
-                        if (numpathpoints > 1 && pathpointselected != -1) {
-                            numpathpointconnect[pathpointselected]++;
-                            pathpointconnect[pathpointselected][numpathpointconnect[pathpointselected] - 1] = numpathpoints - 1;
-                        }
-                        pathpointselected = numpathpoints - 1;
                     }
+                if (!connected) {
+                    numpathpoints++;
+                    pathpoint[numpathpoints - 1] = Person::players[0]->coords;
+                    numpathpointconnect[numpathpoints - 1] = 0;
+                    if (numpathpoints > 1 && pathpointselected != -1) {
+                        numpathpointconnect[pathpointselected]++;
+                        pathpointconnect[pathpointselected][numpathpointconnect[pathpointselected] - 1] = numpathpoints - 1;
+                    }
+                    pathpointselected = numpathpoints - 1;
                 }
             }
+        }
 
-            if (Input::isKeyPressed(SDL_SCANCODE_PERIOD)) {
-                pathpointselected++;
-                if (pathpointselected >= numpathpoints)
-                    pathpointselected = -1;
-            }
-            if (Input::isKeyPressed(SDL_SCANCODE_COMMA) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
-                pathpointselected--;
-                if (pathpointselected <= -2)
-                    pathpointselected = numpathpoints - 1;
-            }
-            if (Input::isKeyPressed(SDL_SCANCODE_COMMA) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
-                if (pathpointselected != -1) {
-                    numpathpoints--;
-                    pathpoint[pathpointselected] = pathpoint[numpathpoints];
-                    numpathpointconnect[pathpointselected] = numpathpointconnect[numpathpoints];
-                    for (int i = 0; i < numpathpointconnect[pathpointselected]; i++) {
-                        pathpointconnect[pathpointselected][i] = pathpointconnect[numpathpoints][i];
-                    }
-                    for (int i = 0; i < numpathpoints; i++) {
-                        for (int j = 0; j < numpathpointconnect[i]; j++) {
-                            if (pathpointconnect[i][j] == pathpointselected) {
-                                pathpointconnect[i][j] = pathpointconnect[i][numpathpointconnect[i] - 1];
-                                numpathpointconnect[i]--;
-                            }
-                            if (pathpointconnect[i][j] == numpathpoints) {
-                                pathpointconnect[i][j] = pathpointselected;
-                            }
+        if (Input::isKeyPressed(SDL_SCANCODE_PERIOD)) {
+            pathpointselected++;
+            if (pathpointselected >= numpathpoints)
+                pathpointselected = -1;
+        }
+        if (Input::isKeyPressed(SDL_SCANCODE_COMMA) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
+            pathpointselected--;
+            if (pathpointselected <= -2)
+                pathpointselected = numpathpoints - 1;
+        }
+        if (Input::isKeyPressed(SDL_SCANCODE_COMMA) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
+            if (pathpointselected != -1) {
+                numpathpoints--;
+                pathpoint[pathpointselected] = pathpoint[numpathpoints];
+                numpathpointconnect[pathpointselected] = numpathpointconnect[numpathpoints];
+                for (int i = 0; i < numpathpointconnect[pathpointselected]; i++) {
+                    pathpointconnect[pathpointselected][i] = pathpointconnect[numpathpoints][i];
+                }
+                for (int i = 0; i < numpathpoints; i++) {
+                    for (int j = 0; j < numpathpointconnect[i]; j++) {
+                        if (pathpointconnect[i][j] == pathpointselected) {
+                            pathpointconnect[i][j] = pathpointconnect[i][numpathpointconnect[i] - 1];
+                            numpathpointconnect[i]--;
+                        }
+                        if (pathpointconnect[i][j] == numpathpoints) {
+                            pathpointconnect[i][j] = pathpointselected;
                         }
                     }
-                    pathpointselected = numpathpoints - 1;
                 }
+                pathpointselected = numpathpoints - 1;
             }
+        }
 
-            if (Input::isKeyPressed(SDL_SCANCODE_LEFT) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+        if (Input::isKeyPressed(SDL_SCANCODE_LEFT) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            editortype--;
+            if (editortype == treeleavestype || editortype == 10)
                 editortype--;
-                if (editortype == treeleavestype || editortype == 10)
-                    editortype--;
-                if (editortype < 0)
-                    editortype = firetype;
-            }
+            if (editortype < 0)
+                editortype = firetype;
+        }
 
-            if (Input::isKeyPressed(SDL_SCANCODE_RIGHT) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+        if (Input::isKeyPressed(SDL_SCANCODE_RIGHT) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            editortype++;
+            if (editortype == treeleavestype || editortype == 10)
                 editortype++;
-                if (editortype == treeleavestype || editortype == 10)
-                    editortype++;
-                if (editortype > firetype)
-                    editortype = 0;
-            }
+            if (editortype > firetype)
+                editortype = 0;
+        }
 
-            if (Input::isKeyDown(SDL_SCANCODE_LEFT) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-                editoryaw -= multiplier * 100;
-                if (editoryaw < -.01)
-                    editoryaw = -.01;
-            }
+        if (Input::isKeyDown(SDL_SCANCODE_LEFT) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            editoryaw -= multiplier * 100;
+            if (editoryaw < -.01)
+                editoryaw = -.01;
+        }
 
-            if (Input::isKeyDown(SDL_SCANCODE_RIGHT) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-                editoryaw += multiplier * 100;
-            }
+        if (Input::isKeyDown(SDL_SCANCODE_RIGHT) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            editoryaw += multiplier * 100;
+        }
 
-            if (Input::isKeyDown(SDL_SCANCODE_UP) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-                editorsize += multiplier;
-            }
+        if (Input::isKeyDown(SDL_SCANCODE_UP) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            editorsize += multiplier;
+        }
 
-            if (Input::isKeyDown(SDL_SCANCODE_DOWN) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-                editorsize -= multiplier;
-                if (editorsize < .1)
-                    editorsize = .1;
-            }
+        if (Input::isKeyDown(SDL_SCANCODE_DOWN) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            editorsize -= multiplier;
+            if (editorsize < .1)
+                editorsize = .1;
+        }
 
 
-            if (Input::isKeyPressed(SDL_SCANCODE_LEFT) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-                mapradius -= multiplier * 10;
-            }
+        if (Input::isKeyPressed(SDL_SCANCODE_LEFT) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            mapradius -= multiplier * 10;
+        }
 
-            if (Input::isKeyPressed(SDL_SCANCODE_RIGHT) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-                mapradius += multiplier * 10;
-            }
-            if (Input::isKeyDown(SDL_SCANCODE_UP) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-                editorpitch += multiplier * 100;
-            }
+        if (Input::isKeyPressed(SDL_SCANCODE_RIGHT) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            mapradius += multiplier * 10;
+        }
+        if (Input::isKeyDown(SDL_SCANCODE_UP) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            editorpitch += multiplier * 100;
+        }
 
-            if (Input::isKeyDown(SDL_SCANCODE_DOWN) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
-                editorpitch -= multiplier * 100;
-                if (editorpitch < -.01)
-                    editorpitch = -.01;
-            }
-            if (Input::isKeyPressed(SDL_SCANCODE_DELETE) && objects.numobjects && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
-                int closest = findClosestObject();
-                if (closest >= 0)
-                    objects.DeleteObject(closest);
-            }
+        if (Input::isKeyDown(SDL_SCANCODE_DOWN) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
+            editorpitch -= multiplier * 100;
+            if (editorpitch < -.01)
+                editorpitch = -.01;
+        }
+        if (Input::isKeyPressed(SDL_SCANCODE_DELETE) && objects.numobjects && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
+            int closest = findClosestObject();
+            if (closest >= 0)
+                objects.DeleteObject(closest);
         }
     }
 }
@@ -4658,8 +4682,9 @@ void updateControlsMenu()
     Menu::setText(6, (string)"Draw: "    + (keyselect == 6 ? "_" : Input::keyToChar(drawkey)));
     Menu::setText(7, (string)"Throw: "   + (keyselect == 7 ? "_" : Input::keyToChar(throwkey)));
     Menu::setText(8, (string)"Attack: "  + (keyselect == 8 ? "_" : Input::keyToChar(attackkey)));
-    if (debugmode)
+    if (debugmode) {
         Menu::setText(9, (string)"Console: " + (keyselect == 9 ? "_" : Input::keyToChar(consolekey)));
+    }
 }
 
 /*
@@ -4717,8 +4742,9 @@ void Game::LoadMenu()
         Menu::addButton(6, "", 10 + 40, 160);
         Menu::addButton(7, "", 10 + 30, 120);
         Menu::addButton(8, "", 10 + 20, 80);
-        if (debugmode)
+        if (debugmode) {
             Menu::addButton(9, "", 10 + 10, 40);
+        }
         Menu::addButton(debugmode ? 10 : 9, "Back", 10, 10);
         updateControlsMenu();
         break;
@@ -5349,7 +5375,7 @@ void Game::Tick()
             leveltime += multiplier;
 
         //keys
-        if (Input::isKeyPressed(SDL_SCANCODE_V) && debugmode) {
+        if (Input::isKeyDown(SDL_SCANCODE_LALT) && Input::isKeyPressed(SDL_SCANCODE_V) && debugmode) {
             freeze = !freeze;
             if (freeze) {
                 OPENAL_SetFrequency(OPENAL_ALL);
@@ -5756,12 +5782,7 @@ void Game::Tick()
                 loading = 1;
                 leveltime = 5;
             }
-            if (!Input::isKeyDown(jumpkey))
-                respawnkeydown = 0;
-            if (Input::isKeyDown(jumpkey))
-                respawnkeydown = 1;
-
-
+            respawnkeydown = Input::isKeyDown(jumpkey);
 
 
             static bool movekey;