X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FPerson.cpp;h=6d793e1876146e0102da8586f0ab9162472e4e71;hb=1afb2eae5765174b24ca3a0cf29866ff3418d21f;hp=cf4a6fbcac35bc34b8fb34b7b10d23166a18c507;hpb=8265984dce72d262e3865ebad4668d98b5b26d4a;p=lugaru.git diff --git a/Source/Person.cpp b/Source/Person.cpp index cf4a6fb..6d793e1 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,31 +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 mainmenu; - -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); @@ -164,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; @@ -223,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); @@ -386,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){ @@ -1407,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; @@ -1465,7 +1414,7 @@ void Person::DoHead(){ static XYZ facing; static float lookspeed=500; - if(!freeze&&!winfreeze&&(!mainmenu||!gamestarted)){ + if(!freeze&&!winfreeze){ //head facing targetheadrotation=(float)((int)((0-rotation-targetheadrotation+180)*100)%36000)/100; @@ -1754,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; @@ -2030,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); } } @@ -2510,9 +2286,7 @@ void Person::DoAnimations(){ victim->Puff(head); victim->DoDamage(damagemult*100/victim->protectionhead); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } @@ -2604,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); } } @@ -2659,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); } } @@ -2828,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); @@ -2843,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]; @@ -2908,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; @@ -2947,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]; @@ -3072,25 +2828,13 @@ 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); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 128); - OPENAL_SetPaused(channels[heavyimpactsound], false); - } - } - else { - if(tutoriallevel!=1){ - PlaySoundEx( landsound2, samp[landsound2], NULL, true); - OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel); - OPENAL_SetVolume(channels[landsound2], 256); - OPENAL_SetPaused(channels[landsound2], false); - } + if(tutoriallevel!=1){ + PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true); + OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); + OPENAL_SetVolume(channels[heavyimpactsound], 128); + OPENAL_SetPaused(channels[heavyimpactsound], false); } - //if(!victim->isIdle()||victim->damage>victim->damagetolerance-60) victim->RagDoll(0); XYZ relative; relative=victim->coords-coords; @@ -3111,9 +2855,7 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*60/victim->protectionhigh); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } @@ -3130,7 +2872,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); @@ -3178,9 +2919,7 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*60/victim->protectionhigh); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } @@ -3268,15 +3007,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]; @@ -3333,11 +3066,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); @@ -3357,16 +3086,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; @@ -3501,11 +3226,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); } } } @@ -3547,11 +3268,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); } } } @@ -3615,11 +3332,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); } } } @@ -3642,9 +3355,7 @@ void Person::DoAnimations(){ relative.y=0; Normalise(&relative); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); if(animation[victim->targetanimation].height==lowheight){ if(Random()%2){ @@ -3769,9 +3480,7 @@ void Person::DoAnimations(){ victim->DoDamage(damagemult*30/victim->protectionlow); } - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } @@ -3820,11 +3529,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){ @@ -3897,11 +3602,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); @@ -3910,11 +3611,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; @@ -3954,11 +3651,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; @@ -4016,30 +3709,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){ @@ -4077,11 +3747,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){ @@ -4131,11 +3797,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){ @@ -4161,20 +3823,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]]; @@ -4247,11 +3899,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; @@ -4366,11 +4014,7 @@ void Person::DoAnimations(){ } } - if(id==0){ - bonus=Reversal; - bonustime=0; - bonusvalue=60; - } + award_bonus(id, Reversal); victim->Puff(neck); @@ -4410,11 +4054,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); } } @@ -4800,7 +4440,7 @@ void Person::DoAnimations(){ //DoDamage(100); RagDoll(0); skeleton.spinny=0; - if(id!=0)SolidHitBonus(); + SolidHitBonus(!id); // FIXME: tricky id } if(feint){ escapednum++; @@ -4823,7 +4463,7 @@ void Person::DoAnimations(){ //DoDamage(100); RagDoll(0); skeleton.spinny=0; - if(id!=0)SolidHitBonus(); + SolidHitBonus(!id); // FIXME: tricky id } if(feint){ escapednum++; @@ -4972,14 +4612,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(); @@ -5050,12 +4688,6 @@ void Person::DoStuff(){ targetanimation=getRun(); targetframe=0; } - /*static float toggledelay; - toggledelay-=multiplier; - if(toggledelay<0){ - toggledelay=1; - if(Random()%3==0)superruntoggle=1-superruntoggle; - }*/ } if(weaponactive==-1&&num_weapons>0){ if(weapons.type[weaponids[0]]==staff){ @@ -5154,10 +4786,6 @@ void Person::DoStuff(){ if(!skeleton.free)Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[abdomen]].position+skeleton.joints[skeleton.jointlabels[abdomen]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1); } } - /*if(id==0){ - bloodloss+=deathbleeding*40; - deathbleeding=0; - }*/ bloodloss+=deathbleeding*multiplier*80; deathbleeding-=multiplier*1.6; //if(id==0)deathbleeding-=multiplier*.2; @@ -5193,9 +4821,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){ @@ -5231,10 +4857,6 @@ void Person::DoStuff(){ if(endy>skeleton.skinsize-1){endy=skeleton.skinsize-1;bleeding=0;} if(endx1)&&(bonus!=FinishedBonus||bonustime>1)&&bloodloss1)&&(bonus!=FinishedBonus||bonustime>1)&&bloodloss.1){ numafterkill++; } @@ -5729,11 +5338,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; @@ -5857,12 +5463,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; @@ -6294,7 +5896,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; @@ -6306,7 +5907,6 @@ void Person::DoStuff(){ lefthandmorphend=0; targetlefthandmorphness=1; } - //s} if(headmorphend!=3&&headmorphend!=5&&headmorphstart!=3&&headmorphstart!=5&&headmorphend!=0&&headmorphness==targetheadmorphness){ headmorphness=0; @@ -6522,21 +6122,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); @@ -6841,9 +6426,12 @@ int Person::DrawSkeleton(){ if(findDistancefast(&viewer,&coords)=0){ glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); if(skeleton.muscles[i].parent1->label==abdomen||skeleton.muscles[i].parent2->label==abdomen) @@ -7149,7 +6732,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(); @@ -7562,8 +7144,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){ - //} } } }