X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FObjects%2FPerson.cpp;h=36328a46822d1737e09feb413466cc8ae387e7c0;hb=51a0860281c8978f5404c730eb809fb455d99aea;hp=3f35b099acaaeff4dea0b84d3feb938c45275d7c;hpb=b7dde911e9f666eaccf6df33ec063c2061636f19;p=lugaru.git diff --git a/Source/Objects/Person.cpp b/Source/Objects/Person.cpp index 3f35b09..36328a4 100644 --- a/Source/Objects/Person.cpp +++ b/Source/Objects/Person.cpp @@ -1492,35 +1492,39 @@ void Person::Reverse() */ void Person::DoDamage(float howmuch) { - // subtract health (temporary?) - if (!Tutorial::active) - damage += howmuch / power; // stats? - if (id != 0) - damagedealt += howmuch / power; - if (id == 0) + if (id == 0) { damagetaken += howmuch / power; + } else { + damagedealt += howmuch / power; + } // reset bonuses - if (id == 0 && (bonus == solidhit || bonus == twoxcombo || bonus == threexcombo || bonus == fourxcombo || bonus == megacombo)) + if (id == 0 && (bonus == solidhit || bonus == twoxcombo || bonus == threexcombo || bonus == fourxcombo || bonus == megacombo)) { bonus = 0; + } + // subtract health - if (!Tutorial::active) + if (!Tutorial::active) { + damage += howmuch / power; permanentdamage += howmuch / 2 / power; - if (!Tutorial::active) superpermanentdamage += howmuch / 4 / power; + } // visual effects if (permanentdamage > damagetolerance / 2 && permanentdamage - howmuch < damagetolerance / 2 && Random() % 2) DoBlood(1, 255); if ((permanentdamage > damagetolerance * .8 && Random() % 2 && !deathbleeding) || spurt) DoBlood(1, 255); spurt = 0; - if (id == 0) + if (id == 0) { camerashake += howmuch / 100; - if (id == 0 && ((howmuch > 50 && damage > damagetolerance / 2))) - blackout = damage / damagetolerance; - if (blackout > 1) - blackout = 1; + if ((howmuch > 50 && damage > damagetolerance / 2)) { + blackout = damage / damagetolerance; + if (blackout > 1) { + blackout = 1; + } + } + } // cancel attack? if (aitype == passivetype && damage < damagetolerance && ((!Tutorial::active || cananger) && hostile)) @@ -1566,7 +1570,7 @@ void Person::DoDamage(float howmuch) } // play sounds - if (!Tutorial::active || id == 0) + if (!Tutorial::active || id == 0) { if (speechdelay <= 0 && !dead && aitype != playercontrolled) { int whichsound = -1; @@ -1590,6 +1594,7 @@ void Person::DoDamage(float howmuch) addEnvSound(coords); } } + } speechdelay = .3; } @@ -2342,7 +2347,7 @@ void Person::DoAnimations() } if ((Animation::animations[animTarget].attack == normalattack || animTarget == walljumprightkickanim || animTarget == walljumpleftkickanim) && (!feint) && (victim->skeleton.free != 2 || animTarget == killanim || animTarget == dropkickanim || animTarget == crouchstabanim || animTarget == swordgroundstabanim || animTarget == staffgroundsmashanim)) { if (animTarget == spinkickanim && Animation::animations[animTarget].frames[frameCurrent].label == 5) { - if (distsq(&coords, &victim->coords) < (scale * 5) * (scale * 5) * 3 && 3 && Animation::animations[victim->animTarget].height != lowheight) { + if (distsq(&coords, &victim->coords) < (scale * 5) * (scale * 5) * 3 && Animation::animations[victim->animTarget].height != lowheight) { escapednum = 0; if (id == 0) camerashake += .4; @@ -2378,7 +2383,7 @@ void Person::DoAnimations() } if (animTarget == wolfslapanim && Animation::animations[animTarget].frames[frameCurrent].label == 5) { - if (distsq(&coords, &victim->coords) < (scale * 5) * (scale * 5) * 3 && 3 && Animation::animations[victim->animTarget].height != lowheight) { + if (distsq(&coords, &victim->coords) < (scale * 5) * (scale * 5) * 3 && Animation::animations[victim->animTarget].height != lowheight) { escapednum = 0; if (id == 0) camerashake += .4; @@ -2926,8 +2931,9 @@ void Person::DoAnimations() if (hasvictim) if (distsq(&coords, &victim->coords) < (scale * 5) * (scale * 5) * 4.5 &&/*Animation::animations[victim->animTarget].height!=lowheight&&*/victim->animTarget != dodgebackanim && victim->animTarget != rollanim) { escapednum = 0; - if (!Tutorial::active) + if (!Tutorial::active) { victim->DoBloodBig(1.5 / victim->armorhigh, 225); + } award_bonus(id, Slicebonus); if (!Tutorial::active) { @@ -2947,11 +2953,12 @@ void Person::DoAnimations() if (aitype != playercontrolled) weaponmissdelay = .6; - if (!Tutorial::active) - if (bloodtoggle && !weapons[weaponids[weaponactive]].bloody) + if (!Tutorial::active) { + if (bloodtoggle && !weapons[weaponids[weaponactive]].bloody) { weapons[weaponids[weaponactive]].bloody = 1; - if (!Tutorial::active) + } weapons[weaponids[weaponactive]].blooddrip += 3; + } XYZ footvel, footpoint; footvel = 0; @@ -2960,19 +2967,18 @@ void Person::DoAnimations() } else { footpoint = DoRotation((victim->jointPos(abdomen) + victim->jointPos(neck)) / 2, 0, victim->yaw, 0) * victim->scale + victim->coords; } - if (!Tutorial::active) { - if (bloodtoggle) + if (Tutorial::active) { + Sprite::MakeSprite(cloudimpactsprite, footpoint, footvel, 1, 1, 1, .6, .3); + } else { + if (bloodtoggle) { Sprite::MakeSprite(cloudimpactsprite, footpoint, footvel, 1, 0, 0, .6, .3); + } footvel = DoRotation(facing, 0, 90, 0) * .8; - //footvel.y-=.3; Sprite::MakeSprite(bloodsprite, footpoint, DoRotation(footvel * 7, (float)(Random() % 20), (float)(Random() % 20), 0), 1, 1, 1, .05, .9); Sprite::MakeSprite(bloodsprite, footpoint, DoRotation(footvel * 3, (float)(Random() % 20), (float)(Random() % 20), 0), 1, 1, 1, .05, .9); Sprite::MakeSprite(bloodflamesprite, footpoint, footvel * 5, 1, 1, 1, .2, 1); Sprite::MakeSprite(bloodflamesprite, footpoint, footvel * 2, 1, 1, 1, .2, 1); } - if (Tutorial::active) { - Sprite::MakeSprite(cloudimpactsprite, footpoint, footvel, 1, 1, 1, .6, .3); - } victim->DoDamage(damagemult * 0); } } @@ -2988,24 +2994,18 @@ void Person::DoAnimations() victim->DoBloodBig(2 / victim->armorhigh, 185); victim->deathbleeding = 1; emit_sound_at(swordslicesound, victim->coords); - } - //victim->jointVel(abdomen)+=relative*damagemult*200; - if (!Tutorial::active) { victim->frameTarget = 0; victim->animTarget = staggerbackhardanim; victim->targetyaw = targetyaw + 180; victim->target = 0; - } - - if (!Tutorial::active) { - if (bloodtoggle && !weapons[weaponids[weaponactive]].bloody) + if (bloodtoggle && !weapons[weaponids[weaponactive]].bloody) { weapons[weaponids[weaponactive]].bloody = 1; + } weapons[weaponids[weaponactive]].blooddrip += 3; float bloodlossamount; bloodlossamount = 200 + abs((float)(Random() % 40)) - 20; victim->bloodloss += bloodlossamount / victim->armorhigh; - //victim->bloodloss+=100*(6.5-distsq(&coords,&victim->coords)); victim->DoDamage(damagemult * 0); XYZ footvel, footpoint; @@ -3015,8 +3015,9 @@ void Person::DoAnimations() } else { footpoint = DoRotation((victim->jointPos(abdomen) + victim->jointPos(neck)) / 2, 0, victim->yaw, 0) * victim->scale + victim->coords; } - if (bloodtoggle) + if (bloodtoggle) { Sprite::MakeSprite(cloudimpactsprite, footpoint, footvel, 1, 0, 0, .9, .3); + } footvel = DoRotation(facing, 0, 90, 0) * .8; footvel.y -= .3; Sprite::MakeSprite(bloodsprite, footpoint, DoRotation(footvel * 7, (float)(Random() % 20), (float)(Random() % 20), 0), 1, 1, 1, .05, .9); @@ -5549,15 +5550,46 @@ void Person::DoStuff() } } - if (animTarget == spinkickanim || animTarget == staffspinhitreversalanim || animTarget == staffspinhitreversedanim || animTarget == staffhitreversalanim || animTarget == staffhitreversedanim || animTarget == hurtidleanim || animTarget == winduppunchanim || animTarget == swordslashreversalanim || animTarget == swordslashreversedanim || animTarget == knifeslashreversalanim || animTarget == knifeslashreversedanim || animTarget == knifethrowanim || animTarget == knifefollowanim || animTarget == knifefollowedanim || animTarget == killanim || animTarget == dropkickanim || animTarget == upunchanim || animTarget == knifeslashstartanim || animTarget == swordslashanim || animTarget == staffhitanim || animTarget == staffspinhitanim || animTarget == staffgroundsmashanim || animTarget == spinkickreversalanim || animTarget == sweepreversalanim || animTarget == lowkickanim || animTarget == sweepreversedanim || animTarget == rabbitkickreversalanim || animTarget == rabbitkickreversedanim || animTarget == jumpreversalanim || animTarget == jumpreversedanim) { + if (animTarget == spinkickanim || + animTarget == staffspinhitreversalanim || + animTarget == staffspinhitreversedanim || + animTarget == staffhitreversalanim || + animTarget == staffhitreversedanim || + animTarget == hurtidleanim || + animTarget == winduppunchanim || + animTarget == swordslashreversalanim || + animTarget == swordslashreversedanim || + animTarget == knifeslashreversalanim || + animTarget == knifeslashreversedanim || + animTarget == knifethrowanim || + animTarget == knifefollowanim || + animTarget == knifefollowedanim || + animTarget == killanim || + animTarget == dropkickanim || + animTarget == upunchanim || + animTarget == knifeslashstartanim || + animTarget == swordslashanim || + animTarget == staffhitanim || + animTarget == staffspinhitanim || + animTarget == staffgroundsmashanim || + animTarget == spinkickreversalanim || + animTarget == sweepreversalanim || + animTarget == lowkickanim || + animTarget == sweepreversedanim || + animTarget == rabbitkickreversalanim || + animTarget == rabbitkickreversedanim || + animTarget == jumpreversalanim || + animTarget == jumpreversedanim) { //close hands and yell - if (righthandmorphend != 1 && righthandmorphness == targetrighthandmorphness) { + if (righthandmorphend != 1 && + righthandmorphness == targetrighthandmorphness) { righthandmorphness = 0; righthandmorphend = 1; targetrighthandmorphness = 1; } - if (lefthandmorphend != 1 && lefthandmorphness == targetlefthandmorphness) { + if (lefthandmorphend != 1 && + lefthandmorphness == targetlefthandmorphness) { lefthandmorphness = 0; lefthandmorphend = 1; targetlefthandmorphness = 1; @@ -5617,7 +5649,8 @@ void Person::DoStuff() ReflectVector(&facing, terrainnormal); Normalise(&facing); - if (isRun() || animTarget == sneakanim || animTarget == rollanim || animTarget == walkanim) { + if (isRun() || + animTarget == sneakanim || animTarget == rollanim || animTarget == walkanim) { if (onterrain) targettilt2 = -facing.y * 20; else