X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameTick.cpp;h=e31d3281c0276a19280aa88cbc2e8c4be44443d6;hb=3d9b1d366f1b3607c40eb5bcbbe631794ed899de;hp=03c0efdd8eeac66e358032b2498821bfeb56c875;hpb=253b1aa9cfce1e8b1fc12b74d96a7808f615d783;p=lugaru.git diff --git a/Source/GameTick.cpp b/Source/GameTick.cpp index 03c0efd..e31d328 100644 --- a/Source/GameTick.cpp +++ b/Source/GameTick.cpp @@ -609,27 +609,38 @@ static void ch_size(const char *args) player[0].scale = atof(args) * .2; } -static int find_closest() -{ - int closest = 0; - float closestdist = std::numeric_limits::max(); - - for (int i = 1; i < numplayers; i++) { - float distance; - distance = findDistancefast(&player[i].coords,&player[0].coords); - if (distance < closestdist) { - closestdist = distance; - closest = i; +static int findClosestPlayer(){ + int closest = -1; + float closestdist = std::numeric_limits::max(); + + for(int i=1; i::max(); + + for(int i=0; i=0) player[closest].scale = atof(args) * .2; } @@ -660,8 +671,8 @@ static void ch_proportion(const char *args) static void ch_proportionnear(const char *args) { - int closest = find_closest(); - if (closest) + int closest = findClosestPlayer(); + if(closest>=0) set_proportion(closest, args); } @@ -682,8 +693,8 @@ static void ch_protection(const char *args) static void ch_protectionnear(const char *args) { - int closest = find_closest(); - if (closest) + int closest = findClosestPlayer(); + if(closest>=0) set_protection(closest, args); } @@ -704,8 +715,8 @@ static void ch_armor(const char *args) static void ch_armornear(const char *args) { - int closest = find_closest(); - if (closest) + int closest = findClosestPlayer(); + if(closest>=0) set_armor(closest, args); } @@ -745,8 +756,8 @@ static void ch_noclothes(const char *args) static void ch_noclothesnear(const char *args) { - int closest = find_closest(); - if (closest) + int closest = findClosestPlayer(); + if(closest>=0) set_noclothes(closest, args); } @@ -774,8 +785,8 @@ static void ch_clothes(const char *args) static void ch_clothesnear(const char *args) { - int closest = find_closest(); - if (closest) + int closest = findClosestPlayer(); + if(closest>=0) set_clothes(closest, args); } @@ -1120,8 +1131,8 @@ static void ch_play(const char *args) player[participantfocus[whichdialogue][i]].yaw=participantyaw[whichdialogue][participantfocus[whichdialogue][i]]; player[participantfocus[whichdialogue][i]].targetyaw=participantyaw[whichdialogue][participantfocus[whichdialogue][i]]; player[participantfocus[whichdialogue][i]].velocity=0; - player[participantfocus[whichdialogue][i]].targetanimation=player[participantfocus[whichdialogue][i]].getIdle(); - player[participantfocus[whichdialogue][i]].targetframe=0; + player[participantfocus[whichdialogue][i]].animTarget=player[participantfocus[whichdialogue][i]].getIdle(); + player[participantfocus[whichdialogue][i]].frameTarget=0; } directing=0; @@ -1867,7 +1878,7 @@ void Loadlevel(const char *name) { float tempdist; //~ int whichclosest; for(int i=0;imaxdistance){ //~ whichclosest=i; maxdistance=tempdist; @@ -2099,10 +2110,10 @@ void Loadlevel(const char *name) { player[i].DoMipmaps(); } - player[i].currentanimation=bounceidleanim; - player[i].targetanimation=bounceidleanim; - player[i].currentframe=0; - player[i].targetframe=1; + player[i].animCurrent=bounceidleanim; + player[i].animTarget=bounceidleanim; + player[i].frameCurrent=0; + player[i].frameTarget=1; player[i].target=0; player[i].speed=1+(float)(Random()%100)/1000; if(difficulty==0) @@ -2557,23 +2568,23 @@ void doTutorial(){ break; case 4: if(player[0].forwardkeydown||player[0].backkeydown||player[0].leftkeydown||player[0].rightkeydown)tutorialsuccess+=multiplier; break; case 5: if(player[0].jumpkeydown)tutorialsuccess=1; break; case 6: if(player[0].isCrouch())tutorialsuccess=1; - break; case 7: if(player[0].targetanimation==rollanim)tutorialsuccess=1; - break; case 8: if(player[0].targetanimation==sneakanim)tutorialsuccess+=multiplier; - break; case 9: if(player[0].targetanimation==rabbitrunninganim||player[0].targetanimation==wolfrunninganim)tutorialsuccess+=multiplier; + break; case 7: if(player[0].animTarget==rollanim)tutorialsuccess=1; + break; case 8: if(player[0].animTarget==sneakanim)tutorialsuccess+=multiplier; + break; case 9: if(player[0].animTarget==rabbitrunninganim||player[0].animTarget==wolfrunninganim)tutorialsuccess+=multiplier; break; case 11: if(player[0].isWallJump())tutorialsuccess=1; - break; case 12: if(player[0].targetanimation==flipanim)tutorialsuccess=1; - break; case 15: if(player[0].targetanimation==upunchanim||player[0].targetanimation==winduppunchanim)tutorialsuccess=1; - break; case 16: if(player[0].targetanimation==winduppunchanim)tutorialsuccess=1; - break; case 17: if(player[0].targetanimation==spinkickanim)tutorialsuccess=1; - break; case 18: if(player[0].targetanimation==sweepanim)tutorialsuccess=1; - break; case 19: if(player[0].targetanimation==dropkickanim)tutorialsuccess=1; - break; case 20: if(player[0].targetanimation==rabbitkickanim)tutorialsuccess=1; + break; case 12: if(player[0].animTarget==flipanim)tutorialsuccess=1; + break; case 15: if(player[0].animTarget==upunchanim||player[0].animTarget==winduppunchanim)tutorialsuccess=1; + break; case 16: if(player[0].animTarget==winduppunchanim)tutorialsuccess=1; + break; case 17: if(player[0].animTarget==spinkickanim)tutorialsuccess=1; + break; case 18: if(player[0].animTarget==sweepanim)tutorialsuccess=1; + break; case 19: if(player[0].animTarget==dropkickanim)tutorialsuccess=1; + break; case 20: if(player[0].animTarget==rabbitkickanim)tutorialsuccess=1; break; case 21: if(bonus==cannon)tutorialsuccess=1; break; case 22: if(bonus==spinecrusher)tutorialsuccess=1; - break; case 23: if(player[0].targetanimation==walljumprightkickanim||player[0].targetanimation==walljumpleftkickanim)tutorialsuccess=1; - break; case 24: if(player[0].targetanimation==rabbittacklinganim)tutorialsuccess=1; - break; case 25: if(player[0].targetanimation==backhandspringanim)tutorialsuccess=1; - break; case 28: if(animation[player[0].targetanimation].attack==reversed&&player[0].feint)tutorialsuccess=1; + break; case 23: if(player[0].animTarget==walljumprightkickanim||player[0].animTarget==walljumpleftkickanim)tutorialsuccess=1; + break; case 24: if(player[0].animTarget==rabbittacklinganim)tutorialsuccess=1; + break; case 25: if(player[0].animTarget==backhandspringanim)tutorialsuccess=1; + break; case 28: if(animation[player[0].animTarget].attack==reversed&&player[0].feint)tutorialsuccess=1; break; case 29: if(player[0].escapednum==2) { tutorialsuccess=1; @@ -2581,10 +2592,10 @@ void doTutorial(){ cananger=0; player[1].aitype=passivetype; } - break; case 33: if(animation[player[0].targetanimation].attack==reversal)tutorialsuccess=1; - break; case 34: if(animation[player[0].targetanimation].attack==reversal)tutorialsuccess=1; + break; case 33: if(animation[player[0].animTarget].attack==reversal)tutorialsuccess=1; + break; case 34: if(animation[player[0].animTarget].attack==reversal)tutorialsuccess=1; break; case 35: - if(animation[player[0].targetanimation].attack==reversal){ + if(animation[player[0].animTarget].attack==reversal){ tutorialsuccess=1; reversaltrain=0; cananger=0; @@ -2592,10 +2603,10 @@ void doTutorial(){ } break; case 40: if(player[0].num_weapons>0)tutorialsuccess=1; break; case 41: if(player[0].weaponactive==-1&&player[0].num_weapons>0)tutorialsuccess=1; - break; case 43: if(player[0].targetanimation==knifeslashstartanim)tutorialsuccess=1; - break; case 44: if(animation[player[0].targetanimation].attack==reversal)tutorialsuccess=1; - break; case 45: if(animation[player[0].targetanimation].attack==reversal)tutorialsuccess=1; - break; case 46: if(animation[player[0].targetanimation].attack==reversal)tutorialsuccess=1; + break; case 43: if(player[0].animTarget==knifeslashstartanim)tutorialsuccess=1; + break; case 44: if(animation[player[0].animTarget].attack==reversal)tutorialsuccess=1; + break; case 45: if(animation[player[0].animTarget].attack==reversal)tutorialsuccess=1; + break; case 46: if(animation[player[0].animTarget].attack==reversal)tutorialsuccess=1; break; case 49: if(player[1].weaponstuck!=-1)tutorialsuccess=1; break; default: break; } @@ -2652,18 +2663,8 @@ void doDebugKeys(){ } if(Input::isKeyPressed(SDLK_x)&&Input::isKeyDown(SDLK_LSHIFT)){ - int closest=-1; - float closestdist=-1; - float distance; - if(numplayers>1) - for(int i=1;i=0){ if(player[closest].num_weapons){ if(weapons[player[closest].weaponids[0]].getType()==sword) weapons[player[closest].weaponids[0]].setType(staff); @@ -2683,37 +2684,20 @@ void doDebugKeys(){ } if(Input::isKeyDown(SDLK_u)){ - int closest=-1; - float closestdist=-1; - float distance; - if(numplayers>1) - for(int i=1;i=0){ + player[closest].yaw+=multiplier*50; + player[closest].targetyaw=player[closest].yaw; + } } if(Input::isKeyPressed(SDLK_o)&&!Input::isKeyDown(SDLK_LSHIFT)){ - int closest=-1; - float closestdist=-1; - float distance; - if(numplayers>1) - for(int i=1;i=0){ player[closest].whichskin++; if(player[closest].whichskin>9) player[closest].whichskin=0; @@ -2736,18 +2720,8 @@ void doDebugKeys(){ } if(Input::isKeyPressed(SDLK_o)&&Input::isKeyDown(SDLK_LSHIFT)){ - int closest=-1; - float closestdist=-1; - float distance; - if(numplayers>1) - for(int i=1;i=0){ if(player[closest].creature==wolftype){ headprop=player[closest].proportionhead.x/1.1; bodyprop=player[closest].proportionbody.x/1.1; @@ -2822,23 +2796,22 @@ void doDebugKeys(){ if(((Input::isKeyPressed(SDLK_i)&&!Input::isKeyDown(SDLK_LSHIFT)))){ - int closest=-1; - float closestdist=-1; - float distance; + int closest = -1; + float closestdist = std::numeric_limits::max(); + + for(int i=1; i1) - for(int i=1;i1) - for(int i=1;i=0 && distsq(&player[closest].coords,&player[0].coords)<144){ + blah=player[closest].coords; emit_sound_at(splattersound, blah); - emit_sound_at(breaksound2, blah); for(int i=0;i1) - for(int i=1;i0&&closest>=0){ + int closest=findClosestPlayer(); + if(closest>=0){ //player[closest]=player[numplayers-1]; //player[closest].skeleton=player[numplayers-1].skeleton; numplayers--; @@ -3050,20 +3000,9 @@ void doDebugKeys(){ } if(Input::isKeyPressed(SDLK_DELETE)&&Input::isKeyDown(SDLK_LCTRL)){ - int closest=-1; - float closestdist=-1; - float distance; - if(max_objects>1) - for(int i=1;i0&&closest>=0){ + int closest=findClosestObject(); + if(closest>=0) objects.position[closest].y-=500; - } } if(Input::isKeyPressed(SDLK_m)&&Input::isKeyDown(SDLK_LSHIFT)){ @@ -3118,10 +3057,10 @@ void doDebugKeys(){ player[numplayers].skeleton.drawmodelclothes.textureptr.load(":Data:Textures:Belt.png",1,1); player[numplayers].power=1; player[numplayers].speedmult=1; - player[numplayers].currentanimation=bounceidleanim; - player[numplayers].targetanimation=bounceidleanim; - player[numplayers].currentframe=0; - player[numplayers].targetframe=1; + player[numplayers].animCurrent=bounceidleanim; + player[numplayers].animTarget=bounceidleanim; + player[numplayers].frameCurrent=0; + player[numplayers].frameTarget=1; player[numplayers].target=0; player[numplayers].bled=0; player[numplayers].speed=1+(float)(Random()%100)/1000; @@ -3249,7 +3188,7 @@ void doDebugKeys(){ connected=0; if(numpathpoints>1) for(int i=0;i0&&closest>=0)objects.DeleteObject(closest); + int closest=findClosestObject(); + if(closest>=0) + objects.DeleteObject(closest); } } } @@ -3376,45 +3307,45 @@ void doJumpReversals(){ if(i==k)continue; if( player[k].skeleton.free==0&& player[i].skeleton.oldfree==0&& - (player[i].targetanimation==jumpupanim|| - player[k].targetanimation==jumpupanim)&& + (player[i].animTarget==jumpupanim|| + player[k].animTarget==jumpupanim)&& (player[i].aitype==playercontrolled|| player[k].aitype==playercontrolled)&& (player[i].aitype==attacktypecutoff&&player[i].stunned<=0|| player[k].aitype==attacktypecutoff&&player[k].stunned<=0)){ - if( findDistancefast(&player[i].coords,&player[k].coords)<10*sq((player[i].scale+player[k].scale)*2.5)&& - findDistancefastflat(&player[i].coords,&player[k].coords)<2*sq((player[i].scale+player[k].scale)*2.5)){ + if( distsq(&player[i].coords,&player[k].coords)<10*sq((player[i].scale+player[k].scale)*2.5)&& + distsqflat(&player[i].coords,&player[k].coords)<2*sq((player[i].scale+player[k].scale)*2.5)){ //TODO: refactor two huge similar ifs - if(player[i].targetanimation==jumpupanim&& - player[k].targetanimation!=getupfrombackanim&& - player[k].targetanimation!=getupfromfrontanim&& - animation[player[k].targetanimation].height==middleheight&& + if(player[i].animTarget==jumpupanim&& + player[k].animTarget!=getupfrombackanim&& + player[k].animTarget!=getupfromfrontanim&& + animation[player[k].animTarget].height==middleheight&& normaldotproduct(player[i].velocity,player[k].coords-player[i].coords)<0&& (player[k].aitype==playercontrolled&&player[k].attackkeydown|| player[k].aitype!=playercontrolled)){ player[i].victim=&player[k]; player[i].velocity=0; - player[i].currentanimation=jumpreversedanim; - player[i].targetanimation=jumpreversedanim; - player[i].currentframe=0; - player[i].targetframe=1; + player[i].animCurrent=jumpreversedanim; + player[i].animTarget=jumpreversedanim; + player[i].frameCurrent=0; + player[i].frameTarget=1; player[i].targettilt2=0; player[k].victim=&player[i]; player[k].velocity=0; - player[k].currentanimation=jumpreversalanim; - player[k].targetanimation=jumpreversalanim; - player[k].currentframe=0; - player[k].targetframe=1; + player[k].animCurrent=jumpreversalanim; + player[k].animTarget=jumpreversalanim; + player[k].frameCurrent=0; + player[k].frameTarget=1; player[k].targettilt2=0; if(player[i].coords.y0&& + if(distsq(&player[k].coords,&player[k].realoldcoords)>0&& !player[k].skeleton.free&& - player[k].targetanimation!=climbanim&& - player[k].targetanimation!=hanganim){ + player[k].animTarget!=climbanim&& + player[k].animTarget!=hanganim){ XYZ lowpoint,lowpointtarget,lowpoint2,lowpointtarget2,lowpoint3,lowpointtarget3,lowpoint4,lowpointtarget4,lowpoint5,lowpointtarget5,lowpoint6,lowpointtarget6,lowpoint7,lowpointtarget7,colpoint,colpoint2; int whichhit; bool tempcollide=0; @@ -3534,8 +3465,8 @@ void doAerialAcrobatics(){ objects.scale[i]>.5&&player[k].aitype==playercontrolled|| objects.position[i].y>player[k].coords.y){ lowpoint=player[k].coords; - if(player[k].targetanimation!=jumpupanim&& - player[k].targetanimation!=jumpdownanim&& + if(player[k].animTarget!=jumpupanim&& + player[k].animTarget!=jumpdownanim&& !player[k].isFlip()) lowpoint.y+=1.25; else @@ -3552,8 +3483,8 @@ void doAerialAcrobatics(){ //wall jumps //TODO: refactor four similar blocks if(player[k].aitype==playercontrolled&& - (player[k].targetanimation==jumpupanim|| - player[k].targetanimation==jumpdownanim|| + (player[k].animTarget==jumpupanim|| + player[k].animTarget==jumpdownanim|| player[k].isFlip())&& !player[k].jumptogglekeydown&& player[k].jumpkeydown){ @@ -3642,17 +3573,17 @@ void doAerialAcrobatics(){ player[k].collide=1; tempcollide=1; - if(player[k].targetanimation==jumpdownanim||player[k].isFlip()){ + if(player[k].animTarget==jumpdownanim||player[k].isFlip()){ //flipped into a rock - if(player[k].isFlip()&&animation[player[k].targetanimation].label[player[k].targetframe]==7) + if(player[k].isFlip()&&animation[player[k].animTarget].label[player[k].frameTarget]==7) player[k].RagDoll(0); - if(player[k].targetanimation==jumpupanim){ + if(player[k].animTarget==jumpupanim){ player[k].jumppower=-4; - player[k].targetanimation=player[k].getIdle(); + player[k].animTarget=player[k].getIdle(); } player[k].target=0; - player[k].targetframe=0; + player[k].frameTarget=0; player[k].onterrain=1; if(player[k].id==0){ @@ -3661,10 +3592,10 @@ void doAerialAcrobatics(){ } //landing - if((player[k].targetanimation==jumpdownanim||player[k].isFlip())&&!player[k].wasLanding()){ + if((player[k].animTarget==jumpdownanim||player[k].isFlip())&&!player[k].wasLanding()){ if(player[k].isFlip()) player[k].jumppower=-4; - player[k].targetanimation=player[k].getLanding(); + player[k].animTarget=player[k].getLanding(); emit_sound_at(landsound, player[k].coords, 128.); if(k==0){ envsound[numenvsounds]=player[k].coords; @@ -3686,8 +3617,8 @@ void doAerialAcrobatics(){ lowpoint.y+=1.35; if(objects.type[i]!=rocktype) if(player[k].SphereCheck(&lowpoint,1.33,&colpoint,&objects.position[i],&objects.yaw[i],&objects.model[i])!=-1){ - if(player[k].targetanimation!=jumpupanim&& - player[k].targetanimation!=jumpdownanim&& + if(player[k].animTarget!=jumpupanim&& + player[k].animTarget!=jumpdownanim&& player[k].onterrain) player[k].avoidcollided=1; player[k].coords=lowpoint; @@ -3695,11 +3626,11 @@ void doAerialAcrobatics(){ player[k].collide=1; if((player[k].grabdelay<=0||player[k].aitype!=playercontrolled)&& - (player[k].currentanimation!=climbanim&& - player[k].currentanimation!=hanganim&& + (player[k].animCurrent!=climbanim&& + player[k].animCurrent!=hanganim&& !player[k].isWallJump()|| - player[k].targetanimation==jumpupanim|| - player[k].targetanimation==jumpdownanim)){ + player[k].animTarget==jumpupanim|| + player[k].animTarget==jumpdownanim)){ lowpoint=player[k].coords; objects.model[i].SphereCheckPossible(&lowpoint, 1.5, &objects.position[i], &objects.yaw[i]); lowpoint=player[k].coords; @@ -3740,7 +3671,7 @@ void doAerialAcrobatics(){ whichhit=objects.model[i].LineCheckPossible(&lowpoint,&lowpointtarget,&colpoint,&objects.position[i],&objects.yaw[i]); if(objects.friction[i]>.5) if(whichhit!=-1){ - if(whichhit!=-1&&player[k].targetanimation!=jumpupanim&&player[k].targetanimation!=jumpdownanim) + if(whichhit!=-1&&player[k].animTarget!=jumpupanim&&player[k].animTarget!=jumpdownanim) player[k].collided=1; if(checkcollide(lowpoint7,lowpointtarget7)==-1) if(checkcollide(lowpoint6,lowpointtarget6)==-1) @@ -3758,9 +3689,9 @@ void doAerialAcrobatics(){ lowpointtarget=lowpoint+facing*1.4; if(objects.model[i].LineCheckPossible(&lowpoint,&lowpointtarget, &colpoint2,&objects.position[i],&objects.yaw[i])==-1){ - if(j<=6||j<=25&&player[k].targetanimation==jumpdownanim) + if(j<=6||j<=25&&player[k].animTarget==jumpdownanim) break; - if(player[k].targetanimation==jumpupanim||player[k].targetanimation==jumpdownanim){ + if(player[k].animTarget==jumpupanim||player[k].animTarget==jumpdownanim){ lowpoint=DoRotation(objects.model[i].facenormals[whichhit],0,objects.yaw[k],0); lowpoint=player[k].coords; lowpoint.y+=(float)j/13; @@ -3771,7 +3702,7 @@ void doAerialAcrobatics(){ player[k].currentoffset=(flatfacing-player[k].coords)/player[k].scale; if(j>10||!player[k].isRun()){ - if(player[k].targetanimation==jumpdownanim||player[k].targetanimation==jumpupanim){ + if(player[k].animTarget==jumpdownanim||player[k].animTarget==jumpupanim){ if(k==0) pause_sound(whooshsound); } @@ -3788,14 +3719,14 @@ void doAerialAcrobatics(){ player[k].velocity=0; //climb ledge (?) - if(player[k].targetanimation==jumpupanim){ - player[k].targetanimation=climbanim; + if(player[k].animTarget==jumpupanim){ + player[k].animTarget=climbanim; player[k].jumppower=0; player[k].jumpclimb=1; } player[k].transspeed=6; player[k].target=0; - player[k].targetframe=1; + player[k].frameTarget=1; //hang ledge (?) if(j>25){ player[k].setAnimation(hanganim); @@ -3814,20 +3745,20 @@ void doAerialAcrobatics(){ if(player[k].collide<=0){ //in the air if(!player[k].onterrain&& - player[k].targetanimation!=jumpupanim&& - player[k].targetanimation!=jumpdownanim&& - player[k].targetanimation!=climbanim&& - player[k].targetanimation!=hanganim&& + player[k].animTarget!=jumpupanim&& + player[k].animTarget!=jumpdownanim&& + player[k].animTarget!=climbanim&& + player[k].animTarget!=hanganim&& !player[k].isWallJump()&& !player[k].isFlip()){ - if(player[k].currentanimation!=climbanim&& - player[k].currentanimation!=tempanim&& - player[k].targetanimation!=backhandspringanim&& - (player[k].targetanimation!=rollanim|| - player[k].targetframe<2|| - player[k].targetframe>6)){ + if(player[k].animCurrent!=climbanim&& + player[k].animCurrent!=tempanim&& + player[k].animTarget!=backhandspringanim&& + (player[k].animTarget!=rollanim|| + player[k].frameTarget<2|| + player[k].frameTarget>6)){ //stagger off ledge (?) - if(player[k].targetanimation==staggerbackhighanim||player[k].targetanimation==staggerbackhardanim) + if(player[k].animTarget==staggerbackhighanim||player[k].animTarget==staggerbackhardanim) player[k].RagDoll(0); player[k].setAnimation(jumpdownanim); @@ -3869,10 +3800,10 @@ void doAttacks(){ !oldattackkey&& !player[0].backkeydown){ for(int k=0;k0&& attackweapon==knife&& player[i].bloodloss>player[i].damagetolerance/2) - player[k].targetanimation=knifefollowanim; + player[k].animTarget=knifefollowanim; //knifeslashstart else if(distance<2.5*sq(player[k].scale*5)&& - animation[player[i].targetanimation].height!=lowheight&& + animation[player[i].animTarget].height!=lowheight&& !player[k].forwardkeydown&& !player[k].leftkeydown&& !player[k].rightkeydown&& !player[k].crouchkeydown&& attackweapon==knife&& player[k].weaponmissdelay<=0) - player[k].targetanimation=knifeslashstartanim; + player[k].animTarget=knifeslashstartanim; //swordslash else if(distance<4.5*sq(player[k].scale*5)&& - animation[player[i].targetanimation].height!=lowheight&& + animation[player[i].animTarget].height!=lowheight&& !player[k].crouchkeydown&& attackweapon==sword&& player[k].weaponmissdelay<=0) - player[k].targetanimation=swordslashanim; + player[k].animTarget=swordslashanim; //staffhit else if(distance<4.5*sq(player[k].scale*5)&& - animation[player[i].targetanimation].height!=lowheight&& + animation[player[i].animTarget].height!=lowheight&& !player[k].crouchkeydown&& attackweapon==staff&& player[k].weaponmissdelay<=0&& !player[k].leftkeydown&& !player[k].rightkeydown&& !player[k].forwardkeydown) - player[k].targetanimation=staffhitanim; + player[k].animTarget=staffhitanim; //staffspinhit else if(distance<4.5*sq(player[k].scale*5)&& - animation[player[i].targetanimation].height!=lowheight&& + animation[player[i].animTarget].height!=lowheight&& !player[k].crouchkeydown&& attackweapon==staff&& player[k].weaponmissdelay<=0) - player[k].targetanimation=staffspinhitanim; + player[k].animTarget=staffspinhitanim; //spinkick else if(distance<2.5*sq(player[k].scale*5)&& - animation[player[i].targetanimation].height!=lowheight) - player[k].targetanimation=spinkickanim; + animation[player[i].animTarget].height!=lowheight) + player[k].animTarget=spinkickanim; //lowkick else if(distance<2.5*sq(player[k].scale*5)&& - animation[player[i].targetanimation].height==lowheight&& - animation[player[k].targetanimation].attack!=normalattack) - player[k].targetanimation=lowkickanim; + animation[player[i].animTarget].height==lowheight&& + animation[player[k].animTarget].attack!=normalattack) + player[k].animTarget=lowkickanim; } else { //AI player if(distance<4.5*sq(player[k].scale*5)){ randattack=abs(Random()%5); if(!attackweapon&&distance<2.5*sq(player[k].scale*5)){ //sweep - if(randattack==0&&animation[player[i].targetanimation].height!=lowheight) - player[k].targetanimation=sweepanim; + if(randattack==0&&animation[player[i].animTarget].height!=lowheight) + player[k].animTarget=sweepanim; //upunch - else if(randattack==1&&animation[player[i].targetanimation].height!=lowheight&& + else if(randattack==1&&animation[player[i].animTarget].height!=lowheight&& !attackweapon) - player[k].targetanimation=upunchanim; + player[k].animTarget=upunchanim; //spinkick - else if(randattack==2&&animation[player[i].targetanimation].height!=lowheight) - player[k].targetanimation=spinkickanim; + else if(randattack==2&&animation[player[i].animTarget].height!=lowheight) + player[k].animTarget=spinkickanim; //lowkick - else if(animation[player[i].targetanimation].height==lowheight) - player[k].targetanimation=lowkickanim; + else if(animation[player[i].animTarget].height==lowheight) + player[k].animTarget=lowkickanim; } if(attackweapon){ //sweep if((tutoriallevel!=1||!attackweapon)&& distance<2.5*sq(player[k].scale*5)&& randattack==0&& - animation[player[i].targetanimation].height!=lowheight) - player[k].targetanimation=sweepanim; + animation[player[i].animTarget].height!=lowheight) + player[k].animTarget=sweepanim; //knifeslashstart else if(distance<2.5*sq(player[k].scale*5)&& attackweapon==knife&& player[k].weaponmissdelay<=0) - player[k].targetanimation=knifeslashstartanim; + player[k].animTarget=knifeslashstartanim; //swordslash else if(!(player[0].victim==&player[i]&& player[0].hasvictim&& - player[0].targetanimation==swordslashanim)&& + player[0].animTarget==swordslashanim)&& attackweapon==sword&& player[k].weaponmissdelay<=0) - player[k].targetanimation=swordslashanim; + player[k].animTarget=swordslashanim; //staffhit else if(!(player[0].victim==&player[i]&& player[0].hasvictim&& - player[0].targetanimation==swordslashanim)&& + player[0].animTarget==swordslashanim)&& attackweapon==staff&& player[k].weaponmissdelay<=0&& randattack<3) - player[k].targetanimation=staffhitanim; + player[k].animTarget=staffhitanim; //staffspinhit else if(!(player[0].victim==&player[i]&& player[0].hasvictim&& - player[0].targetanimation==swordslashanim)&& + player[0].animTarget==swordslashanim)&& attackweapon==staff&& player[k].weaponmissdelay<=0&& randattack>=3) - player[k].targetanimation=staffspinhitanim; + player[k].animTarget=staffspinhitanim; //spinkick else if((tutoriallevel!=1||!attackweapon)&& distance<2.5*sq(player[k].scale*5)&& randattack==1&& - animation[player[i].targetanimation].height!=lowheight) - player[k].targetanimation=spinkickanim; + animation[player[i].animTarget].height!=lowheight) + player[k].animTarget=spinkickanim; //lowkick else if(distance<2.5*sq(player[k].scale*5)&& - animation[player[i].targetanimation].height==lowheight&& - animation[player[k].targetanimation].attack!=normalattack) - player[k].targetanimation=lowkickanim; + animation[player[i].animTarget].height==lowheight&& + animation[player[k].animTarget].attack!=normalattack) + player[k].animTarget=lowkickanim; } } } //upunch becomes wolfslap - if(player[k].targetanimation==upunchanim&&player[k].creature==wolftype) - player[k].targetanimation=wolfslapanim; + if(player[k].animTarget==upunchanim&&player[k].creature==wolftype) + player[k].animTarget=wolfslapanim; } //sneak attacks if((k==0)&&(tutoriallevel!=1||tutorialstage==22)&& player[i].howactive0&&player[k].madskills|| player[i].surprised>0|| player[i].aitype==passivetype|| @@ -4115,28 +4046,28 @@ void doAttacks(){ normaldotproduct(player[i].facing,player[i].coords-player[k].coords)>0){ //sneakattack if(!attackweapon){ - player[k].currentanimation=sneakattackanim; - player[k].targetanimation=sneakattackanim; - player[i].currentanimation=sneakattackedanim; - player[i].targetanimation=sneakattackedanim; + player[k].animCurrent=sneakattackanim; + player[k].animTarget=sneakattackanim; + player[i].animCurrent=sneakattackedanim; + player[i].animTarget=sneakattackedanim; player[k].oldcoords=player[k].coords; player[k].coords=player[i].coords; } //knifesneakattack if(attackweapon==knife){ - player[k].currentanimation=knifesneakattackanim; - player[k].targetanimation=knifesneakattackanim; - player[i].currentanimation=knifesneakattackedanim; - player[i].targetanimation=knifesneakattackedanim; + player[k].animCurrent=knifesneakattackanim; + player[k].animTarget=knifesneakattackanim; + player[i].animCurrent=knifesneakattackedanim; + player[i].animTarget=knifesneakattackedanim; player[i].oldcoords=player[i].coords; player[i].coords=player[k].coords; } //swordsneakattack if(attackweapon==sword){ - player[k].currentanimation=swordsneakattackanim; - player[k].targetanimation=swordsneakattackanim; - player[i].currentanimation=swordsneakattackedanim; - player[i].targetanimation=swordsneakattackedanim; + player[k].animCurrent=swordsneakattackanim; + player[k].animTarget=swordsneakattackanim; + player[i].animCurrent=swordsneakattackedanim; + player[i].animTarget=swordsneakattackedanim; player[i].oldcoords=player[i].coords; player[i].coords=player[k].coords; } @@ -4144,13 +4075,13 @@ void doAttacks(){ player[k].victim=&player[i]; player[k].hasvictim=1; player[i].targettilt2=0; - player[i].targetframe=1; - player[i].currentframe=0; + player[i].frameTarget=1; + player[i].frameCurrent=0; player[i].target=0; player[i].velocity=0; player[k].targettilt2=player[i].targettilt2; - player[k].currentframe=player[i].currentframe; - player[k].targetframe=player[i].targetframe; + player[k].frameCurrent=player[i].frameCurrent; + player[k].frameTarget=player[i].frameTarget; player[k].target=player[i].target; player[k].velocity=0; player[k].targetyaw=player[i].yaw; @@ -4158,39 +4089,39 @@ void doAttacks(){ player[i].targetyaw=player[i].yaw; } } - if(animation[player[k].targetanimation].attack==normalattack&& + if(animation[player[k].animTarget].attack==normalattack&& player[k].victim==&player[i]&& (!player[i].skeleton.free)){ oldattackkey=1; - player[k].targetframe=0; + player[k].frameTarget=0; player[k].target=0; player[k].targetyaw=roughDirectionTo(player[k].coords,player[i].coords); player[k].targettilt2=pitchTo(player[k].coords,player[i].coords); player[k].lastattack3=player[k].lastattack2; player[k].lastattack2=player[k].lastattack; - player[k].lastattack=player[k].targetanimation; + player[k].lastattack=player[k].animTarget; } - if(player[k].targetanimation==knifefollowanim&& + if(player[k].animTarget==knifefollowanim&& player[k].victim==&player[i]){ oldattackkey=1; player[k].targetyaw=roughDirectionTo(player[k].coords,player[i].coords); player[k].targettilt2=pitchTo(player[k].coords,player[i].coords); player[k].victim=&player[i]; player[k].hasvictim=1; - player[i].targetanimation=knifefollowedanim; - player[i].currentanimation=knifefollowedanim; + player[i].animTarget=knifefollowedanim; + player[i].animCurrent=knifefollowedanim; player[i].targettilt2=0; player[i].targettilt2=player[k].targettilt2; - player[i].targetframe=1; - player[i].currentframe=0; + player[i].frameTarget=1; + player[i].frameCurrent=0; player[i].target=0; player[i].velocity=0; - player[k].currentanimation=knifefollowanim; - player[k].targetanimation=knifefollowanim; + player[k].animCurrent=knifefollowanim; + player[k].animTarget=knifefollowanim; player[k].targettilt2=player[i].targettilt2; - player[k].currentframe=player[i].currentframe; - player[k].targetframe=player[i].targetframe; + player[k].frameCurrent=player[i].frameCurrent; + player[k].frameTarget=player[i].frameTarget; player[k].target=player[i].target; player[k].velocity=0; player[k].oldcoords=player[k].coords; @@ -4207,8 +4138,8 @@ void doAttacks(){ for(int i=0;i1000){ - player[k].targetanimation=killanim; + player[k].animTarget=killanim; //TODO: refactor this out, what does it do? for(int j=0;jcoords)) + if(distsq(&player[k].coords,&player[i].coords)< + distsq(&player[k].coords,&player[k].victim->coords)) player[k].victim=&player[i]; }else{ player[k].victim=&player[i]; @@ -4348,12 +4279,12 @@ void doAttacks(){ player[k].isRun()&& player[k].wasRun()&& ((player[k].hasvictim&& - findDistancefast(&player[k].coords,&player[k].victim->coords)<12*sq(player[k].scale*5)&& - findDistancefast(&player[k].coords,&player[k].victim->coords)>7*sq(player[k].scale*5)&& + distsq(&player[k].coords,&player[k].victim->coords)<12*sq(player[k].scale*5)&& + distsq(&player[k].coords,&player[k].victim->coords)>7*sq(player[k].scale*5)&& !player[k].victim->skeleton.free&& - player[k].victim->targetanimation!=getupfrombackanim&& - player[k].victim->targetanimation!=getupfromfrontanim&& - animation[player[k].victim->targetanimation].height!=lowheight&& + player[k].victim->animTarget!=getupfrombackanim&& + player[k].victim->animTarget!=getupfromfrontanim&& + animation[player[k].victim->animTarget].height!=lowheight&& player[k].aitype!=playercontrolled&& //wat??? normaldotproduct(player[k].facing,player[k].victim->coords-player[k].coords)>0&& player[k].rabbitkickenabled)|| @@ -4362,7 +4293,7 @@ void doAttacks(){ player[k].setAnimation(rabbitkickanim); } //update counts - if(animation[player[k].targetanimation].attack&&k==0){ + if(animation[player[k].animTarget].attack&&k==0){ numattacks++; switch(attackweapon){ case 0: numunarmedattack++; break; @@ -4384,14 +4315,14 @@ void doPlayerCollisions(){ for(int k=0;kplayer[k].coords.y-3) if(player[i].coords.yplayer[k].coords.z-3) if(player[i].coords.zskeleton.free) + if(player[0].animTarget==rabbitkickanim&&(k==0||i==0)&&!player[0].victim->skeleton.free) collisionradius=3; if((!player[i].skeleton.oldfree||!player[k].skeleton.oldfree)&& - (findDistancefast(&tempcoords1,&tempcoords2)1)|| (player[i].skeleton.oldfree==0&&player[k].skeleton.oldfree==0)){ rotatetarget=player[k].velocity-player[i].velocity; - if((player[i].targetanimation!=getupfrombackanim&&player[i].targetanimation!=getupfromfrontanim|| + if((player[i].animTarget!=getupfrombackanim&&player[i].animTarget!=getupfromfrontanim|| player[i].skeleton.free)&& - (player[k].targetanimation!=getupfrombackanim&&player[k].targetanimation!=getupfromfrontanim|| + (player[k].animTarget!=getupfrombackanim&&player[k].animTarget!=getupfromfrontanim|| player[k].skeleton.free)) if((((k!=0&&findLengthfast(&rotatetarget)>150|| k==0&&findLengthfast(&rotatetarget)>50&&player[0].rabbitkickragdoll)&& normaldotproduct(rotatetarget,player[k].coords-player[i].coords)>0)&& (k==0|| - k!=0&&player[i].skeleton.oldfree==1&&animation[player[k].currentanimation].attack==neutral|| - /*i!=0&&*/player[k].skeleton.oldfree==1&&animation[player[i].currentanimation].attack==neutral))|| - (player[i].targetanimation==jumpupanim||player[i].targetanimation==jumpdownanim||player[i].isFlip())&& - (player[k].targetanimation==jumpupanim||player[k].targetanimation==jumpdownanim||player[k].isFlip())&& + k!=0&&player[i].skeleton.oldfree==1&&animation[player[k].animCurrent].attack==neutral|| + /*i!=0&&*/player[k].skeleton.oldfree==1&&animation[player[i].animCurrent].attack==neutral))|| + (player[i].animTarget==jumpupanim||player[i].animTarget==jumpdownanim||player[i].isFlip())&& + (player[k].animTarget==jumpupanim||player[k].animTarget==jumpdownanim||player[k].isFlip())&& k==0&&!player[i].skeleton.oldfree&&!player[k].skeleton.oldfree){ //If hit by body if( (i!=0||player[i].skeleton.free)&& (k!=0||player[k].skeleton.free)|| - (animation[player[i].targetanimation].height==highheight&& - animation[player[k].targetanimation].height==highheight)){ + (animation[player[i].animTarget].height==highheight&& + animation[player[k].animTarget].height==highheight)){ if(tutoriallevel!=1){ emit_sound_at(heavyimpactsound, player[i].coords); } @@ -4503,13 +4434,13 @@ void doPlayerCollisions(){ } } - if( (animation[player[i].targetanimation].attack==neutral|| - animation[player[i].targetanimation].attack==normalattack)&& - (animation[player[k].targetanimation].attack==neutral|| - animation[player[k].targetanimation].attack==normalattack)){ + if( (animation[player[i].animTarget].attack==neutral|| + animation[player[i].animTarget].attack==normalattack)&& + (animation[player[k].animTarget].attack==neutral|| + animation[player[k].animTarget].attack==normalattack)){ //If bumped if(player[i].skeleton.oldfree==0&&player[k].skeleton.oldfree==0){ - if(findDistancefast(&player[k].coords,&player[i].coords)<.5*sq((player[i].scale+player[k].scale)*2.5)){ + if(distsq(&player[k].coords,&player[i].coords)<.5*sq((player[i].scale+player[k].scale)*2.5)){ rotatetarget=player[k].coords-player[i].coords; Normalise(&rotatetarget); player[k].coords=(player[k].coords+player[i].coords)/2; @@ -4537,9 +4468,9 @@ void doPlayerCollisions(){ } //jump down on player if(hostile){ - if(k==0&&i!=0&&player[k].targetanimation==jumpdownanim&& + if(k==0&&i!=0&&player[k].animTarget==jumpdownanim&& !player[i].isCrouch()&& - player[i].targetanimation!=rollanim&& + player[i].animTarget!=rollanim&& !player[k].skeleton.oldfree&&! player[k].skeleton.free&& player[k].lastcollide<=0&& @@ -4552,9 +4483,9 @@ void doPlayerCollisions(){ player[k].lastcollide=1; award_bonus(k, AboveBonus); } - if(i==0&&k!=0&&player[i].targetanimation==jumpdownanim&& + if(i==0&&k!=0&&player[i].animTarget==jumpdownanim&& !player[k].isCrouch()&& - player[k].targetanimation!=rollanim&& + player[k].animTarget!=rollanim&& !player[i].skeleton.oldfree&& !player[i].skeleton.free&& player[i].lastcollide<=0&& @@ -4587,7 +4518,7 @@ void doAI(int i){ player[i].stunned=1; player[i].pause=0; - if(findDistancefastflat(&player[0].coords,&player[i].coords)<30&& + if(distsqflat(&player[0].coords,&player[i].coords)<30&& player[0].coords.y>player[i].coords.y+2&& !player[0].onterrain) player[i].pause=1; @@ -4602,8 +4533,8 @@ void doAI(int i){ closest=-1; closestdistance=-1; for(int j=0;j.8 && !player[i].jumpkeydown && player[i].collided<.8) player[i].targetyaw+=90*(player[i].whichdirection*2-1); - if(player[i].collided<1||player[i].targetanimation!=jumpupanim) + if(player[i].collided<1||player[i].animTarget!=jumpupanim) player[i].jumpkeydown=0; if((player[i].collided>.8&&player[i].jumppower>=5)) player[i].jumpkeydown=1; @@ -4725,15 +4656,15 @@ void doAI(int i){ if((tutoriallevel!=1||cananger)&& hostile&& !player[0].dead&& - findDistancefast(&player[i].coords,&player[0].coords)<400&& + distsq(&player[i].coords,&player[0].coords)<400&& player[i].occluded<25){ - if(findDistancefast(&player[i].coords,&player[0].coords)<12&& - animation[player[0].targetanimation].height!=lowheight&& + if(distsq(&player[i].coords,&player[0].coords)<12&& + animation[player[0].animTarget].height!=lowheight&& !editorenabled&& (player[0].coords.y0) if(player[j].coords.y.8&&player[i].jumppower>=5)) player[i].jumpkeydown=1; @@ -4833,7 +4764,7 @@ void doAI(int i){ if(numenvsounds>0&&(tutoriallevel!=1||cananger)&&hostile) for(int j=0;j0&&findDistancefast(&player[i].coords,&envsound[j])< + if(vol>0&&distsq(&player[i].coords,&envsound[j])< 2*(vol+vol*(player[i].creature==rabbittype)*3)) player[i].aitype=attacktypecutoff; } @@ -4848,13 +4779,13 @@ void doAI(int i){ if(player[i].howactive0) if((-1==checkcollide( DoRotation(player[i].getJointFor(head).position,0,player[i].yaw,0)* @@ -4894,10 +4825,10 @@ void doAI(int i){ DoRotation(player[j].getJointFor(head).position,0,player[j].yaw,0)* player[j].scale+player[j].coords)&& !player[j].isWallJump())|| - (player[j].targetanimation==hanganim&& + (player[j].animTarget==hanganim&& normaldotproduct(player[j].facing,player[i].coords-player[j].coords)<0)){ player[i].lastseentime-=.2; - if(j==0&&animation[player[j].targetanimation].height==lowheight) + if(j==0&&animation[player[j].animTarget].height==lowheight) player[i].lastseentime-=.4; else player[i].lastseentime-=.6; @@ -4969,7 +4900,7 @@ void doAI(int i){ player[i].aiupdatedelay=.05; player[i].forwardkeydown=1; - if(findDistancefastflat(&player[i].coords,&player[i].lastseen)<1*sq(player[i].scale*5)||player[i].lastchecktime<0){ + if(distsqflat(&player[i].coords,&player[i].lastseen)<1*sq(player[i].scale*5)||player[i].lastchecktime<0){ player[i].forwardkeydown=0; player[i].aiupdatedelay=1; player[i].lastseen.x+=(float(Random()%100)-50)/25; @@ -4991,21 +4922,21 @@ void doAI(int i){ float leftdist,rightdist; leftpos = player[i].coords+DoRotation(player[i].facing,0,90,0); rightpos = player[i].coords-DoRotation(player[i].facing,0,90,0); - leftdist = findDistancefast(&leftpos, &player[i].avoidwhere); - rightdist = findDistancefast(&rightpos, &player[i].avoidwhere); + leftdist = distsq(&leftpos, &player[i].avoidwhere); + rightdist = distsq(&rightpos, &player[i].avoidwhere); if(leftdist.8&&player[i].jumppower>=5)) player[i].jumpkeydown=1; if(numenvsounds>0&&((tutoriallevel!=1||cananger)&&hostile)) for(int k=0;k0) if((checkcollide( DoRotation(player[i].getJointFor(head).position,0,player[i].yaw,0)* player[i].scale+player[i].coords, DoRotation(player[0].getJointFor(head).position,0,player[0].yaw,0)* player[0].scale+player[0].coords)==-1)|| - (player[0].targetanimation==hanganim&&normaldotproduct( + (player[0].animTarget==hanganim&&normaldotproduct( player[0].facing,player[i].coords-player[0].coords)<0)){ /* //TODO: changed j to 0 on a whim, make sure this is correct - (player[j].targetanimation==hanganim&&normaldotproduct( + (player[j].animTarget==hanganim&&normaldotproduct( player[j].facing,player[i].coords-player[j].coords)<0) */ player[i].aitype=attacktypecutoff; @@ -5075,7 +5006,7 @@ void doAI(int i){ player[k].howactive.8&&player[i].jumppower>=5) player[i].jumpkeydown=1; @@ -5172,7 +5103,7 @@ void doAI(int i){ float closestdist=-1; for(int k=0;k=0){ if(weapons[player[i].ally].owner!=-1|| - findDistancefast(&player[i].coords,&weapons[player[i].ally].position)>16){ + distsq(&player[i].coords,&weapons[player[i].ally].position)>16){ player[i].aitype=attacktypecutoff; player[i].lastseentime=1; } @@ -5214,8 +5145,8 @@ void doAI(int i){ float leftdist,rightdist; leftpos = player[i].coords+DoRotation(player[i].facing,0,90,0); rightpos = player[i].coords-DoRotation(player[i].facing,0,90,0); - leftdist = findDistancefast(&leftpos, &player[i].avoidwhere); - rightdist = findDistancefast(&rightpos, &player[i].avoidwhere); + leftdist = distsq(&leftpos, &player[i].avoidwhere); + rightdist = distsq(&rightpos, &player[i].avoidwhere); if(leftdist.8&&player[i].jumppower>=5)) player[i].jumpkeydown=1; @@ -5245,8 +5176,8 @@ void doAI(int i){ player[i].aiupdatedelay-=multiplier; //dodge or reverse rabbit kicks, knife throws, flips if(player[i].damage.5) player[i].stunned=1; } @@ -5289,7 +5220,7 @@ void doAI(int i){ weapons[i].velocity.x==0&& weapons[i].velocity.z==0&& weapons[i].velocity.y==0){ - if(findDistancefast(&player[i].coords,&weapons[k].position)<16) { + if(distsq(&player[i].coords,&weapons[k].position)<16) { player[i].wentforweapon++; player[i].lastchecktime=6; player[i].aitype=getweapontype; @@ -5298,10 +5229,10 @@ void doAI(int i){ } //dodge/reverse walljump kicks if(player[i].damageplayer[i].coords.y+5&& - animation[player[0].targetanimation].height!=highheight&& + animation[player[0].animTarget].height!=highheight&& !player[0].onterrain){ player[i].aitype=pathfindtype; player[i].finalfinaltarget=player[i].waypoints[player[i].waypoint]; @@ -5349,11 +5280,11 @@ void doAI(int i){ } //it's time to think (?) if(player[i].aiupdatedelay<0&& - !animation[player[i].targetanimation].attack&& - player[i].targetanimation!=staggerbackhighanim&& - player[i].targetanimation!=staggerbackhardanim&& - player[i].targetanimation!=backhandspringanim&& - player[i].targetanimation!=dodgebackanim){ + !animation[player[i].animTarget].attack&& + player[i].animTarget!=staggerbackhighanim&& + player[i].animTarget!=staggerbackhardanim&& + player[i].animTarget!=backhandspringanim&& + player[i].animTarget!=dodgebackanim){ //draw weapon if(player[i].weaponactive==-1&&player[i].num_weapons>0) player[i].drawkeydown=Random()%2; @@ -5363,18 +5294,18 @@ void doAI(int i){ //chase player XYZ rotatetarget=player[0].coords+player[0].velocity; XYZ targetpoint=player[0].coords; - if(findDistancefast(&player[0].coords,&player[i].coords)< - findDistancefast(&rotatetarget,&player[i].coords)) + if(distsq(&player[0].coords,&player[i].coords)< + distsq(&rotatetarget,&player[i].coords)) targetpoint+=player[0].velocity* findDistance(&player[0].coords,&player[i].coords)/findLength(&player[i].velocity); player[i].targetyaw=roughDirectionTo(player[i].coords,targetpoint); player[i].lookyaw=player[i].targetyaw; player[i].aiupdatedelay=.2+fabs((float)(Random()%100)/1000); - if(findDistancefast(&player[i].coords,&player[0].coords)>5&&(player[0].weaponactive==-1||player[i].weaponactive!=-1)) + if(distsq(&player[i].coords,&player[0].coords)>5&&(player[0].weaponactive==-1||player[i].weaponactive!=-1)) player[i].forwardkeydown=1; - else if((findDistancefast(&player[i].coords,&player[0].coords)>16|| - findDistancefast(&player[i].coords,&player[0].coords)<9)&& + else if((distsq(&player[i].coords,&player[0].coords)>16|| + distsq(&player[i].coords,&player[0].coords)<9)&& player[0].weaponactive!=-1) player[i].forwardkeydown=1; else if(Random()%6==0||(player[i].creature==wolftype&&Random()%3==0)) @@ -5410,7 +5341,7 @@ void doAI(int i){ player[i].attackkeydown=1; else player[i].attackkeydown=0; - if(player[i].isRun()&&Random()%6&&findDistancefast(&player[i].coords,&player[0].coords)>7) + if(player[i].isRun()&&Random()%6&&distsq(&player[i].coords,&player[0].coords)>7) player[i].attackkeydown=0; //TODO: wat @@ -5426,27 +5357,27 @@ void doAI(int i){ Random()%2==0&&difficulty==2|| Random()%4==0&&difficulty==1|| Random()%8==0&&difficulty==0|| - player[j].lastattack2==player[j].targetanimation&& - player[j].lastattack3==player[j].targetanimation&& + player[j].lastattack2==player[j].animTarget&& + player[j].lastattack3==player[j].animTarget&& (Random()%2==0||difficulty==2)|| (player[i].isIdle()||player[i].isRun())&& player[j].weaponactive!=-1|| - player[j].targetanimation==swordslashanim&& + player[j].animTarget==swordslashanim&& player[i].weaponactive!=-1|| - player[j].targetanimation==staffhitanim|| - player[j].targetanimation==staffspinhitanim)) - if(findDistancefast(&player[j].coords,&player[j].victim->coords)<4&& + player[j].animTarget==staffhitanim|| + player[j].animTarget==staffspinhitanim)) + if(distsq(&player[j].coords,&player[j].victim->coords)<4&& player[j].victim==&player[i]&& - (player[j].targetanimation==sweepanim|| - player[j].targetanimation==spinkickanim|| - player[j].targetanimation==staffhitanim|| - player[j].targetanimation==staffspinhitanim|| - player[j].targetanimation==winduppunchanim|| - player[j].targetanimation==upunchanim|| - player[j].targetanimation==wolfslapanim|| - player[j].targetanimation==knifeslashstartanim|| - player[j].targetanimation==swordslashanim&& - (findDistancefast(&player[j].coords,&player[i].coords)<2|| + (player[j].animTarget==sweepanim|| + player[j].animTarget==spinkickanim|| + player[j].animTarget==staffhitanim|| + player[j].animTarget==staffspinhitanim|| + player[j].animTarget==winduppunchanim|| + player[j].animTarget==upunchanim|| + player[j].animTarget==wolfslapanim|| + player[j].animTarget==knifeslashstartanim|| + player[j].animTarget==swordslashanim&& + (distsq(&player[j].coords,&player[i].coords)<2|| player[i].weaponactive!=-1))){ if(target>=0) target=-1; @@ -5460,15 +5391,15 @@ void doAI(int i){ if(player[i].collided<1) player[i].jumpkeydown=0; if(player[i].collided>.8&&player[i].jumppower>=5|| - findDistancefast(&player[i].coords,&player[0].coords)>400&& + distsq(&player[i].coords,&player[0].coords)>400&& player[i].onterrain&& player[i].creature==rabbittype) player[i].jumpkeydown=1; //TODO: why are we controlling the human? if(normaldotproduct(player[i].facing,player[0].coords-player[i].coords)>0) player[0].jumpkeydown=0; - if(player[0].targetanimation==jumpdownanim&& - findDistancefast(&player[0].coords,&player[i].coords)<40) + if(player[0].animTarget==jumpdownanim&& + distsq(&player[0].coords,&player[i].coords)<40) player[i].crouchkeydown=1; if(player[i].jumpkeydown) player[i].attackkeydown=0; @@ -5498,7 +5429,7 @@ void doAI(int i){ player[i].lastseentime=1; } } - if(animation[player[0].targetanimation].height==highheight&& + if(animation[player[0].animTarget].height==highheight&& (player[i].aitype==attacktypecutoff|| player[i].aitype==searchtype)) if(player[0].coords.y>terrain.getHeight(player[0].coords.x,player[0].coords.z)+10){ @@ -6417,7 +6348,7 @@ void Game::Tick(){ talkdelay=1; talkdelay-=multiplier; - if(talkdelay<=0&&indialogue==-1&&animation[player[0].targetanimation].height!=highheight) + if(talkdelay<=0&&indialogue==-1&&animation[player[0].animTarget].height!=highheight) for(int i=0;i0&& (dialoguegonethrough[i]==0||!special)&& (special||Input::isKeyPressed(attackkey))){ - if(findDistancefast(&player[0].coords,&player[realdialoguetype].coords)<6|| + if(distsq(&player[0].coords,&player[realdialoguetype].coords)<6|| player[realdialoguetype].howactive>=typedead1|| dialoguetype[i]>40&&dialoguetype[i]<50){ whichdialogue=i; @@ -6459,8 +6390,8 @@ void Game::Tick(){ player[participantfocus[whichdialogue][j]].yaw=participantyaw[whichdialogue][participantfocus[whichdialogue][j]]; player[participantfocus[whichdialogue][j]].targetyaw=participantyaw[whichdialogue][participantfocus[whichdialogue][j]]; player[participantfocus[whichdialogue][j]].velocity=0; - player[participantfocus[whichdialogue][j]].targetanimation=player[participantfocus[whichdialogue][j]].getIdle(); - player[participantfocus[whichdialogue][j]].targetframe=0; + player[participantfocus[whichdialogue][j]].animTarget=player[participantfocus[whichdialogue][j]].getIdle(); + player[participantfocus[whichdialogue][j]].frameTarget=0; } directing=0; indialogue=0; @@ -6763,8 +6694,8 @@ void Game::Tick(){ player[0].jumptogglekeydown=0; } if(player[0].jumpkeydown&& - player[0].targetanimation!=jumpupanim&& - player[0].targetanimation!=jumpdownanim&& + player[0].animTarget!=jumpupanim&& + player[0].animTarget!=jumpdownanim&& !player[0].isFlip()) player[0].jumptogglekeydown=1; @@ -6834,15 +6765,15 @@ void Game::Tick(){ oldtargetyaw=player[i].targetyaw; if(i==0&&indialogue==-1){ //TODO: refactor repetitive code - if(!animation[player[0].targetanimation].attack&& - player[0].targetanimation!=staggerbackhighanim&& - player[0].targetanimation!=staggerbackhardanim&& - player[0].targetanimation!=crouchremoveknifeanim&& - player[0].targetanimation!=removeknifeanim&& - player[0].targetanimation!=backhandspringanim&& - player[0].targetanimation!=dodgebackanim&& - player[0].targetanimation!=walljumprightkickanim&& - player[0].targetanimation!=walljumpleftkickanim){ + if(!animation[player[0].animTarget].attack&& + player[0].animTarget!=staggerbackhighanim&& + player[0].animTarget!=staggerbackhardanim&& + player[0].animTarget!=crouchremoveknifeanim&& + player[0].animTarget!=removeknifeanim&& + player[0].animTarget!=backhandspringanim&& + player[0].animTarget!=dodgebackanim&& + player[0].animTarget!=walljumprightkickanim&& + player[0].animTarget!=walljumpleftkickanim){ if(cameramode) player[0].targetyaw=0; else @@ -6866,15 +6797,15 @@ void Game::Tick(){ player[i].targetheadpitch=pitch; } if(i!=0&&player[i].aitype==playercontrolled&&indialogue==-1){ - if(!animation[player[i].targetanimation].attack&& - player[i].targetanimation!=staggerbackhighanim&& - player[i].targetanimation!=staggerbackhardanim&& - player[i].targetanimation!=crouchremoveknifeanim&& - player[i].targetanimation!=removeknifeanim&& - player[i].targetanimation!=backhandspringanim&& - player[i].targetanimation!=dodgebackanim&& - player[i].targetanimation!=walljumprightkickanim&& - player[i].targetanimation!=walljumpleftkickanim){ + if(!animation[player[i].animTarget].attack&& + player[i].animTarget!=staggerbackhighanim&& + player[i].animTarget!=staggerbackhardanim&& + player[i].animTarget!=crouchremoveknifeanim&& + player[i].animTarget!=removeknifeanim&& + player[i].animTarget!=backhandspringanim&& + player[i].animTarget!=dodgebackanim&& + player[i].animTarget!=walljumprightkickanim&& + player[i].animTarget!=walljumpleftkickanim){ player[i].targetyaw=-player[i].lookyaw+180; } @@ -6902,14 +6833,14 @@ void Game::Tick(){ //avoid flaming things for(int j=0;jid) - if(findDistancefastflat(&player[i].coords,&weapons[j].position)<2&&player[i].weaponactive==-1) - if(findDistancefast(&player[i].coords,&weapons[j].position)<1||player[i].victim){ + if(distsqflat(&player[i].coords,&weapons[j].position)<2&&player[i].weaponactive==-1) + if(distsq(&player[i].coords,&weapons[j].position)<1||player[i].victim){ if(weapons[j].getType()!=staff) emit_sound_at(knifedrawsound, player[i].coords, 128.); @@ -7041,7 +6972,7 @@ void Game::Tick(){ }else if((player[i].isIdle()|| player[i].isFlip()|| player[i].aitype!=playercontrolled)&& - findDistancefast(&player[i].coords,&weapons[j].position)<5&& + distsq(&player[i].coords,&weapons[j].position)<5&& player[i].coords.yid) - if(findDistancefastflat(&player[i].coords,&weapons[k].position)<3&& + if(distsqflat(&player[i].coords,&weapons[k].position)<3&& player[i].weaponactive==-1){ if(weapons[k].getType()!=staff) emit_sound_at(knifedrawsound, player[i].coords, 128.); @@ -7077,31 +7008,31 @@ void Game::Tick(){ } } if(player[i].isCrouch()|| - player[i].targetanimation==sneakanim|| + player[i].animTarget==sneakanim|| player[i].isRun()|| - player[i].isIdle()||player[i].targetanimation==rollanim|| - player[i].targetanimation==backhandspringanim){ + player[i].isIdle()||player[i].animTarget==rollanim|| + player[i].animTarget==backhandspringanim){ if(numplayers>1) for(int j=0;j0&& player[j].weaponstuckwhere==1))|| player[j].weaponstuck==-1|| player[j].num_weapons>1)){ - if(player[i].targetanimation!=rollanim&&player[i].targetanimation!=backhandspringanim){ + if(player[i].animTarget!=rollanim&&player[i].animTarget!=backhandspringanim){ player[i].throwtogglekeydown=1; player[i].victim=&player[j]; player[i].hasvictim=1; player[i].setAnimation(crouchremoveknifeanim); player[i].targetyaw=roughDirectionTo(player[i].coords,player[j].coords); } - if(player[i].targetanimation==rollanim||player[i].targetanimation==backhandspringanim){ + if(player[i].animTarget==rollanim||player[i].animTarget==backhandspringanim){ player[i].throwtogglekeydown=1; player[i].victim=&player[j]; player[i].hasvictim=1; @@ -7182,7 +7113,7 @@ void Game::Tick(){ if(player[i].isIdle()|| player[i].isRun()|| player[i].isCrouch()|| - player[i].targetanimation==sneakanim|| + player[i].animTarget==sneakanim|| player[i].isFlip()) if(numplayers>1) for(int j=0;j1.5&& + distsq(&player[i].coords,&player[j].coords)<100&& + distsq(&player[i].coords,&player[j].coords)>1.5&& !player[j].skeleton.free&& -1==checkcollide(DoRotation(player[j].getJointFor(head).position,0,player[j].yaw,0)*player[j].scale+player[j].coords,DoRotation(player[i].getJointFor(head).position,0,player[i].yaw,0)*player[i].scale+player[i].coords)){ if(!player[i].isFlip()){ @@ -7230,7 +7161,7 @@ void Game::Tick(){ } } if(player[i].weaponactive!=-1&&player[i].aitype==playercontrolled){ - if(player[i].isCrouch()||player[i].targetanimation==sneakanim){ + if(player[i].isCrouch()||player[i].animTarget==sneakanim){ player[i].throwtogglekeydown=1; weapons[player[i].weaponids[0]].owner=-1; weapons[player[i].weaponids[0]].velocity=player[i].velocity*.2; @@ -7331,11 +7262,11 @@ void Game::Tick(){ } movekey=0; //Do controls - if(!animation[player[i].targetanimation].attack&& - player[i].targetanimation!=staggerbackhighanim&& - player[i].targetanimation!=staggerbackhardanim&& - player[i].targetanimation!=backhandspringanim&& - player[i].targetanimation!=dodgebackanim){ + if(!animation[player[i].animTarget].attack&& + player[i].animTarget!=staggerbackhighanim&& + player[i].animTarget!=staggerbackhardanim&& + player[i].animTarget!=backhandspringanim&& + player[i].animTarget!=dodgebackanim){ if(!player[i].forwardkeydown) player[i].forwardstogglekeydown=0; if(player[i].crouchkeydown){ @@ -7346,23 +7277,23 @@ void Game::Tick(){ if(numplayers>1) for(int j=0;j1) for(int j=0;jcoords)<3&& + if(distsq(&player[j].coords,&player[j].victim->coords)<3&& player[j].victim==&player[i]&& - (player[j].targetanimation==sweepanim|| - player[j].targetanimation==upunchanim|| - player[j].targetanimation==wolfslapanim|| - ((player[j].targetanimation==swordslashanim|| - player[j].targetanimation==knifeslashstartanim|| - player[j].targetanimation==staffhitanim|| - player[j].targetanimation==staffspinhitanim)&& - findDistancefast(&player[j].coords,&player[i].coords)<2))){ + (player[j].animTarget==sweepanim|| + player[j].animTarget==upunchanim|| + player[j].animTarget==wolfslapanim|| + ((player[j].animTarget==swordslashanim|| + player[j].animTarget==knifeslashstartanim|| + player[j].animTarget==staffhitanim|| + player[j].animTarget==staffspinhitanim)&& + distsq(&player[j].coords,&player[i].coords)<2))){ if(target>=0) target=-1; else @@ -7390,7 +7321,7 @@ void Game::Tick(){ } if(!player[i].crouchkeydown){ //Uncrouch - if(!player[i].isRun()&&player[i].targetanimation!=sneakanim&&i==0)player[i].superruntoggle=0; + if(!player[i].isRun()&&player[i].animTarget!=sneakanim&&i==0)player[i].superruntoggle=0; target=-2; if(player[i].isCrouch()){ if(numplayers>1) @@ -7399,9 +7330,9 @@ void Game::Tick(){ !player[j].skeleton.free&& player[j].victim&& player[i].highreversaldelay<=0){ - if(findDistancefast(&player[j].coords,&player[j].victim->coords)<3&& + if(distsq(&player[j].coords,&player[j].victim->coords)<3&& player[j].victim==&player[i]&& - (player[j].targetanimation==spinkickanim)&& + (player[j].animTarget==spinkickanim)&& player[i].isCrouch()){ if(target>=0) target=-1; @@ -7416,14 +7347,14 @@ void Game::Tick(){ if(player[i].isCrouch()){ if(!player[i].wasCrouch()){ - player[i].currentanimation=player[i].getCrouch(); - player[i].currentframe=0; + player[i].animCurrent=player[i].getCrouch(); + player[i].frameCurrent=0; } player[i].setAnimation(player[i].getIdle()); player[i].transspeed=10; } } - if(player[i].targetanimation==sneakanim){ + if(player[i].animTarget==sneakanim){ player[i].setAnimation(player[i].getIdle()); player[i].transspeed=10; } @@ -7433,10 +7364,10 @@ void Game::Tick(){ (player[i].isStop()&& player[i].targetyaw==player[i].yaw)|| (player[i].isLanding()&& - player[i].targetframe>0&& + player[i].frameTarget>0&& !player[i].jumpkeydown)|| (player[i].isLandhard()&& - player[i].targetframe>0&& + player[i].frameTarget>0&& !player[i].jumpkeydown&& player[i].crouchkeydown)){ if(player[i].aitype==passivetype) @@ -7445,17 +7376,17 @@ void Game::Tick(){ player[i].setAnimation(player[i].getRun()); } if(player[i].isCrouch()){ - player[i].targetanimation=sneakanim; + player[i].animTarget=sneakanim; if(player[i].wasCrouch()) player[i].target=0; - player[i].targetframe=0; + player[i].frameTarget=0; } - if(player[i].targetanimation==hanganim/*&&(!player[i].forwardstogglekeydown||player[i].aitype!=playercontrolled)*/){ + if(player[i].animTarget==hanganim/*&&(!player[i].forwardstogglekeydown||player[i].aitype!=playercontrolled)*/){ player[i].setAnimation(climbanim); - player[i].targetframe=1; + player[i].frameTarget=1; player[i].jumpclimb=1; } - if(player[i].targetanimation==jumpupanim||player[i].targetanimation==jumpdownanim||player[i].isFlip()){ + if(player[i].animTarget==jumpupanim||player[i].animTarget==jumpdownanim||player[i].isFlip()){ player[i].velocity+=absflatfacing*5*multiplier; } player[i].forwardstogglekeydown=1; @@ -7466,21 +7397,21 @@ void Game::Tick(){ (player[i].isStop()&& player[i].targetyaw==player[i].yaw)|| (player[i].isLanding()&& - player[i].targetframe>0&& + player[i].frameTarget>0&& !player[i].jumpkeydown)|| (player[i].isLandhard()&& - player[i].targetframe>0&& + player[i].frameTarget>0&& !player[i].jumpkeydown&& player[i].crouchkeydown)){ player[i].setAnimation(player[i].getRun()); } if(player[i].isCrouch()){ - player[i].targetanimation=sneakanim; + player[i].animTarget=sneakanim; if(player[i].wasCrouch()) player[i].target=0; - player[i].targetframe=0; + player[i].frameTarget=0; } - if(player[i].targetanimation==jumpupanim||player[i].targetanimation==jumpdownanim||player[i].isFlip()){ + if(player[i].animTarget==jumpupanim||player[i].animTarget==jumpdownanim||player[i].isFlip()){ player[i].velocity+=DoRotation(absflatfacing*5*multiplier,0,-90,0); } player[i].targetyaw-=90; @@ -7493,21 +7424,21 @@ void Game::Tick(){ (player[i].isStop()&& player[i].targetyaw==player[i].yaw)|| (player[i].isLanding()&& - player[i].targetframe>0&& + player[i].frameTarget>0&& !player[i].jumpkeydown)|| (player[i].isLandhard()&& - player[i].targetframe>0&& + player[i].frameTarget>0&& !player[i].jumpkeydown&& player[i].crouchkeydown)){ player[i].setAnimation(player[i].getRun()); } if(player[i].isCrouch()){ - player[i].targetanimation=sneakanim; + player[i].animTarget=sneakanim; if(player[i].wasCrouch()) player[i].target=0; - player[i].targetframe=0; + player[i].frameTarget=0; } - if(player[i].targetanimation==jumpupanim||player[i].targetanimation==jumpdownanim||player[i].isFlip()){ + if(player[i].animTarget==jumpupanim||player[i].animTarget==jumpdownanim||player[i].isFlip()){ player[i].velocity-=DoRotation(absflatfacing*5*multiplier,0,-90,0); } player[i].targetyaw+=90; @@ -7520,29 +7451,29 @@ void Game::Tick(){ (player[i].isStop()&& player[i].targetyaw==player[i].yaw)|| (player[i].isLanding()&& - player[i].targetframe>0&& + player[i].frameTarget>0&& !player[i].jumpkeydown)|| (player[i].isLandhard()&& - player[i].targetframe>0&& + player[i].frameTarget>0&& !player[i].jumpkeydown&& player[i].crouchkeydown)){ player[i].setAnimation(player[i].getRun()); } if(player[i].isCrouch()){ - player[i].targetanimation=sneakanim; + player[i].animTarget=sneakanim; if(player[i].wasCrouch()) player[i].target=0; - player[i].targetframe=0; + player[i].frameTarget=0; } - if(player[i].targetanimation==jumpupanim||player[i].targetanimation==jumpdownanim||player[i].isFlip()){ + if(player[i].animTarget==jumpupanim||player[i].animTarget==jumpdownanim||player[i].isFlip()){ player[i].velocity-=absflatfacing*5*multiplier; } - if(player[i].targetanimation==hanganim){ - player[i].currentanimation=jumpdownanim; - player[i].targetanimation=jumpdownanim; + if(player[i].animTarget==hanganim){ + player[i].animCurrent=jumpdownanim; + player[i].animTarget=jumpdownanim; player[i].target=0; - player[i].currentframe=0; - player[i].targetframe=1; + player[i].frameCurrent=0; + player[i].frameTarget=1; player[i].velocity=0; player[i].velocity.y+=gravity; player[i].coords.y-=1.4; @@ -7553,14 +7484,14 @@ void Game::Tick(){ movekey=1; } if((player[i].jumpkeydown&&!player[i].jumpclimb)||player[i].jumpstart){ - if((((player[i].isLanding()&&player[i].targetframe>=3)|| + if((((player[i].isLanding()&&player[i].frameTarget>=3)|| player[i].isRun()|| - player[i].targetanimation==walkanim|| + player[i].animTarget==walkanim|| player[i].isCrouch()|| - player[i].targetanimation==sneakanim)&& + player[i].animTarget==sneakanim)&& player[i].jumppower>1)&& - ((player[i].targetanimation!=rabbitrunninganim&& - player[i].targetanimation!=wolfrunninganim)||i!=0)){ + ((player[i].animTarget!=rabbitrunninganim&& + player[i].animTarget!=wolfrunninganim)||i!=0)){ player[i].jumpstart=0; player[i].setAnimation(jumpupanim); player[i].yaw=player[i].targetyaw; @@ -7580,9 +7511,9 @@ void Game::Tick(){ if(numplayers>1) for(int j=0;jcoords)<3&& + if(distsq(&player[j].coords,&player[j].victim->coords)<3&& player[j].victim==&player[i]&& - (player[j].targetanimation==sweepanim)){ + (player[j].animTarget==sweepanim)){ if(target>=0)target=-1; else target=j; } @@ -7610,12 +7541,12 @@ void Game::Tick(){ } if((player[i].isIdle())&&player[i].jumppower>1){ player[i].setAnimation(player[i].getLanding()); - player[i].targetframe=2; + player[i].frameTarget=2; player[i].landhard=0; player[i].jumpstart=1; player[i].tempdeltav=deltav; } - if(player[i].targetanimation==jumpupanim&& + if(player[i].animTarget==jumpupanim&& (((!floatjump&& !editorenabled)|| !debugmode)|| @@ -7633,16 +7564,16 @@ void Game::Tick(){ } if(!movekey){ - if(player[i].isRun()||player[i].targetanimation==walkanim) + if(player[i].isRun()||player[i].animTarget==walkanim) player[i].setAnimation(player[i].getStop()); - if(player[i].targetanimation==sneakanim){ - player[i].targetanimation=player[i].getCrouch(); - if(player[i].currentanimation==sneakanim) + if(player[i].animTarget==sneakanim){ + player[i].animTarget=player[i].getCrouch(); + if(player[i].animCurrent==sneakanim) player[i].target=0; - player[i].targetframe=0; + player[i].frameTarget=0; } } - if(player[i].targetanimation==walkanim&& + if(player[i].animTarget==walkanim&& (player[i].aitype==attacktypecutoff|| player[i].aitype==searchtype|| (player[i].aitype==passivetype&& @@ -7652,7 +7583,7 @@ void Game::Tick(){ player[i].setAnimation(player[i].getStop()); } } - if(player[i].targetanimation==rollanim) + if(player[i].animTarget==rollanim) player[i].targetyaw=oldtargetyaw; } @@ -7666,15 +7597,15 @@ void Game::Tick(){ } //stop to turn in right direction - if(fabs(player[k].yaw-player[k].targetyaw)>90&&(player[k].isRun()||player[k].targetanimation==walkanim)) + if(fabs(player[k].yaw-player[k].targetyaw)>90&&(player[k].isRun()||player[k].animTarget==walkanim)) player[k].setAnimation(player[k].getStop()); - if(player[k].targetanimation==backhandspringanim||player[k].targetanimation==dodgebackanim) + if(player[k].animTarget==backhandspringanim||player[k].animTarget==dodgebackanim) player[k].targettilt=0; - if(player[k].targetanimation!=jumpupanim&& - player[k].targetanimation!=backhandspringanim&& - player[k].targetanimation!=jumpdownanim&& + if(player[k].animTarget!=jumpupanim&& + player[k].animTarget!=backhandspringanim&& + player[k].animTarget!=jumpdownanim&& !player[k].isFlip()){ player[k].targettilt=0; if(player[k].jumppower<0&&!player[k].jumpkeydown) @@ -7734,7 +7665,7 @@ void Game::Tick(){ oldtemp=temp; oldtemp2=temp2; if(tutorialstage>=51) - if(findDistancefast(&temp,&player[0].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[0].coords)<4){ + if(distsq(&temp,&player[0].coords)>=distsq(&temp,&temp2)-1||distsq(&temp3,&player[0].coords)<4){ OPENAL_StopSound(OPENAL_ALL); // hack...OpenAL renderer isn't stopping music after tutorial goes to level menu... OPENAL_SetFrequency(OPENAL_ALL, 0.001); @@ -7748,7 +7679,7 @@ void Game::Tick(){ flash(); } if(tutorialstage<51) - if(findDistancefast(&temp,&player[0].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[0].coords)<4){ + if(distsq(&temp,&player[0].coords)>=distsq(&temp,&temp2)-1||distsq(&temp3,&player[0].coords)<4){ emit_sound_at(fireendsound, player[0].coords); player[0].coords=(oldtemp+oldtemp2)/2; @@ -7756,7 +7687,7 @@ void Game::Tick(){ flash(); } if(tutorialstage>=14&&tutorialstage<50) - if(findDistancefast(&temp,&player[1].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[1].coords)<4){ + if(distsq(&temp,&player[1].coords)>=distsq(&temp,&temp2)-1||distsq(&temp3,&player[1].coords)<4){ emit_sound_at(fireendsound, player[1].coords); for(int i=0;i400){ cameraspeed=20+(findLength(&player[0].velocity)-20)*.96; } - if(player[0].skeleton.free==0&&player[0].targetanimation!=hanganim&&player[0].targetanimation!=climbanim)target.y+=1.4; + if(player[0].skeleton.free==0&&player[0].animTarget!=hanganim&&player[0].animTarget!=climbanim)target.y+=1.4; coltarget=target-cameraloc; if(findLengthfast(&coltarget)400){ cameraspeed=20+(findLength(&player[0].velocity)-20)*.96; } - if(player[0].skeleton.free==0&&player[0].targetanimation!=hanganim&&player[0].targetanimation!=climbanim)target.y+=1.4; + if(player[0].skeleton.free==0&&player[0].animTarget!=hanganim&&player[0].animTarget!=climbanim)target.y+=1.4; cameradist+=multiplier*5; if(cameradist>3.3)cameradist=3.3; coltarget=target-cameraloc; @@ -8224,7 +8155,7 @@ void Game::TickOnceAfter(){ else if(findLengthfast(&coltarget)>1) { Normalise(&coltarget); - if(player[0].targetanimation!=hanganim&&player[0].targetanimation!=climbanim&&player[0].currentanimation!=climbanim&&player[0].currentoffset.x==0)cameraloc=cameraloc+coltarget*multiplier*cameraspeed; + if(player[0].animTarget!=hanganim&&player[0].animTarget!=climbanim&&player[0].animCurrent!=climbanim&&player[0].currentoffset.x==0)cameraloc=cameraloc+coltarget*multiplier*cameraspeed; else cameraloc=cameraloc+coltarget*multiplier*8; } if(editorenabled)cameraloc=target;