X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FObjects%2FPerson.cpp;h=1187fb7ba76a6d3db2e29c4ece4ba1db35b17ebc;hb=35048f2f8374d1457a5cef19ea3af599037b6935;hp=02c174e3c932fee2a3a5557cfba20d51ae1a0fb3;hpb=93632bba29498fb64efa4a68c890f0fd162117ba;p=lugaru.git diff --git a/Source/Objects/Person.cpp b/Source/Objects/Person.cpp index 02c174e..1187fb7 100644 --- a/Source/Objects/Person.cpp +++ b/Source/Objects/Person.cpp @@ -72,7 +72,7 @@ extern float envsoundlife[30]; extern XYZ windvector; -std::vector> Person::players(1, std::shared_ptr(new Person())); +std::vector> Person::players; Person::Person() : whichpatchx(0) @@ -130,30 +130,24 @@ Person::Person() , skiddingdelay(0) , deathbleeding(0) , tempdeltav(0) - , - damagetolerance(200) + , damagetolerance(0) , damage(0) , permanentdamage(0) , superpermanentdamage(0) , lastcollide(0) , dead(0) - , - jumppower(5) + , jumppower(5) , onground(false) - , - wentforweapon(0) - , + , wentforweapon(0) - calcrot(false) - , + , calcrot(false) - facing() - , + , facing() - bleeding(0) + , bleeding(0) , bleedx(0) , bleedy(0) , direction(0) @@ -342,17 +336,15 @@ Person::Person() , neckspurtdelay(0) , neckspurtparticledelay(0) , neckspurtamount(0) - , - whichskin(0) + , whichskin(0) , rabbitkickragdoll(false) - , - tempanimation() - , + , tempanimation("Tempanim", lowheight, neutral) - jumpclimb(false) + , jumpclimb(false) { + damagetolerance = PersonType::types[creature].defaultDamageTolerance; setProportions(1, 1, 1, 1); } @@ -435,22 +427,25 @@ Person::Person(FILE* tfile, int mapvers, unsigned i) loaded = true; - if (creature == wolftype) { - damagetolerance = 300; - } + damagetolerance = PersonType::types[creature].defaultDamageTolerance; if (scale < 0) { - if (creature == wolftype) { - scale = .23; - } else { - scale = .2; - } + scale = PersonType::types[creature].defaultScale; } oldcoords = coords; realoldcoords = coords; } +void Person::changeCreatureType(person_type type) +{ + creature = type; + whichskin = 0; + skeletonLoad(type == rabbittype); + scale = PersonType::types[creature].defaultScale; + damagetolerance = PersonType::types[creature].defaultDamageTolerance; +} + void Person::skeletonLoad(bool clothes) { skeleton.id = id; @@ -506,7 +501,7 @@ void Person::CheckKick() } if (Animation::animations[victim->animTarget].height != lowheight) { - float damagemult = (creature == wolftype ? 2.5 : 1.) * power * power; + float damagemult = PersonType::types[creature].power * power * power; XYZ relative = velocity; relative.y = 0; Normalise(&relative); @@ -2440,10 +2435,7 @@ void Person::DoAnimations() } //Move impacts - float damagemult = 1 * power; - if (creature == wolftype) { - damagemult = 2.5 * power; - } + float damagemult = PersonType::types[creature].power * power; if (hasvictim) { damagemult /= victim->damagetolerance / 200; }