X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FPerson.cpp;h=e3e6b2ee5a6c307f6f822492c288f2a57fcfb4f3;hb=3d9b1d366f1b3607c40eb5bcbbe631794ed899de;hp=25713a4905ec3d87d9ea704e29eef14c35f30b33;hpb=227187d94fd5b9582bb8513205f127b3b5078d81;p=lugaru.git diff --git a/Source/Person.cpp b/Source/Person.cpp index 25713a4..e3e6b2e 100644 --- a/Source/Person.cpp +++ b/Source/Person.cpp @@ -28,7 +28,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "Game.h" extern float multiplier; -extern int channels[100]; extern Terrain terrain; extern float gravity; extern int environment; @@ -49,7 +48,6 @@ extern bool osx; extern bool autoslomo; extern float camerashake; extern float woozy; -extern float terraindetail; extern float viewdistance; extern float blackout; extern int difficulty; @@ -85,19 +83,21 @@ extern int indialogue; extern bool gamestarted; +Person player[maxplayers]; + void Person::CheckKick() { if (!(hasvictim - && (targetanimation == rabbitkickanim + && (animTarget == rabbitkickanim && victim && victim != this - && currentframe >= 2 - && currentanimation == rabbitkickanim) - && (findDistancefast(&coords,&victim->coords) < 1.2) + && frameCurrent >= 2 + && animCurrent == rabbitkickanim) + && (distsq(&coords,&victim->coords) < 1.2) && (!victim->skeleton.free))) return; - if (animation[victim->targetanimation].height!=lowheight) + if (animation[victim->animTarget].height!=lowheight) { float damagemult = (creature == wolftype ? 2.5 : 1.) * power * power; XYZ relative = velocity; @@ -117,30 +117,31 @@ void Person::CheckKick() if(id==0)camerashake+=.4; target=0; - currentframe=3; - targetanimation=backflipanim; - targetframe=4; + frameCurrent=3; + animTarget=backflipanim; + frameTarget=4; velocity=facing*-10; velocity.y=5; skeleton.free=0; - if(id==0)OPENAL_SetPaused(channels[whooshsound], false); + if(id==0) + resume_stream(whooshsound); award_bonus(id, cannon); } else if (victim->isCrouch()) { - targetanimation=rabbitkickreversedanim; - currentanimation=rabbitkickreversedanim; - victim->currentanimation=rabbitkickreversalanim; - victim->targetanimation=rabbitkickreversalanim; + animTarget=rabbitkickreversedanim; + animCurrent=rabbitkickreversedanim; + victim->animCurrent=rabbitkickreversalanim; + victim->animTarget=rabbitkickreversalanim; targettilt2=0; - currentframe=0; - targetframe=1; + frameCurrent=0; + frameTarget=1; target=0; velocity=0; victim->oldcoords=victim->coords; coords=victim->coords; - victim->targetrotation=targetrotation; + victim->targetyaw=targetyaw; victim->victim=this; } } @@ -152,7 +153,7 @@ void Person::CatchFire(){ howmany=abs(Random()%(skeleton.num_joints)); if(!skeleton.free)flatvelocity=velocity; if(skeleton.free)flatvelocity=skeleton.joints[howmany].velocity; - if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords; + if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,yaw,0)*scale+coords; if(skeleton.free)flatfacing=skeleton.joints[howmany].position*scale+coords; Sprite::MakeSprite(flamesprite, flatfacing,flatvelocity, 1,1,1, 2, 1); } @@ -176,10 +177,14 @@ int Person::getIdle(){ if(creature==wolftype)return wolfidle; } if(aitype==playercontrolled&&stunned<=0&&weaponactive!=-1){ - if(weapons.type[weaponids[weaponactive]]==knife)return knifefightidleanim; - if(weapons.type[weaponids[weaponactive]]==sword&&victim->weaponactive!=-1)return swordfightidlebothanim; - if(weapons.type[weaponids[weaponactive]]==sword)return swordfightidleanim; - if(weapons.type[weaponids[weaponactive]]==staff)return swordfightidleanim; + if(weapons[weaponids[weaponactive]].getType()==knife) + return knifefightidleanim; + if(weapons[weaponids[weaponactive]].getType()==sword&&victim->weaponactive!=-1) + return swordfightidlebothanim; + if(weapons[weaponids[weaponactive]].getType()==sword) + return swordfightidleanim; + if(weapons[weaponids[weaponactive]].getType()==staff) + return swordfightidleanim; } if(aitype!=playercontrolled&&stunned<=0&&creature!=wolftype&&!pause)return fightsidestep; } @@ -249,20 +254,20 @@ void Person::DoBlood(float howmuch,int which){ bloodvel=0; if(!skeleton.free){ bloodvel.z=10; - bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale; + bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale; } if(skeleton.free){ bloodvel-=DoRotation(skeleton.forward*10*scale,((float)(Random()%100))/4,((float)(Random()%100))/4,0); } - if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale; + if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale; if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale; if(skeleton.free){ Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1); Sprite::MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1); } if(!skeleton.free){ - Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1); - Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1); + Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, 1); + Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .3, 1); } } if(Random()%2==0) @@ -271,17 +276,17 @@ void Person::DoBlood(float howmuch,int which){ bloodvel=0; if(skeleton.free) { bloodvel-=DoRotation(skeleton.forward*10*scale,((float)(Random()%100))/4,((float)(Random()%100))/4,0); - bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale; + bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale; } else { bloodvel.z=10; - bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale; + bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale; bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale; } bloodvel*=.2; if(skeleton.free){ Sprite::MakeSprite(splintersprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1); } else { - Sprite::MakeSprite(splintersprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1); + Sprite::MakeSprite(splintersprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, 1); } Sprite::setLastSpriteSpecial(3); } @@ -291,7 +296,6 @@ void Person::DoBlood(float howmuch,int which){ bleeding=howmuch+(float)abs(Random()%100)/200-.25; bleedxint=0; bleedyint=0; - int texdetailint=realtexdetail; if(creature==rabbittype) while(bloodText[bleedxint*512*3+bleedyint*3+0]>which+4||bloodText[bleedxint*512*3+bleedyint*3+0]500||bleedyint>500){ bleedxint=abs(Random()%512); @@ -361,20 +365,20 @@ void Person::DoBloodBig(float howmuch,int which){ bloodvel=0; if(!skeleton.free){ bloodvel.z=10; - bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale; + bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale; } if(skeleton.free){ bloodvel-=DoRotation(skeleton.forward*10*scale,((float)(Random()%100))/4,((float)(Random()%100))/4,0); } - if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale; + if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale; if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale; if(skeleton.free){ Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1); Sprite::MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1); } if(!skeleton.free){ - Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1); - Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1); + Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, 1); + Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .3, 1); } } } @@ -396,9 +400,7 @@ void Person::DoBloodBig(float howmuch,int which){ offsetx=Random()%20; } if(which==220||which==215){ - //offsety=Random()%20; offsetx=20; - //offsetx=abs(Random()%80); } @@ -473,7 +475,7 @@ void Person::DoBloodBig(float howmuch,int which){ } } } - glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); + skeleton.drawmodel.textureptr.bind(); DoMipmaps(); bleedxint=0; @@ -514,7 +516,7 @@ void Person::DoBloodBig(float howmuch,int which){ } bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ - static int bleedxint,bleedyint,i,j; + static int i,j; static XYZ bloodvel; static XYZ startpoint,endpoint,colpoint,movepoint; static float rotationpoint; @@ -528,7 +530,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ if(bloodtoggle&&decals&&tutoriallevel!=1){ where-=coords; - if(!skeleton.free)where=DoRotation(where,0,-rotation,0); + if(!skeleton.free)where=DoRotation(where,0,-yaw,0); //where=scale; startpoint=where; startpoint.y+=100; @@ -550,9 +552,9 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ t = dotproduct(&temp,&N)/findLength(&N); r = 1 - (s + t);*/ - bary.x=findDistancefast(&p0,&p1); - bary.y=findDistancefast(&p0,&p2); - bary.z=findDistancefast(&p0,&p3); + bary.x=distsq(&p0,&p1); + bary.y=distsq(&p0,&p2); + bary.z=distsq(&p0,&p3); total=bary.x+bary.y+bary.z; bary.x/=total; @@ -587,20 +589,20 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ bloodvel=0; if(!skeleton.free){ bloodvel.z=10; - bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale; + bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale; } if(skeleton.free){ bloodvel-=DoRotation(skeleton.forward*10*scale,((float)(Random()%100))/4,((float)(Random()%100))/4,0); } - if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale; + if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale; if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale; if(skeleton.free){ Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1); Sprite::MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1); } if(!skeleton.free){ - Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1); - Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1); + Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, 1); + Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .3, 1); } } } @@ -701,7 +703,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ } } } - glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); + skeleton.drawmodel.textureptr.bind(); DoMipmaps(); bleedy=(1+coordsy)*512; @@ -738,8 +740,8 @@ void Person::Reverse() if (!((victim->aitype == playercontrolled || hostiletime > 1 || staggerdelay <= 0) - && victim->targetanimation != jumpupanim - && victim->targetanimation != jumpdownanim + && victim->animTarget != jumpupanim + && victim->animTarget != jumpdownanim && (tutoriallevel != 1 || cananger) && hostile)) return; @@ -749,41 +751,41 @@ void Person::Reverse() && (creature != wolftype || victim->creature == wolftype)) return; - if(targetanimation==sweepanim){ - targetanimation=sweepreversedanim; - currentanimation=sweepreversedanim; - victim->currentanimation=sweepreversalanim; - victim->targetanimation=sweepreversalanim; + if(animTarget==sweepanim){ + animTarget=sweepreversedanim; + animCurrent=sweepreversedanim; + victim->animCurrent=sweepreversalanim; + victim->animTarget=sweepreversalanim; } - if(targetanimation==spinkickanim){ - targetanimation=spinkickreversedanim; - currentanimation=spinkickreversedanim; - victim->currentanimation=spinkickreversalanim; - victim->targetanimation=spinkickreversalanim; + if(animTarget==spinkickanim){ + animTarget=spinkickreversedanim; + animCurrent=spinkickreversedanim; + victim->animCurrent=spinkickreversalanim; + victim->animTarget=spinkickreversalanim; } - if(targetanimation==upunchanim||targetanimation==rabbittacklinganim){ - if(targetanimation==rabbittacklinganim){ - currentframe=6; - targetframe=7; - victim->currentframe=6; - victim->targetframe=7; + if(animTarget==upunchanim||animTarget==rabbittacklinganim){ + if(animTarget==rabbittacklinganim){ + frameCurrent=6; + frameTarget=7; + victim->frameCurrent=6; + victim->frameTarget=7; } - targetanimation=upunchreversedanim; - currentanimation=upunchreversedanim; - victim->currentanimation=upunchreversalanim; - victim->targetanimation=upunchreversalanim; + animTarget=upunchreversedanim; + animCurrent=upunchreversedanim; + victim->animCurrent=upunchreversalanim; + victim->animTarget=upunchreversalanim; } - if(targetanimation==staffhitanim&&findDistancefast(&victim->coords,&coords)<2&&((victim->id==0&&victim->crouchkeydown)||Random()%4==0)){ + if(animTarget==staffhitanim&&distsq(&victim->coords,&coords)<2&&((victim->id==0&&victim->crouchkeydown)||Random()%4==0)){ if(victim->weaponactive!=-1){ victim->throwtogglekeydown=1; - weapons.owner[victim->weaponids[0]]=-1; - weapons.velocity[victim->weaponids[0]]=victim->velocity*.2; - if(weapons.velocity[victim->weaponids[0]].x==0)weapons.velocity[victim->weaponids[0]].x=.1; - weapons.tipvelocity[victim->weaponids[0]]=weapons.velocity[victim->weaponids[0]]; - weapons.missed[victim->weaponids[0]]=1; - weapons.freetime[victim->weaponids[0]]=0; - weapons.firstfree[victim->weaponids[0]]=1; - weapons.physics[victim->weaponids[0]]=1; + weapons[victim->weaponids[0]].owner=-1; + weapons[victim->weaponids[0]].velocity=victim->velocity*.2; + if(weapons[victim->weaponids[0]].velocity.x==0)weapons[victim->weaponids[0]].velocity.x=.1; + weapons[victim->weaponids[0]].tipvelocity=weapons[victim->weaponids[0]].velocity; + weapons[victim->weaponids[0]].missed=1; + weapons[victim->weaponids[0]].freetime=0; + weapons[victim->weaponids[0]].firstfree=1; + weapons[victim->weaponids[0]].physics=1; victim->num_weapons--; if(victim->num_weapons){ victim->weaponids[0]=victim->weaponids[victim->num_weapons]; @@ -796,22 +798,22 @@ void Person::Reverse() } } - targetanimation=staffhitreversedanim; - currentanimation=staffhitreversedanim; - victim->currentanimation=staffhitreversalanim; - victim->targetanimation=staffhitreversalanim; + animTarget=staffhitreversedanim; + animCurrent=staffhitreversedanim; + victim->animCurrent=staffhitreversalanim; + victim->animTarget=staffhitreversalanim; } - if(targetanimation==staffspinhitanim&&findDistancefast(&victim->coords,&coords)<2&&((victim->id==0&&victim->crouchkeydown)||Random()%2==0)){ + if(animTarget==staffspinhitanim&&distsq(&victim->coords,&coords)<2&&((victim->id==0&&victim->crouchkeydown)||Random()%2==0)){ if(victim->weaponactive!=-1){ victim->throwtogglekeydown=1; - weapons.owner[victim->weaponids[0]]=-1; - weapons.velocity[victim->weaponids[0]]=victim->velocity*.2; - if(weapons.velocity[victim->weaponids[0]].x==0)weapons.velocity[victim->weaponids[0]].x=.1; - weapons.tipvelocity[victim->weaponids[0]]=weapons.velocity[victim->weaponids[0]]; - weapons.missed[victim->weaponids[0]]=1; - weapons.freetime[victim->weaponids[0]]=0; - weapons.firstfree[victim->weaponids[0]]=1; - weapons.physics[victim->weaponids[0]]=1; + weapons[victim->weaponids[0]].owner=-1; + weapons[victim->weaponids[0]].velocity=victim->velocity*.2; + if(weapons[victim->weaponids[0]].velocity.x==0)weapons[victim->weaponids[0]].velocity.x=.1; + weapons[victim->weaponids[0]].tipvelocity=weapons[victim->weaponids[0]].velocity; + weapons[victim->weaponids[0]].missed=1; + weapons[victim->weaponids[0]].freetime=0; + weapons[victim->weaponids[0]].firstfree=1; + weapons[victim->weaponids[0]].physics=1; victim->num_weapons--; if(victim->num_weapons){ victim->weaponids[0]=victim->weaponids[victim->num_weapons]; @@ -823,22 +825,22 @@ void Person::Reverse() player[j].wentforweapon=0; } } - targetanimation=staffspinhitreversedanim; - currentanimation=staffspinhitreversedanim; - victim->currentanimation=staffspinhitreversalanim; - victim->targetanimation=staffspinhitreversalanim; + animTarget=staffspinhitreversedanim; + animCurrent=staffspinhitreversedanim; + victim->animCurrent=staffspinhitreversalanim; + victim->animTarget=staffspinhitreversalanim; } - if(targetanimation==swordslashanim&&findDistancefast(&victim->coords,&coords)<2&&((victim->id==0&&victim->crouchkeydown)||Random()%4==0)){ + if(animTarget==swordslashanim&&distsq(&victim->coords,&coords)<2&&((victim->id==0&&victim->crouchkeydown)||Random()%4==0)){ if(victim->weaponactive!=-1){ victim->throwtogglekeydown=1; - weapons.owner[victim->weaponids[0]]=-1; - weapons.velocity[victim->weaponids[0]]=victim->velocity*.2; - if(weapons.velocity[victim->weaponids[0]].x==0)weapons.velocity[victim->weaponids[0]].x=.1; - weapons.tipvelocity[victim->weaponids[0]]=weapons.velocity[victim->weaponids[0]]; - weapons.missed[victim->weaponids[0]]=1; - weapons.freetime[victim->weaponids[0]]=0; - weapons.firstfree[victim->weaponids[0]]=1; - weapons.physics[victim->weaponids[0]]=1; + weapons[victim->weaponids[0]].owner=-1; + weapons[victim->weaponids[0]].velocity=victim->velocity*.2; + if(weapons[victim->weaponids[0]].velocity.x==0)weapons[victim->weaponids[0]].velocity.x=.1; + weapons[victim->weaponids[0]].tipvelocity=weapons[victim->weaponids[0]].velocity; + weapons[victim->weaponids[0]].missed=1; + weapons[victim->weaponids[0]].freetime=0; + weapons[victim->weaponids[0]].firstfree=1; + weapons[victim->weaponids[0]].physics=1; victim->num_weapons--; if(victim->num_weapons){ victim->weaponids[0]=victim->weaponids[victim->num_weapons]; @@ -850,22 +852,22 @@ void Person::Reverse() player[j].wentforweapon=0; } } - targetanimation=swordslashreversedanim; - currentanimation=swordslashreversedanim; - victim->currentanimation=swordslashreversalanim; - victim->targetanimation=swordslashreversalanim; + animTarget=swordslashreversedanim; + animCurrent=swordslashreversedanim; + victim->animCurrent=swordslashreversalanim; + victim->animTarget=swordslashreversalanim; } - if(targetanimation==knifeslashstartanim&&findDistancefast(&victim->coords,&coords)<2&&(victim->id==0||Random()%4==0)){ + if(animTarget==knifeslashstartanim&&distsq(&victim->coords,&coords)<2&&(victim->id==0||Random()%4==0)){ if(victim->weaponactive!=-1){ victim->throwtogglekeydown=1; - weapons.owner[victim->weaponids[0]]=-1; - weapons.velocity[victim->weaponids[0]]=victim->velocity*.2; - if(weapons.velocity[victim->weaponids[0]].x==0)weapons.velocity[victim->weaponids[0]].x=.1; - weapons.tipvelocity[victim->weaponids[0]]=weapons.velocity[victim->weaponids[0]]; - weapons.missed[victim->weaponids[0]]=1; - weapons.freetime[victim->weaponids[0]]=0; - weapons.firstfree[victim->weaponids[0]]=1; - weapons.physics[victim->weaponids[0]]=1; + weapons[victim->weaponids[0]].owner=-1; + weapons[victim->weaponids[0]].velocity=victim->velocity*.2; + if(weapons[victim->weaponids[0]].velocity.x==0)weapons[victim->weaponids[0]].velocity.x=.1; + weapons[victim->weaponids[0]].tipvelocity=weapons[victim->weaponids[0]].velocity; + weapons[victim->weaponids[0]].missed=1; + weapons[victim->weaponids[0]].freetime=0; + weapons[victim->weaponids[0]].firstfree=1; + weapons[victim->weaponids[0]].physics=1; victim->num_weapons--; if(victim->num_weapons){ victim->weaponids[0]=victim->weaponids[victim->num_weapons]; @@ -877,77 +879,79 @@ void Person::Reverse() player[j].wentforweapon=0; } } - targetanimation=knifeslashreversedanim; - currentanimation=knifeslashreversedanim; - victim->currentanimation=knifeslashreversalanim; - victim->targetanimation=knifeslashreversalanim; + animTarget=knifeslashreversedanim; + animCurrent=knifeslashreversedanim; + victim->animCurrent=knifeslashreversalanim; + victim->animTarget=knifeslashreversalanim; } - if(targetanimation!=knifeslashstartanim&&targetanimation!=staffhitanim&&targetanimation!=staffspinhitanim&&targetanimation!=winduppunchanim&&targetanimation!=wolfslapanim&&targetanimation!=swordslashanim&&targetanimation!=swordslashanim){ + if(animTarget!=knifeslashstartanim&&animTarget!=staffhitanim&&animTarget!=staffspinhitanim&&animTarget!=winduppunchanim&&animTarget!=wolfslapanim&&animTarget!=swordslashanim&&animTarget!=swordslashanim){ victim->targettilt2=targettilt2; - victim->currentframe=currentframe; - victim->targetframe=targetframe; + victim->frameCurrent=frameCurrent; + victim->frameTarget=frameTarget; victim->target=target; victim->velocity=0; victim->oldcoords=victim->coords; victim->coords=coords; - victim->targetrotation=targetrotation; - victim->rotation=targetrotation; + victim->targetyaw=targetyaw; + victim->yaw=targetyaw; victim->victim=this; } - if(targetanimation==winduppunchanim){ - targetanimation=winduppunchblockedanim; - victim->targetanimation=blockhighleftanim; - victim->targetframe=1; + if(animTarget==winduppunchanim){ + animTarget=winduppunchblockedanim; + victim->animTarget=blockhighleftanim; + victim->frameTarget=1; victim->target=.5; victim->victim=this; - victim->targetrotation=targetrotation+180; + victim->targetyaw=targetyaw+180; } - if(targetanimation==wolfslapanim){ - targetanimation=winduppunchblockedanim; - victim->targetanimation=blockhighleftanim; - victim->targetframe=1; + if(animTarget==wolfslapanim){ + animTarget=winduppunchblockedanim; + victim->animTarget=blockhighleftanim; + victim->frameTarget=1; victim->target=.5; victim->victim=this; - victim->targetrotation=targetrotation+180; + victim->targetyaw=targetyaw+180; } - if((targetanimation==swordslashanim||targetanimation==staffhitanim||targetanimation==staffspinhitanim)&&victim->weaponactive!=-1){ - targetanimation=swordslashparriedanim; + if((animTarget==swordslashanim||animTarget==staffhitanim||animTarget==staffspinhitanim)&&victim->weaponactive!=-1){ + animTarget=swordslashparriedanim; parriedrecently=.4; victim->parriedrecently=0; - victim->targetanimation=swordslashparryanim; - victim->targetframe=1; + victim->animTarget=swordslashparryanim; + victim->frameTarget=1; victim->target=.5; victim->victim=this; - victim->targetrotation=targetrotation+180; + victim->targetyaw=targetyaw+180; - if(abs(Random()%20)==0||weapons.type[victim->weaponids[victim->weaponactive]]==knife){ + if(abs(Random()%20)==0||weapons[victim->weaponids[victim->weaponactive]].getType()==knife){ if(victim->weaponactive!=-1){ - if(weapons.type[victim->weaponids[0]]==staff||weapons.type[weaponids[0]]==staff){ - if(weapons.type[victim->weaponids[0]]==staff)weapons.damage[victim->weaponids[0]]+=.2+float(abs(Random()%100)-50)/250; - if(weapons.type[weaponids[0]]==staff)weapons.damage[weaponids[0]]+=.2+float(abs(Random()%100)-50)/250; - emit_sound_at(swordstaffsound, victim->coords); - } - else{ - emit_sound_at(metalhitsound, victim->coords); - } + if(weapons[victim->weaponids[0]].getType()==staff||weapons[weaponids[0]].getType()==staff) { + if(weapons[victim->weaponids[0]].getType()==staff) + weapons[victim->weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250; + if(weapons[weaponids[0]].getType()==staff) + weapons[weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250; + emit_sound_at(swordstaffsound, victim->coords); + } + else{ + emit_sound_at(metalhitsound, victim->coords); + } } XYZ aim; victim->Puff(righthand); victim->target=0; - victim->targetframe=0; - victim->targetanimation=staggerbackhighanim; - victim->targetrotation=targetrotation+180; + victim->frameTarget=0; + victim->animTarget=staggerbackhighanim; + victim->targetyaw=targetyaw+180; victim->target=0; - weapons.owner[victim->weaponids[0]]=-1; + weapons[victim->weaponids[0]].owner=-1; aim=DoRotation(facing,0,90,0)*21; aim.y+=7; - weapons.velocity[victim->weaponids[0]]=aim*-.2; - weapons.tipvelocity[victim->weaponids[0]]=aim; - weapons.missed[victim->weaponids[0]]=1; - weapons.hitsomething[victim->weaponids[0]]=0; - weapons.freetime[victim->weaponids[0]]=0; - weapons.firstfree[victim->weaponids[0]]=1; - weapons.physics[victim->weaponids[0]]=1; + weapons[victim->weaponids[0]].velocity=aim*-.2; + weapons[victim->weaponids[0]].tipvelocity=aim; + weapons[victim->weaponids[0]].missed=1; + weapons[victim->weaponids[0]].hitsomething=0; + weapons[victim->weaponids[0]].freetime=0; + weapons[victim->weaponids[0]].firstfree=1; + weapons[victim->weaponids[0]].physics=1; victim->num_weapons--; if(victim->num_weapons){ victim->weaponids[0]=victim->weaponids[num_weapons]; @@ -961,9 +965,9 @@ void Person::Reverse() if(abs(Random()%20)==0){ if(weaponactive!=-1){ - if(weapons.type[victim->weaponids[0]]==staff||weapons.type[weaponids[0]]==staff){ - if(weapons.type[victim->weaponids[0]]==staff)weapons.damage[victim->weaponids[0]]+=.2+float(abs(Random()%100)-50)/250; - if(weapons.type[weaponids[0]]==staff)weapons.damage[weaponids[0]]+=.2+float(abs(Random()%100)-50)/250; + if(weapons[victim->weaponids[0]].getType()==staff||weapons[weaponids[0]].getType()==staff){ + if(weapons[victim->weaponids[0]].getType()==staff)weapons[victim->weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250; + if(weapons[weaponids[0]].getType()==staff)weapons[weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250; emit_sound_at(swordstaffsound, coords); } @@ -975,20 +979,20 @@ void Person::Reverse() XYZ aim; Puff(righthand); target=0; - targetframe=0; - targetanimation=staggerbackhighanim; - targetrotation=targetrotation+180; + frameTarget=0; + animTarget=staggerbackhighanim; + targetyaw=targetyaw+180; target=0; - weapons.owner[weaponids[0]]=-1; + weapons[weaponids[0]].owner=-1; aim=DoRotation(facing,0,90,0)*21; aim.y+=7; - weapons.velocity[weaponids[0]]=aim*-.2; - weapons.tipvelocity[weaponids[0]]=aim; - weapons.hitsomething[weaponids[0]]=0; - weapons.missed[weaponids[0]]=1; - weapons.freetime[weaponids[0]]=0; - weapons.firstfree[weaponids[0]]=1; - weapons.physics[weaponids[0]]=1; + weapons[weaponids[0]].velocity=aim*-.2; + weapons[weaponids[0]].tipvelocity=aim; + weapons[weaponids[0]].hitsomething=0; + weapons[weaponids[0]].missed=1; + weapons[weaponids[0]].freetime=0; + weapons[weaponids[0]].firstfree=1; + weapons[weaponids[0]].physics=1; num_weapons--; if(num_weapons){ weaponids[0]=weaponids[num_weapons]; @@ -1003,43 +1007,43 @@ void Person::Reverse() } } if(hasvictim) - if(targetanimation==knifeslashstartanim||targetanimation==swordslashanim||targetanimation==staffhitanim||targetanimation==staffspinhitanim){ - if((targetanimation!=staffhitanim&&targetanimation!=staffspinhitanim)||findDistancefast(&coords,&victim->coords)>.2){ - victim->targetanimation=dodgebackanim; - victim->targetframe=0; + if(animTarget==knifeslashstartanim||animTarget==swordslashanim||animTarget==staffhitanim||animTarget==staffspinhitanim){ + if((animTarget!=staffhitanim&&animTarget!=staffspinhitanim)||distsq(&coords,&victim->coords)>.2){ + victim->animTarget=dodgebackanim; + victim->frameTarget=0; victim->target=0; XYZ rotatetarget; rotatetarget=coords-victim->coords; Normalise(&rotatetarget); - victim->targetrotation=-asin(0-rotatetarget.x); - victim->targetrotation*=360/6.28; - if(rotatetarget.z<0)victim->targetrotation=180-victim->targetrotation; + victim->targetyaw=-asin(0-rotatetarget.x); + victim->targetyaw*=360/6.28; + if(rotatetarget.z<0)victim->targetyaw=180-victim->targetyaw; victim->targettilt2=-asin(rotatetarget.y)*360/6.28;//*-70; victim->lastattack3=victim->lastattack2; victim->lastattack2=victim->lastattack; - victim->lastattack=victim->targetanimation; + victim->lastattack=victim->animTarget; } else { - victim->targetanimation=sweepanim; - victim->targetframe=0; + victim->animTarget=sweepanim; + victim->frameTarget=0; victim->target=0; XYZ rotatetarget; rotatetarget=coords-victim->coords; Normalise(&rotatetarget); - victim->targetrotation=-asin(0-rotatetarget.x); - victim->targetrotation*=360/6.28; - if(rotatetarget.z<0)victim->targetrotation=180-victim->targetrotation; + victim->targetyaw=-asin(0-rotatetarget.x); + victim->targetyaw*=360/6.28; + if(rotatetarget.z<0)victim->targetyaw=180-victim->targetyaw; victim->targettilt2=-asin(rotatetarget.y)*360/6.28;//*-70; victim->lastattack3=victim->lastattack2; victim->lastattack2=victim->lastattack; - victim->lastattack=victim->targetanimation; + victim->lastattack=victim->animTarget; } } @@ -1051,7 +1055,7 @@ void Person::Reverse() if(aitype!=playercontrolled&&Random()%5==0&&escapednum<2&&difficulty==1)feint=1; if(aitype!=playercontrolled&&Random()%10==0&&escapednum<2&&difficulty==0)feint=1; - if(victim->id==0&&animation[victim->targetanimation].attack==reversal)numreversals++; + if(victim->id==0&&animation[victim->animTarget].attack==reversal)numreversals++; } void Person::DoDamage(float howmuch){ @@ -1084,7 +1088,7 @@ void Person::DoDamage(float howmuch){ for(int i=0;i180)targetheadrotation-=360; - while(targetheadrotation<-180)targetheadrotation+=360; + while(targetheadyaw>180)targetheadyaw-=360; + while(targetheadyaw<-180)targetheadyaw+=360; - if(targetheadrotation>160)targetheadrotation2=targetheadrotation2*-1; - if(targetheadrotation<-160)targetheadrotation2=targetheadrotation2*-1; - if(targetheadrotation>160)targetheadrotation=targetheadrotation-180; - if(targetheadrotation<-160)targetheadrotation=targetheadrotation+180; + if(targetheadyaw>160)targetheadpitch=targetheadpitch*-1; + if(targetheadyaw<-160)targetheadpitch=targetheadpitch*-1; + if(targetheadyaw>160)targetheadyaw=targetheadyaw-180; + if(targetheadyaw<-160)targetheadyaw=targetheadyaw+180; - if(targetheadrotation2>120)targetheadrotation2=120; - if(targetheadrotation2<-120)targetheadrotation2=-120; - if(targetheadrotation>120)targetheadrotation=120; - if(targetheadrotation<-120)targetheadrotation=-120; + if(targetheadpitch>120)targetheadpitch=120; + if(targetheadpitch<-120)targetheadpitch=-120; + if(targetheadyaw>120)targetheadyaw=120; + if(targetheadyaw<-120)targetheadyaw=-120; - if(!isIdle())targetheadrotation2=0; + if(!isIdle())targetheadpitch=0; if(isIdle()){ - if(targetheadrotation>80)targetheadrotation=80; - if(targetheadrotation<-80)targetheadrotation=-80; - if(targetheadrotation2>50)targetheadrotation2=50; - if(targetheadrotation2<-50)targetheadrotation2=-50; + if(targetheadyaw>80)targetheadyaw=80; + if(targetheadyaw<-80)targetheadyaw=-80; + if(targetheadpitch>50)targetheadpitch=50; + if(targetheadpitch<-50)targetheadpitch=-50; } - if(abs(headrotation-targetheadrotation)targetheadrotation){ - headrotation-=multiplier*lookspeed; + if(abs(headyaw-targetheadyaw)targetheadyaw){ + headyaw-=multiplier*lookspeed; } - else if(headrotationtargetheadrotation2){ - headrotation2-=multiplier*lookspeed/2; + if(abs(headpitch-targetheadpitch)targetheadpitch){ + headpitch-=multiplier*lookspeed/2; } - else if(headrotation2label==head||skeleton.muscles[i].parent2->label==head)) { - skeleton.FindRotationMuscle(i,targetanimation); + skeleton.FindRotationMuscle(i,animTarget); } } } @@ -1236,7 +1240,7 @@ void Person::RagDoll(bool checkcollision){ facing=0; facing.z=1; - facing=DoRotation(facing,0,rotation,0); + facing=DoRotation(facing,0,yaw,0); skeleton.freetime=0; @@ -1251,7 +1255,7 @@ void Person::RagDoll(bool checkcollision){ if(!isnormal(velocity.x))velocity.x=0; if(!isnormal(velocity.y))velocity.y=0; if(!isnormal(velocity.z))velocity.z=0; - if(!isnormal(rotation))rotation=0; + if(!isnormal(yaw))yaw=0; if(!isnormal(coords.x))coords=0; if(!isnormal(tilt))tilt=0; if(!isnormal(tilt2))tilt2=0; @@ -1259,8 +1263,8 @@ void Person::RagDoll(bool checkcollision){ for(i=0;ianimation[targetanimation].speed[targetframe]){ - speed=animation[currentanimation].speed[currentframe]*2; + speed=animation[animTarget].speed[frameTarget]*2; + if(animation[animCurrent].speed[frameCurrent]>animation[animTarget].speed[frameTarget]){ + speed=animation[animCurrent].speed[frameCurrent]*2; } if(transspeed)speed=transspeed*2; speed*=speedmult; for(i=0;i0){ - weapons.owner[weaponids[0]]=-1; - weapons.hitsomething[weaponids[0]]=0; - weapons.velocity[weaponids[0]]=skeleton.joints[skeleton.jointlabels[righthand]].velocity*scale*-.3; - weapons.velocity[weaponids[0]].x+=.01; - weapons.tipvelocity[weaponids[0]]=skeleton.joints[skeleton.jointlabels[righthand]].velocity*scale; - weapons.missed[weaponids[0]]=1; - weapons.freetime[weaponids[0]]=0; - weapons.firstfree[weaponids[0]]=1; - weapons.physics[weaponids[0]]=1; + if(weaponactive!=-1&&animTarget!=rabbitkickanim&&num_weapons>0){ + weapons[weaponids[0]].owner=-1; + weapons[weaponids[0]].hitsomething=0; + weapons[weaponids[0]].velocity=skeleton.joints[skeleton.jointlabels[righthand]].velocity*scale*-.3; + weapons[weaponids[0]].velocity.x+=.01; + weapons[weaponids[0]].tipvelocity=skeleton.joints[skeleton.jointlabels[righthand]].velocity*scale; + weapons[weaponids[0]].missed=1; + weapons[weaponids[0]].freetime=0; + weapons[weaponids[0]].firstfree=1; + weapons[weaponids[0]].physics=1; num_weapons--; if(num_weapons){ weaponids[0]=weaponids[num_weapons]; @@ -1368,10 +1372,10 @@ void Person::RagDoll(bool checkcollision){ } } - targetanimation=bounceidleanim; - currentanimation=bounceidleanim; - targetframe=0; - currentframe=0; + animTarget=bounceidleanim; + animCurrent=bounceidleanim; + frameTarget=0; + frameCurrent=0; } } @@ -1384,48 +1388,48 @@ void Person::FootLand(int which, float opacity){ if(opacity>1) { footvel=0; - if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords; - if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords; + if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords; + if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords; //footpoint.y=coords.y; - if(findDistancefast(&footpoint,&viewer))Sprite::MakeSprite(cloudsprite, footpoint,footvel, 1,1,1, .5, .2*opacity); + if(distsq(&footpoint,&viewer))Sprite::MakeSprite(cloudsprite, footpoint,footvel, 1,1,1, .5, .2*opacity); } else if(environment==snowyenvironment&&onterrain&&terrain.getOpacity(coords.x,coords.z)<.2){ footvel=velocity/5; if(footvel.y<.8)footvel.y=.8; - if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords; - if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords; + if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords; + if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords; footpoint.y=terrain.getHeight(footpoint.x,footpoint.z); terrainlight=terrain.getLighting(footpoint.x,footpoint.z); - if(findDistancefast(&footpoint,&viewer)=1||detail==2)if(detail==2)if(findDistancefast(&footpoint,&viewer)=1||detail==2)if(detail==2)if(distsq(&footpoint,&viewer)=1||detail==2)if(detail==2)if(findDistancefast(&footpoint,&viewer)=1||detail==2)if(detail==2)if(distsq(&footpoint,&viewer)fast_sqrt(velocity.x*velocity.x*velocity.z*velocity.z))landhard=1; if(!crouchkeydown&&velocity.y>=-15)landhard=0; } - if((currentanimation==jumpupanim||targetanimation==jumpdownanim)/*&&velocity.y<40*/&&!isFlip()&&(!isLanding()&&!isLandhard())&&((crouchkeydown&&!crouchtogglekeydown))){ + if((animCurrent==jumpupanim||animTarget==jumpdownanim)/*&&velocity.y<40*/&&!isFlip()&&(!isLanding()&&!isLandhard())&&((crouchkeydown&&!crouchtogglekeydown))){ XYZ targfacing; targfacing=0; targfacing.z=1; - targfacing=DoRotation(targfacing,0,targetrotation,0); + targfacing=DoRotation(targfacing,0,targetyaw,0); - if(normaldotproduct(targfacing,velocity)>=-.3)targetanimation=flipanim; - else targetanimation=backflipanim; + if(normaldotproduct(targfacing,velocity)>=-.3)animTarget=flipanim; + else animTarget=backflipanim; crouchtogglekeydown=1; - targetframe=0; + frameTarget=0; target=0; if(id==0)numflipped++; } - if(animation[targetanimation].attack!=reversed)feint=0; + if(animation[animTarget].attack!=reversed)feint=0; if(!crouchkeydown||(isLanding()||isLandhard())||(wasLanding()||wasLandhard())){ crouchtogglekeydown=0; if(aitype==playercontrolled)feint=0; } else { - if(!crouchtogglekeydown&&animation[targetanimation].attack==reversed&&aitype==playercontrolled&&(escapednum<2||reversaltrain))feint=1; + if(!crouchtogglekeydown&&animation[animTarget].attack==reversed&&aitype==playercontrolled&&(escapednum<2||reversaltrain))feint=1; if(!isFlip())crouchtogglekeydown=1; } - if(animation[targetanimation].attack||currentanimation==getupfrombackanim||currentanimation==getupfromfrontanim){ + if(animation[animTarget].attack||animCurrent==getupfrombackanim||animCurrent==getupfromfrontanim){ if(detail)normalsupdatedelay=0; } if(target>=1){ - if(targetanimation==rollanim&&targetframe==3&&onfire){ + if(animTarget==rollanim&&frameTarget==3&&onfire){ onfire=0; emit_sound_at(fireendsound, coords); - OPENAL_SetPaused(channels[stream_firesound], true); + pause_sound(stream_firesound); deathbleeding=0; } - if(targetanimation==rabbittacklinganim&&targetframe==1){ - //if(victim->aitype==attacktypecutoff&&Random()%2==0&&victim->stunned<=0&&animation[victim->targetanimation].attack==neutral&&victim->id!=0)Reverse(); + if(animTarget==rabbittacklinganim&&frameTarget==1){ + //if(victim->aitype==attacktypecutoff&&Random()%2==0&&victim->stunned<=0&&animation[victim->animTarget].attack==neutral&&victim->id!=0)Reverse(); if(victim->aitype==attacktypecutoff&&victim->stunned<=0&&victim->surprised<=0&&victim->id!=0)Reverse(); - if(targetanimation==rabbittacklinganim&&targetframe==1&&!victim->isCrouch()&&victim->targetanimation!=backhandspringanim){ - if(normaldotproduct(victim->facing,facing)>0)victim->targetanimation=rabbittackledbackanim; - else victim->targetanimation=rabbittackledfrontanim; - victim->targetframe=2; + if(animTarget==rabbittacklinganim&&frameTarget==1&&!victim->isCrouch()&&victim->animTarget!=backhandspringanim){ + if(normaldotproduct(victim->facing,facing)>0)victim->animTarget=rabbittackledbackanim; + else victim->animTarget=rabbittackledfrontanim; + victim->frameTarget=2; victim->target=0; - victim->rotation=rotation; - victim->targetrotation=rotation; + victim->yaw=yaw; + victim->targetyaw=yaw; if(victim->aitype==gethelptype)victim->DoDamage(victim->damagetolerance-victim->damage); //victim->DoDamage(30); if(creature==wolftype){ @@ -1528,8 +1541,8 @@ void Person::DoAnimations(){ } } - if(!drawtogglekeydown&&drawkeydown&&(weaponactive==-1||num_weapons==1)&&(animation[targetanimation].label[targetframe]||(targetanimation!=currentanimation&¤tanimation==rollanim))&&num_weapons>0&&creature!=wolftype){ - if(weapons.type[weaponids[0]]==knife){ + if(!drawtogglekeydown&&drawkeydown&&(weaponactive==-1||num_weapons==1)&&(animation[animTarget].label[frameTarget]||(animTarget!=animCurrent&&animCurrent==rollanim))&&num_weapons>0&&creature!=wolftype){ + if(weapons[weaponids[0]].getType()==knife){ if(weaponactive==-1)weaponactive=0; else if(weaponactive==0)weaponactive=-1; @@ -1544,53 +1557,53 @@ void Person::DoAnimations(){ } //Footstep sounds if(tutoriallevel!=1||id==0) - if((animation[targetanimation].label[targetframe]&&(animation[targetanimation].label[targetframe]<5||animation[targetanimation].label[targetframe]==8))/*||(targetanimation==rollanim&&targetframe==animation[rollanim].numframes-1)*/){ + if((animation[animTarget].label[frameTarget]&&(animation[animTarget].label[frameTarget]<5||animation[animTarget].label[frameTarget]==8))/*||(animTarget==rollanim&&frameTarget==animation[rollanim].numframes-1)*/){ int whichsound; if(onterrain){ if(terrain.getOpacity(coords.x,coords.z)<.2){ - if(animation[targetanimation].label[targetframe]==1)whichsound=footstepsound; + if(animation[animTarget].label[frameTarget]==1)whichsound=footstepsound; else whichsound=footstepsound2; - if(animation[targetanimation].label[targetframe]==1)FootLand(0,1); - if(animation[targetanimation].label[targetframe]==2)FootLand(1,1); - if(animation[targetanimation].label[targetframe]==3&&isRun()){ + if(animation[animTarget].label[frameTarget]==1)FootLand(0,1); + if(animation[animTarget].label[frameTarget]==2)FootLand(1,1); + if(animation[animTarget].label[frameTarget]==3&&isRun()){ FootLand(1,1); FootLand(0,1); } } if(terrain.getOpacity(coords.x,coords.z)>=.2){ - if(animation[targetanimation].label[targetframe]==1)whichsound=footstepsound3; + if(animation[animTarget].label[frameTarget]==1)whichsound=footstepsound3; else whichsound=footstepsound4; } } if(!onterrain){ - if(animation[targetanimation].label[targetframe]==1)whichsound=footstepsound3; + if(animation[animTarget].label[frameTarget]==1)whichsound=footstepsound3; else whichsound=footstepsound4; } - if(animation[targetanimation].label[targetframe]==4&&(weaponactive==-1||(targetanimation!=knifeslashstartanim&&targetanimation!=knifethrowanim&&targetanimation!=crouchstabanim&&targetanimation!=swordgroundstabanim&&targetanimation!=knifefollowanim))){ - if(animation[targetanimation].attack!=neutral){ + if(animation[animTarget].label[frameTarget]==4&&(weaponactive==-1||(animTarget!=knifeslashstartanim&&animTarget!=knifethrowanim&&animTarget!=crouchstabanim&&animTarget!=swordgroundstabanim&&animTarget!=knifefollowanim))){ + if(animation[animTarget].attack!=neutral){ i=abs(Random()%3); if(i==0)whichsound=lowwhooshsound; if(i==1)whichsound=midwhooshsound; if(i==2)whichsound=highwhooshsound; } - if(animation[targetanimation].attack==neutral)whichsound=movewhooshsound; + if(animation[animTarget].attack==neutral)whichsound=movewhooshsound; } - else if(animation[targetanimation].label[targetframe]==4)whichsound=knifeswishsound; - if(animation[targetanimation].label[targetframe]==8&&tutoriallevel!=1)whichsound=landsound2; + else if(animation[animTarget].label[frameTarget]==4)whichsound=knifeswishsound; + if(animation[animTarget].label[frameTarget]==8&&tutoriallevel!=1)whichsound=landsound2; emit_sound_at(whichsound, coords, 256.); if(id==0) if(whichsound==footstepsound||whichsound==footstepsound2||whichsound==footstepsound3||whichsound==footstepsound4){ envsound[numenvsounds]=coords; - if(targetanimation==wolfrunninganim||targetanimation==rabbitrunninganim)envsoundvol[numenvsounds]=15; + if(animTarget==wolfrunninganim||animTarget==rabbitrunninganim)envsoundvol[numenvsounds]=15; else envsoundvol[numenvsounds]=6; envsoundlife[numenvsounds]=.4; numenvsounds++; } - if(animation[targetanimation].label[targetframe]==3){ + if(animation[animTarget].label[frameTarget]==3){ whichsound--; emit_sound_at(whichsound, coords, 128.); } @@ -1599,11 +1612,11 @@ void Person::DoAnimations(){ //Combat sounds if(tutoriallevel!=1||id==0) if(speechdelay<=0) - if(targetanimation!=crouchstabanim&&targetanimation!=swordgroundstabanim&&targetanimation!=staffgroundsmashanim) - if((animation[targetanimation].label[targetframe]&&(animation[targetanimation].label[targetframe]<5||animation[targetanimation].label[targetframe]==8))/*||(targetanimation==rollanim&&targetframe==animation[rollanim].numframes-1)*/){ + if(animTarget!=crouchstabanim&&animTarget!=swordgroundstabanim&&animTarget!=staffgroundsmashanim) + if((animation[animTarget].label[frameTarget]&&(animation[animTarget].label[frameTarget]<5||animation[animTarget].label[frameTarget]==8))/*||(animTarget==rollanim&&frameTarget==animation[rollanim].numframes-1)*/){ int whichsound=-1; - if(animation[targetanimation].label[targetframe]==4&&aitype!=playercontrolled){ - if(animation[targetanimation].attack!=neutral){ + if(animation[animTarget].label[frameTarget]==4&&aitype!=playercontrolled){ + if(animation[animTarget].attack!=neutral){ i=abs(Random()%4); if(creature==rabbittype){ if(i==0)whichsound=rabbitattacksound; @@ -1619,10 +1632,10 @@ void Person::DoAnimations(){ } speechdelay=.3; } - //if(animation[targetanimation].attack==neutral)whichsound=movewhooshsound; + //if(animation[animTarget].attack==neutral)whichsound=movewhooshsound; } - //else if(animation[targetanimation].label[targetframe]==4)whichsound=knifeswishsound; - //if(animation[targetanimation].label[targetframe]==8)whichsound=landsound2; + //else if(animation[animTarget].label[frameTarget]==4)whichsound=knifeswishsound; + //if(animation[animTarget].label[frameTarget]==8)whichsound=landsound2; if(whichsound!=-1){ emit_sound_at(whichsound, coords); @@ -1631,28 +1644,28 @@ void Person::DoAnimations(){ - if((!wasLanding()&&!wasLandhard())&¤tanimation!=getIdle()&&(isLanding()||isLandhard())){ + if((!wasLanding()&&!wasLandhard())&&animCurrent!=getIdle()&&(isLanding()||isLandhard())){ FootLand(0,1); FootLand(1,1); } transspeed=0; currentoffset=targetoffset; - targetframe=currentframe; - currentanimation=targetanimation; - targetframe++; - - if(targetanimation==removeknifeanim&&animation[targetanimation].label[currentframe]==5){ - for(i=0;i=1){ - if(weapons.type[i]!=staff){ + frameTarget=frameCurrent; + animCurrent=animTarget; + frameTarget++; + + if(animTarget==removeknifeanim&&animation[animTarget].label[frameCurrent]==5){ + for(i=0;i=1){ + if(weapons[i].getType()!=staff){ emit_sound_at(knifedrawsound, coords, 128.); } weaponactive=0; - weapons.owner[i]=id; + weapons[i].owner=id; if(num_weapons>0){ weaponids[num_weapons]=weaponids[0]; } @@ -1663,36 +1676,34 @@ void Person::DoAnimations(){ } } - static bool willwork; - if(targetanimation==crouchremoveknifeanim&&animation[targetanimation].label[currentframe]==5){ - for(i=0;i1)willwork=0; - if((/*weapons.velocity[i].x==0&&weapons.velocity[i].y==0&&weapons.velocity[i].z==0&&*/weapons.owner[i]==-1)||(hasvictim&&weapons.owner[i]==victim->id&&victim->skeleton.free)) - if(willwork&&findDistancefastflat(&coords,&weapons.position[i])<3&&weaponactive==-1){ - if(findDistancefast(&coords,&weapons.position[i])<1||hasvictim){ - bool fleshstuck=0; - if(weapons.owner[i]!=-1) + if(animTarget==crouchremoveknifeanim&&animation[animTarget].label[frameCurrent]==5){ + for(i=0;i1)willwork=0; + if((weapons[i].owner==-1)||(hasvictim&&weapons[i].owner==victim->id&&victim->skeleton.free)) + if(willwork&&distsqflat(&coords,&weapons[i].position)<3&&weaponactive==-1){ + if(distsq(&coords,&weapons[i].position)<1||hasvictim){ + bool fleshstuck=false; + if(weapons[i].owner!=-1) if(victim->weaponstuck!=-1){ if(victim->weaponids[victim->weaponstuck]==i){ - fleshstuck=1; - } - } - if(!fleshstuck){ - if(weapons.type[i]!=staff){ - emit_sound_at(knifedrawsound, coords, 128.); + fleshstuck=true; } } if(fleshstuck){ emit_sound_at(fleshstabremovesound, coords, 128.); + } else { + if(weapons[i].getType()!=staff){ + emit_sound_at(knifedrawsound, coords, 128.); + } } weaponactive=0; - if(weapons.owner[i]!=-1){ + if(weapons[i].owner!=-1){ - victim=&player[weapons.owner[i]]; + victim=&player[weapons[i].owner]; if(victim->num_weapons==1)victim->num_weapons=0; else victim->num_weapons=1; @@ -1712,12 +1723,12 @@ void Person::DoAnimations(){ Normalise(&relative); XYZ footvel,footpoint; footvel=0; - footpoint=weapons.position[i]; + footpoint=weapons[i].position; if(victim->weaponstuck!=-1){ if(victim->weaponids[victim->weaponstuck]==i){ if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3); - weapons.bloody[i]=2; - weapons.blooddrip[i]=5; + weapons[i].bloody=2; + weapons[i].blooddrip=5; victim->weaponstuck=-1; } } @@ -1732,7 +1743,7 @@ void Person::DoAnimations(){ victim->skeleton.joints[victim->skeleton.jointlabels[rightshoulder]].velocity+=relative*6; victim->skeleton.joints[victim->skeleton.jointlabels[leftshoulder]].velocity+=relative*6; } - weapons.owner[i]=id; + weapons[i].owner=id; if(num_weapons>0){ weaponids[num_weapons]=weaponids[0]; } @@ -1743,7 +1754,7 @@ void Person::DoAnimations(){ } } - if(currentanimation==drawleftanim&&animation[targetanimation].label[currentframe]==5){ + if(animCurrent==drawleftanim&&animation[animTarget].label[frameCurrent]==5){ if(weaponactive==-1)weaponactive=0; else if(weaponactive==0){ weaponactive=-1; @@ -1763,26 +1774,26 @@ void Person::DoAnimations(){ } - if((currentanimation==walljumprightkickanim&&targetanimation==walljumprightkickanim)||(currentanimation==walljumpleftkickanim&&targetanimation==walljumpleftkickanim)){ - XYZ rotatetarget=DoRotation(skeleton.forward,0,rotation,0); + if((animCurrent==walljumprightkickanim&&animTarget==walljumprightkickanim)||(animCurrent==walljumpleftkickanim&&animTarget==walljumpleftkickanim)){ + XYZ rotatetarget=DoRotation(skeleton.forward,0,yaw,0); Normalise(&rotatetarget); - targetrotation=-asin(0-rotatetarget.x); - targetrotation*=360/6.28; - if(rotatetarget.z<0)targetrotation=180-targetrotation; + targetyaw=-asin(0-rotatetarget.x); + targetyaw*=360/6.28; + if(rotatetarget.z<0)targetyaw=180-targetyaw; - if(targetanimation==walljumprightkickanim)targetrotation+=40; - if(targetanimation==walljumpleftkickanim)targetrotation-=40; + if(animTarget==walljumprightkickanim)targetyaw+=40; + if(animTarget==walljumpleftkickanim)targetyaw-=40; } bool dojumpattack; dojumpattack=0; - if((targetanimation==rabbitrunninganim||targetanimation==wolfrunninganim)&&targetframe==3&&(jumpkeydown||attackkeydown||id!=0))dojumpattack=1; + if((animTarget==rabbitrunninganim||animTarget==wolfrunninganim)&&frameTarget==3&&(jumpkeydown||attackkeydown||id!=0))dojumpattack=1; if(hasvictim) - if(findDistancefast(&victim->coords,&/*player[i].*/coords)<5&&victim->aitype==gethelptype&&(attackkeydown)&&!victim->skeleton.free&&victim->isRun()&&victim->runninghowlong>=1)dojumpattack=1; if(!hostile)dojumpattack=0; + if(distsq(&victim->coords,&/*player[i].*/coords)<5&&victim->aitype==gethelptype&&(attackkeydown)&&!victim->skeleton.free&&victim->isRun()&&victim->runninghowlong>=1)dojumpattack=1; if(!hostile)dojumpattack=0; if(dojumpattack){ - if((targetanimation==rabbitrunninganim||targetanimation==wolfrunninganim)&&id==0){ - targetanimation=rabbittackleanim; - targetframe=0; + if((animTarget==rabbitrunninganim||animTarget==wolfrunninganim)&&id==0){ + animTarget=rabbittackleanim; + frameTarget=0; emit_sound_at(jumpsound, coords); } @@ -1796,29 +1807,29 @@ void Person::DoAnimations(){ targetloc+=coords; for(i=0;icoords; - currentanimation=rabbittacklinganim; - targetanimation=rabbittacklinganim; - currentframe=0; - targetframe=1; + animCurrent=rabbittacklinganim; + animTarget=rabbittacklinganim; + frameCurrent=0; + frameTarget=1; XYZ rotatetarget; if(coords.z!=victim->coords.z||coords.x!=victim->coords.x){ rotatetarget=coords-victim->coords; Normalise(&rotatetarget); - targetrotation=-asin(0-rotatetarget.x); - targetrotation*=360/6.28; - if(rotatetarget.z<0)targetrotation=180-targetrotation; + targetyaw=-asin(0-rotatetarget.x); + targetyaw*=360/6.28; + if(rotatetarget.z<0)targetyaw=180-targetyaw; } - if(targetanimation!=rabbitrunninganim){ + if(animTarget!=rabbitrunninganim){ emit_sound_at(jumpsound, coords, 128.); } } @@ -1829,9 +1840,9 @@ void Person::DoAnimations(){ if(creature==wolftype)damagemult=2.5*power; if(hasvictim){damagemult/=victim->damagetolerance/200;} //if(onfire)damagemult=3; - if((animation[targetanimation].attack==normalattack||targetanimation==walljumprightkickanim||targetanimation==walljumpleftkickanim)&&(!feint)&&(victim->skeleton.free!=2||targetanimation==killanim||targetanimation==dropkickanim||targetanimation==crouchstabanim||targetanimation==swordgroundstabanim||targetanimation==staffgroundsmashanim)){ - if(targetanimation==spinkickanim&&animation[targetanimation].label[currentframe]==5){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&3&&animation[victim->targetanimation].height!=lowheight){ + if((animation[animTarget].attack==normalattack||animTarget==walljumprightkickanim||animTarget==walljumpleftkickanim)&&(!feint)&&(victim->skeleton.free!=2||animTarget==killanim||animTarget==dropkickanim||animTarget==crouchstabanim||animTarget==swordgroundstabanim||animTarget==staffgroundsmashanim)){ + if(animTarget==spinkickanim&&animation[animTarget].label[frameCurrent]==5){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&3&&animation[victim->animTarget].height!=lowheight){ escapednum=0; if(id==0)camerashake+=.4; if(Random()%2||creature==wolftype){ @@ -1865,8 +1876,8 @@ void Person::DoAnimations(){ } } - if(targetanimation==wolfslapanim&&animation[targetanimation].label[currentframe]==5){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&3&&animation[victim->targetanimation].height!=lowheight){ + if(animTarget==wolfslapanim&&animation[animTarget].label[frameCurrent]==5){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&3&&animation[victim->animTarget].height!=lowheight){ escapednum=0; if(id==0)camerashake+=.4; if(Random()%2||creature==wolftype){ @@ -1897,8 +1908,8 @@ void Person::DoAnimations(){ } } - if(targetanimation==walljumprightkickanim&&animation[targetanimation].label[currentframe]==5){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->targetanimation].height!=lowheight){ + if(animTarget==walljumprightkickanim&&animation[animTarget].label[frameCurrent]==5){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->animTarget].height!=lowheight){ escapednum=0; if(id==0)camerashake+=.4; victim->spurt=1; @@ -1932,8 +1943,8 @@ void Person::DoAnimations(){ } } - if(targetanimation==walljumpleftkickanim&&animation[targetanimation].label[currentframe]==5){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->targetanimation].height!=lowheight){ + if(animTarget==walljumpleftkickanim&&animation[animTarget].label[frameCurrent]==5){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->animTarget].height!=lowheight){ escapednum=0; if(id==0)camerashake+=.4; victim->spurt=1; @@ -1967,8 +1978,8 @@ void Person::DoAnimations(){ } } - if(targetanimation==blockhighleftstrikeanim&&animation[targetanimation].label[currentframe]==5){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->targetanimation].height!=lowheight){ + if(animTarget==blockhighleftstrikeanim&&animation[animTarget].label[frameCurrent]==5){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->animTarget].height!=lowheight){ escapednum=0; if(id==0)camerashake+=.4; if(Random()%2){ @@ -1991,8 +2002,8 @@ void Person::DoAnimations(){ } } - if(targetanimation==killanim&&animation[targetanimation].label[currentframe]==8){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&victim->dead){ + if(animTarget==killanim&&animation[animTarget].label[frameCurrent]==8){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&victim->dead){ escapednum=0; if(id==0)camerashake+=.2; emit_sound_at(whooshhitsound, victim->coords, 128.); @@ -2024,8 +2035,8 @@ void Person::DoAnimations(){ } } - if(targetanimation==killanim&&animation[targetanimation].label[currentframe]==5){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*9&&victim->dead){ + if(animTarget==killanim&&animation[animTarget].label[frameCurrent]==5){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*9&&victim->dead){ escapednum=0; if(id==0)camerashake+=.4; if(tutoriallevel!=1){ @@ -2048,8 +2059,8 @@ void Person::DoAnimations(){ } } - if(targetanimation==dropkickanim&&animation[targetanimation].label[currentframe]==7){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*9&&victim->skeleton.free){ + if(animTarget==dropkickanim&&animation[animTarget].label[frameCurrent]==7){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*9&&victim->skeleton.free){ escapednum=0; if(id==0)camerashake+=.4; if(tutoriallevel!=1){ @@ -2087,51 +2098,51 @@ void Person::DoAnimations(){ } } - if((targetanimation==crouchstabanim||targetanimation==swordgroundstabanim)&&animation[targetanimation].label[currentframe]==5){ + if((animTarget==crouchstabanim||animTarget==swordgroundstabanim)&&animation[animTarget].label[frameCurrent]==5){ //if(id==0)camerashake+=.4; if(hasvictim) if(!victim->skeleton.free)hasvictim=0; if(!hasvictim){ - terrain.MakeDecal(blooddecalfast,(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2),.08,.6,Random()%360); + terrain.MakeDecal(blooddecalfast,(weapons[weaponids[weaponactive]].tippoint*.8+weapons[weaponids[weaponactive]].position*.2),.08,.6,Random()%360); emit_sound_at(knifesheathesound, coords, 128.); } if(victim&&hasvictim){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3){ XYZ where,startpoint,endpoint,movepoint,colpoint; float rotationpoint; int whichtri; - if(weapons.type[weaponids[weaponactive]]==knife){ - where=(weapons.tippoint[weaponids[weaponactive]]*.6+weapons.position[weaponids[weaponactive]]*.4); + if(weapons[weaponids[weaponactive]].getType()==knife){ + where=(weapons[weaponids[weaponactive]].tippoint*.6+weapons[weaponids[weaponactive]].position*.4); where-=victim->coords; - if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0); + if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0); //where=scale; startpoint=where; startpoint.y+=100; endpoint=where; endpoint.y-=100; } - if(weapons.type[weaponids[weaponactive]]==sword){ - where=weapons.position[weaponids[weaponactive]]; + if(weapons[weaponids[weaponactive]].getType()==sword){ + where=weapons[weaponids[weaponactive]].position; where-=victim->coords; - if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0); + if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0); startpoint=where; - where=weapons.tippoint[weaponids[weaponactive]]; + where=weapons[weaponids[weaponactive]].tippoint; where-=victim->coords; - if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0); + if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0); endpoint=where; } - if(weapons.type[weaponids[weaponactive]]==staff){ - where=weapons.position[weaponids[weaponactive]]; + if(weapons[weaponids[weaponactive]].getType()==staff){ + where=weapons[weaponids[weaponactive]].position; where-=victim->coords; - if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0); + if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0); startpoint=where; - where=weapons.tippoint[weaponids[weaponactive]]; + where=weapons[weaponids[weaponactive]].tippoint; where-=victim->coords; - if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0); + if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0); endpoint=where; } movepoint=0; @@ -2144,7 +2155,7 @@ void Person::DoAnimations(){ if (!victim->dead) award_bonus(id, FinishedBonus); } - if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; + if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2; victim->skeleton.longdead=0; victim->skeleton.free=1; @@ -2158,9 +2169,9 @@ void Person::DoAnimations(){ emit_sound_at(fleshstabsound, coords, 128); } - if(whichtri!=-1||weapons.bloody[weaponids[weaponactive]]){ - weapons.blooddrip[weaponids[weaponactive]]+=5; - weapons.blooddripdelay[weaponids[weaponactive]]=0; + if(whichtri!=-1||weapons[weaponids[weaponactive]].bloody){ + weapons[weaponids[weaponactive]].blooddrip+=5; + weapons[weaponids[weaponactive]].blooddripdelay=0; } if(whichtri==-1){ hasvictim=0; @@ -2170,7 +2181,7 @@ void Person::DoAnimations(){ } } - if((targetanimation==crouchstabanim||targetanimation==swordgroundstabanim)&&animation[targetanimation].label[currentframe]==6){ + if((animTarget==crouchstabanim||animTarget==swordgroundstabanim)&&animation[animTarget].label[frameCurrent]==6){ if(!hasvictim){ emit_sound_at(knifedrawsound, coords, 128); } @@ -2181,20 +2192,20 @@ void Person::DoAnimations(){ emit_sound_at(fleshstabremovesound, coords, 128.); footvel=0; - footpoint=(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2); + footpoint=(weapons[weaponids[weaponactive]].tippoint*.8+weapons[weaponids[weaponactive]].position*.2); - if(weapons.type[weaponids[weaponactive]]==sword){ + if(weapons[weaponids[weaponactive]].getType()==sword){ XYZ where,startpoint,endpoint,movepoint; float rotationpoint; int whichtri; - where=weapons.position[weaponids[weaponactive]]; + where=weapons[weaponids[weaponactive]].position; where-=victim->coords; - if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0); + if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0); startpoint=where; - where=weapons.tippoint[weaponids[weaponactive]]; + where=weapons[weaponids[weaponactive]].tippoint; where-=victim->coords; - if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0); + if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0); endpoint=where; movepoint=0; @@ -2203,21 +2214,21 @@ void Person::DoAnimations(){ footpoint+=victim->coords; if(whichtri==-1){ - footpoint=(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2); + footpoint=(weapons[weaponids[weaponactive]].tippoint*.8+weapons[weaponids[weaponactive]].position*.2); } } - if(weapons.type[weaponids[weaponactive]]==staff){ + if(weapons[weaponids[weaponactive]].getType()==staff){ XYZ where,startpoint,endpoint,movepoint; float rotationpoint; int whichtri; - where=weapons.position[weaponids[weaponactive]]; + where=weapons[weaponids[weaponactive]].position; where-=victim->coords; - if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0); + if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0); startpoint=where; - where=weapons.tippoint[weaponids[weaponactive]]; + where=weapons[weaponids[weaponactive]].tippoint; where-=victim->coords; - if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0); + if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0); endpoint=where; movepoint=0; @@ -2226,12 +2237,12 @@ void Person::DoAnimations(){ footpoint+=victim->coords; if(whichtri==-1){ - footpoint=(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2); + footpoint=(weapons[weaponids[weaponactive]].tippoint*.8+weapons[weaponids[weaponactive]].position*.2); } } hasvictim=victim->DoBloodBigWhere(2,220,footpoint); if(hasvictim){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3){ victim->skeleton.longdead=0; victim->skeleton.free=1; victim->skeleton.broken=0; @@ -2259,13 +2270,13 @@ void Person::DoAnimations(){ } } if(!hasvictim&&onterrain){ - weapons.bloody[weaponids[weaponactive]]=0; - weapons.blooddrip[weaponids[weaponactive]]=0; + weapons[weaponids[weaponactive]].bloody=0; + weapons[weaponids[weaponactive]].blooddrip=0; } } - if(targetanimation==upunchanim&&animation[targetanimation].label[currentframe]==5){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3){ + if(animTarget==upunchanim&&animation[animTarget].label[frameCurrent]==5){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3){ escapednum=0; if(id==0)camerashake+=.4; if(Random()%2){ @@ -2286,9 +2297,9 @@ void Person::DoAnimations(){ } victim->skeleton.joints[victim->skeleton.jointlabels[head]].velocity+=relative*damagemult*150; - victim->targetframe=0; - victim->targetanimation=staggerbackhardanim; - victim->targetrotation=targetrotation+180; + victim->frameTarget=0; + victim->animTarget=staggerbackhardanim; + victim->targetyaw=targetyaw+180; victim->target=0; victim->stunned=1; @@ -2301,16 +2312,16 @@ void Person::DoAnimations(){ } - if(targetanimation==winduppunchanim&&animation[targetanimation].label[currentframe]==5){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*2){ + if(animTarget==winduppunchanim&&animation[animTarget].label[frameCurrent]==5){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*2){ escapednum=0; if(id==0)camerashake+=.4; - if(victim->damage<=victim->damagetolerance-60&&normaldotproduct(victim->facing,victim->coords-coords)<(scale*5)*(scale*5)*0&&animation[victim->targetanimation].height!=lowheight){ + if(victim->damage<=victim->damagetolerance-60&&normaldotproduct(victim->facing,victim->coords-coords)<(scale*5)*(scale*5)*0&&animation[victim->animTarget].height!=lowheight){ if(tutoriallevel!=1){ emit_sound_at(thudsound, victim->coords); } } - else if(victim->damage<=victim->damagetolerance-60&&normaldotproduct(victim->facing,victim->coords-coords)<(scale*5)*(scale*5)*0&&animation[victim->targetanimation].height==lowheight){ + else if(victim->damage<=victim->damagetolerance-60&&normaldotproduct(victim->facing,victim->coords-coords)<(scale*5)*(scale*5)*0&&animation[victim->animTarget].height==lowheight){ if(tutoriallevel!=1){ emit_sound_at(whooshhitsound, victim->coords); } @@ -2321,7 +2332,7 @@ void Person::DoAnimations(){ } } - if(victim->damage>victim->damagetolerance-60||normaldotproduct(victim->facing,victim->coords-coords)>0||animation[victim->targetanimation].height==lowheight) + if(victim->damage>victim->damagetolerance-60||normaldotproduct(victim->facing,victim->coords-coords)>0||animation[victim->animTarget].height==lowheight) victim->RagDoll(0); XYZ relative; relative=victim->coords-coords; @@ -2334,9 +2345,9 @@ void Person::DoAnimations(){ } victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*400; - victim->targetframe=0; - victim->targetanimation=staggerbackhardanim; - victim->targetrotation=targetrotation+180; + victim->frameTarget=0; + victim->animTarget=staggerbackhardanim; + victim->targetyaw=targetyaw+180; victim->target=0; victim->stunned=1; @@ -2347,8 +2358,8 @@ void Person::DoAnimations(){ } } - if(targetanimation==blockhighleftanim&&animation[targetanimation].label[currentframe]==5){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*4){ + if(animTarget==blockhighleftanim&&animation[animTarget].label[frameCurrent]==5){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*4){ if(victim->id==0)camerashake+=.4; emit_sound_at(landsound2, victim->coords); @@ -2356,14 +2367,14 @@ void Person::DoAnimations(){ } } - if(targetanimation==swordslashparryanim&&animation[targetanimation].label[currentframe]==5){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*4){ + if(animTarget==swordslashparryanim&&animation[animTarget].label[frameCurrent]==5){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*4){ if(victim->id==0)camerashake+=.4; if(weaponactive!=-1){ - if(weapons.type[victim->weaponids[0]]==staff||weapons.type[weaponids[0]]==staff){ - if(weapons.type[victim->weaponids[0]]==staff)weapons.damage[victim->weaponids[0]]+=.2+float(abs(Random()%100)-50)/250; - if(weapons.type[weaponids[0]]==staff)weapons.damage[weaponids[0]]+=.2+float(abs(Random()%100)-50)/250; + if(weapons[victim->weaponids[0]].getType()==staff||weapons[weaponids[0]].getType()==staff){ + if(weapons[victim->weaponids[0]].getType()==staff)weapons[victim->weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250; + if(weapons[weaponids[0]].getType()==staff)weapons[weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250; emit_sound_at(swordstaffsound, victim->coords); } @@ -2376,23 +2387,23 @@ void Person::DoAnimations(){ } } - if(targetanimation==knifethrowanim&&animation[targetanimation].label[currentframe]==5){ + if(animTarget==knifethrowanim&&animation[animTarget].label[frameCurrent]==5){ if(weaponactive!=-1){ escapednum=0; XYZ aim; - weapons.owner[weaponids[0]]=-1; - aim=victim->coords+DoRotation(victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position,0,victim->rotation,0)*victim->scale+victim->velocity*findDistance(&victim->coords,&coords)/50-(coords+DoRotation(skeleton.joints[skeleton.jointlabels[righthand]].position,0,rotation,0)*scale); + weapons[weaponids[0]].owner=-1; + aim=victim->coords+DoRotation(victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position,0,victim->yaw,0)*victim->scale+victim->velocity*findDistance(&victim->coords,&coords)/50-(coords+DoRotation(skeleton.joints[skeleton.jointlabels[righthand]].position,0,yaw,0)*scale); Normalise(&aim); - /*if(victim->targetanimation==jumpupanim||victim->targetanimation==jumpdownanim){ + /*if(victim->animTarget==jumpupanim||victim->animTarget==jumpdownanim){ aim=DoRotation(aim,(float)abs(Random()%15)-7,(float)abs(Random()%15)-7,0); }*/ - weapons.velocity[weaponids[0]]=aim*50; - weapons.tipvelocity[weaponids[0]]=aim*50; - weapons.missed[weaponids[0]]=0; - weapons.hitsomething[weaponids[0]]=0; - weapons.freetime[weaponids[0]]=0; - weapons.firstfree[weaponids[0]]=1; - weapons.physics[weaponids[0]]=0; + weapons[weaponids[0]].velocity=aim*50; + weapons[weaponids[0]].tipvelocity=aim*50; + weapons[weaponids[0]].missed=0; + weapons[weaponids[0]].hitsomething=0; + weapons[weaponids[0]].freetime=0; + weapons[weaponids[0]].firstfree=1; + weapons[weaponids[0]].physics=0; num_weapons--; if(num_weapons){ weaponids[0]=weaponids[num_weapons]; @@ -2401,9 +2412,9 @@ void Person::DoAnimations(){ } } - if(targetanimation==knifeslashstartanim&&animation[targetanimation].label[currentframe]==5){ + if(animTarget==knifeslashstartanim&&animation[animTarget].label[frameCurrent]==5){ if(hasvictim) - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*4.5&&/*animation[victim->targetanimation].height!=lowheight&&*/victim->targetanimation!=dodgebackanim&&victim->targetanimation!=rollanim){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*4.5&&/*animation[victim->animTarget].height!=lowheight&&*/victim->animTarget!=dodgebackanim&&victim->animTarget!=rollanim){ escapednum=0; if(tutoriallevel!=1)victim->DoBloodBig(1.5/victim->armorhigh,225); @@ -2412,11 +2423,11 @@ void Person::DoAnimations(){ emit_sound_at(knifeslicesound, victim->coords); } //victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200; - if(animation[victim->targetanimation].attack&&(victim->aitype!=playercontrolled||victim->targetanimation==knifeslashstartanim)&&(victim->creature==rabbittype||victim->deathbleeding<=0)){ + if(animation[victim->animTarget].attack&&(victim->aitype!=playercontrolled||victim->animTarget==knifeslashstartanim)&&(victim->creature==rabbittype||victim->deathbleeding<=0)){ if(victim->id != 0 || difficulty==2){ - victim->targetframe=0; - victim->targetanimation=staggerbackhardanim; - victim->targetrotation=targetrotation+180; + victim->frameTarget=0; + victim->animTarget=staggerbackhardanim; + victim->targetyaw=targetyaw+180; victim->target=0; } } @@ -2424,8 +2435,8 @@ void Person::DoAnimations(){ victim->highreversaldelay=0; if(aitype!=playercontrolled)weaponmissdelay=.6; - if(tutoriallevel!=1)if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1; - if(tutoriallevel!=1)weapons.blooddrip[weaponids[weaponactive]]+=3; + if(tutoriallevel!=1)if(bloodtoggle&&!weapons[weaponids[weaponactive]].bloody)weapons[weaponids[weaponactive]].bloody=1; + if(tutoriallevel!=1)weapons[weaponids[weaponactive]].blooddrip+=3; XYZ footvel,footpoint; footvel=0; @@ -2433,7 +2444,7 @@ void Person::DoAnimations(){ footpoint=(victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2*victim->scale+victim->coords; } if(!skeleton.free){ - footpoint=DoRotation((victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2,0,victim->rotation,0)*victim->scale+victim->coords; + footpoint=DoRotation((victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2,0,victim->yaw,0)*victim->scale+victim->coords; } if(tutoriallevel!=1){ if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .6, .3); @@ -2450,8 +2461,8 @@ void Person::DoAnimations(){ victim->DoDamage(damagemult*0); } } - 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(animTarget==swordslashanim&&animation[animTarget].label[frameCurrent]==5&&victim->animTarget!=rollanim){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->animTarget!=dodgebackanim){ if(victim->weaponactive==-1||normaldotproduct(victim->facing,victim->coords-coords)>0||(Random()%2==0)){ award_bonus(id, Slashbonus); escapednum=0; @@ -2463,20 +2474,20 @@ void Person::DoAnimations(){ } //victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200; if(tutoriallevel!=1){ - victim->targetframe=0; - victim->targetanimation=staggerbackhardanim; - victim->targetrotation=targetrotation+180; + victim->frameTarget=0; + victim->animTarget=staggerbackhardanim; + victim->targetyaw=targetyaw+180; victim->target=0; } if(tutoriallevel!=1){ - if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1; - weapons.blooddrip[weaponids[weaponactive]]+=3; + if(bloodtoggle&&!weapons[weaponids[weaponactive]].bloody)weapons[weaponids[weaponactive]].bloody=1; + weapons[weaponids[weaponactive]].blooddrip+=3; float bloodlossamount; bloodlossamount=200+abs((float)(Random()%40))-20; victim->bloodloss+=bloodlossamount/victim->armorhigh; - //victim->bloodloss+=100*(6.5-findDistancefast(&coords,&victim->coords)); + //victim->bloodloss+=100*(6.5-distsq(&coords,&victim->coords)); victim->DoDamage(damagemult*0); XYZ footvel,footpoint; @@ -2485,7 +2496,7 @@ void Person::DoAnimations(){ footpoint=(victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2*victim->scale+victim->coords; } if(!skeleton.free){ - footpoint=DoRotation((victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2,0,victim->rotation,0)*victim->scale+victim->coords; + footpoint=DoRotation((victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2,0,victim->yaw,0)*victim->scale+victim->coords; } if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); footvel=DoRotation(facing,0,90,0)*.8; @@ -2498,9 +2509,9 @@ void Person::DoAnimations(){ } else { if(victim->weaponactive!=-1){ - if(weapons.type[victim->weaponids[0]]==staff||weapons.type[weaponids[0]]==staff){ - if(weapons.type[victim->weaponids[0]]==staff)weapons.damage[victim->weaponids[0]]+=.2+float(abs(Random()%100)-50)/250; - if(weapons.type[weaponids[0]]==staff)weapons.damage[weaponids[0]]+=.2+float(abs(Random()%100)-50)/250; + if(weapons[victim->weaponids[0]].getType()==staff||weapons[weaponids[0]].getType()==staff){ + if(weapons[victim->weaponids[0]].getType()==staff)weapons[victim->weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250; + if(weapons[weaponids[0]].getType()==staff)weapons[weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250; emit_sound_at(swordstaffsound, victim->coords); } @@ -2513,20 +2524,20 @@ void Person::DoAnimations(){ XYZ aim; victim->Puff(righthand); victim->target=0; - victim->targetframe=0; - victim->targetanimation=staggerbackhighanim; - victim->targetrotation=targetrotation+180; + victim->frameTarget=0; + victim->animTarget=staggerbackhighanim; + victim->targetyaw=targetyaw+180; victim->target=0; - weapons.owner[victim->weaponids[0]]=-1; + weapons[victim->weaponids[0]].owner=-1; aim=DoRotation(facing,0,90,0)*21; aim.y+=7; - weapons.velocity[victim->weaponids[0]]=aim*-.2; - weapons.tipvelocity[victim->weaponids[0]]=aim; - weapons.missed[victim->weaponids[0]]=1; - weapons.hitsomething[weaponids[0]]=0; - weapons.freetime[victim->weaponids[0]]=0; - weapons.firstfree[victim->weaponids[0]]=1; - weapons.physics[victim->weaponids[0]]=1; + weapons[victim->weaponids[0]].velocity=aim*-.2; + weapons[victim->weaponids[0]].tipvelocity=aim; + weapons[victim->weaponids[0]].missed=1; + weapons[weaponids[0]].hitsomething=0; + weapons[victim->weaponids[0]].freetime=0; + weapons[victim->weaponids[0]].firstfree=1; + weapons[victim->weaponids[0]].physics=1; victim->num_weapons--; if(victim->num_weapons){ victim->weaponids[0]=victim->weaponids[num_weapons]; @@ -2541,10 +2552,10 @@ void Person::DoAnimations(){ } } - if(targetanimation==staffhitanim&&animation[targetanimation].label[currentframe]==5&&victim->targetanimation!=rollanim){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->targetanimation!=dodgebackanim&&victim->targetanimation!=sweepanim){ + if(animTarget==staffhitanim&&animation[animTarget].label[frameCurrent]==5&&victim->animTarget!=rollanim){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->animTarget!=dodgebackanim&&victim->animTarget!=sweepanim){ if(tutoriallevel!=1){ - weapons.damage[weaponids[0]]+=.4+float(abs(Random()%100)-50)/250; + weapons[weaponids[0]].damage+=.4+float(abs(Random()%100)-50)/250; escapednum=0; if(id==0)camerashake+=.4; if(Random()%2||creature==wolftype){ @@ -2575,10 +2586,10 @@ void Person::DoAnimations(){ } } - if(targetanimation==staffspinhitanim&&animation[targetanimation].label[currentframe]==5&&victim->targetanimation!=rollanim){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->targetanimation!=dodgebackanim&&victim->targetanimation!=sweepanim){ + if(animTarget==staffspinhitanim&&animation[animTarget].label[frameCurrent]==5&&victim->animTarget!=rollanim){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->animTarget!=dodgebackanim&&victim->animTarget!=sweepanim){ if(tutoriallevel!=1){ - weapons.damage[weaponids[0]]+=.6+float(abs(Random()%100)-50)/250; + weapons[weaponids[0]].damage+=.6+float(abs(Random()%100)-50)/250; escapednum=0; if(id==0)camerashake+=.4; if(Random()%2||creature==wolftype){ @@ -2606,11 +2617,11 @@ void Person::DoAnimations(){ } } - if(targetanimation==staffgroundsmashanim&&animation[targetanimation].label[currentframe]==5){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5){ + if(animTarget==staffgroundsmashanim&&animation[animTarget].label[frameCurrent]==5){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5){ escapednum=0; if(tutoriallevel!=1){ - if(!victim->dead)weapons.damage[weaponids[0]]+=.4+float(abs(Random()%100)-50)/500; + if(!victim->dead)weapons[weaponids[0]].damage+=.4+float(abs(Random()%100)-50)/500; if(id==0)camerashake+=.4; if(Random()%2||creature==wolftype){ victim->spurt=1; @@ -2660,8 +2671,8 @@ void Person::DoAnimations(){ } } - if(targetanimation==lowkickanim&&animation[targetanimation].label[currentframe]==5){ - if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->targetanimation].height!=highheight){ + if(animTarget==lowkickanim&&animation[animTarget].label[frameCurrent]==5){ + if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->animTarget].height!=highheight){ escapednum=0; if(id==0)camerashake+=.4; XYZ relative; @@ -2671,7 +2682,7 @@ void Person::DoAnimations(){ SolidHitBonus(id); - if(animation[victim->targetanimation].height==lowheight){ + if(animation[victim->animTarget].height==lowheight){ if(Random()%2){ victim->spurt=1; DoBlood(.2,250); @@ -2699,9 +2710,9 @@ void Person::DoAnimations(){ victim->skeleton.joints[i].velocity+=relative*damagemult*10; } victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200; - victim->targetframe=0; - victim->targetanimation=staggerbackhighanim; - victim->targetrotation=targetrotation+180; + victim->frameTarget=0; + victim->animTarget=staggerbackhighanim; + victim->targetyaw=targetyaw+180; victim->target=0; if(tutoriallevel!=1){ emit_sound_at(landsound2, victim->coords, 128.); @@ -2718,8 +2729,8 @@ void Person::DoAnimations(){ } } - if(targetanimation==sweepanim&&animation[targetanimation].label[currentframe]==5){ - if(victim->targetanimation!=jumpupanim&&findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&victim!=this){ + if(animTarget==sweepanim&&animation[animTarget].label[frameCurrent]==5){ + if(victim->animTarget!=jumpupanim&&distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&victim!=this){ escapednum=0; if(id==0)camerashake+=.2; if(tutoriallevel!=1){ @@ -2730,7 +2741,7 @@ void Person::DoAnimations(){ relative.y=0; Normalise(&relative); - if(animation[victim->targetanimation].height==middleheight||animation[victim->currentanimation].height==middleheight||victim->damage>=victim->damagetolerance-40){ + if(animation[victim->animTarget].height==middleheight||animation[victim->animCurrent].height==middleheight||victim->damage>=victim->damagetolerance-40){ victim->RagDoll(0); for(i=0;iskeleton.num_joints;i++){ @@ -2757,9 +2768,9 @@ void Person::DoAnimations(){ victim->skeleton.joints[i].velocity+=relative*damagemult*80; } victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200; - victim->targetframe=0; - victim->targetanimation=staggerbackhighanim; - victim->targetrotation=targetrotation+180; + victim->frameTarget=0; + victim->animTarget=staggerbackhighanim; + victim->targetyaw=targetyaw+180; victim->target=0; if(tutoriallevel!=1){ emit_sound_at(landsound2, victim->coords, 128.); @@ -2773,8 +2784,8 @@ void Person::DoAnimations(){ } } } - if(animation[targetanimation].attack==reversal&&(!victim->feint||(victim->lastattack==victim->lastattack2&&victim->lastattack2==victim->lastattack3&&Random()%2)||targetanimation==knifefollowanim)){ - if(targetanimation==spinkickreversalanim&&animation[targetanimation].label[currentframe]==7){ + if(animation[animTarget].attack==reversal&&(!victim->feint||(victim->lastattack==victim->lastattack2&&victim->lastattack2==victim->lastattack3&&Random()%2)||animTarget==knifefollowanim)){ + if(animTarget==spinkickreversalanim&&animation[animTarget].label[frameCurrent]==7){ escapednum=0; if(id==0)camerashake+=.4; if(Random()%2){ @@ -2806,10 +2817,10 @@ void Person::DoAnimations(){ award_bonus(id, Reversal); } - if((targetanimation==swordslashreversalanim||targetanimation==knifeslashreversalanim||targetanimation==staffhitreversalanim||targetanimation==staffspinhitreversalanim)&&animation[targetanimation].label[currentframe]==5){ + if((animTarget==swordslashreversalanim||animTarget==knifeslashreversalanim||animTarget==staffhitreversalanim||animTarget==staffspinhitreversalanim)&&animation[animTarget].label[frameCurrent]==5){ if(victim->weaponactive!=-1&&victim->num_weapons>0){ - if(weapons.owner[victim->weaponids[victim->weaponactive]]==victim->id){ - weapons.owner[victim->weaponids[victim->weaponactive]]=id; + if(weapons[victim->weaponids[victim->weaponactive]].owner==victim->id){ + weapons[victim->weaponids[victim->weaponactive]].owner=id; weaponactive=0; if(num_weapons>0){ weaponids[num_weapons]=weaponids[victim->weaponactive]; @@ -2826,7 +2837,7 @@ void Person::DoAnimations(){ } } - if(targetanimation==staffhitreversalanim&&animation[targetanimation].label[currentframe]==5){ + if(animTarget==staffhitreversalanim&&animation[animTarget].label[frameCurrent]==5){ escapednum=0; if(id==0)camerashake+=.4; if(Random()%2){ @@ -2849,7 +2860,7 @@ void Person::DoAnimations(){ victim->DoDamage(damagemult*70/victim->protectionhigh); } - if(targetanimation==staffspinhitreversalanim&&animation[targetanimation].label[currentframe]==7){ + if(animTarget==staffspinhitreversalanim&&animation[animTarget].label[frameCurrent]==7){ escapednum=0; if(id==0)camerashake+=.4; if(Random()%2){ @@ -2879,7 +2890,7 @@ void Person::DoAnimations(){ victim->DoDamage(damagemult*70/victim->protectionhigh); } - if(targetanimation==upunchreversalanim&&animation[targetanimation].label[currentframe]==7){ + if(animTarget==upunchreversalanim&&animation[animTarget].label[frameCurrent]==7){ escapednum=0; victim->RagDoll(1); XYZ relative; @@ -2908,13 +2919,13 @@ void Person::DoAnimations(){ bool doslice; doslice=0; if(weaponactive!=-1||creature==wolftype)doslice=1; - if(creature==rabbittype&&weaponactive!=-1)if(weapons.type[weaponids[0]]==staff)doslice=0; + if(creature==rabbittype&&weaponactive!=-1)if(weapons[weaponids[0]].getType()==staff)doslice=0; if(doslice){ if(weaponactive!=-1){ victim->DoBloodBig(2/victim->armorhigh,225); emit_sound_at(knifeslicesound, victim->coords); - if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1; - weapons.blooddrip[weaponids[weaponactive]]+=3; + if(bloodtoggle&&!weapons[weaponids[weaponactive]].bloody)weapons[weaponids[weaponactive]].bloody=1; + weapons[weaponids[weaponactive]].blooddrip+=3; } if(weaponactive==-1&&creature==wolftype){; emit_sound_at(clawslicesound, victim->coords, 128.); @@ -2926,7 +2937,7 @@ void Person::DoAnimations(){ - if(targetanimation==swordslashreversalanim&&animation[targetanimation].label[currentframe]==7){ + if(animTarget==swordslashreversalanim&&animation[animTarget].label[frameCurrent]==7){ escapednum=0; victim->RagDoll(1); XYZ relative; @@ -2950,7 +2961,7 @@ void Person::DoAnimations(){ award_bonus(id, swordreversebonus); } - if(hasvictim&&targetanimation==knifeslashreversalanim&&animation[targetanimation].label[currentframe]==7){ + if(hasvictim&&animTarget==knifeslashreversalanim&&animation[animTarget].label[frameCurrent]==7){ escapednum=0; if(id==0)camerashake+=.4; if(Random()%2){ @@ -2977,7 +2988,7 @@ void Person::DoAnimations(){ award_bonus(id, Reversal); } - if(hasvictim&&targetanimation==sneakattackanim&&animation[targetanimation].label[currentframe]==7){ + if(hasvictim&&animTarget==sneakattackanim&&animation[animTarget].label[frameCurrent]==7){ escapednum=0; victim->RagDoll(0); victim->skeleton.spinny=0; @@ -2995,13 +3006,13 @@ void Person::DoAnimations(){ bool doslice; doslice=0; if(weaponactive!=-1||creature==wolftype)doslice=1; - if(creature==rabbittype&&weaponactive!=-1)if(weapons.type[weaponids[0]]==staff)doslice=0; + if(creature==rabbittype&&weaponactive!=-1)if(weapons[weaponids[0]].getType()==staff)doslice=0; if(doslice){ if(weaponactive!=-1){ victim->DoBloodBig(200,225); emit_sound_at(knifeslicesound, victim->coords); - if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; - weapons.blooddrip[weaponids[weaponactive]]+=5; + if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2; + weapons[weaponids[weaponactive]].blooddrip+=5; } if(creature==wolftype&&weaponactive==-1){ @@ -3013,24 +3024,24 @@ void Person::DoAnimations(){ award_bonus(id, spinecrusher); } - if(hasvictim&&(targetanimation==knifefollowanim||targetanimation==knifesneakattackanim)&&animation[targetanimation].label[currentframe]==5){ + if(hasvictim&&(animTarget==knifefollowanim||animTarget==knifesneakattackanim)&&animation[animTarget].label[frameCurrent]==5){ if(weaponactive!=-1&&victim->bloodlossdamagetolerance){ escapednum=0; - if(targetanimation==knifefollowanim)victim->DoBloodBig(200,210); - if(targetanimation==knifesneakattackanim){ + if(animTarget==knifefollowanim)victim->DoBloodBig(200,210); + if(animTarget==knifesneakattackanim){ /*victim->DoBloodBig(200,195); XYZ bloodvel; bloodvel=0; bloodvel.z=20; bloodvel.y=5; - bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale; - Sprite::MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1); + bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale; + Sprite::MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, 1); */ XYZ footvel,footpoint; footvel=0; - footpoint=weapons.tippoint[weaponids[0]]; + footpoint=weapons[weaponids[0]].tippoint; if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); - footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]]); + footvel=(weapons[weaponids[0]].tippoint-weapons[weaponids[0]].position); Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1); @@ -3038,13 +3049,13 @@ void Person::DoAnimations(){ victim->DoBloodBig(200,195); award_bonus(id, tracheotomy); } - if(targetanimation==knifefollowanim){ + if(animTarget==knifefollowanim){ award_bonus(id, Stabbonus); XYZ footvel,footpoint; footvel=0; - footpoint=weapons.tippoint[weaponids[0]]; + footpoint=weapons[weaponids[0]].tippoint; if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); - footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1; + footvel=(weapons[weaponids[0]].tippoint-weapons[weaponids[0]].position)*-1; Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .2, 1); @@ -3054,33 +3065,33 @@ void Person::DoAnimations(){ victim->bloodloss+=10000; victim->velocity=0; emit_sound_at(fleshstabsound, victim->coords); - if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; - weapons.blooddrip[weaponids[weaponactive]]+=5; + if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2; + weapons[weaponids[weaponactive]].blooddrip+=5; } } - if(hasvictim&&(targetanimation==knifefollowanim||targetanimation==knifesneakattackanim)&&animation[targetanimation].label[currentframe]==6){ + if(hasvictim&&(animTarget==knifefollowanim||animTarget==knifesneakattackanim)&&animation[animTarget].label[frameCurrent]==6){ escapednum=0; victim->velocity=0; for(i=0;iskeleton.num_joints;i++){ victim->skeleton.joints[i].velocity=0; } - if(targetanimation==knifefollowanim){ + if(animTarget==knifefollowanim){ victim->RagDoll(0); for(i=0;iskeleton.num_joints;i++){ victim->skeleton.joints[i].velocity=0; } } - if(weaponactive!=-1&&animation[victim->targetanimation].attack!=reversal){ + if(weaponactive!=-1&&animation[victim->animTarget].attack!=reversal){ emit_sound_at(fleshstabremovesound, victim->coords); - if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; - weapons.blooddrip[weaponids[weaponactive]]+=5; + if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2; + weapons[weaponids[weaponactive]].blooddrip+=5; XYZ footvel,footpoint; footvel=0; - footpoint=weapons.tippoint[weaponids[0]]; + footpoint=weapons[weaponids[0]].tippoint; if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); - footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1; + footvel=(weapons[weaponids[0]].tippoint-weapons[weaponids[0]].position)*-1; Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1); @@ -3088,7 +3099,7 @@ void Person::DoAnimations(){ } } - if(hasvictim&&(targetanimation==swordsneakattackanim)&&animation[targetanimation].label[currentframe]==5){ + if(hasvictim&&(animTarget==swordsneakattackanim)&&animation[animTarget].label[frameCurrent]==5){ if(weaponactive!=-1&&victim->bloodlossdamagetolerance){ award_bonus(id, backstab); @@ -3096,9 +3107,9 @@ void Person::DoAnimations(){ XYZ footvel,footpoint; footvel=0; - footpoint=(weapons.tippoint[weaponids[0]]+weapons.position[weaponids[0]])/2; + footpoint=(weapons[weaponids[0]].tippoint+weapons[weaponids[0]].position)/2; if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); - footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]]); + footvel=(weapons[weaponids[0]].tippoint-weapons[weaponids[0]].position); Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); Sprite::MakeSprite(bloodflamesprite, footpoint,DoRotation(footvel*5,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .3, 1); @@ -3108,12 +3119,12 @@ void Person::DoAnimations(){ victim->bloodloss+=10000; victim->velocity=0; emit_sound_at(fleshstabsound, victim->coords); - if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; - weapons.blooddrip[weaponids[weaponactive]]+=5; + if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2; + weapons[weaponids[weaponactive]].blooddrip+=5; } } - if(hasvictim&&targetanimation==swordsneakattackanim&&animation[targetanimation].label[currentframe]==6){ + if(hasvictim&&animTarget==swordsneakattackanim&&animation[animTarget].label[frameCurrent]==6){ escapednum=0; victim->velocity=0; for(i=0;iskeleton.num_joints;i++){ @@ -3121,14 +3132,14 @@ void Person::DoAnimations(){ } if(weaponactive!=-1){ emit_sound_at(fleshstabremovesound, victim->coords); - if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; - weapons.blooddrip[weaponids[weaponactive]]+=5; + if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2; + weapons[weaponids[weaponactive]].blooddrip+=5; XYZ footvel,footpoint; footvel=0; - footpoint=weapons.tippoint[weaponids[0]]; + footpoint=weapons[weaponids[0]].tippoint; if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); - footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1; + footvel=(weapons[weaponids[0]].tippoint-weapons[weaponids[0]].position)*-1; Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1); @@ -3136,7 +3147,7 @@ void Person::DoAnimations(){ } } - if(targetanimation==sweepreversalanim&&animation[targetanimation].label[currentframe]==7){ + if(animTarget==sweepreversalanim&&animation[animTarget].label[frameCurrent]==7){ escapednum=0; if(id==0)camerashake+=.4; if(Random()%2){ @@ -3151,13 +3162,13 @@ void Person::DoAnimations(){ bool doslice; doslice=0; if(weaponactive!=-1||creature==wolftype)doslice=1; - if(creature==rabbittype&&weaponactive!=-1)if(weapons.type[weaponids[0]]==staff)doslice=0; + if(creature==rabbittype&&weaponactive!=-1)if(weapons[weaponids[0]].getType()==staff)doslice=0; if(doslice){ if(weaponactive!=-1){ victim->DoBloodBig(2/victim->armorhead,225); emit_sound_at(knifeslicesound, victim->coords); - if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1; - weapons.blooddrip[weaponids[weaponactive]]+=3; + if(bloodtoggle&&!weapons[weaponids[weaponactive]].bloody)weapons[weaponids[weaponactive]].bloody=1; + weapons[weaponids[weaponactive]].blooddrip+=3; } if(weaponactive==-1&&creature==wolftype){ emit_sound_at(clawslicesound, victim->coords, 128.); @@ -3187,7 +3198,7 @@ void Person::DoAnimations(){ victim->velocity=0; } - if(targetanimation==sweepreversalanim&&((animation[targetanimation].label[currentframe]==9&&victim->damagedamagetolerance)||(animation[targetanimation].label[currentframe]==7&&victim->damage>victim->damagetolerance))){ + if(animTarget==sweepreversalanim&&((animation[animTarget].label[frameCurrent]==9&&victim->damagedamagetolerance)||(animation[animTarget].label[frameCurrent]==7&&victim->damage>victim->damagetolerance))){ escapednum=0; victim->RagDoll(0); XYZ relative; @@ -3204,7 +3215,7 @@ void Person::DoAnimations(){ victim->skeleton.joints[victim->skeleton.jointlabels[head]].velocity+=relative*damagemult*200; } - 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(hasvictim&&(animTarget==spinkickreversalanim||animTarget==sweepreversalanim||animTarget==rabbitkickreversalanim||animTarget==upunchreversalanim||animTarget==jumpreversalanim||animTarget==swordslashreversalanim||animTarget==knifeslashreversalanim||animTarget==rabbittacklereversal||animTarget==wolftacklereversal||animTarget==staffhitreversalanim||animTarget==staffspinhitreversalanim)) if(victim->damage>victim->damagetolerance&&bonus!=reverseko){ award_bonus(id, reverseko); } @@ -3212,43 +3223,43 @@ void Person::DoAnimations(){ //Animation end - if(targetframe>animation[currentanimation].numframes-1){ - targetframe=0; + if(frameTarget>animation[animCurrent].numframes-1){ + frameTarget=0; if(wasStop()){ - targetanimation=getIdle(); + animTarget=getIdle(); FootLand(0,1); FootLand(1,1); } - if(currentanimation==rabbittackleanim||currentanimation==rabbittacklinganim){ - targetanimation=rollanim; - targetframe=3; + if(animCurrent==rabbittackleanim||animCurrent==rabbittacklinganim){ + animTarget=rollanim; + frameTarget=3; emit_sound_at(movewhooshsound, coords, 128.); } - if(currentanimation==staggerbackhighanim){ - targetanimation=getIdle(); + if(animCurrent==staggerbackhighanim){ + animTarget=getIdle(); } - if(currentanimation==staggerbackhardanim){ - targetanimation=getIdle(); + if(animCurrent==staggerbackhardanim){ + animTarget=getIdle(); } - if(currentanimation==removeknifeanim){ - targetanimation=getIdle(); + if(animCurrent==removeknifeanim){ + animTarget=getIdle(); } - if(currentanimation==crouchremoveknifeanim){ - targetanimation=getCrouch(); + if(animCurrent==crouchremoveknifeanim){ + animTarget=getCrouch(); } - if(currentanimation==backhandspringanim){ - targetanimation=getIdle(); + if(animCurrent==backhandspringanim){ + animTarget=getIdle(); } - if(currentanimation==dodgebackanim){ - targetanimation=getIdle(); + if(animCurrent==dodgebackanim){ + animTarget=getIdle(); } - if(currentanimation==drawleftanim){ - targetanimation=getIdle(); + if(animCurrent==drawleftanim){ + animTarget=getIdle(); } - if(currentanimation==drawrightanim||currentanimation==crouchdrawrightanim){ - targetanimation=getIdle(); - if(currentanimation==crouchdrawrightanim){ - targetanimation=getCrouch(); + if(animCurrent==drawrightanim||animCurrent==crouchdrawrightanim){ + animTarget=getIdle(); + if(animCurrent==crouchdrawrightanim){ + animTarget=getCrouch(); } if(weaponactive==-1)weaponactive=0; else if(weaponactive==0){ @@ -3268,23 +3279,23 @@ void Person::DoAnimations(){ emit_sound_at(knifedrawsound, coords, 128.); } } - if(currentanimation==rollanim){ - targetanimation=getCrouch(); + if(animCurrent==rollanim){ + animTarget=getCrouch(); FootLand(0,1); FootLand(1,1); } if(isFlip()){ - if(targetanimation==walljumprightkickanim){ + if(animTarget==walljumprightkickanim){ targetrot=-190; } - if(targetanimation==walljumpleftkickanim){ + if(animTarget==walljumpleftkickanim){ targetrot=190; } - targetanimation=jumpdownanim; + animTarget=jumpdownanim; } - if(currentanimation==climbanim){ - targetanimation=getCrouch(); - targetframe=1; + if(animCurrent==climbanim){ + animTarget=getCrouch(); + frameTarget=1; coords+=facing*.1; if(!isnormal(coords.x)) coords=oldcoords; @@ -3297,23 +3308,23 @@ void Person::DoAnimations(){ collided=0; avoidcollided=0; } - if(targetanimation==rabbitkickreversalanim){ - targetanimation=getCrouch(); + if(animTarget==rabbitkickreversalanim){ + animTarget=getCrouch(); lastfeint=0; } - if(targetanimation==jumpreversalanim){ - targetanimation=getCrouch(); + if(animTarget==jumpreversalanim){ + animTarget=getCrouch(); lastfeint=0; } - if(targetanimation==walljumprightanim||targetanimation==walljumpbackanim||targetanimation==walljumpfrontanim){ - if(attackkeydown&&targetanimation!=walljumpfrontanim){ + if(animTarget==walljumprightanim||animTarget==walljumpbackanim||animTarget==walljumpfrontanim){ + if(attackkeydown&&animTarget!=walljumpfrontanim){ int closest=-1; float closestdist=-1; float distance; if(numplayers>1) for(i=0;i0&&closest>=0&&closestdist<16){ victim=&player[closest]; - targetanimation=walljumprightkickanim; - targetframe=0; + animTarget=walljumprightkickanim; + frameTarget=0; XYZ rotatetarget=victim->coords-coords; Normalise(&rotatetarget); - rotation=-asin(0-rotatetarget.x); - rotation*=360/6.28; - if(rotatetarget.z<0)rotation=180-rotation; + yaw=-asin(0-rotatetarget.x); + yaw*=360/6.28; + if(rotatetarget.z<0)yaw=180-yaw; targettilt2=-asin(rotatetarget.y)*360/6.28; velocity=(victim->coords-coords)*4; velocity.y+=2; transspeed=40; } } - if(targetanimation==walljumpbackanim){ - targetanimation=backflipanim; - targetframe=3; + if(animTarget==walljumpbackanim){ + animTarget=backflipanim; + frameTarget=3; velocity=facing*-8; velocity.y=4; - if(id==0)OPENAL_SetPaused(channels[whooshsound], false); + if(id==0) + resume_stream(whooshsound); } - if(targetanimation==walljumprightanim){ - targetanimation=rightflipanim; - targetframe=4; - targetrotation-=90; - rotation-=90; + if(animTarget==walljumprightanim){ + animTarget=rightflipanim; + frameTarget=4; + targetyaw-=90; + yaw-=90; velocity=DoRotation(facing,0,30,0)*-8; velocity.y=4; } - if(targetanimation==walljumpfrontanim){ - targetanimation=frontflipanim; - targetframe=2; - //targetrotation-=180; - ////rotation-=180; + if(animTarget==walljumpfrontanim){ + animTarget=frontflipanim; + frameTarget=2; + //targetyaw-=180; + ////yaw-=180; velocity=facing*8; velocity.y=4; } - if(id==0)OPENAL_SetPaused(channels[whooshsound], false); + if(id==0) + resume_stream(whooshsound); } - if(targetanimation==walljumpleftanim){ + if(animTarget==walljumpleftanim){ if(attackkeydown){ int closest=-1; float closestdist=-1; @@ -3368,7 +3381,7 @@ void Person::DoAnimations(){ if(numplayers>1) for(i=0;i0&&closest>=0&&closestdist<16){ victim=&player[closest]; - targetanimation=walljumpleftkickanim; - targetframe=0; + animTarget=walljumpleftkickanim; + frameTarget=0; XYZ rotatetarget=victim->coords-coords; Normalise(&rotatetarget); - rotation=-asin(0-rotatetarget.x); - rotation*=360/6.28; - if(rotatetarget.z<0)rotation=180-rotation; + yaw=-asin(0-rotatetarget.x); + yaw*=360/6.28; + if(rotatetarget.z<0)yaw=180-yaw; targettilt2=-asin(rotatetarget.y)*360/6.28; velocity=(victim->coords-coords)*4; velocity.y+=2; transspeed=40; } } - if(targetanimation!=walljumpleftkickanim){ - targetanimation=leftflipanim; - targetframe=4; - targetrotation+=90; - rotation+=90; + if(animTarget!=walljumpleftkickanim){ + animTarget=leftflipanim; + frameTarget=4; + targetyaw+=90; + yaw+=90; velocity=DoRotation(facing,0,-30,0)*-8; velocity.y=4; } - if(id==0)OPENAL_SetPaused(channels[whooshsound], false); + if(id==0) + resume_stream(whooshsound); } - if(targetanimation==sneakattackanim){ - float ycoords=oldcoords.y; - currentanimation=getCrouch(); - targetanimation=getCrouch(); - targetframe=1; - currentframe=0; - targetrotation+=180; - rotation+=180; + if(animTarget==sneakattackanim){ + animCurrent=getCrouch(); + animTarget=getCrouch(); + frameTarget=1; + frameCurrent=0; + targetyaw+=180; + yaw+=180; targettilt2*=-1; tilt2*=-1; transspeed=1000000; - targetheadrotation+=180; + targetheadyaw+=180; coords-=facing*.7; if(onterrain)coords.y=terrain.getHeight(coords.x,coords.z); lastfeint=0; } - if(targetanimation==knifesneakattackanim||targetanimation==swordsneakattackanim){ - float ycoords=oldcoords.y; - targetanimation=getIdle(); - targetframe=0; + if(animTarget==knifesneakattackanim||animTarget==swordsneakattackanim){ + animTarget=getIdle(); + frameTarget=0; if(onterrain)coords.y=terrain.getHeight(coords.x,coords.z); lastfeint=0; } - if(currentanimation==knifefollowanim){ - targetanimation=getIdle(); + if(animCurrent==knifefollowanim){ + animTarget=getIdle(); lastfeint=0; } - if(animation[targetanimation].attack==reversal&¤tanimation!=sneakattackanim&¤tanimation!=knifesneakattackanim&¤tanimation!=swordsneakattackanim&¤tanimation!=knifefollowanim){ + if(animation[animTarget].attack==reversal&&animCurrent!=sneakattackanim&&animCurrent!=knifesneakattackanim&&animCurrent!=swordsneakattackanim&&animCurrent!=knifefollowanim){ float ycoords=oldcoords.y; - targetanimation=getStop(); - targetrotation+=180; - rotation+=180; + animTarget=getStop(); + targetyaw+=180; + yaw+=180; targettilt2*=-1; tilt2*=-1; transspeed=1000000; - targetheadrotation+=180; + targetheadyaw+=180; if(!isnormal(coords.x)) coords=oldcoords; - if(currentanimation==spinkickreversalanim||currentanimation==swordslashreversalanim) + if(animCurrent==spinkickreversalanim||animCurrent==swordslashreversalanim) oldcoords=coords+facing*.5; - else if(currentanimation==sweepreversalanim) + else if(animCurrent==sweepreversalanim) oldcoords=coords+facing*1.1; - else if(currentanimation==upunchreversalanim){ + else if(animCurrent==upunchreversalanim){ oldcoords=coords+facing*1.5; - targetrotation+=180; - rotation+=180; - targetheadrotation+=180; + targetyaw+=180; + yaw+=180; + targetheadyaw+=180; targettilt2*=-1; tilt2*=-1; } - else if(currentanimation==knifeslashreversalanim){ + else if(animCurrent==knifeslashreversalanim){ oldcoords=coords+facing*.5; - targetrotation+=90; - rotation+=90; - targetheadrotation+=90; + targetyaw+=90; + yaw+=90; + targetheadyaw+=90; targettilt2=0; tilt2=0; } - else if(currentanimation==staffspinhitreversalanim){ - targetrotation+=180; - rotation+=180; - targetheadrotation+=180; + else if(animCurrent==staffspinhitreversalanim){ + targetyaw+=180; + yaw+=180; + targetheadyaw+=180; targettilt2=0; tilt2=0; } @@ -3475,70 +3487,70 @@ void Person::DoAnimations(){ lastfeint=0; } - if(currentanimation==knifesneakattackedanim||currentanimation==swordsneakattackedanim){ + if(animCurrent==knifesneakattackedanim||animCurrent==swordsneakattackedanim){ velocity=0; velocity.y=-5; RagDoll(0); } - if(animation[targetanimation].attack==reversed){ + if(animation[animTarget].attack==reversed){ escapednum++; - if(targetanimation==sweepreversedanim)targetrotation+=90; - targetanimation=backhandspringanim; - targetframe=2; + if(animTarget==sweepreversedanim)targetyaw+=90; + animTarget=backhandspringanim; + frameTarget=2; emit_sound_at(landsound, coords, 128); - if(currentanimation==upunchreversedanim||currentanimation==swordslashreversedanim){ - targetanimation=rollanim; - targetframe=5; + if(animCurrent==upunchreversedanim||animCurrent==swordslashreversedanim){ + animTarget=rollanim; + frameTarget=5; oldcoords=coords; - coords+=(DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)+DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0))/2*scale; + coords+=(DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)+DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0))/2*scale; coords.y=oldcoords.y; } - if(currentanimation==knifeslashreversedanim){ - targetanimation=rollanim; - targetframe=0; - targetrotation+=90; - rotation+=90; + if(animCurrent==knifeslashreversedanim){ + animTarget=rollanim; + frameTarget=0; + targetyaw+=90; + yaw+=90; oldcoords=coords; - coords+=(DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)+DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0))/2*scale; + coords+=(DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)+DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0))/2*scale; coords.y=oldcoords.y; } } if(wasFlip()){ - targetanimation=jumpdownanim; + animTarget=jumpdownanim; } - if(wasLanding())targetanimation=getIdle(); - if(wasLandhard())targetanimation=getIdle(); - if(currentanimation==spinkickanim||currentanimation==getupfrombackanim||currentanimation==getupfromfrontanim||currentanimation==lowkickanim){ - targetanimation=getIdle(); + if(wasLanding())animTarget=getIdle(); + if(wasLandhard())animTarget=getIdle(); + if(animCurrent==spinkickanim||animCurrent==getupfrombackanim||animCurrent==getupfromfrontanim||animCurrent==lowkickanim){ + animTarget=getIdle(); oldcoords=coords; - coords+=(DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)+DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0))/2*scale; + coords+=(DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)+DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0))/2*scale; coords.y=oldcoords.y; - //coords+=DoRotation(animation[currentanimation].offset,0,rotation,0)*scale; + //coords+=DoRotation(animation[animCurrent].offset,0,yaw,0)*scale; targetoffset.y=coords.y; if(onterrain)targetoffset.y=terrain.getHeight(coords.x,coords.z); - currentoffset=DoRotation(animation[currentanimation].offset*-1,0,rotation,0)*scale; + currentoffset=DoRotation(animation[animCurrent].offset*-1,0,yaw,0)*scale; currentoffset.y-=(coords.y-targetoffset.y); coords.y=targetoffset.y; targetoffset=0; normalsupdatedelay=0; } - if(currentanimation==upunchanim){ - targetanimation=getStop(); + if(animCurrent==upunchanim){ + animTarget=getStop(); normalsupdatedelay=0; lastfeint=0; } - if(currentanimation==rabbitkickanim&&targetanimation!=backflipanim){ - targetrotation=rotation; + if(animCurrent==rabbitkickanim&&animTarget!=backflipanim){ + targetyaw=yaw; bool hasstaff; hasstaff=0; - if(num_weapons>0)if(weapons.type[0]==staff)hasstaff=1; + if(num_weapons>0)if(weapons[0].getType()==staff)hasstaff=1; if(!hasstaff)DoDamage(35); RagDoll(0); lastfeint=0; rabbitkickragdoll=1; } - if(currentanimation==rabbitkickreversedanim){ + if(animCurrent==rabbitkickreversedanim){ if(!feint){ velocity=0; velocity.y=-10; @@ -3549,19 +3561,19 @@ void Person::DoAnimations(){ } if(feint){ escapednum++; - targetanimation=rollanim; + animTarget=rollanim; coords+=facing; - if(id==0)OPENAL_SetPaused(channels[whooshsound], true); + if(id==0)pause_sound(whooshsound); } lastfeint=0; } - if(currentanimation==rabbittackledbackanim||currentanimation==rabbittackledfrontanim){ + if(animCurrent==rabbittackledbackanim||animCurrent==rabbittackledfrontanim){ velocity=0; velocity.y=-10; RagDoll(0); skeleton.spinny=0; } - if(currentanimation==jumpreversedanim){ + if(animCurrent==jumpreversedanim){ if(!feint){ velocity=0; velocity.y=-10; @@ -3572,81 +3584,81 @@ void Person::DoAnimations(){ } if(feint){ escapednum++; - targetanimation=rollanim; + animTarget=rollanim; coords+=facing*2; - if(id==0)OPENAL_SetPaused(channels[whooshsound], true); + if(id==0)pause_sound(whooshsound); } lastfeint=0; } - if(animation[currentanimation].attack==normalattack&&!victim->skeleton.free&&victim->targetanimation!=staggerbackhighanim&&victim->targetanimation!=staggerbackhardanim&&targetanimation!=winduppunchblockedanim&&targetanimation!=blockhighleftanim&&targetanimation!=swordslashparryanim&&targetanimation!=swordslashparriedanim&&targetanimation!=crouchstabanim&&targetanimation!=swordgroundstabanim){ - targetanimation=getupfromfrontanim; + if(animation[animCurrent].attack==normalattack&&!victim->skeleton.free&&victim->animTarget!=staggerbackhighanim&&victim->animTarget!=staggerbackhardanim&&animTarget!=winduppunchblockedanim&&animTarget!=blockhighleftanim&&animTarget!=swordslashparryanim&&animTarget!=swordslashparriedanim&&animTarget!=crouchstabanim&&animTarget!=swordgroundstabanim){ + animTarget=getupfromfrontanim; lastfeint=0; } - else if(animation[currentanimation].attack==normalattack){ - targetanimation=getIdle(); + else if(animation[animCurrent].attack==normalattack){ + animTarget=getIdle(); lastfeint=0; } - if(currentanimation==blockhighleftanim&&aitype!=playercontrolled){ - targetanimation=blockhighleftstrikeanim; + if(animCurrent==blockhighleftanim&&aitype!=playercontrolled){ + animTarget=blockhighleftstrikeanim; } - if(currentanimation==knifeslashstartanim||currentanimation==knifethrowanim||currentanimation==swordslashanim||currentanimation==staffhitanim||currentanimation==staffgroundsmashanim||currentanimation==staffspinhitanim){ - targetanimation=getIdle(); + if(animCurrent==knifeslashstartanim||animCurrent==knifethrowanim||animCurrent==swordslashanim||animCurrent==staffhitanim||animCurrent==staffgroundsmashanim||animCurrent==staffspinhitanim){ + animTarget=getIdle(); lastfeint=0; } - if(currentanimation==spinkickanim&&victim->skeleton.free){ - if(creature==rabbittype)targetanimation=fightidleanim; + if(animCurrent==spinkickanim&&victim->skeleton.free){ + if(creature==rabbittype)animTarget=fightidleanim; } } target=0; if(isIdle()&&!wasIdle())normalsupdatedelay=0; - if(currentanimation==jumpupanim&&velocity.y<0&&!isFlip()){ - targetanimation=jumpdownanim; + if(animCurrent==jumpupanim&&velocity.y<0&&!isFlip()){ + animTarget=jumpdownanim; } } if(!skeleton.free){ oldtarget=target; - if(!transspeed&&animation[targetanimation].attack!=2&&animation[targetanimation].attack!=3){ + if(!transspeed&&animation[animTarget].attack!=2&&animation[animTarget].attack!=3){ if(!isRun()||!wasRun()){ - if(animation[targetanimation].speed[targetframe]>animation[currentanimation].speed[currentframe]) - target+=multiplier*animation[targetanimation].speed[targetframe]*speed*2; - if(animation[targetanimation].speed[targetframe]<=animation[currentanimation].speed[currentframe]) - target+=multiplier*animation[currentanimation].speed[currentframe]*speed*2; + if(animation[animTarget].speed[frameTarget]>animation[animCurrent].speed[frameCurrent]) + target+=multiplier*animation[animTarget].speed[frameTarget]*speed*2; + if(animation[animTarget].speed[frameTarget]<=animation[animCurrent].speed[frameCurrent]) + target+=multiplier*animation[animCurrent].speed[frameCurrent]*speed*2; } if(isRun()&&wasRun()){ float tempspeed; tempspeed=velspeed; if(tempspeed<10*speedmult)tempspeed=10*speedmult; - target+=multiplier*animation[targetanimation].speed[currentframe]*speed*1.7*tempspeed/(speed*45*scale); + target+=multiplier*animation[animTarget].speed[frameCurrent]*speed*1.7*tempspeed/(speed*45*scale); } } else if(transspeed)target+=multiplier*transspeed*speed*2; else{ if(!isRun()||!wasRun()){ - if(animation[targetanimation].speed[targetframe]>animation[currentanimation].speed[currentframe]) - target+=multiplier*animation[targetanimation].speed[targetframe]*2; - if(animation[targetanimation].speed[targetframe]<=animation[currentanimation].speed[currentframe]) - target+=multiplier*animation[currentanimation].speed[currentframe]*2; + if(animation[animTarget].speed[frameTarget]>animation[animCurrent].speed[frameCurrent]) + target+=multiplier*animation[animTarget].speed[frameTarget]*2; + if(animation[animTarget].speed[frameTarget]<=animation[animCurrent].speed[frameCurrent]) + target+=multiplier*animation[animCurrent].speed[frameCurrent]*2; } } - if(currentanimation!=targetanimation)target=(target+oldtarget)/2; + if(animCurrent!=animTarget)target=(target+oldtarget)/2; - if(target>1){currentframe=targetframe; target=1;} + if(target>1){frameCurrent=frameTarget; target=1;} oldrot=rot; rot=targetrot*target; - rotation+=rot-oldrot; + yaw+=rot-oldrot; if(target==1){ rot=0; oldrot=0; targetrot=0; } - if(currentanimation!=oldcurrentanimation||targetanimation!=oldtargetanimation||((currentframe!=oldcurrentframe||targetframe!=oldtargetframe)&&!calcrot)){ + if(animCurrent!=oldanimCurrent||animTarget!=oldanimTarget||((frameCurrent!=oldframeCurrent||frameTarget!=oldframeTarget)&&!calcrot)){ //Old rotates for(i=0;i=animation[currentanimation].numframes)currentframe=animation[currentanimation].numframes-1; + if(frameCurrent>=animation[animCurrent].numframes)frameCurrent=animation[animCurrent].numframes-1; - oldcurrentanimation=currentanimation; - oldtargetanimation=targetanimation; - oldtargetframe=targetframe; - oldcurrentframe=currentframe; + oldanimCurrent=animCurrent; + oldanimTarget=animTarget; + oldframeTarget=frameTarget; + oldframeCurrent=frameCurrent; for(i=0;i0){ - if(weapons.type[weaponids[0]]==staff){ + if(weapons[weaponids[0]].getType()==staff){ weaponactive=0; } } @@ -3808,7 +3819,7 @@ void Person::DoStuff(){ if(burnt>.6)burnt=.6; OPENAL_SetVolume(channels[stream_firesound], 256+256*findLength(&velocity)/3); - if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){ + if(animTarget==jumpupanim||animTarget==jumpdownanim||isFlip()){ float gLoc[3]; float vel[3]; gLoc[0]=coords.x; @@ -3829,7 +3840,7 @@ void Person::DoStuff(){ howmany=abs(Random()%(skeleton.num_joints)); if(!skeleton.free)flatvelocity=(coords-oldcoords)/multiplier/2;//velocity/2; if(skeleton.free)flatvelocity=skeleton.joints[howmany].velocity*scale/2; - if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords; + if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,yaw,0)*scale+coords; if(skeleton.free)flatfacing=skeleton.joints[howmany].position*scale+coords; Sprite::MakeSprite(flamesprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1); } @@ -3839,7 +3850,7 @@ void Person::DoStuff(){ howmany=abs(Random()%(skeleton.num_joints)); if(!skeleton.free)flatvelocity=(coords-oldcoords)/multiplier/2;//velocity/2; if(skeleton.free)flatvelocity=skeleton.joints[howmany].velocity*scale/2; - if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords; + if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,yaw,0)*scale+coords; if(skeleton.free)flatfacing=skeleton.joints[howmany].position*scale+coords; Sprite::MakeSprite(breathsprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, .3); } @@ -3847,7 +3858,7 @@ void Person::DoStuff(){ if(bleeding>0){ bleeding-=multiplier*.3; if(bloodtoggle==2){ - glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); + skeleton.drawmodel.textureptr.bind(); if(bleeding<=0&&(detail!=2||osx))DoMipmaps(); } } @@ -3861,15 +3872,15 @@ void Person::DoStuff(){ bloodvel=0; if(!skeleton.free){ bloodvel.z=5*neckspurtamount; - bloodvel=DoRotation(bloodvel,((float)(Random()%100))/40,rotation+((float)(Random()%100))/40,0)*scale; + bloodvel=DoRotation(bloodvel,((float)(Random()%100))/40,yaw+((float)(Random()%100))/40,0)*scale; } if(skeleton.free){ bloodvel-=DoRotation(skeleton.forward*10*scale,((float)(Random()%100))/40,((float)(Random()%100))/40,0); } - if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/40,rotation+((float)(Random()%100))/40,0)*scale; + if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/40,yaw+((float)(Random()%100))/40,0)*scale; if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/40,((float)(Random()%100))/40,0)*scale; if(skeleton.free)Sprite::MakeSprite(bloodsprite, (skeleton.joints[skeleton.jointlabels[neck]].position+(skeleton.joints[skeleton.jointlabels[neck]].position-skeleton.joints[skeleton.jointlabels[head]].position)/5)*scale+coords,bloodvel, 1,1,1, .05, .9); - if(!skeleton.free)Sprite::MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position+(skeleton.joints[skeleton.jointlabels[neck]].position-skeleton.joints[skeleton.jointlabels[head]].position)/5,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, .9); + if(!skeleton.free)Sprite::MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position+(skeleton.joints[skeleton.jointlabels[neck]].position-skeleton.joints[skeleton.jointlabels[head]].position)/5,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, .9); neckspurtparticledelay=.05; } if(neckspurtdelay<0){ @@ -3885,27 +3896,27 @@ void Person::DoStuff(){ XYZ bloodvel; if(bloodtoggle){ bloodvel=0; - if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[abdomen]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale; + if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[abdomen]].velocity,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale; if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale; if(skeleton.free)Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[abdomen]].position*scale+coords,bloodvel, 1,1,1, .05, 1); - 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(!skeleton.free)Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[abdomen]].position+skeleton.joints[skeleton.jointlabels[abdomen]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, 1); } } bloodloss+=deathbleeding*multiplier*80; deathbleeding-=multiplier*1.6; //if(id==0)deathbleeding-=multiplier*.2; if(deathbleeding<0)deathbleeding=0; - if(bloodloss>damagetolerance&&animation[targetanimation].attack==neutral){ + if(bloodloss>damagetolerance&&animation[animTarget].attack==neutral){ if(weaponactive!=-1){ - weapons.owner[weaponids[0]]=-1; - weapons.velocity[weaponids[0]]=velocity*scale*-.3; - weapons.velocity[weaponids[0]].x+=.01; - weapons.tipvelocity[weaponids[0]]=velocity*scale; - weapons.missed[weaponids[0]]=1; - weapons.hitsomething[weaponids[0]]=0; - weapons.freetime[weaponids[0]]=0; - weapons.firstfree[weaponids[0]]=1; - weapons.physics[weaponids[0]]=1; + weapons[weaponids[0]].owner=-1; + weapons[weaponids[0]].velocity=velocity*scale*-.3; + weapons[weaponids[0]].velocity.x+=.01; + weapons[weaponids[0]].tipvelocity=velocity*scale; + weapons[weaponids[0]].missed=1; + weapons[weaponids[0]].hitsomething=0; + weapons[weaponids[0]].freetime=0; + weapons[weaponids[0]].firstfree=1; + weapons[weaponids[0]].physics=1; num_weapons--; if(num_weapons){ weaponids[0]=weaponids[num_weapons]; @@ -3929,7 +3940,7 @@ void Person::DoStuff(){ award_bonus(0, Wolfbonus); } dead=2; - if(targetanimation==knifefollowedanim&&!skeleton.free){ + if(animTarget==knifefollowedanim&&!skeleton.free){ for(i=0;i0&&bloodtoggle==2&&findDistancefast(&viewer,&coords)<9){ + if(texupdatedelay<0&&bleeding>0&&bloodtoggle==2&&distsq(&viewer,&coords)<9){ texupdatedelay=.12; bloodsize=5-realtexdetail; startx=0; starty=0; - texdetailint=realtexdetail; startx=bleedy;//abs(Random()%(skeleton.skinsize-bloodsize-1)); starty=bleedx;//abs(Random()%(skeleton.skinsize-bloodsize-1)); endx=startx+bloodsize; @@ -3974,7 +3984,7 @@ void Person::DoStuff(){ } } if(!osx&&detail>1){ - glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); + skeleton.drawmodel.textureptr.bind(); DoMipmaps(); } @@ -4099,11 +4109,11 @@ void Person::DoStuff(){ if(environment==snowyenvironment){ XYZ footpoint; XYZ footvel; - if(!skeleton.free)footvel=DoRotation(skeleton.specialforward[0],0,rotation,0)*-1; + if(!skeleton.free)footvel=DoRotation(skeleton.specialforward[0],0,yaw,0)*-1; if(skeleton.free)footvel=skeleton.specialforward[0]*-1; - if(!skeleton.free)footpoint=DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords; + if(!skeleton.free)footpoint=DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords; if(skeleton.free)footpoint=((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2)*scale+coords; - if(targetanimation==sleepanim)footvel=DoRotation(footvel,0,90,0); + if(animTarget==sleepanim)footvel=DoRotation(footvel,0,90,0); Sprite::MakeSprite(breathsprite, footpoint+footvel*.2,footvel*.4, 1,1,1, .4, .3); } } @@ -4124,7 +4134,7 @@ void Person::DoStuff(){ } if(!dead){ twitchdelay-=multiplier*1.5; - if(targetanimation!=hurtidleanim){ + if(animTarget!=hurtidleanim){ if(headmorphstart==0&&headmorphend==0&&twitchdelay<=0){ headmorphness=0; targetheadmorphness=1; @@ -4137,7 +4147,7 @@ void Person::DoStuff(){ headmorphend=0; } } - if((isIdle()||isCrouch())&&targetanimation!=hurtidleanim){ + if((isIdle()||isCrouch())&&animTarget!=hurtidleanim){ twitchdelay3-=multiplier*1; if(Random()%2==0){ if(righthandmorphstart==0&&righthandmorphend==0&&twitchdelay3<=0){ @@ -4195,14 +4205,14 @@ void Person::DoStuff(){ if(creature==wolftype){ twitchdelay2-=multiplier*1.5; if(tailmorphend!=0) - if((isRun()||targetanimation==jumpupanim||targetanimation==jumpdownanim||targetanimation==backflipanim)&&!skeleton.free){ + if((isRun()||animTarget==jumpupanim||animTarget==jumpdownanim||animTarget==backflipanim)&&!skeleton.free){ tailmorphness=0; targettailmorphness=1; tailmorphend=0; twitchdelay2=.1; } if(tailmorphend!=5) - if(targetanimation==flipanim||targetanimation==frontflipanim||targetanimation==rollanim||skeleton.free){ + if(animTarget==flipanim||animTarget==frontflipanim||animTarget==rollanim||skeleton.free){ tailmorphness=0; targettailmorphness=1; tailmorphend=5; @@ -4265,11 +4275,11 @@ void Person::DoStuff(){ if(bloodtoggle&&!bled) for(l=0;l2000){ if(skeleton.longdead>6000){ - if(id==0)OPENAL_SetPaused(channels[whooshsound], true); + if(id==0)pause_sound(whooshsound); skeleton.free=3; DrawSkeleton(); skeleton.free=2; @@ -4484,11 +4485,11 @@ void Person::DoStuff(){ if(bloodtoggle&&!bled) for(l=0;l(damage+500)*1.5){ - if(id==0)OPENAL_SetPaused(channels[whooshsound], true); + if(id==0)pause_sound(whooshsound); skeleton.free=0; velocity=0; XYZ middle; @@ -4599,113 +4600,99 @@ void Person::DoStuff(){ } Normalise(&terrainnormal); - targetrotation=-asin(0-terrainnormal.x); - targetrotation*=360/6.28; - if(terrainnormal.z<0)targetrotation=180-targetrotation; - rotation=targetrotation; - - /*if(onterrain){ - terrainnormal=terrain.getNormal(coords.x,coords.z); - targettilt2=asin(terrainnormal.y)*180/3.14*-1; - } - else*/ - - /*XYZ otherterrainnormal; - otherterrainnormal=terrain.getNormal(coords.x,coords.y); - otherterrainnormal.y=fast_sqrt(otherterrainnormal.x*otherterrainnormal.x+otherterrainnormal.z*otherterrainnormal.z)*-1; - if(abs(terrainnormal.y)-.3){ - targetanimation=getupfromfrontanim; - rotation+=180; - targetrotation+=180; + animTarget=getupfromfrontanim; + yaw+=180; + targetyaw+=180; targettilt2*=-1; - targetframe=0; + frameTarget=0; targettilt2=0; } if((Random()%8==0&&id!=0&&creature==rabbittype)||(Random()%2==0&&id!=0&&creature==wolftype)||(id==0&&crouchkeydown&&(forwardkeydown||backkeydown||leftkeydown||rightkeydown))){ - targetanimation=rollanim; - targetrotation=lookrotation; + animTarget=rollanim; + targetyaw=lookyaw; if(id==0){ if(rightkeydown){ - targetrotation-=90; - if(forwardkeydown)targetrotation+=45; - if(backkeydown)targetrotation-=45; + targetyaw-=90; + if(forwardkeydown)targetyaw+=45; + if(backkeydown)targetyaw-=45; } if(leftkeydown){ - targetrotation+=90; - if(forwardkeydown)targetrotation-=45; - if(backkeydown)targetrotation+=45; + targetyaw+=90; + if(forwardkeydown)targetyaw-=45; + if(backkeydown)targetyaw+=45; } if(backkeydown){ if ( !leftkeydown&&!rightkeydown) - targetrotation+=180; + targetyaw+=180; } - targetrotation+=180; + targetyaw+=180; } } if(abs(targettilt2)>50)targettilt2=0; - currentanimation=tempanim; - currentframe=0; + animCurrent=tempanim; + frameCurrent=0; target=0; tilt2=targettilt2; - if(middle.y>0&&targetanimation!=rollanim)targetoffset.y=middle.y+1; + if(middle.y>0&&animTarget!=rollanim)targetoffset.y=middle.y+1; for(i=0;i0)if(weapons.type[0]==staff)hasstaff=1; + if(num_weapons>0)if(weapons[0].getType()==staff)hasstaff=1; if(!skeleton.freefall&&freefall&&((jumpkeydown&&jumpkeydowntime<.2)||(hasstaff&&rabbitkickragdoll))&&!dead){ if(velocity.y>-30){ XYZ tempvelocity; tempvelocity=velocity; Normalise(&tempvelocity); - targetrotation=-asin(0-tempvelocity.x); - targetrotation*=360/6.28; - if(velocity.z<0)targetrotation=180-targetrotation; - //targetrotation+=180; + targetyaw=-asin(0-tempvelocity.x); + targetyaw*=360/6.28; + if(velocity.z<0)targetyaw=180-targetyaw; + //targetyaw+=180; skeleton.free=0; if(dotproduct(&skeleton.forward,&tempvelocity)<0){ - targetanimation=rollanim; - targetframe=2; + animTarget=rollanim; + frameTarget=2; } else{ - targetanimation=backhandspringanim; - targetrotation+=180; - targetframe=6; + animTarget=backhandspringanim; + targetyaw+=180; + frameTarget=6; } target=0; emit_sound_at(movewhooshsound, coords, 128.); - currentanimation=targetanimation; - currentframe=targetframe-1; + animCurrent=animTarget; + frameCurrent=frameTarget-1; target=0; velocity=0; - rotation=targetrotation; + yaw=targetyaw; tilt=0; targettilt=0; tilt2=0; @@ -4714,16 +4701,13 @@ void Person::DoStuff(){ } if(skeleton.freefall==0)freefall=0; - if(!isnormal(velocity.x)&&velocity.x){ - int xy=1; - } } if(aitype!=passivetype||skeleton.free==1) if(findLengthfast(&velocity)>.1) for(i=0;iobjects.position[i].y+3*objects.scale[i]){ + if(distsqflat(&tempcoord,&objects.position[i])objects.position[i].y+3*objects.scale[i]){ if(objects.messedwith[i]<=0){ XYZ tempvel; XYZ pos; @@ -4890,14 +4874,14 @@ void Person::DoStuff(){ } } - if(targetanimation==staggerbackhighanim)staggerdelay=1; - if(targetanimation==staggerbackhardanim)staggerdelay=1; + if(animTarget==staggerbackhighanim)staggerdelay=1; + if(animTarget==staggerbackhardanim)staggerdelay=1; staggerdelay-=multiplier; - if(targetanimation!=crouchstabanim&&targetanimation!=swordgroundstabanim&&targetanimation!=staffgroundsmashanim)hasvictim=1; - if(velocity.y<-30&&targetanimation==jumpdownanim)RagDoll(0); - if(currentanimation!=getIdle()&&wasIdle()&&targetanimation!=getIdle()&&isIdle()){ - targetanimation=getIdle(); - targetframe=0; + if(animTarget!=crouchstabanim&&animTarget!=swordgroundstabanim&&animTarget!=staffgroundsmashanim)hasvictim=1; + if(velocity.y<-30&&animTarget==jumpdownanim)RagDoll(0); + if(animCurrent!=getIdle()&&wasIdle()&&animTarget!=getIdle()&&isIdle()){ + animTarget=getIdle(); + frameTarget=0; target=0; } weaponmissdelay-=multiplier; @@ -4914,11 +4898,11 @@ void Person::DoStuff(){ if(!isnormal(targettilt2)&&targettilt2){ targettilt2=0; } - if(!isnormal(targetrotation)&&targetrotation){ - targetrotation=0; + if(!isnormal(targetyaw)&&targetyaw){ + targetyaw=0; } - if(targetanimation==bounceidleanim||targetanimation==wolfidle||targetanimation==walkanim||targetanimation==drawrightanim||targetanimation==crouchdrawrightanim||targetanimation==drawleftanim||targetanimation==fightidleanim||targetanimation==fightsidestep||targetanimation==hanganim||isCrouch()||targetanimation==backhandspringanim){ + if(animTarget==bounceidleanim||animTarget==wolfidle||animTarget==walkanim||animTarget==drawrightanim||animTarget==crouchdrawrightanim||animTarget==drawleftanim||animTarget==fightidleanim||animTarget==fightsidestep||animTarget==hanganim||isCrouch()||animTarget==backhandspringanim){ //open hands and close mouth if(righthandmorphend!=0&&righthandmorphness==targetrighthandmorphness){ righthandmorphness=0; @@ -4939,7 +4923,7 @@ void Person::DoStuff(){ } } - if(targetanimation==rollanim||targetanimation==dodgebackanim||targetanimation==removeknifeanim||targetanimation==knifefightidleanim||targetanimation==swordfightidleanim||targetanimation==blockhighleftstrikeanim||targetanimation==crouchremoveknifeanim||targetanimation==sneakanim||targetanimation==sweepanim||targetanimation==spinkickreversedanim||targetanimation==jumpdownanim||isWallJump()||isFlip()||targetanimation==climbanim||isRun()||targetanimation==getupfrombackanim||targetanimation==getupfromfrontanim){ + if(animTarget==rollanim||animTarget==dodgebackanim||animTarget==removeknifeanim||animTarget==knifefightidleanim||animTarget==swordfightidleanim||animTarget==blockhighleftstrikeanim||animTarget==crouchremoveknifeanim||animTarget==sneakanim||animTarget==sweepanim||animTarget==spinkickreversedanim||animTarget==jumpdownanim||isWallJump()||isFlip()||animTarget==climbanim||isRun()||animTarget==getupfrombackanim||animTarget==getupfromfrontanim){ //open hands and mouth if(righthandmorphend!=0&&righthandmorphness==targetrighthandmorphness){ righthandmorphness=0; @@ -4960,7 +4944,7 @@ void Person::DoStuff(){ } } - if(targetanimation==jumpupanim||targetanimation==crouchstabanim||targetanimation==swordgroundstabanim||targetanimation==swordfightidlebothanim||targetanimation==blockhighleftanim||targetanimation==blockhighleftanim){ + if(animTarget==jumpupanim||animTarget==crouchstabanim||animTarget==swordgroundstabanim||animTarget==swordfightidlebothanim||animTarget==blockhighleftanim||animTarget==blockhighleftanim){ //close hands and mouth if(righthandmorphend!=1&&righthandmorphness==targetrighthandmorphness){ righthandmorphness=0; @@ -4981,7 +4965,7 @@ void Person::DoStuff(){ } } - if(targetanimation==spinkickanim||targetanimation==staffspinhitreversalanim||targetanimation==staffspinhitreversedanim||targetanimation==staffhitreversalanim||targetanimation==staffhitreversedanim||targetanimation==hurtidleanim||targetanimation==winduppunchanim||targetanimation==swordslashreversalanim||targetanimation==swordslashreversedanim||targetanimation==knifeslashreversalanim||targetanimation==knifeslashreversedanim||targetanimation==knifethrowanim||targetanimation==knifefollowanim||targetanimation==knifefollowedanim||targetanimation==killanim||targetanimation==dropkickanim||targetanimation==upunchanim||targetanimation==knifeslashstartanim||targetanimation==swordslashanim||targetanimation==staffhitanim||targetanimation==staffspinhitanim||targetanimation==staffgroundsmashanim||targetanimation==spinkickreversalanim||targetanimation==sweepreversalanim||targetanimation==lowkickanim||targetanimation==sweepreversedanim||targetanimation==rabbitkickreversalanim||targetanimation==rabbitkickreversedanim||targetanimation==jumpreversalanim||targetanimation==jumpreversedanim){ + if(animTarget==spinkickanim||animTarget==staffspinhitreversalanim||animTarget==staffspinhitreversedanim||animTarget==staffhitreversalanim||animTarget==staffhitreversedanim||animTarget==hurtidleanim||animTarget==winduppunchanim||animTarget==swordslashreversalanim||animTarget==swordslashreversedanim||animTarget==knifeslashreversalanim||animTarget==knifeslashreversedanim||animTarget==knifethrowanim||animTarget==knifefollowanim||animTarget==knifefollowedanim||animTarget==killanim||animTarget==dropkickanim||animTarget==upunchanim||animTarget==knifeslashstartanim||animTarget==swordslashanim||animTarget==staffhitanim||animTarget==staffspinhitanim||animTarget==staffgroundsmashanim||animTarget==spinkickreversalanim||animTarget==sweepreversalanim||animTarget==lowkickanim||animTarget==sweepreversedanim||animTarget==rabbitkickreversalanim||animTarget==rabbitkickreversedanim||animTarget==jumpreversalanim||animTarget==jumpreversedanim){ //close hands and yell if(righthandmorphend!=1&&righthandmorphness==targetrighthandmorphness){ righthandmorphness=0; @@ -5001,13 +4985,7 @@ void Person::DoStuff(){ targetheadmorphness=1; } } - /* - if(speechdelay>.25){ - if(headmorphend!=2)headmorphness=0; - headmorphend=2; - targetheadmorphness=1; - } - */ + bool behind; behind=0; if(hasvictim){ @@ -5016,8 +4994,8 @@ void Person::DoStuff(){ } } - if(!dead&&targetanimation!=hurtidleanim) - if(behind||targetanimation==killanim||targetanimation==knifethrowanim||targetanimation==knifefollowanim||targetanimation==spinkickreversalanim||targetanimation==rabbitkickreversedanim||targetanimation==jumpreversedanim){ + if(!dead&&animTarget!=hurtidleanim) + if(behind||animTarget==killanim||animTarget==knifethrowanim||animTarget==knifefollowanim||animTarget==spinkickreversalanim||animTarget==rabbitkickreversedanim||animTarget==jumpreversedanim){ if(headmorphend!=4||headmorphness==targetheadmorphness){ headmorphend=4; //headmorphness=1; @@ -5026,11 +5004,11 @@ void Person::DoStuff(){ } if(weaponactive!=-1){ - if(weapons.type[weaponids[weaponactive]]!=staff){ + if(weapons[weaponids[weaponactive]].getType()!=staff){ righthandmorphstart=1; righthandmorphend=1; } - if(weapons.type[weaponids[weaponactive]]==staff){ + if(weapons[weaponids[weaponactive]].getType()==staff){ righthandmorphstart=2; righthandmorphend=2; } @@ -5039,7 +5017,7 @@ void Person::DoStuff(){ terrainnormal=terrain.getNormal(coords.x,coords.z); - if(animation[targetanimation].attack!=reversal){ + if(animation[animTarget].attack!=reversal){ if(!isnormal(coords.x)) coords=oldcoords; oldcoords=coords; @@ -5048,18 +5026,18 @@ void Person::DoStuff(){ flatfacing=0; flatfacing.z=1; - flatfacing=DoRotation(flatfacing,0,rotation,0); + flatfacing=DoRotation(flatfacing,0,yaw,0); facing=flatfacing; ReflectVector(&facing,terrainnormal); Normalise(&facing); - if(isRun()||targetanimation==sneakanim||targetanimation==rollanim||targetanimation==walkanim){ + if(isRun()||animTarget==sneakanim||animTarget==rollanim||animTarget==walkanim){ if(onterrain)targettilt2=-facing.y*20; else targettilt2=0; } onterrain=0; - if(!isRun()&&!animation[targetanimation].attack&&targetanimation!=getupfromfrontanim&&targetanimation!=getupfrombackanim&&targetanimation!=sneakanim)targettilt2=0; - if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){ + if(!isRun()&&!animation[animTarget].attack&&animTarget!=getupfromfrontanim&&animTarget!=getupfrombackanim&&animTarget!=sneakanim)targettilt2=0; + if(animTarget==jumpupanim||animTarget==jumpdownanim||isFlip()){ flatvelocity=velocity; flatvelocity.y=0; flatvelspeed=findLength(&flatvelocity); @@ -5080,7 +5058,7 @@ void Person::DoStuff(){ else if(tilt225)tilt2=25; if(tilt2<-25)tilt2=-25; } @@ -5093,8 +5071,8 @@ void Person::DoStuff(){ } //Running velocity - //if(!creature==wolftype||targetanimation==rabbitkickanim) - if(targetanimation==rabbittackleanim){ + //if(!creature==wolftype||animTarget==rabbitkickanim) + if(animTarget==rabbittackleanim){ velocity+=facing*multiplier*speed*700*scale; velspeed=findLength(&velocity); if(velspeed>speed*65*scale){ @@ -5107,8 +5085,8 @@ void Person::DoStuff(){ velspeed=findLength(&velocity); velocity=flatfacing*velspeed; } - if(targetanimation!=rabbitrunninganim&&targetanimation!=wolfrunninganim){ - if(isRun()||targetanimation==rabbitkickanim){ + if(animTarget!=rabbitrunninganim&&animTarget!=wolfrunninganim){ + if(isRun()||animTarget==rabbitkickanim){ velocity+=facing*multiplier*speed*700*scale; velspeed=findLength(&velocity); if(velspeed>speed*45*scale){ @@ -5146,7 +5124,7 @@ void Person::DoStuff(){ velocity=flatfacing*velspeed; } - if(targetanimation==rollanim&&animation[targetanimation].label[targetframe]!=6){ + if(animTarget==rollanim&&animation[animTarget].label[frameTarget]!=6){ velocity+=facing*multiplier*speed*700*scale; velspeed=findLength(&velocity); if(velspeed>speed*45*scale){ @@ -5161,7 +5139,7 @@ void Person::DoStuff(){ } - /*if(currentanimation==rollanim&&(isCrouch()||isIdle())){ + /*if(animCurrent==rollanim&&(isCrouch()||isIdle())){ velocity+=facing*multiplier*speed*700*scale; velspeed=findLength(&velocity); if(velspeed>speed*25*scale){ @@ -5175,7 +5153,7 @@ void Person::DoStuff(){ velocity=flatfacing*velspeed; }*/ - if(targetanimation==sneakanim||targetanimation==walkanim){ + if(animTarget==sneakanim||animTarget==walkanim){ velocity+=facing*multiplier*speed*700*scale; velspeed=findLength(&velocity); if(velspeed>speed*12*scale){ @@ -5189,7 +5167,7 @@ void Person::DoStuff(){ velocity=flatfacing*velspeed; } - if((targetanimation==fightidleanim||targetanimation==knifefightidleanim)&&(currentanimation==bounceidleanim||currentanimation==hurtidleanim)){ + if((animTarget==fightidleanim||animTarget==knifefightidleanim)&&(animCurrent==bounceidleanim||animCurrent==hurtidleanim)){ velocity+=facing*multiplier*speed*700*scale; velspeed=findLength(&velocity); if(velspeed>speed*2*scale){ @@ -5204,7 +5182,7 @@ void Person::DoStuff(){ } - if((targetanimation==bounceidleanim||currentanimation==hurtidleanim)&&(currentanimation==fightidleanim||currentanimation==knifefightidleanim)){ + if((animTarget==bounceidleanim||animCurrent==hurtidleanim)&&(animCurrent==fightidleanim||animCurrent==knifefightidleanim)){ velocity-=facing*multiplier*speed*700*scale; velspeed=findLength(&velocity); if(velspeed>speed*2*scale){ @@ -5218,7 +5196,7 @@ void Person::DoStuff(){ velocity=flatfacing*velspeed*-1; } - if(targetanimation==fightsidestep){ + if(animTarget==fightsidestep){ velocity+=DoRotation(facing*multiplier*speed*700*scale,0,-90,0); velspeed=findLength(&velocity); if(velspeed>speed*12*scale){ @@ -5232,16 +5210,16 @@ void Person::DoStuff(){ velocity=DoRotation(flatfacing*velspeed,0,-90,0); } - if(targetanimation==staggerbackhighanim){ + if(animTarget==staggerbackhighanim){ coords-=facing*multiplier*speed*16*scale; velocity=0; } - if(targetanimation==staggerbackhardanim&&animation[staggerbackhardanim].label[targetframe]!=6){ + if(animTarget==staggerbackhardanim&&animation[staggerbackhardanim].label[frameTarget]!=6){ coords-=facing*multiplier*speed*20*scale; velocity=0; } - if(targetanimation==backhandspringanim){ + if(animTarget==backhandspringanim){ //coords-=facing*multiplier*50*scale; velocity+=facing*multiplier*speed*700*scale*-1; velspeed=findLength(&velocity); @@ -5255,7 +5233,7 @@ void Person::DoStuff(){ velspeed=findLength(&velocity); velocity=flatfacing*velspeed*-1; } - if(targetanimation==dodgebackanim){ + if(animTarget==dodgebackanim){ //coords-=facing*multiplier*50*scale; velocity+=facing*multiplier*speed*700*scale*-1; velspeed=findLength(&velocity); @@ -5270,33 +5248,33 @@ void Person::DoStuff(){ velocity=flatfacing*velspeed*-1; } - if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){ + if(animTarget==jumpupanim||animTarget==jumpdownanim||isFlip()){ velspeed=findLength(&velocity); } - if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){ + if(animTarget==jumpupanim||animTarget==jumpdownanim||isFlip()){ velocity.y+=gravity*multiplier; } - if(targetanimation!=climbanim&&targetanimation!=hanganim&&!isWallJump())coords+=velocity*multiplier; + if(animTarget!=climbanim&&animTarget!=hanganim&&!isWallJump())coords+=velocity*multiplier; - if(coords.yskeleton.free){ + if(animation[animTarget].attack==normalattack&&animTarget!=rabbitkickanim&&!victim->skeleton.free){ terrainnormal=victim->coords-coords; Normalise(&terrainnormal); - targetrotation=-asin(0-terrainnormal.x); - targetrotation*=360/6.28; - if(terrainnormal.z<0)targetrotation=180-targetrotation; + targetyaw=-asin(0-terrainnormal.x); + targetyaw*=360/6.28; + if(terrainnormal.z<0)targetyaw=180-targetyaw; targettilt2=-asin(terrainnormal.y)*360/6.28;//*-70; } - if(animation[targetanimation].attack==reversal&&targetanimation!=rabbittacklinganim){ - targetrotation=victim->targetrotation; + if(animation[animTarget].attack==reversal&&animTarget!=rabbittacklinganim){ + targetyaw=victim->targetyaw; } - if(targetanimation==rabbittacklinganim){ + if(animTarget==rabbittacklinganim){ coords=victim->coords; } } @@ -5383,7 +5361,7 @@ void Person::DoStuff(){ midterrain=0; midterrain.x=terrain.size*terrain.scale/2; midterrain.z=terrain.size*terrain.scale/2; - if(findDistancefastflat(&coords,&midterrain)>(terrain.size*terrain.scale/2-viewdistance)*(terrain.size*terrain.scale/2-viewdistance)){ + if(distsqflat(&coords,&midterrain)>(terrain.size*terrain.scale/2-viewdistance)*(terrain.size*terrain.scale/2-viewdistance)){ XYZ tempposit; tempposit=coords-midterrain; tempposit.y=0; @@ -5396,7 +5374,7 @@ void Person::DoStuff(){ int Person::DrawSkeleton(){ int oldplayerdetail; - if((frustum.SphereInFrustum(coords.x,coords.y+scale*3,coords.z,scale*8)&&findDistancefast(&viewer,&coords)position+skeleton.muscles[i].parent2->position)/2; glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); @@ -5758,7 +5736,7 @@ int Person::DrawSkeleton(){ } updatedelay=1+(float)(Random()%100)/1000; } - if(skeleton.free!=2&&(skeleton.free==1||skeleton.free==3||id==0||(normalsupdatedelay<=0)||targetanimation==getupfromfrontanim||targetanimation==getupfrombackanim||currentanimation==getupfromfrontanim||currentanimation==getupfrombackanim)){ + if(skeleton.free!=2&&(skeleton.free==1||skeleton.free==3||id==0||(normalsupdatedelay<=0)||animTarget==getupfromfrontanim||animTarget==getupfrombackanim||animCurrent==getupfromfrontanim||animCurrent==getupfrombackanim)){ normalsupdatedelay=1; if(playerdetail||skeleton.free==3)skeleton.drawmodel.CalculateNormals(0); if(!playerdetail||skeleton.free==3)skeleton.drawmodellow.CalculateNormals(0); @@ -5786,7 +5764,7 @@ int Person::DrawSkeleton(){ if(!skeleton.free)glTranslatef(coords.x,coords.y-.02,coords.z); if(skeleton.free)glTranslatef(coords.x,coords.y-.02,coords.z); if(!skeleton.free)glTranslatef(offset.x*scale,offset.y*scale,offset.z*scale); - if(!skeleton.free)glRotatef(rotation,0,1,0); + if(!skeleton.free)glRotatef(yaw,0,1,0); if(showpoints){ glPointSize(5); glColor4f(.4,1,.4,1); @@ -5814,7 +5792,7 @@ int Person::DrawSkeleton(){ } terrainlight=terrain.getLighting(coords.x,coords.z); - distance=findDistancefast(&viewer,&coords); + distance=distsq(&viewer,&coords); distance=(viewdistance*viewdistance-(distance-(viewdistance*viewdistance*fadestart))*(1/(1-fadestart)))/viewdistance/viewdistance; if(distance>1)distance=1; if(distance>0){ @@ -5841,7 +5819,7 @@ int Person::DrawSkeleton(){ glEnable(GL_LIGHTING); glEnable(GL_BLEND); if(canattack&&cananger) - if(animation[targetanimation].attack==normalattack||animation[targetanimation].attack==reversed){ + if(animation[animTarget].attack==normalattack||animation[animTarget].attack==reversed){ glDisable(GL_TEXTURE_2D); glColor4f(1,0,0,0.8); } @@ -5861,7 +5839,7 @@ int Person::DrawSkeleton(){ else skeleton.drawmodellow.drawdifftex(skeleton.drawmodel.textureptr); } - if(!(animation[targetanimation].attack==normalattack||animation[targetanimation].attack==reversed)) + if(!(animation[animTarget].attack==normalattack||animation[animTarget].attack==reversed)) if(tutoriallevel&&id!=0){ glPopMatrix(); glMatrixMode(GL_MODELVIEW); @@ -5871,7 +5849,7 @@ int Person::DrawSkeleton(){ glEnable(GL_LIGHTING); glEnable(GL_BLEND); if(canattack&&cananger) - if(animation[targetanimation].attack==normalattack||animation[targetanimation].attack==reversed){ + if(animation[animTarget].attack==normalattack||animation[animTarget].attack==reversed){ glDisable(GL_TEXTURE_2D); glColor4f(1,0,0,0.8); } @@ -5911,7 +5889,7 @@ int Person::DrawSkeleton(){ for(k=0;klabel==righthand||skeleton.muscles[j].parent2->label==righthand)&&skeleton.muscles[j].numvertices>0){ weaponattachmuscle=j; @@ -5925,7 +5903,7 @@ int Person::DrawSkeleton(){ weaponpoint=(skeleton.muscles[weaponattachmuscle].parent1->position+skeleton.muscles[weaponattachmuscle].parent2->position)/2; if(creature==wolftype)weaponpoint=(skeleton.joints[skeleton.jointlabels[rightwrist]].position*.7+skeleton.joints[skeleton.jointlabels[righthand]].position*.3); } - if(weapons.type[i]==staff){ + if(weapons[i].getType()==staff){ for(j=0;jlabel==righthand||skeleton.muscles[j].parent2->label==righthand)&&skeleton.muscles[j].numvertices>0){ weaponattachmuscle=j; @@ -5944,13 +5922,13 @@ int Person::DrawSkeleton(){ vec2=(skeleton.joints[skeleton.jointlabels[rightwrist]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position); CrossProduct(&vec1,&vec2,&tempnormthing); Normalise(&tempnormthing); - if(targetanimation!=staffhitanim&¤tanimation!=staffhitanim&&targetanimation!=staffgroundsmashanim&¤tanimation!=staffgroundsmashanim&&targetanimation!=staffspinhitanim&¤tanimation!=staffspinhitanim)weaponpoint+=tempnormthing*.1-skeleton.specialforward[1]*.3+(skeleton.joints[skeleton.jointlabels[rightwrist]].position-skeleton.joints[skeleton.jointlabels[rightelbow]].position); + if(animTarget!=staffhitanim&&animCurrent!=staffhitanim&&animTarget!=staffgroundsmashanim&&animCurrent!=staffgroundsmashanim&&animTarget!=staffspinhitanim&&animCurrent!=staffspinhitanim)weaponpoint+=tempnormthing*.1-skeleton.specialforward[1]*.3+(skeleton.joints[skeleton.jointlabels[rightwrist]].position-skeleton.joints[skeleton.jointlabels[rightelbow]].position); } } if(weaponactive!=k&&weaponstuck!=k){ - if(weapons.type[i]==knife)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[righthip]].position-skeleton.joints[skeleton.jointlabels[lefthip]].position)*.1+(skeleton.joints[skeleton.jointlabels[rightshoulder]].position-skeleton.joints[skeleton.jointlabels[leftshoulder]].position)*.35; - if(weapons.type[i]==sword)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33; - if(weapons.type[i]==staff)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33; + if(weapons[i].getType()==knife)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[righthip]].position-skeleton.joints[skeleton.jointlabels[lefthip]].position)*.1+(skeleton.joints[skeleton.jointlabels[rightshoulder]].position-skeleton.joints[skeleton.jointlabels[leftshoulder]].position)*.35; + if(weapons[i].getType()==sword)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33; + if(weapons[i].getType()==staff)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33; for(j=0;jlabel==abdomen||skeleton.muscles[j].parent2->label==abdomen)&&(skeleton.muscles[j].parent1->label==neck||skeleton.muscles[j].parent2->label==neck)&&skeleton.muscles[j].numvertices>0){ weaponrotatemuscle=j; @@ -5966,152 +5944,153 @@ int Person::DrawSkeleton(){ } } } - if(!skeleton.free){ - weapons.position[i]=DoRotation(DoRotation(DoRotation(weaponpoint,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords+currentoffset*(1-target)*scale+targetoffset*target*scale; - weapons.bigrotation[i]=rotation; - weapons.bigtilt[i]=tilt; - weapons.bigtilt2[i]=tilt2; - } if(skeleton.free){ - weapons.position[i]=weaponpoint*scale+coords; - weapons.bigrotation[i]=0; - weapons.bigtilt[i]=0; - weapons.bigtilt2[i]=0; + weapons[i].position=weaponpoint*scale+coords; + weapons[i].bigrotation=0; + weapons[i].bigtilt=0; + weapons[i].bigtilt2=0; + } else { + weapons[i].position=DoRotation(DoRotation(DoRotation(weaponpoint,0,0,tilt),tilt2,0,0),0,yaw,0)*scale+coords+currentoffset*(1-target)*scale+targetoffset*target*scale; + weapons[i].bigrotation=yaw; + weapons[i].bigtilt=tilt; + weapons[i].bigtilt2=tilt2; } - weapons.rotation1[i]=skeleton.muscles[weaponrotatemuscle].lastrotate1; - weapons.rotation2[i]=skeleton.muscles[weaponrotatemuscle].lastrotate2; - weapons.rotation3[i]=skeleton.muscles[weaponrotatemuscle].lastrotate3; + weapons[i].rotation1=skeleton.muscles[weaponrotatemuscle].lastrotate1; + weapons[i].rotation2=skeleton.muscles[weaponrotatemuscle].lastrotate2; + weapons[i].rotation3=skeleton.muscles[weaponrotatemuscle].lastrotate3; if(weaponactive==k){ - if(weapons.type[i]==knife){ - weapons.smallrotation[i]=180; - weapons.smallrotation2[i]=0; + if(weapons[i].getType()==knife){ + weapons[i].smallrotation=180; + weapons[i].smallrotation2=0; if(isCrouch()||wasCrouch()){ - weapons.smallrotation2[i]=20; + weapons[i].smallrotation2=20; } - if(targetanimation==hurtidleanim){ - weapons.smallrotation2[i]=50; + if(animTarget==hurtidleanim){ + weapons[i].smallrotation2=50; } - if((currentanimation==crouchstabanim&&targetanimation==crouchstabanim)||(currentanimation==backhandspringanim&&targetanimation==backhandspringanim)){ + if((animCurrent==crouchstabanim&&animTarget==crouchstabanim)||(animCurrent==backhandspringanim&&animTarget==backhandspringanim)){ XYZ temppoint1,temppoint2,tempforward; float distance; temppoint1=skeleton.joints[skeleton.jointlabels[righthand]].position; - temppoint2=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(target); + temppoint2=animation[animCurrent].weapontarget[frameCurrent]*(1-target)+animation[animTarget].weapontarget[frameTarget]*(target); distance=findDistance(&temppoint1,&temppoint2); - weapons.rotation2[i]=asin((temppoint1.y-temppoint2.y)/distance); - weapons.rotation2[i]*=360/6.28; + weapons[i].rotation2=asin((temppoint1.y-temppoint2.y)/distance); + weapons[i].rotation2*=360/6.28; temppoint1.y=0; temppoint2.y=0; - weapons.rotation1[i]=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2)); - weapons.rotation1[i]*=360/6.28; - weapons.rotation3[i]=0; - weapons.smallrotation[i]=-90; - weapons.smallrotation2[i]=0; - if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i]; + weapons[i].rotation1=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2)); + weapons[i].rotation1*=360/6.28; + weapons[i].rotation3=0; + weapons[i].smallrotation=-90; + weapons[i].smallrotation2=0; + if(temppoint1.x>temppoint2.x)weapons[i].rotation1=360-weapons[i].rotation1; } - if((currentanimation==knifeslashreversalanim&&targetanimation==knifeslashreversalanim)||(currentanimation==knifeslashreversedanim&&targetanimation==knifeslashreversedanim)){ + if((animCurrent==knifeslashreversalanim&&animTarget==knifeslashreversalanim)||(animCurrent==knifeslashreversedanim&&animTarget==knifeslashreversedanim)){ XYZ temppoint1,temppoint2,tempforward; float distance; temppoint1=skeleton.joints[skeleton.jointlabels[righthand]].position; - temppoint2=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(target); + temppoint2=animation[animCurrent].weapontarget[frameCurrent]*(1-target)+animation[animTarget].weapontarget[frameTarget]*(target); distance=findDistance(&temppoint1,&temppoint2); - weapons.rotation2[i]=asin((temppoint1.y-temppoint2.y)/distance); - weapons.rotation2[i]*=360/6.28; + weapons[i].rotation2=asin((temppoint1.y-temppoint2.y)/distance); + weapons[i].rotation2*=360/6.28; temppoint1.y=0; temppoint2.y=0; - weapons.rotation1[i]=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2)); - weapons.rotation1[i]*=360/6.28; - weapons.rotation3[i]=0; - weapons.smallrotation[i]=90; - weapons.smallrotation2[i]=0; - if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i]; + weapons[i].rotation1=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2)); + weapons[i].rotation1*=360/6.28; + weapons[i].rotation3=0; + weapons[i].smallrotation=90; + weapons[i].smallrotation2=0; + if(temppoint1.x>temppoint2.x)weapons[i].rotation1=360-weapons[i].rotation1; } - if(targetanimation==knifethrowanim){ - weapons.smallrotation[i]=90; - //weapons.smallrotation2[i]=-90; - weapons.smallrotation2[i]=0; - weapons.rotation1[i]=0; - weapons.rotation2[i]=0; - weapons.rotation3[i]=0; + if(animTarget==knifethrowanim){ + weapons[i].smallrotation=90; + //weapons[i].smallrotation2=-90; + weapons[i].smallrotation2=0; + weapons[i].rotation1=0; + weapons[i].rotation2=0; + weapons[i].rotation3=0; } - if(targetanimation==knifesneakattackanim&&targetframe<5){ - weapons.smallrotation[i]=-90; - weapons.rotation1[i]=0; - weapons.rotation2[i]=0; - weapons.rotation3[i]=0; + if(animTarget==knifesneakattackanim&&frameTarget<5){ + weapons[i].smallrotation=-90; + weapons[i].rotation1=0; + weapons[i].rotation2=0; + weapons[i].rotation3=0; } } - if(weapons.type[i]==sword){ - weapons.smallrotation[i]=0; - weapons.smallrotation2[i]=0; - if(targetanimation==knifethrowanim){ - weapons.smallrotation[i]=-90; - weapons.smallrotation2[i]=0; - weapons.rotation1[i]=0; - weapons.rotation2[i]=0; - weapons.rotation3[i]=0; + if(weapons[i].getType()==sword){ + weapons[i].smallrotation=0; + weapons[i].smallrotation2=0; + if(animTarget==knifethrowanim){ + weapons[i].smallrotation=-90; + weapons[i].smallrotation2=0; + weapons[i].rotation1=0; + weapons[i].rotation2=0; + weapons[i].rotation3=0; } - if((targetanimation==swordgroundstabanim&¤tanimation==swordgroundstabanim)||(targetanimation==swordsneakattackanim&¤tanimation==swordsneakattackanim)||(targetanimation==swordslashparryanim&¤tanimation==swordslashparryanim)||(targetanimation==swordslashparriedanim&¤tanimation==swordslashparriedanim)||(targetanimation==swordslashreversalanim&¤tanimation==swordslashreversalanim)||(targetanimation==swordslashreversedanim&¤tanimation==swordslashreversedanim)||(targetanimation==knifeslashreversalanim&¤tanimation==knifeslashreversalanim)||(targetanimation==knifeslashreversedanim&¤tanimation==knifeslashreversedanim)||(targetanimation==swordslashanim&¤tanimation==swordslashanim)||(targetanimation==drawleftanim&¤tanimation==drawleftanim)||(currentanimation==backhandspringanim&&targetanimation==backhandspringanim)){ + if((animTarget==swordgroundstabanim&&animCurrent==swordgroundstabanim)||(animTarget==swordsneakattackanim&&animCurrent==swordsneakattackanim)||(animTarget==swordslashparryanim&&animCurrent==swordslashparryanim)||(animTarget==swordslashparriedanim&&animCurrent==swordslashparriedanim)||(animTarget==swordslashreversalanim&&animCurrent==swordslashreversalanim)||(animTarget==swordslashreversedanim&&animCurrent==swordslashreversedanim)||(animTarget==knifeslashreversalanim&&animCurrent==knifeslashreversalanim)||(animTarget==knifeslashreversedanim&&animCurrent==knifeslashreversedanim)||(animTarget==swordslashanim&&animCurrent==swordslashanim)||(animTarget==drawleftanim&&animCurrent==drawleftanim)||(animCurrent==backhandspringanim&&animTarget==backhandspringanim)){ XYZ temppoint1,temppoint2,tempforward; float distance; - temppoint1=animation[currentanimation].position[skeleton.jointlabels[righthand]][currentframe]*(1-target)+animation[targetanimation].position[skeleton.jointlabels[righthand]][targetframe]*(target); //skeleton.joints[skeleton.jointlabels[righthand]].position; - temppoint2=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(target); + temppoint1=animation[animCurrent].position[skeleton.jointlabels[righthand]][frameCurrent]*(1-target)+animation[animTarget].position[skeleton.jointlabels[righthand]][frameTarget]*(target); //skeleton.joints[skeleton.jointlabels[righthand]].position; + temppoint2=animation[animCurrent].weapontarget[frameCurrent]*(1-target)+animation[animTarget].weapontarget[frameTarget]*(target); distance=findDistance(&temppoint1,&temppoint2); - weapons.rotation2[i]=asin((temppoint1.y-temppoint2.y)/distance); - weapons.rotation2[i]*=360/6.28; + weapons[i].rotation2=asin((temppoint1.y-temppoint2.y)/distance); + weapons[i].rotation2*=360/6.28; temppoint1.y=0; temppoint2.y=0; - weapons.rotation1[i]=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2)); - weapons.rotation1[i]*=360/6.28; - weapons.rotation3[i]=0; - weapons.smallrotation[i]=90; - weapons.smallrotation2[i]=0; - if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i]; + weapons[i].rotation1=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2)); + weapons[i].rotation1*=360/6.28; + weapons[i].rotation3=0; + weapons[i].smallrotation=90; + weapons[i].smallrotation2=0; + if(temppoint1.x>temppoint2.x)weapons[i].rotation1=360-weapons[i].rotation1; } } - if(weapons.type[i]==staff){ - weapons.smallrotation[i]=100; - weapons.smallrotation2[i]=0; - if((targetanimation==staffhitanim&¤tanimation==staffhitanim)||(targetanimation==staffhitreversedanim&¤tanimation==staffhitreversedanim)||(targetanimation==staffspinhitreversedanim&¤tanimation==staffspinhitreversedanim)||(targetanimation==staffgroundsmashanim&¤tanimation==staffgroundsmashanim)||(targetanimation==staffspinhitanim&¤tanimation==staffspinhitanim)){ + if(weapons[i].getType()==staff){ + weapons[i].smallrotation=100; + weapons[i].smallrotation2=0; + if((animTarget==staffhitanim&&animCurrent==staffhitanim)||(animTarget==staffhitreversedanim&&animCurrent==staffhitreversedanim)||(animTarget==staffspinhitreversedanim&&animCurrent==staffspinhitreversedanim)||(animTarget==staffgroundsmashanim&&animCurrent==staffgroundsmashanim)||(animTarget==staffspinhitanim&&animCurrent==staffspinhitanim)){ XYZ temppoint1,temppoint2,tempforward; float distance; - temppoint1=animation[currentanimation].position[skeleton.jointlabels[righthand]][currentframe]*(1-target)+animation[targetanimation].position[skeleton.jointlabels[righthand]][targetframe]*(target); //skeleton.joints[skeleton.jointlabels[righthand]].position; - temppoint2=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(target); + temppoint1=animation[animCurrent].position[skeleton.jointlabels[righthand]][frameCurrent]*(1-target)+animation[animTarget].position[skeleton.jointlabels[righthand]][frameTarget]*(target); //skeleton.joints[skeleton.jointlabels[righthand]].position; + temppoint2=animation[animCurrent].weapontarget[frameCurrent]*(1-target)+animation[animTarget].weapontarget[frameTarget]*(target); distance=findDistance(&temppoint1,&temppoint2); - weapons.rotation2[i]=asin((temppoint1.y-temppoint2.y)/distance); - weapons.rotation2[i]*=360/6.28; + weapons[i].rotation2=asin((temppoint1.y-temppoint2.y)/distance); + weapons[i].rotation2*=360/6.28; temppoint1.y=0; temppoint2.y=0; - weapons.rotation1[i]=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2)); - weapons.rotation1[i]*=360/6.28; - weapons.rotation3[i]=0; - weapons.smallrotation[i]=90; - weapons.smallrotation2[i]=0; - if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i]; + weapons[i].rotation1=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2)); + weapons[i].rotation1*=360/6.28; + weapons[i].rotation3=0; + weapons[i].smallrotation=90; + weapons[i].smallrotation2=0; + if(temppoint1.x>temppoint2.x)weapons[i].rotation1=360-weapons[i].rotation1; } } } if(weaponactive!=k&&weaponstuck!=k){ - if(weapons.type[i]==knife){ - weapons.smallrotation[i]=-70; - weapons.smallrotation2[i]=10; + if(weapons[i].getType()==knife){ + weapons[i].smallrotation=-70; + weapons[i].smallrotation2=10; } - if(weapons.type[i]==sword){ - weapons.smallrotation[i]=-100; - weapons.smallrotation2[i]=-8; + if(weapons[i].getType()==sword){ + weapons[i].smallrotation=-100; + weapons[i].smallrotation2=-8; } - if(weapons.type[i]==staff){ - weapons.smallrotation[i]=-100; - weapons.smallrotation2[i]=-8; + if(weapons[i].getType()==staff){ + weapons[i].smallrotation=-100; + weapons[i].smallrotation2=-8; } } if(weaponstuck==k){ - if(weaponstuckwhere==0)weapons.smallrotation[i]=180; - else weapons.smallrotation[i]=0; - weapons.smallrotation2[i]=10; + if(weaponstuckwhere==0) + weapons[i].smallrotation=180; + else + weapons[i].smallrotation=0; + weapons[i].smallrotation2=10; } } } @@ -6119,8 +6098,8 @@ int Person::DrawSkeleton(){ calcrot=0; if(skeleton.free)calcrot=1; - if(animation[targetanimation].attack||isRun()||targetanimation==staggerbackhardanim||isFlip()||targetanimation==climbanim||targetanimation==sneakanim||targetanimation==rollanim||targetanimation==walkanim||targetanimation==backhandspringanim||isFlip()||isWallJump())calcrot=1; - if(currentanimation!=targetanimation)calcrot=1; + if(animation[animTarget].attack||isRun()||animTarget==staggerbackhardanim||isFlip()||animTarget==climbanim||animTarget==sneakanim||animTarget==rollanim||animTarget==walkanim||animTarget==backhandspringanim||isFlip()||isWallJump())calcrot=1; + if(animCurrent!=animTarget)calcrot=1; //if(id==0)calcrot=1; if(skeleton.free==2)calcrot=0; @@ -6144,7 +6123,7 @@ int Person::SphereCheck(XYZ *p1,float radius, XYZ *p, XYZ *move, float *rotate, oldp1=*p1; *p1=*p1-*move; - if(findDistancefast(p1,&model->boundingspherecenter)>radius*radius+model->boundingsphereradius*model->boundingsphereradius)return -1; + if(distsq(p1,&model->boundingspherecenter)>radius*radius+model->boundingsphereradius*model->boundingsphereradius)return -1; if(*rotate)*p1=DoRotation(*p1,0,-*rotate,0); for(i=0;i<4;i++){ for (j=0;jTriangleNum;j++){ @@ -6170,22 +6149,22 @@ int Person::SphereCheck(XYZ *p1,float radius, XYZ *p, XYZ *move, float *rotate, end.y-=radius; if(LineFacetd(&start,&end,&model->vertex[model->Triangles[j].vertex[0]],&model->vertex[model->Triangles[j].vertex[1]],&model->vertex[model->Triangles[j].vertex[2]],&model->facenormals[j],&point)){ p1->y=point.y+radius; - if((targetanimation==jumpdownanim||isFlip())){ - if(isFlip()&&(targetframe<5||animation[targetanimation].label[targetframe]==7||animation[targetanimation].label[targetframe]==4))RagDoll(0); + if((animTarget==jumpdownanim||isFlip())){ + if(isFlip()&&(frameTarget<5||animation[animTarget].label[frameTarget]==7||animation[animTarget].label[frameTarget]==4))RagDoll(0); - if(targetanimation==jumpupanim){jumppower=-4;targetanimation=getIdle();} + if(animTarget==jumpupanim){jumppower=-4;animTarget=getIdle();} target=0; - targetframe=0; + frameTarget=0; onterrain=1; if(id==0){ - OPENAL_SetPaused(channels[whooshsound], true); + pause_sound(whooshsound); OPENAL_SetVolume(channels[whooshsound], 0); } - if((targetanimation==jumpdownanim||isFlip())&&!wasLanding()&&!wasLandhard()){ + if((animTarget==jumpdownanim||isFlip())&&!wasLanding()&&!wasLandhard()){ if(isFlip())jumppower=-4; - targetanimation=getLanding(); + animTarget=getLanding(); emit_sound_at(landsound, coords, 128.); if(id==0){ @@ -6222,7 +6201,7 @@ int Person::SphereCheck(XYZ *p1,float radius, XYZ *p, XYZ *move, float *rotate, p1->x, p1->y, p1->z, radius/2); end=*p1-point; if(dotproduct(&model->facenormals[j],&end)>0&&intersecting){ - if((targetanimation==jumpdownanim||targetanimation==jumpupanim||isFlip())){ + if((animTarget==jumpdownanim||animTarget==jumpupanim||isFlip())){ start=velocity; velocity-=DoRotation(model->facenormals[j],0,*rotate,0)*findLength(&velocity)*abs(normaldotproduct(velocity,DoRotation(model->facenormals[j],0,*rotate,0)));//(distance-radius*.5)/multiplier; if(findLengthfast(&start)