]> git.jsancho.org Git - lugaru.git/blobdiff - Source/Objects/Person.cpp
Moved knife catching test to a method and removed hardcoded rabbittype test
[lugaru.git] / Source / Objects / Person.cpp
index ff699a1cae6109729496d30d7a3f06130250d029..8898cac60bba81fce30ded86d76c38b5dc9c3ea4 100644 (file)
@@ -441,12 +441,12 @@ void Person::changeCreatureType(person_type type)
 {
     creature = type;
     whichskin = 0;
-    skeletonLoad(type == rabbittype);
+    skeletonLoad();
     scale = PersonType::types[creature].defaultScale;
     damagetolerance = PersonType::types[creature].defaultDamageTolerance;
 }
 
-void Person::skeletonLoad(bool clothes)
+void Person::skeletonLoad()
 {
     skeleton.id = id;
     skeleton.Load(
@@ -462,7 +462,7 @@ void Person::skeletonLoad(bool clothes)
         PersonType::types[creature].modelFileNames[6],
         PersonType::types[creature].lowModelFileName,
         PersonType::types[creature].modelClothesFileName,
-        clothes);
+        PersonType::types[creature].clothes);
 
     skeleton.drawmodel.textureptr.load(PersonType::types[creature].skins[whichskin], 1, &skeleton.skinText[0], &skeleton.skinsize);
 }
@@ -6009,19 +6009,10 @@ void Person::DoStuff()
         } else if (isRun()) {
             velocity += facing * multiplier * speed * 700 * scale;
             velspeed = findLength(&velocity);
-            if (creature == rabbittype) {
-                if (velspeed > speed * 55 * scale) {
-                    velocity /= velspeed;
-                    velspeed = speed * 55 * scale;
-                    velocity *= velspeed;
-                }
-            }
-            if (creature == wolftype) {
-                if (velspeed > speed * 75 * scale) {
-                    velocity /= velspeed;
-                    velspeed = speed * 75 * scale;
-                    velocity *= velspeed;
-                }
+            if (velspeed > speed * PersonType::types[creature].maxRunSpeed * scale) {
+                velocity /= velspeed;
+                velspeed = speed * PersonType::types[creature].maxRunSpeed * scale;
+                velocity *= velspeed;
             }
             velocity.y += gravity * multiplier * 20;
             ReflectVector(&velocity, terrain.getNormal(coords.x, coords.z));
@@ -8426,3 +8417,10 @@ void Person::doAI()
         }
     }
 }
+
+bool Person::catchKnife()
+{
+    return
+        ((PersonType::types[creature].knifeCatchingType == 0) && (Random() % 2 != 0) && (weaponactive == -1) && (aitype == attacktypecutoff)) ||
+        ((PersonType::types[creature].knifeCatchingType == 1) && (Random() % 3 != 0) && (weaponactive == -1) && (isIdle() || isRun() || animTarget == walkanim));
+}