X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FPerson.cpp;h=90fdabe8beb97bdf89f9c1f322c0ffe80ede4b41;hb=9ead3c26970320fb32e1b49ec9f4ac2ee3a00a96;hp=716130cd9957c71f6a6ad2b1405a93eff983f3dc;hpb=705156dced26432e41deada8d9811c05d52b44ce;p=lugaru.git diff --git a/Source/Person.cpp b/Source/Person.cpp index 716130c..90fdabe 100644 --- a/Source/Person.cpp +++ b/Source/Person.cpp @@ -22,10 +22,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /**> HEADER FILES <**/ #include "Person.h" #include "openal_wrapper.h" +#include "Animation.h" +#include "Sounds.h" +#include "Awards.h" +#include "Game.h" extern float multiplier; -extern Animation animation[animation_count]; -extern OPENAL_SAMPLE *samp[100]; extern int channels[100]; extern Terrain terrain; extern float gravity; @@ -51,11 +53,8 @@ extern float terraindetail; extern float viewdistance; extern float blackout; extern int difficulty; -extern Weapons weapons; extern bool decals; extern float fadestart; -extern Person player[maxplayers]; -extern int numplayers; extern bool freeze; extern bool winfreeze; extern float flashamount,flashr,flashg,flashb; @@ -73,10 +72,6 @@ extern XYZ envsound[30]; extern float envsoundvol[30]; extern float envsoundlife[30]; extern int numenvsounds; -extern int bonus; -extern float bonusvalue; -extern float bonustotal; -extern float bonustime; extern int tutoriallevel; extern float smoketex; extern int tutorialstage; @@ -84,29 +79,13 @@ extern bool reversaltrain; extern bool canattack; extern bool cananger; extern float damagedealt; -extern float damagetaken; extern int hostile; extern float hostiletime; -extern int numfalls; -extern int numflipfail; -extern int numseen; -extern int numswordattack; -extern int numknifeattack; -extern int numunarmedattack; -extern int numescaped; -extern int numflipped; -extern int numwallflipped; -extern int numthrowkill; -extern int numafterkill; -extern int numreversals; -extern int numattacks; -extern int maxalarmed; extern int indialogue; extern bool gamestarted; -extern OPENAL_STREAM * strm[20]; extern "C" void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused); extern "C" void PlayStreamEx(int chan, OPENAL_STREAM *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused); @@ -162,13 +141,7 @@ void Person::CheckKick(){ skeleton.free=0; if(id==0)OPENAL_SetPaused(channels[whooshsound], false); - //if(victim->damage>victim->damagetolerance){ - if(id==0){ - bonus=cannon; - bonustime=0; - bonusvalue=100; - } - //} + award_bonus(id, cannon); } else if (victim->isCrouch()){ targetanimation=rabbitkickreversedanim; @@ -221,7 +194,7 @@ void Person::CatchFire(){ vel[1]=velocity.y; vel[2]=velocity.z; //PlaySoundEx( firesound, samp[firesound], NULL, true); - PlayStreamEx( stream_firesound, strm[stream_firesound], NULL, true); + PlayStreamEx( stream_firesound, samp[stream_firesound], NULL, true); OPENAL_3D_SetAttributes(channels[stream_firesound], gLoc, vel); OPENAL_SetVolume(channels[stream_firesound], 256); OPENAL_SetPaused(channels[stream_firesound], false); @@ -384,33 +357,13 @@ bool Person::isWallJump(){ else return 0; } -void SolidHitBonus(); -void SolidHitBonus(){ - if(bonustime<1.5&&(bonus==fourxcombo||bonus==megacombo)){ - bonus=megacombo; - bonustime=0; - bonusvalue=160; - } - else if(bonustime<1.5&&bonus==threexcombo){ - bonus=fourxcombo; - bonustime=0; - bonusvalue=80; - } - else if(bonustime<1.5&&bonus==twoxcombo){ - bonus=threexcombo; - bonustime=0; - bonusvalue=40; - } - else if(bonustime<1.5&&bonus==solidhit){ - bonus=twoxcombo; - bonustime=0; - bonusvalue=20; - } - else { - bonus=solidhit; - bonustime=0; - bonusvalue=10; - } +static void +SolidHitBonus(int playerid) +{ + if (bonustime < 1.5 && bonus >= solidhit && bonus <= megacombo) + award_bonus(playerid, bonus == megacombo ? bonus : bonus + 1); + else + award_bonus(playerid, solidhit); } void Person::DoBlood(float howmuch,int which){ @@ -1405,9 +1358,7 @@ void Person::DoDamage(float howmuch){ slomodelay=.2; }*/ if(!dead&&creature==wolftype){ - bonus=Wolfbonus; - bonustime=0; - bonusvalue=300; + award_bonus(0, Wolfbonus); } dead=2; coords=20; @@ -1752,175 +1703,6 @@ void Person::Puff(int whichlabel){ } -/* -HitStruct Person::BulletCollideWithPlayer(XYZ start, XYZ end){ -float damage=20; -XYZ tempbulletloc[2]; -XYZ collisionpoint; -XYZ sparkpos; -GLfloat M[16]; -int collide; -float howfar; -XYZ average; -XYZ facing; -int howmany; -float distancemax; -HitStruct hitstruct; -hitstruct.collision=0; -//Make bounding sphere -average=0; -howmany=0; -for(int j=0;jdistancemax){ -distancemax=findDistancefast(average,skeleton.joints[j].position); -} -} -distancemax=fast_sqrt(distancemax); -//Collide with player -if(skeleton.free<1){ -start=start-coords; -end=end-coords; -if(rotation)start=DoRotation(start,0,-rotation,0); -if(rotation)end=DoRotation(end,0,-rotation,0); -} -tempbulletloc[0]=start; -tempbulletloc[1]=end; -if(sphere_line_intersection(tempbulletloc[0].x,tempbulletloc[0].y,tempbulletloc[0].z, -tempbulletloc[1].x,tempbulletloc[1].y,tempbulletloc[1].z, -average.x, average.y, average.z, distancemax)){ -for(int j=0;jposition.x)/2), -(-(skeleton.joints[j].position.y+skeleton.joints[j].parent->position.y)/2), -(-(skeleton.joints[j].position.z+skeleton.joints[j].parent->position.z)/2)); -glTranslatef(tempbulletloc[0].x,tempbulletloc[0].y,tempbulletloc[0].z); -glGetFloatv(GL_MODELVIEW_MATRIX,M); -tempbulletloc[0].x=M[12]; -tempbulletloc[0].y=M[13]; -tempbulletloc[0].z=M[14]; -glPopMatrix(); -glPushMatrix(); -glLoadIdentity(); -glScalef(1,1/skeleton.joints[j].length,1); -glRotatef(skeleton.joints[j].rotate2-90,0,0,1); -glRotatef(skeleton.joints[j].rotate1-90,0,1,0); -glTranslatef( (-(skeleton.joints[j].position.x+skeleton.joints[j].parent->position.x)/2), -(-(skeleton.joints[j].position.y+skeleton.joints[j].parent->position.y)/2), -(-(skeleton.joints[j].position.z+skeleton.joints[j].parent->position.z)/2)); -glTranslatef(tempbulletloc[1].x,tempbulletloc[1].y,tempbulletloc[1].z); -glGetFloatv(GL_MODELVIEW_MATRIX,M); -tempbulletloc[1].x=M[12]; -tempbulletloc[1].y=M[13]; -tempbulletloc[1].z=M[14]; -glPopMatrix(); -collide=skeletonmodels[skeleton.joints[j].modelnum].LineCheck(tempbulletloc[0],tempbulletloc[1],&collisionpoint); -if(collide!=-1) -{ -glPushMatrix(); -glLoadIdentity(); -glTranslatef( (skeleton.joints[j].position.x+skeleton.joints[j].parent->position.x)/2, -(skeleton.joints[j].position.y+skeleton.joints[j].parent->position.y)/2, -(skeleton.joints[j].position.z+skeleton.joints[j].parent->position.z)/2); -glRotatef(-skeleton.joints[j].rotate1+90,0,1,0); -glRotatef(-skeleton.joints[j].rotate2+90,0,0,1); -glScalef(1,skeleton.joints[j].length,1); -glTranslatef(collisionpoint.x,collisionpoint.y,collisionpoint.z); -glGetFloatv(GL_MODELVIEW_MATRIX,M); -collisionpoint.x=M[12]; -collisionpoint.y=M[13]; -collisionpoint.z=M[14]; -glPopMatrix(); -hitstruct.collision=1; -hitstruct.hitlocation=collisionpoint; -hitstruct.joint1=&skeleton.joints[j]; -hitstruct.joint2=skeleton.joints[j].parent; -} -} -} -for(int j=0;jposition.x+skeleton.muscles[j].parent2->position.x)/2), -(-(skeleton.muscles[j].parent1->position.y+skeleton.muscles[j].parent2->position.y)/2), -(-(skeleton.muscles[j].parent1->position.z+skeleton.muscles[j].parent2->position.z)/2)); - -glTranslatef(tempbulletloc[0].x,tempbulletloc[0].y,tempbulletloc[0].z); -glGetFloatv(GL_MODELVIEW_MATRIX,M); -tempbulletloc[0].x=M[12]; -tempbulletloc[0].y=M[13]; -tempbulletloc[0].z=M[14]; -glPopMatrix(); -glPushMatrix(); -glLoadIdentity(); -glScalef(1,1/skeleton.muscles[j].length,1); -glRotatef(skeleton.muscles[j].rotate3,0,1,0); -glRotatef(skeleton.muscles[j].rotate2-90,0,0,1); -glRotatef(skeleton.muscles[j].rotate1-90,0,1,0); - -glTranslatef( (-(skeleton.muscles[j].parent1->position.x+skeleton.muscles[j].parent2->position.x)/2), -(-(skeleton.muscles[j].parent1->position.y+skeleton.muscles[j].parent2->position.y)/2), -(-(skeleton.muscles[j].parent1->position.z+skeleton.muscles[j].parent2->position.z)/2)); -glTranslatef(tempbulletloc[1].x,tempbulletloc[1].y,tempbulletloc[1].z); -glGetFloatv(GL_MODELVIEW_MATRIX,M); -tempbulletloc[1].x=M[12]; -tempbulletloc[1].y=M[13]; -tempbulletloc[1].z=M[14]; -glPopMatrix(); -collide=skeletonmodels[skeleton.muscles[j].parent1->modelnum].LineCheck(tempbulletloc[0],tempbulletloc[1],&collisionpoint); -if(collide!=-1) -{ -glPushMatrix(); -glLoadIdentity(); -glTranslatef( (skeleton.muscles[j].parent1->position.x+skeleton.muscles[j].parent2->position.x)/2, -(skeleton.muscles[j].parent1->position.y+skeleton.muscles[j].parent2->position.y)/2, -(skeleton.muscles[j].parent1->position.z+skeleton.muscles[j].parent2->position.z)/2); -glRotatef(-skeleton.muscles[j].rotate1+90,0,1,0); -glRotatef(-skeleton.muscles[j].rotate2+90,0,0,1); -glRotatef(-skeleton.muscles[j].rotate3,0,1,0); -glScalef(1,findDistance(skeleton.muscles[j].parent1->position,skeleton.muscles[j].parent2->position),1); -glTranslatef(collisionpoint.x,collisionpoint.y,collisionpoint.z); -glGetFloatv(GL_MODELVIEW_MATRIX,M); -collisionpoint.x=M[12]; -collisionpoint.y=M[13]; -collisionpoint.z=M[14]; -glPopMatrix(); -hitstruct.collision=1; -hitstruct.hitlocation=collisionpoint; -hitstruct.joint1=skeleton.muscles[j].parent1; -hitstruct.joint2=skeleton.muscles[j].parent2; -} -} -} -} -if(skeleton.free<1){ -if(rotation)hitstruct.hitlocation=DoRotation(hitstruct.hitlocation,0,rotation,0); -hitstruct.hitlocation=hitstruct.hitlocation+coords; -} -return hitstruct; -} -*/ void Person::DoAnimations(){ if(!skeleton.free){ int i = 0; @@ -2028,12 +1810,8 @@ void Person::DoAnimations(){ victim->spurt=1; victim->DoBloodBig(1/victim->armorhead,210); } - if(id==0){ - bonus=TackleBonus; - bonustime=0; - bonusvalue=5; - if(victim->aitype==gethelptype)bonusvalue=50; - } + award_bonus(id, TackleBonus, + victim->aitype == gethelptype ? 50 : 0); } } @@ -2508,9 +2286,7 @@ void Person::DoAnimations(){ victim->Puff(head); victim->DoDamage(damagemult*100/victim->protectionhead); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } @@ -2602,16 +2378,10 @@ void Person::DoAnimations(){ victim->Puff(head); victim->DoDamage(damagemult*150/victim->protectionhead); - if(victim->damage>victim->damagetolerance){ - if(id==0){ - bonus=style; - bonustime=0; - bonusvalue=150; - } - } - else if(id==0){ - SolidHitBonus(); - } + if(victim->damage>victim->damagetolerance) + award_bonus(id, style); + else + SolidHitBonus(id); } } @@ -2657,16 +2427,10 @@ void Person::DoAnimations(){ victim->Puff(head); victim->DoDamage(damagemult*150/victim->protectionhead); - if(victim->damage>victim->damagetolerance){ - if(id==0){ - bonus=style; - bonustime=0; - bonusvalue=150; - } - } - else if(id==0){ - SolidHitBonus(); - } + if(victim->damage>victim->damagetolerance) + award_bonus(id, style); + else + SolidHitBonus(id); } } @@ -2826,9 +2590,8 @@ void Person::DoAnimations(){ for(i=0;iskeleton.num_joints;i++){ victim->skeleton.joints[i].velocity+=relative*damagemult*20; } - if(id==0&&!victim->dead){ - SolidHitBonus(); - } + if(!victim->dead) + SolidHitBonus(id); victim->Puff(abdomen); victim->DoDamage(damagemult*20/victim->protectionhigh); @@ -2841,7 +2604,6 @@ void Person::DoAnimations(){ } if((targetanimation==crouchstabanim||targetanimation==swordgroundstabanim)&&animation[targetanimation].label[currentframe]==5){ - // if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*9){ //if(id==0)camerashake+=.4; float gLoc[3]; float vel[3]; @@ -2906,11 +2668,8 @@ void Person::DoAnimations(){ if(whichtri!=-1){ if(victim->dead!=2){ victim->DoDamage(abs((victim->damagetolerance-victim->permanentdamage)*2)); - if(id==0&&!victim->dead){ - bonus=FinishedBonus; - bonustime=0; - bonusvalue=200; - } + if (!victim->dead) + award_bonus(id, FinishedBonus); } if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; @@ -2945,7 +2704,6 @@ void Person::DoAnimations(){ } if((targetanimation==crouchstabanim||targetanimation==swordgroundstabanim)&&animation[targetanimation].label[currentframe]==6){ - // if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*9){ //if(id==0)camerashake+=.4; float gLoc[3]; float vel[3]; @@ -3070,7 +2828,6 @@ void Person::DoAnimations(){ vel[0]=velocity.x; vel[1]=velocity.y; vel[2]=velocity.z; - //if(!victim->isIdle()||victim->damage>victim->damagetolerance-60){ if(1==1){ if(tutoriallevel!=1){ PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true); @@ -3109,9 +2866,7 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*60/victim->protectionhigh); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } @@ -3128,7 +2883,6 @@ void Person::DoAnimations(){ vel[0]=velocity.x; vel[1]=velocity.y; vel[2]=velocity.z; - //if(!victim->isIdle()||victim->damage>victim->damagetolerance-60){ if(victim->damage<=victim->damagetolerance-60&&normaldotproduct(victim->facing,victim->coords-coords)<(scale*5)*(scale*5)*0&&animation[victim->targetanimation].height!=lowheight){ if(tutoriallevel!=1){ PlaySoundEx( thudsound, samp[thudsound], NULL, true); @@ -3176,9 +2930,7 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*60/victim->protectionhigh); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } @@ -3266,15 +3018,9 @@ void Person::DoAnimations(){ if(hasvictim) if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*4.5&&/*animation[victim->targetanimation].height!=lowheight&&*/victim->targetanimation!=dodgebackanim&&victim->targetanimation!=rollanim){ escapednum=0; - //if(Random()%2){ if(tutoriallevel!=1)victim->DoBloodBig(1.5/victim->armorhigh,225); - //} - if(id==0){ - bonus=Slicebonus; - bonustime=0; - bonusvalue=10; - } + award_bonus(id, Slicebonus); if(tutoriallevel!=1){ float gLoc[3]; float vel[3]; @@ -3331,11 +3077,7 @@ void Person::DoAnimations(){ if(targetanimation==swordslashanim&&animation[targetanimation].label[currentframe]==5&&victim->targetanimation!=rollanim){ if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->targetanimation!=dodgebackanim){ if(victim->weaponactive==-1||normaldotproduct(victim->facing,victim->coords-coords)>0||(Random()%2==0)){ - if(id==0){ - bonus=Slashbonus; - bonustime=0; - bonusvalue=40; - } + award_bonus(id, Slashbonus); escapednum=0; if(tutoriallevel!=1){ if(normaldotproduct(victim->facing,victim->coords-coords)<0)victim->DoBloodBig(2/victim->armorhigh,190); @@ -3355,16 +3097,12 @@ void Person::DoAnimations(){ OPENAL_SetPaused(channels[swordslicesound], false); } //victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200; - //if(animation[victim->targetanimation].attack){ - //if(victim->creature==rabbittype){ if(tutoriallevel!=1){ victim->targetframe=0; victim->targetanimation=staggerbackhardanim; victim->targetrotation=targetrotation+180; victim->target=0; } - //} - //} if(tutoriallevel!=1){ if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1; @@ -3499,11 +3237,7 @@ void Person::DoAnimations(){ if(tutoriallevel!=1){ victim->DoDamage(damagemult*120/victim->protectionhigh); - if(id==0){ - bonus=solidhit; - bonustime=0; - bonusvalue=30; - } + award_bonus(id, solidhit, 30); } } } @@ -3545,11 +3279,7 @@ void Person::DoAnimations(){ victim->Puff(head); if(tutoriallevel!=1){victim->DoDamage(damagemult*350/victim->protectionhead); - if(id==0){ - bonus=solidhit; - bonustime=0; - bonusvalue=60; - } + award_bonus(id, solidhit, 60); } } } @@ -3613,11 +3343,7 @@ void Person::DoAnimations(){ if(tutoriallevel!=1){victim->DoDamage(damagemult*100/victim->protectionhigh); if(!victim->dead){ - if(id==0){ - bonus=solidhit; - bonustime=0; - bonusvalue=40; - } + award_bonus(id, solidhit, 40); } } } @@ -3640,9 +3366,7 @@ void Person::DoAnimations(){ relative.y=0; Normalise(&relative); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); if(animation[victim->targetanimation].height==lowheight){ if(Random()%2){ @@ -3767,9 +3491,7 @@ void Person::DoAnimations(){ victim->DoDamage(damagemult*30/victim->protectionlow); } - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } @@ -3818,11 +3540,7 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*150/victim->protectionhigh); - if(id==0){ - bonus=Reversal; - bonustime=0; - bonusvalue=60; - } + award_bonus(id, Reversal); } if((targetanimation==swordslashreversalanim||targetanimation==knifeslashreversalanim||targetanimation==staffhitreversalanim||targetanimation==staffspinhitreversalanim)&&animation[targetanimation].label[currentframe]==5){ @@ -3895,11 +3613,7 @@ void Person::DoAnimations(){ vel[1]=velocity.y; vel[2]=velocity.z; - if(id==0){ - bonus=staffreversebonus; - bonustime=0; - bonusvalue=100; - } + award_bonus(id, staffreversebonus); if(tutoriallevel!=1){ PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true); @@ -3908,11 +3622,7 @@ void Person::DoAnimations(){ OPENAL_SetPaused(channels[heavyimpactsound], false); } victim->RagDoll(0); - if(id==0){ - bonus=staffreversebonus; - bonustime=0; - bonusvalue=100; - } + award_bonus(id, staffreversebonus); // Huh, again? XYZ relative; relative=victim->coords-oldcoords; @@ -3952,11 +3662,7 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*90/victim->protectionhigh); - if(id==0){ - bonus=Reversal; - bonustime=0; - bonusvalue=60; - } + award_bonus(id, Reversal); bool doslice; doslice=0; @@ -4014,30 +3720,7 @@ void Person::DoAnimations(){ victim->skeleton.joints[victim->skeleton.jointlabels[rightelbow]].velocity*=.5-1; victim->skeleton.joints[victim->skeleton.jointlabels[rightshoulder]].velocity*=.7-1; - if(id==0){ - bonus=swordreversebonus; - bonustime=0; - bonusvalue=100; - } - //victim->DoDamage(90); - - /*if(weaponactive!=-1){ - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - victim->DoBloodBig(2,225); - PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true); - OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel); - OPENAL_SetVolume(channels[knifeslicesound], 512); - OPENAL_SetPaused(channels[knifeslicesound], false); - if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1; - weapons.blooddrip[weaponids[weaponactive]]+=3; - }*/ + award_bonus(id, swordreversebonus); } if(hasvictim&&targetanimation==knifeslashreversalanim&&animation[targetanimation].label[currentframe]==7){ @@ -4075,11 +3758,7 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*30/victim->protectionhigh); - if(id==0){ - bonus=Reversal; - bonustime=0; - bonusvalue=60; - } + award_bonus(id, Reversal); } if(hasvictim&&targetanimation==sneakattackanim&&animation[targetanimation].label[currentframe]==7){ @@ -4129,11 +3808,7 @@ void Person::DoAnimations(){ victim->DoBloodBig(2,175); } } - if(id==0){ - bonus=spinecrusher; - bonustime=0; - bonusvalue=100; - } + award_bonus(id, spinecrusher); } if(hasvictim&&(targetanimation==knifefollowanim||targetanimation==knifesneakattackanim)&&animation[targetanimation].label[currentframe]==5){ @@ -4159,20 +3834,10 @@ void Person::DoAnimations(){ Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1); Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1); victim->DoBloodBig(200,195); - if(id==0){ - bonus=tracheotomy; - bonustime=0; - bonusvalue=100; - } - - //victim->neckspurtamount=5; + award_bonus(id, tracheotomy); } if(targetanimation==knifefollowanim){ - if(id==0){ - bonus=Stabbonus; - bonustime=0; - bonusvalue=40; - } + award_bonus(id, Stabbonus); XYZ footvel,footpoint; footvel=0; footpoint=weapons.tippoint[weaponids[0]]; @@ -4245,11 +3910,7 @@ void Person::DoAnimations(){ if(hasvictim&&(targetanimation==swordsneakattackanim)&&animation[targetanimation].label[currentframe]==5){ if(weaponactive!=-1&&victim->bloodlossdamagetolerance){ - if(id==0){ - bonus=backstab; - bonustime=0; - bonusvalue=100; - } + award_bonus(id, backstab); escapednum=0; @@ -4364,11 +4025,7 @@ void Person::DoAnimations(){ } } - if(id==0){ - bonus=Reversal; - bonustime=0; - bonusvalue=60; - } + award_bonus(id, Reversal); victim->Puff(neck); @@ -4408,11 +4065,7 @@ void Person::DoAnimations(){ if(hasvictim&&(targetanimation==spinkickreversalanim||targetanimation==sweepreversalanim||targetanimation==rabbitkickreversalanim||targetanimation==upunchreversalanim||targetanimation==jumpreversalanim||targetanimation==swordslashreversalanim||targetanimation==knifeslashreversalanim||targetanimation==rabbittacklereversal||targetanimation==wolftacklereversal||targetanimation==staffhitreversalanim||targetanimation==staffspinhitreversalanim)) if(victim->damage>victim->damagetolerance&&bonus!=reverseko){ - if(id==0){ - bonus=reverseko; - bonustime=0; - bonusvalue=100; - } + award_bonus(id, reverseko); } } @@ -4798,7 +4451,7 @@ void Person::DoAnimations(){ //DoDamage(100); RagDoll(0); skeleton.spinny=0; - if(id!=0)SolidHitBonus(); + SolidHitBonus(!id); // FIXME: tricky id } if(feint){ escapednum++; @@ -4821,7 +4474,7 @@ void Person::DoAnimations(){ //DoDamage(100); RagDoll(0); skeleton.spinny=0; - if(id!=0)SolidHitBonus(); + SolidHitBonus(!id); // FIXME: tricky id } if(feint){ escapednum++; @@ -4970,14 +4623,12 @@ void Person::DoAnimations(){ } if(isLanding()&&landhard){ - //if(abs(velocity.y)>fast_sqrt(velocity.x*velocity.x*velocity.z*velocity.z)){ if(id==0)camerashake+=.4; targetanimation=getLandhard(); targetframe=0; target=0; landhard=0; transspeed=15; - //} } } //skeleton.DoConstraints(); @@ -5181,9 +4832,7 @@ void Person::DoStuff(){ } if(!dead&&creature==wolftype){ - bonus=Wolfbonus; - bonustime=0; - bonusvalue=300; + award_bonus(0, Wolfbonus); } dead=2; if(targetanimation==knifefollowedanim&&!skeleton.free){ @@ -5558,9 +5207,7 @@ void Person::DoStuff(){ unconscioustime=0; if(creature==wolftype){ - bonus=Wolfbonus; - bonustime=0; - bonusvalue=300; + award_bonus(0, Wolfbonus); } RagDoll(0); @@ -5648,16 +5295,11 @@ void Person::DoStuff(){ bled=0; if(!dead&&creature==wolftype){ - bonus=Wolfbonus; - bonustime=0; - bonusvalue=300; + award_bonus(0, Wolfbonus); } - if(id!=0&&unconscioustime<.1&&(bonus!=spinecrusher||bonustime>1)&&(bonus!=FinishedBonus||bonustime>1)&&bloodloss1)&&(bonus!=FinishedBonus||bonustime>1)&&bloodloss.1){ numafterkill++; } @@ -5707,11 +5349,8 @@ void Person::DoStuff(){ skeleton.DoGravity(&scale); float damageamount; damageamount=skeleton.DoConstraints(&coords,&scale)*5; - if(id!=0&&damage>damagetolerance-damageamount&&!dead&&(bonus!=spinecrusher||bonustime>1)&&(bonus!=style||bonustime>1)&&(bonus!=cannon||bonustime>1)){ - bonus=deepimpact; - bonustime=0; - bonusvalue=50; - } + if(damage>damagetolerance-damageamount&&!dead&&(bonus!=spinecrusher||bonustime>1)&&(bonus!=style||bonustime>1)&&(bonus!=cannon||bonustime>1)) + award_bonus(id, deepimpact); DoDamage(damageamount/((protectionhigh+protectionhead+protectionlow)/3)); average=0; @@ -5835,12 +5474,8 @@ void Person::DoStuff(){ if(terrainnormal.z<0)targetrotation=180-targetrotation; rotation=targetrotation; - //if(skeleton.forward.y<0){ targetframe=0; - //} - //if(skeleton.forward.y>-.3){ // targetframe=2; - //} targetanimation=flipanim; crouchtogglekeydown=1; target=0; @@ -6272,7 +5907,6 @@ void Person::DoStuff(){ if(targetanimation==bounceidleanim||targetanimation==wolfidle||targetanimation==walkanim||targetanimation==drawrightanim||targetanimation==crouchdrawrightanim||targetanimation==drawleftanim||targetanimation==fightidleanim||targetanimation==fightsidestep||targetanimation==hanganim||isCrouch()||targetanimation==backhandspringanim){ //open hands and close mouth - //if(targetanimation!=wolfidle){ if(righthandmorphend!=0&&righthandmorphness==targetrighthandmorphness){ righthandmorphness=0; righthandmorphend=0; @@ -6284,7 +5918,6 @@ void Person::DoStuff(){ lefthandmorphend=0; targetlefthandmorphness=1; } - //s} if(headmorphend!=3&&headmorphend!=5&&headmorphstart!=3&&headmorphstart!=5&&headmorphend!=0&&headmorphness==targetheadmorphness){ headmorphness=0; @@ -6500,21 +6133,6 @@ void Person::DoStuff(){ velocity=flatfacing*velspeed; } - /*if(creature==wolftype) - if(isRun()){ - velocity+=facing*multiplier*speed*700*scale; - velspeed=findLength(&velocity); - if(velspeed>speed*55*scale){ - velocity/=velspeed; - velspeed=speed*55*scale; - velocity*=velspeed; - } - velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); - velocity=flatfacing*velspeed; - }*/ - if(targetanimation==rollanim&&animation[targetanimation].label[targetframe]!=6){ velocity+=facing*multiplier*speed*700*scale; velspeed=findLength(&velocity); @@ -7089,24 +6707,18 @@ int Person::DrawSkeleton(){ (skeleton.model[start].vertex[skeleton.muscles[i].vertices[j]].z*(1-morphness)+skeleton.model[endthing].vertex[skeleton.muscles[i].vertices[j]].z*morphness)*proportionhead.z); glGetFloatv(GL_MODELVIEW_MATRIX,M); //if(!isnormal(M[12])||!isnormal(M[13])||!isnormal(M[14]))test=0; - //if(isnormal(M[12])&&isnormal(M[13])&&isnormal(M[14])){ //if(!isnormal(scale))test=1; - //if(isnormal(scale)){ skeleton.drawmodel.vertex[skeleton.muscles[i].vertices[j]].x=M[12]*scale; skeleton.drawmodel.vertex[skeleton.muscles[i].vertices[j]].y=M[13]*scale; skeleton.drawmodel.vertex[skeleton.muscles[i].vertices[j]].z=M[14]*scale; //test=2; - //} - //} glPopMatrix(); - //} } } if(!playerdetail||skeleton.free==3) { for(j=0;j=0){ glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); if(skeleton.muscles[i].parent1->label==abdomen||skeleton.muscles[i].parent2->label==abdomen) @@ -7131,7 +6743,6 @@ int Person::DrawSkeleton(){ skeleton.drawmodellow.vertex[skeleton.muscles[i].verticeslow[j]].y=M[13]*scale; skeleton.drawmodellow.vertex[skeleton.muscles[i].verticeslow[j]].z=M[14]*scale; glPopMatrix(); - //} } } glPopMatrix(); @@ -7544,8 +7155,6 @@ int Person::DrawSkeleton(){ if(weaponstuckwhere==0)weapons.smallrotation[i]=180; else weapons.smallrotation[i]=0; weapons.smallrotation2[i]=10; - //if(animation[targetanimation].height==lowheight&&animation[targetanimation].attack==neutral){ - //} } } }