X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FPerson.cpp;h=47212bd59ac3eee01265620103cc9898e86e4f63;hb=bbf8873b80baf3cb468ac12b3f62b0938320fef1;hp=936235864341e7c1426aa34d64ae5aa89160456a;hpb=44146d06c780d3aaa283672fedb08b8870ebe1b9;p=lugaru.git diff --git a/Source/Person.cpp b/Source/Person.cpp index 9362358..47212bd 100644 --- a/Source/Person.cpp +++ b/Source/Person.cpp @@ -10,7 +10,7 @@ of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. @@ -21,15 +21,16 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /**> HEADER FILES <**/ #include "Person.h" +#include "openal_wrapper.h" +#include "Animation.h" +#include "Sounds.h" +#include "Awards.h" +#include "Game.h" extern float multiplier; -extern Animation animation[animation_count]; -extern FSOUND_SAMPLE *samp[100]; -extern int channels[100]; extern Terrain terrain; extern float gravity; extern int environment; -extern Sprites sprites; extern int detail; extern FRUSTUM frustum; extern XYZ viewer; @@ -47,15 +48,11 @@ extern bool osx; extern bool autoslomo; extern float camerashake; extern float woozy; -extern float terraindetail; extern float viewdistance; extern float blackout; extern int difficulty; -extern Weapons weapons; extern bool decals; extern float fadestart; -extern Person player[maxplayers]; -extern int numplayers; extern bool freeze; extern bool winfreeze; extern float flashamount,flashr,flashg,flashb; @@ -68,15 +65,10 @@ extern bool tiltweird; extern bool midweird; extern bool proportionweird; extern bool vertexweird[6]; -extern GLubyte texturearray[512*512*3]; extern XYZ envsound[30]; extern float envsoundvol[30]; extern float envsoundlife[30]; extern int numenvsounds; -extern int bonus; -extern float bonusvalue; -extern float bonustotal; -extern float bonustime; extern int tutoriallevel; extern float smoketex; extern int tutorialstage; @@ -84,112 +76,74 @@ extern bool reversaltrain; extern bool canattack; extern bool cananger; extern float damagedealt; -extern float damagetaken; extern int hostile; extern float hostiletime; -extern int mainmenu; - -extern int numfalls; -extern int numflipfail; -extern int numseen; -extern int numswordattack; -extern int numknifeattack; -extern int numunarmedattack; -extern int numescaped; -extern int numflipped; -extern int numwallflipped; -extern int numthrowkill; -extern int numafterkill; -extern int numreversals; -extern int numattacks; -extern int maxalarmed; extern int indialogue; extern bool gamestarted; -extern FSOUND_STREAM * strm[20]; -extern "C" void PlaySoundEx(int channel, FSOUND_SAMPLE *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused); -extern "C" void PlayStreamEx(int chan, FSOUND_STREAM *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused); - -void Person::CheckKick(){ - static XYZ relative; - static int i; - - float damagemult=1*power; - if(creature==wolftype)damagemult=2.5*power; - damagemult*=power; - - if(hasvictim) - if(targetanimation==rabbitkickanim&&victim&&victim!=this&¤tframe>=2&¤tanimation==rabbitkickanim){ - if(findDistancefast(&coords,&victim->coords)<1.2){ - if(!victim->skeleton.free){ - relative=velocity; - Normalise(&relative); - relative=coords+relative*1; - if(animation[victim->targetanimation].height!=lowheight){ - victim->spurt=1; - DoBlood(.2,250); - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 128); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); - } - victim->RagDoll(0); - relative=velocity; - relative.y=0; - Normalise(&relative); - for(i=0;iskeleton.num_joints;i++){ - victim->skeleton.joints[i].velocity+=relative*120*damagemult; - } - victim->Puff(neck); - victim->DoDamage(100*damagemult/victim->protectionhigh); - if(id==0)camerashake+=.4; +Person player[maxplayers]; - target=0; - currentframe=3; - targetanimation=backflipanim; - targetframe=4; - velocity=facing*-10; - velocity.y=5; - skeleton.free=0; - if(id==0)FSOUND_SetPaused(channels[whooshsound], FALSE); - - //if(victim->damage>victim->damagetolerance){ - if(id==0){ - bonus=cannon; - bonustime=0; - bonusvalue=100; - } - //} - } - else if (victim->isCrouch()){ - targetanimation=rabbitkickreversedanim; - currentanimation=rabbitkickreversedanim; - victim->currentanimation=rabbitkickreversalanim; - victim->targetanimation=rabbitkickreversalanim; - targettilt2=0; - currentframe=0; - targetframe=1; - target=0; - velocity=0; - victim->oldcoords=victim->coords; - coords=victim->coords; - victim->targetrotation=targetrotation; - victim->victim=this; - } - } - } - } +void Person::CheckKick() +{ + if (!(hasvictim + && (targetanimation == rabbitkickanim + && victim + && victim != this + && currentframe >= 2 + && currentanimation == rabbitkickanim) + && (findDistancefast(&coords,&victim->coords) < 1.2) + && (!victim->skeleton.free))) + return; + + if (animation[victim->targetanimation].height!=lowheight) + { + float damagemult = (creature == wolftype ? 2.5 : 1.) * power * power; + XYZ relative = velocity; + relative.y=0; + Normalise(&relative); + + victim->spurt=1; + DoBlood(.2,250); + if(tutoriallevel!=1) + emit_sound_at(heavyimpactsound, victim->coords); + victim->RagDoll(0); + for(int i=0;iskeleton.num_joints;i++){ + victim->skeleton.joints[i].velocity+=relative*120*damagemult; + } + victim->Puff(neck); + victim->DoDamage(100*damagemult/victim->protectionhigh); + if(id==0)camerashake+=.4; + + target=0; + currentframe=3; + targetanimation=backflipanim; + targetframe=4; + velocity=facing*-10; + velocity.y=5; + skeleton.free=0; + if(id==0) + resume_stream(whooshsound); + + award_bonus(id, cannon); + } + else if (victim->isCrouch()) + { + targetanimation=rabbitkickreversedanim; + currentanimation=rabbitkickreversedanim; + victim->currentanimation=rabbitkickreversalanim; + victim->targetanimation=rabbitkickreversalanim; + targettilt2=0; + currentframe=0; + targetframe=1; + target=0; + velocity=0; + victim->oldcoords=victim->coords; + coords=victim->coords; + victim->targetrotation=targetrotation; + victim->victim=this; + } } void Person::CatchFire(){ @@ -201,62 +155,20 @@ void Person::CatchFire(){ 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=skeleton.joints[howmany].position*scale+coords; - sprites.MakeSprite(flamesprite, flatfacing,flatvelocity, 1,1,1, 2, 1); + Sprite::MakeSprite(flamesprite, flatfacing,flatvelocity, 1,1,1, 2, 1); } onfiredelay=0.5; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=0; - vel[1]=0; - vel[2]=0; - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - //PlaySoundEx( firesound, samp[firesound], NULL, TRUE); - PlayStreamEx( stream_firesound, strm[stream_firesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[stream_firesound], gLoc, vel); - FSOUND_SetVolume(channels[stream_firesound], 256); - FSOUND_SetPaused(channels[stream_firesound], FALSE); + emit_sound_at(firestartsound, coords); + + emit_stream_at(stream_firesound, coords); flamedelay=0; onfire=1; } -bool Person::isIdle(){ - if(targetanimation==sleepanim||targetanimation==sitanim||targetanimation==talkidleanim||targetanimation==hurtidleanim||targetanimation==bounceidleanim||targetanimation==talkidleanim||targetanimation==fightidleanim||targetanimation==knifefightidleanim||targetanimation==swordfightidleanim||targetanimation==swordfightidlebothanim||targetanimation==fightsidestep||targetanimation==wolfidle)return 1; - else return 0; -} - -bool Person::isSitting(){ - if(targetanimation==sitanim)return 1; - if(targetanimation==sitwallanim)return 1; - else return 0; -} - -bool Person::isSleeping(){ - if(targetanimation==sleepanim)return 1; - if(targetanimation==dead1anim)return 1; - if(targetanimation==dead2anim)return 1; - if(targetanimation==dead3anim)return 1; - if(targetanimation==dead4anim)return 1; - else return 0; -} - -bool Person::wasIdle(){ - if(currentanimation==sleepanim||currentanimation==talkidleanim||currentanimation==sitanim||currentanimation==hurtidleanim||currentanimation==bounceidleanim||currentanimation==fightidleanim||currentanimation==swordfightidleanim||currentanimation==swordfightidlebothanim||currentanimation==knifefightidleanim||currentanimation==fightsidestep||currentanimation==wolfidle)return 1; - else return 0; -} int Person::getIdle(){ if(indialogue!=-1&&howactive==typeactive&&creature==rabbittype)return talkidleanim; if(hasvictim&&victim!=this/*||(id==0&&attackkeydown)*/)if(/*(id==0&&attackkeydown)||*/(!victim->dead&&victim->aitype!=passivetype&&victim->aitype!=searchtype&&aitype!=passivetype&&aitype!=searchtype&&victim->id= solidhit && bonus <= megacombo) + award_bonus(playerid, bonus == megacombo ? bonus : bonus + 1); + else + award_bonus(playerid, solidhit); } void Person::DoBlood(float howmuch,int which){ @@ -434,36 +258,33 @@ void Person::DoBlood(float howmuch,int which){ 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(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale; if(skeleton.free){ - sprites.MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1); - sprites.MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1); + 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){ - sprites.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); - sprites.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,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); + } } if(Random()%2==0) for(int i=0;i<3;i++){ if(Random()%2!=0){ bloodvel=0; - if(!skeleton.free){ + 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; + } else { bloodvel.z=10; bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale; + bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((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(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale; bloodvel*=.2; if(skeleton.free){ - sprites.MakeSprite(splintersprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1); - sprites.special[sprites.numsprites-1]=3; - } - if(!skeleton.free){ - sprites.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); - sprites.special[sprites.numsprites-1]=3; + 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::setLastSpriteSpecial(3); } } } @@ -477,16 +298,16 @@ void Person::DoBlood(float howmuch,int which){ bleedxint=abs(Random()%512); bleedyint=abs(Random()%512); } - if(creature==wolftype) - while(wolfbloodText[bleedxint*512*3+bleedyint*3+0]>which+4||wolfbloodText[bleedxint*512*3+bleedyint*3+0]500||bleedyint>500){ - bleedxint=abs(Random()%512); - bleedyint=abs(Random()%512); - } - bleedy=bleedxint; - bleedx=bleedyint; - bleedy/=realtexdetail; - bleedx/=realtexdetail; - direction=abs(Random()%2)*2-1; + if(creature==wolftype) + while(wolfbloodText[bleedxint*512*3+bleedyint*3+0]>which+4||wolfbloodText[bleedxint*512*3+bleedyint*3+0]500||bleedyint>500){ + bleedxint=abs(Random()%512); + bleedyint=abs(Random()%512); + } + bleedy=bleedxint; + bleedx=bleedyint; + bleedy/=realtexdetail; + bleedx/=realtexdetail; + direction=abs(Random()%2)*2-1; } } @@ -501,14 +322,6 @@ void Person::DoBloodBig(float howmuch,int which){ if(tutoriallevel!=1||id==0) if(aitype!=playercontrolled&&howmuch>0){ int whichsound=-1; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(creature==wolftype){ int i=abs(Random()%2); @@ -530,12 +343,8 @@ void Person::DoBloodBig(float howmuch,int which){ //if(i==2)whichsound=rabbitpain2sound; } - if(whichsound!=-1){ - PlaySoundEx( whichsound, samp[whichsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whichsound], gLoc, vel); - FSOUND_SetVolume(channels[whichsound], 512); - FSOUND_SetPaused(channels[whichsound], FALSE); - } + if(whichsound!=-1) + emit_sound_at(whichsound, coords); } if(id==0&&howmuch>0){ @@ -561,13 +370,13 @@ void Person::DoBloodBig(float howmuch,int which){ 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(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale; if(skeleton.free){ - sprites.MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1); - sprites.MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1); + 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){ - sprites.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); - sprites.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,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); + } } } int offsetx=0,offsety=0; @@ -608,7 +417,7 @@ void Person::DoBloodBig(float howmuch,int which){ if(i>endx)endx=i; if(j>endy)endy=j; } - } + } } if(creature==wolftype) for(i=0;i<512;i++){ @@ -619,7 +428,7 @@ void Person::DoBloodBig(float howmuch,int which){ if(i>endx)endx=i; if(j>endy)endy=j; } - } + } } startx+=offsetx; @@ -666,8 +475,7 @@ void Person::DoBloodBig(float howmuch,int which){ } } glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); - if(detail!=2||osx)DoMipmaps(5,0,0,skeleton.skinsize,skeleton.skinsize); - else DoMipmaps(0,startx/realtexdetail,endx/realtexdetail,starty/realtexdetail,endy/realtexdetail); + DoMipmaps(); bleedxint=0; bleedyint=0; @@ -697,7 +505,7 @@ void Person::DoBloodBig(float howmuch,int which){ bloodloss+=bleeding*3; if(tutoriallevel!=1&&aitype!=playercontrolled&&bloodloss>damagetolerance*2/3&&bloodlossendx)endx=i; if(j>endy)endy=j; } - } + } } if(creature==wolftype) for(i=0;i<512;i++){ @@ -835,7 +643,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ if(i>endx)endx=i; if(j>endy)endy=j; } - } + } } startx+=offsetx; endx+=offsetx; @@ -895,8 +703,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ } } glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); - if(detail!=2||osx)DoMipmaps(5,0,0,skeleton.skinsize,skeleton.skinsize); - else DoMipmaps(0,startx/realtexdetail,endx/realtexdetail,starty/realtexdetail,endy/realtexdetail); + DoMipmaps(); bleedy=(1+coordsy)*512; bleedx=coordsx*512; @@ -915,7 +722,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ bloodloss+=bleeding*3; if(tutoriallevel!=1&&aitype!=playercontrolled&&bloodloss>damagetolerance*2/3&&bloodlossskeleton.skinsize-1)endx=skeleton.skinsize-1; - if(endy>skeleton.skinsize-1)endy=skeleton.skinsize-1; - if((endx>startx&&endy>starty)||howmanylevels){ - - newstartx=startx; - newstarty=starty; - newendx=endx; - newendy=endy; - - for(i=startx;iaitype == playercontrolled + || hostiletime > 1 + || staggerdelay <= 0) + && victim->targetanimation != jumpupanim + && victim->targetanimation != jumpdownanim + && (tutoriallevel != 1 || cananger) + && hostile)) + return; + + if (normaldotproduct (victim->facing, victim->coords-coords) > 0 + && (victim->id != 0 || difficulty >= 2) + && (creature != wolftype || victim->creature == wolftype)) + return; + + if(targetanimation==sweepanim){ + targetanimation=sweepreversedanim; + currentanimation=sweepreversedanim; + victim->currentanimation=sweepreversalanim; + victim->targetanimation=sweepreversalanim; + } + if(targetanimation==spinkickanim){ + targetanimation=spinkickreversedanim; + currentanimation=spinkickreversedanim; + victim->currentanimation=spinkickreversalanim; + victim->targetanimation=spinkickreversalanim; + } + if(targetanimation==upunchanim||targetanimation==rabbittacklinganim){ + if(targetanimation==rabbittacklinganim){ + currentframe=6; + targetframe=7; + victim->currentframe=6; + victim->targetframe=7; + } + targetanimation=upunchreversedanim; + currentanimation=upunchreversedanim; + victim->currentanimation=upunchreversalanim; + victim->targetanimation=upunchreversalanim; + } + if(targetanimation==staffhitanim&&findDistancefast(&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; + victim->num_weapons--; + if(victim->num_weapons){ + victim->weaponids[0]=victim->weaponids[victim->num_weapons]; + if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0; + } + + victim->weaponactive=-1; + for(int j=0;jcurrentanimation=staffhitreversalanim; + victim->targetanimation=staffhitreversalanim; + } + if(targetanimation==staffspinhitanim&&findDistancefast(&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; + victim->num_weapons--; + if(victim->num_weapons){ + victim->weaponids[0]=victim->weaponids[victim->num_weapons]; + if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0; + } + + victim->weaponactive=-1; + for(int j=0;jcurrentanimation=staffspinhitreversalanim; + victim->targetanimation=staffspinhitreversalanim; + } + if(targetanimation==swordslashanim&&findDistancefast(&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; + victim->num_weapons--; + if(victim->num_weapons){ + victim->weaponids[0]=victim->weaponids[victim->num_weapons]; + if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0; + } + + victim->weaponactive=-1; + for(int j=0;jcurrentanimation=swordslashreversalanim; + victim->targetanimation=swordslashreversalanim; + } + if(targetanimation==knifeslashstartanim&&findDistancefast(&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; + victim->num_weapons--; + if(victim->num_weapons){ + victim->weaponids[0]=victim->weaponids[victim->num_weapons]; + if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0; + } + + victim->weaponactive=-1; + for(int j=0;jcurrentanimation=knifeslashreversalanim; + victim->targetanimation=knifeslashreversalanim; + } + if(targetanimation!=knifeslashstartanim&&targetanimation!=staffhitanim&&targetanimation!=staffspinhitanim&&targetanimation!=winduppunchanim&&targetanimation!=wolfslapanim&&targetanimation!=swordslashanim&&targetanimation!=swordslashanim){ + victim->targettilt2=targettilt2; + victim->currentframe=currentframe; + victim->targetframe=targetframe; + victim->target=target; + victim->velocity=0; + victim->oldcoords=victim->coords; + victim->coords=coords; + victim->targetrotation=targetrotation; + victim->rotation=targetrotation; + victim->victim=this; + } + if(targetanimation==winduppunchanim){ + targetanimation=winduppunchblockedanim; + victim->targetanimation=blockhighleftanim; + victim->targetframe=1; + victim->target=.5; + victim->victim=this; + victim->targetrotation=targetrotation+180; + } + if(targetanimation==wolfslapanim){ + targetanimation=winduppunchblockedanim; + victim->targetanimation=blockhighleftanim; + victim->targetframe=1; + victim->target=.5; + victim->victim=this; + victim->targetrotation=targetrotation+180; + } + if((targetanimation==swordslashanim||targetanimation==staffhitanim||targetanimation==staffspinhitanim)&&victim->weaponactive!=-1){ + targetanimation=swordslashparriedanim; + parriedrecently=.4; + victim->parriedrecently=0; + victim->targetanimation=swordslashparryanim; + victim->targetframe=1; + victim->target=.5; + victim->victim=this; + victim->targetrotation=targetrotation+180; + + if(abs(Random()%20)==0||weapons.type[victim->weaponids[victim->weaponactive]]==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); } -} - - -void Person::Reverse(){ - if(victim->aitype==playercontrolled||hostiletime>1) - if(victim->targetanimation!=jumpupanim&&victim->targetanimation!=jumpdownanim&&((tutoriallevel!=1||cananger)&&hostile)){ - if(normaldotproduct(victim->facing,victim->coords-coords)>0&&!(victim->id==0&&difficulty<2)&&(creature!=wolftype||victim->creature==wolftype))return; - if(victim->aitype!=playercontrolled&&staggerdelay>0)return; - if(targetanimation==sweepanim){ - targetanimation=sweepreversedanim; - currentanimation=sweepreversedanim; - victim->currentanimation=sweepreversalanim; - victim->targetanimation=sweepreversalanim; - } - if(targetanimation==spinkickanim){ - targetanimation=spinkickreversedanim; - currentanimation=spinkickreversedanim; - victim->currentanimation=spinkickreversalanim; - victim->targetanimation=spinkickreversalanim; - } - if(targetanimation==upunchanim||targetanimation==rabbittacklinganim){ - if(targetanimation==rabbittacklinganim){ - currentframe=6; - targetframe=7; - victim->currentframe=6; - victim->targetframe=7; - } - targetanimation=upunchreversedanim; - currentanimation=upunchreversedanim; - victim->currentanimation=upunchreversalanim; - victim->targetanimation=upunchreversalanim; - } - if(targetanimation==staffhitanim&&findDistancefast(&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; - victim->num_weapons--; - if(victim->num_weapons){ - victim->weaponids[0]=victim->weaponids[victim->num_weapons]; - if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0; - } - - victim->weaponactive=-1; - for(int j=0;jcurrentanimation=staffhitreversalanim; - victim->targetanimation=staffhitreversalanim; - } - if(targetanimation==staffspinhitanim&&findDistancefast(&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; - victim->num_weapons--; - if(victim->num_weapons){ - victim->weaponids[0]=victim->weaponids[victim->num_weapons]; - if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0; - } - - victim->weaponactive=-1; - for(int j=0;jcurrentanimation=staffspinhitreversalanim; - victim->targetanimation=staffspinhitreversalanim; - } - if(targetanimation==swordslashanim&&findDistancefast(&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; - victim->num_weapons--; - if(victim->num_weapons){ - victim->weaponids[0]=victim->weaponids[victim->num_weapons]; - if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0; - } - - victim->weaponactive=-1; - for(int j=0;jcurrentanimation=swordslashreversalanim; - victim->targetanimation=swordslashreversalanim; - } - if(targetanimation==knifeslashstartanim&&findDistancefast(&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; - victim->num_weapons--; - if(victim->num_weapons){ - victim->weaponids[0]=victim->weaponids[victim->num_weapons]; - if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0; - } - - victim->weaponactive=-1; - for(int j=0;jcurrentanimation=knifeslashreversalanim; - victim->targetanimation=knifeslashreversalanim; - } - if(targetanimation!=knifeslashstartanim&&targetanimation!=staffhitanim&&targetanimation!=staffspinhitanim&&targetanimation!=winduppunchanim&&targetanimation!=wolfslapanim&&targetanimation!=swordslashanim&&targetanimation!=swordslashanim){ - victim->targettilt2=targettilt2; - victim->currentframe=currentframe; - victim->targetframe=targetframe; - victim->target=target; - victim->velocity=0; - victim->oldcoords=victim->coords; - victim->coords=coords; - victim->targetrotation=targetrotation; - victim->rotation=targetrotation; - victim->victim=this; - } - if(targetanimation==winduppunchanim){ - targetanimation=winduppunchblockedanim; - victim->targetanimation=blockhighleftanim; - victim->targetframe=1; - victim->target=.5; - victim->victim=this; - victim->targetrotation=targetrotation+180; - } - if(targetanimation==wolfslapanim){ - targetanimation=winduppunchblockedanim; - victim->targetanimation=blockhighleftanim; - victim->targetframe=1; - victim->target=.5; - victim->victim=this; - victim->targetrotation=targetrotation+180; - } - if((targetanimation==swordslashanim||targetanimation==staffhitanim||targetanimation==staffspinhitanim)&&victim->weaponactive!=-1){ - targetanimation=swordslashparriedanim; - parriedrecently=.4; - victim->parriedrecently=0; - victim->targetanimation=swordslashparryanim; - victim->targetframe=1; - victim->target=.5; - victim->victim=this; - victim->targetrotation=targetrotation+180; - - if(abs(Random()%20)==0||weapons.type[victim->weaponids[victim->weaponactive]]==knife){ - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - 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; - - PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[swordstaffsound], gLoc, vel); - FSOUND_SetVolume(channels[swordstaffsound], 512); - FSOUND_SetPaused(channels[swordstaffsound], FALSE); - } - else{ - PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel); - FSOUND_SetVolume(channels[metalhitsound], 512); - FSOUND_SetPaused(channels[metalhitsound], FALSE); - } - } - XYZ aim; - victim->Puff(righthand); - victim->target=0; - victim->targetframe=0; - victim->targetanimation=staggerbackhighanim; - victim->targetrotation=targetrotation+180; - victim->target=0; - weapons.owner[victim->weaponids[0]]=-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; - victim->num_weapons--; - if(victim->num_weapons){ - victim->weaponids[0]=victim->weaponids[num_weapons]; - if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0; - } - victim->weaponactive=-1; - for(int i=0;iweaponids[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; - - PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[swordstaffsound], gLoc, vel); - FSOUND_SetVolume(channels[swordstaffsound], 512); - FSOUND_SetPaused(channels[swordstaffsound], FALSE); - } - else{ - PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel); - FSOUND_SetVolume(channels[metalhitsound], 512); - FSOUND_SetPaused(channels[metalhitsound], FALSE); - } - } - - XYZ aim; - Puff(righthand); - target=0; - targetframe=0; - targetanimation=staggerbackhighanim; - targetrotation=targetrotation+180; - target=0; - weapons.owner[weaponids[0]]=-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; - num_weapons--; - if(num_weapons){ - weaponids[0]=weaponids[num_weapons]; - if(weaponstuck==num_weapons)weaponstuck=0; - } - weaponactive=-1; - for(int i=0;icoords)>.2){ - //victim->targetanimation=sweepanim; - victim->targetanimation=dodgebackanim; - victim->targetframe=0; - victim->target=0; - //victim->velocity=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->targettilt2=-asin(rotatetarget.y)*360/6.28;//*-70; - - victim->lastattack3=victim->lastattack2; - victim->lastattack2=victim->lastattack; - victim->lastattack=victim->targetanimation; - } - else - { - victim->targetanimation=sweepanim; - victim->targetframe=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->targettilt2=-asin(rotatetarget.y)*360/6.28;//*-70; - - victim->lastattack3=victim->lastattack2; - victim->lastattack2=victim->lastattack; - victim->lastattack=victim->targetanimation; - } - } + 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->target=0; + weapons.owner[victim->weaponids[0]]=-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; + victim->num_weapons--; + if(victim->num_weapons){ + victim->weaponids[0]=victim->weaponids[num_weapons]; + if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0; + } + victim->weaponactive=-1; + for(int i=0;iweaponids[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, coords); + } + else{ + emit_sound_at(metalhitsound, coords); + } + } + + XYZ aim; + Puff(righthand); + target=0; + targetframe=0; + targetanimation=staggerbackhighanim; + targetrotation=targetrotation+180; + target=0; + weapons.owner[weaponids[0]]=-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; + num_weapons--; + if(num_weapons){ + weaponids[0]=weaponids[num_weapons]; + if(weaponstuck==num_weapons)weaponstuck=0; + } + weaponactive=-1; + for(int i=0;icoords)>.2){ + victim->targetanimation=dodgebackanim; + victim->targetframe=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->targettilt2=-asin(rotatetarget.y)*360/6.28;//*-70; + + victim->lastattack3=victim->lastattack2; + victim->lastattack2=victim->lastattack; + victim->lastattack=victim->targetanimation; + } + else + { + victim->targetanimation=sweepanim; + victim->targetframe=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->targettilt2=-asin(rotatetarget.y)*360/6.28;//*-70; + + victim->lastattack3=victim->lastattack2; + victim->lastattack2=victim->lastattack; + victim->lastattack=victim->targetanimation; + } + } - velocity=0; - victim->velocity=0; + velocity=0; + victim->velocity=0; - if(aitype!=playercontrolled)feint=0; - if(aitype!=playercontrolled&&Random()%3==0&&escapednum<2&&difficulty==2)feint=1; - 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(aitype!=playercontrolled)feint=0; + if(aitype!=playercontrolled&&Random()%3==0&&escapednum<2&&difficulty==2)feint=1; + 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->targetanimation].attack==reversal)numreversals++; } void Person::DoDamage(float howmuch){ @@ -1366,7 +1072,7 @@ void Person::DoDamage(float howmuch){ if(aitype==passivetype&&damagedamagetolerance*2/3&&creature==rabbittype){ - if(abs(Random()%2)==0){aitype=gethelptype; + if(abs(Random()%2)==0){aitype=gethelptype; lastseentime=12; } else aitype=attacktypecutoff; @@ -1384,23 +1090,12 @@ void Person::DoDamage(float howmuch){ flatvelocity2.x+=(float)(abs(Random()%100)-50)/10; flatvelocity2.y+=(float)(abs(Random()%100)-50)/10; flatvelocity2.z+=(float)(abs(Random()%100)-50)/10; - sprites.MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, 3, 1); - sprites.MakeSprite(bloodsprite, flatfacing2,flatvelocity2, 1,1,1, .4, 1); - sprites.MakeSprite(cloudsprite, flatfacing2,flatvelocity2*0, .6,0,0, 1, .5); + Sprite::MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, 3, 1); + Sprite::MakeSprite(bloodsprite, flatfacing2,flatvelocity2, 1,1,1, .4, 1); + Sprite::MakeSprite(cloudsprite, flatfacing2,flatvelocity2*0, .6,0,0, 1, .5); } - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=0; - vel[1]=0; - vel[2]=0; - PlaySoundEx( splattersound, samp[splattersound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[splattersound], gLoc, vel); - FSOUND_SetVolume(channels[splattersound], 256); - FSOUND_SetPaused(channels[splattersound], FALSE); + emit_sound_at(splattersound, coords); skeleton.free=2; DoDamage(10000); @@ -1410,9 +1105,7 @@ void Person::DoDamage(float howmuch){ slomodelay=.2; }*/ if(!dead&&creature==wolftype){ - bonus=Wolfbonus; - bonustime=0; - bonusvalue=300; + award_bonus(0, Wolfbonus); } dead=2; coords=20; @@ -1421,14 +1114,6 @@ void Person::DoDamage(float howmuch){ if(tutoriallevel!=1||id==0) if(speechdelay<=0&&!dead&&aitype!=playercontrolled){ int whichsound=-1; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(creature==wolftype){ int i=abs(Random()%2); @@ -1451,10 +1136,7 @@ void Person::DoDamage(float howmuch){ } if(whichsound!=-1){ - PlaySoundEx( whichsound, samp[whichsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whichsound], gLoc, vel); - FSOUND_SetVolume(channels[whichsound], 512); - FSOUND_SetPaused(channels[whichsound], FALSE); + emit_sound_at(whichsound, coords); } } speechdelay=.3; @@ -1468,7 +1150,7 @@ void Person::DoHead(){ static XYZ facing; static float lookspeed=500; - if(!freeze&&!winfreeze&&(!mainmenu||!gamestarted)){ + if(!freeze&&!winfreeze){ //head facing targetheadrotation=(float)((int)((0-rotation-targetheadrotation+180)*100)%36000)/100; @@ -1641,8 +1323,8 @@ void Person::RagDoll(bool checkcollision){ skeleton.joints[j].position-=average; } - whichpatchx=coords.x/(terrain.size/subdivision*terrain.scale*terraindetail); - whichpatchz=coords.z/(terrain.size/subdivision*terrain.scale*terraindetail); + whichpatchx=coords.x/(terrain.size/subdivision*terrain.scale); + whichpatchz=coords.z/(terrain.size/subdivision*terrain.scale); if(terrain.patchobjectnum[whichpatchx][whichpatchz]) for(l=0;l=1||detail==2)if(detail==2)if(findDistancefast(&footpoint,&viewer)=1||detail==2)if(detail==2)if(findDistancefast(&footpoint,&viewer)distancemax){ -distancemax=findDistancefast(average,skeleton.joints[j].position); -} -} -distancemax=fast_sqrt(distancemax); -//Collide with player -if(skeleton.free<1){ -start=start-coords; -end=end-coords; -if(rotation)start=DoRotation(start,0,-rotation,0); -if(rotation)end=DoRotation(end,0,-rotation,0); -} -tempbulletloc[0]=start; -tempbulletloc[1]=end; -if(sphere_line_intersection(tempbulletloc[0].x,tempbulletloc[0].y,tempbulletloc[0].z, -tempbulletloc[1].x,tempbulletloc[1].y,tempbulletloc[1].z, -average.x, average.y, average.z, distancemax)){ -for(int j=0;jposition.x)/2), -(-(skeleton.joints[j].position.y+skeleton.joints[j].parent->position.y)/2), -(-(skeleton.joints[j].position.z+skeleton.joints[j].parent->position.z)/2)); -glTranslatef(tempbulletloc[0].x,tempbulletloc[0].y,tempbulletloc[0].z); -glGetFloatv(GL_MODELVIEW_MATRIX,M); -tempbulletloc[0].x=M[12]; -tempbulletloc[0].y=M[13]; -tempbulletloc[0].z=M[14]; -glPopMatrix(); -glPushMatrix(); -glLoadIdentity(); -glScalef(1,1/skeleton.joints[j].length,1); -glRotatef(skeleton.joints[j].rotate2-90,0,0,1); -glRotatef(skeleton.joints[j].rotate1-90,0,1,0); -glTranslatef( (-(skeleton.joints[j].position.x+skeleton.joints[j].parent->position.x)/2), -(-(skeleton.joints[j].position.y+skeleton.joints[j].parent->position.y)/2), -(-(skeleton.joints[j].position.z+skeleton.joints[j].parent->position.z)/2)); -glTranslatef(tempbulletloc[1].x,tempbulletloc[1].y,tempbulletloc[1].z); -glGetFloatv(GL_MODELVIEW_MATRIX,M); -tempbulletloc[1].x=M[12]; -tempbulletloc[1].y=M[13]; -tempbulletloc[1].z=M[14]; -glPopMatrix(); -collide=skeletonmodels[skeleton.joints[j].modelnum].LineCheck(tempbulletloc[0],tempbulletloc[1],&collisionpoint); -if(collide!=-1) -{ -glPushMatrix(); -glLoadIdentity(); -glTranslatef( (skeleton.joints[j].position.x+skeleton.joints[j].parent->position.x)/2, -(skeleton.joints[j].position.y+skeleton.joints[j].parent->position.y)/2, -(skeleton.joints[j].position.z+skeleton.joints[j].parent->position.z)/2); -glRotatef(-skeleton.joints[j].rotate1+90,0,1,0); -glRotatef(-skeleton.joints[j].rotate2+90,0,0,1); -glScalef(1,skeleton.joints[j].length,1); -glTranslatef(collisionpoint.x,collisionpoint.y,collisionpoint.z); -glGetFloatv(GL_MODELVIEW_MATRIX,M); -collisionpoint.x=M[12]; -collisionpoint.y=M[13]; -collisionpoint.z=M[14]; -glPopMatrix(); -hitstruct.collision=1; -hitstruct.hitlocation=collisionpoint; -hitstruct.joint1=&skeleton.joints[j]; -hitstruct.joint2=skeleton.joints[j].parent; -} -} -} -for(int j=0;jposition.x+skeleton.muscles[j].parent2->position.x)/2), -(-(skeleton.muscles[j].parent1->position.y+skeleton.muscles[j].parent2->position.y)/2), -(-(skeleton.muscles[j].parent1->position.z+skeleton.muscles[j].parent2->position.z)/2)); - -glTranslatef(tempbulletloc[0].x,tempbulletloc[0].y,tempbulletloc[0].z); -glGetFloatv(GL_MODELVIEW_MATRIX,M); -tempbulletloc[0].x=M[12]; -tempbulletloc[0].y=M[13]; -tempbulletloc[0].z=M[14]; -glPopMatrix(); -glPushMatrix(); -glLoadIdentity(); -glScalef(1,1/skeleton.muscles[j].length,1); -glRotatef(skeleton.muscles[j].rotate3,0,1,0); -glRotatef(skeleton.muscles[j].rotate2-90,0,0,1); -glRotatef(skeleton.muscles[j].rotate1-90,0,1,0); - -glTranslatef( (-(skeleton.muscles[j].parent1->position.x+skeleton.muscles[j].parent2->position.x)/2), -(-(skeleton.muscles[j].parent1->position.y+skeleton.muscles[j].parent2->position.y)/2), -(-(skeleton.muscles[j].parent1->position.z+skeleton.muscles[j].parent2->position.z)/2)); -glTranslatef(tempbulletloc[1].x,tempbulletloc[1].y,tempbulletloc[1].z); -glGetFloatv(GL_MODELVIEW_MATRIX,M); -tempbulletloc[1].x=M[12]; -tempbulletloc[1].y=M[13]; -tempbulletloc[1].z=M[14]; -glPopMatrix(); -collide=skeletonmodels[skeleton.muscles[j].parent1->modelnum].LineCheck(tempbulletloc[0],tempbulletloc[1],&collisionpoint); -if(collide!=-1) -{ -glPushMatrix(); -glLoadIdentity(); -glTranslatef( (skeleton.muscles[j].parent1->position.x+skeleton.muscles[j].parent2->position.x)/2, -(skeleton.muscles[j].parent1->position.y+skeleton.muscles[j].parent2->position.y)/2, -(skeleton.muscles[j].parent1->position.z+skeleton.muscles[j].parent2->position.z)/2); -glRotatef(-skeleton.muscles[j].rotate1+90,0,1,0); -glRotatef(-skeleton.muscles[j].rotate2+90,0,0,1); -glRotatef(-skeleton.muscles[j].rotate3,0,1,0); -glScalef(1,findDistance(skeleton.muscles[j].parent1->position,skeleton.muscles[j].parent2->position),1); -glTranslatef(collisionpoint.x,collisionpoint.y,collisionpoint.z); -glGetFloatv(GL_MODELVIEW_MATRIX,M); -collisionpoint.x=M[12]; -collisionpoint.y=M[13]; -collisionpoint.z=M[14]; -glPopMatrix(); -hitstruct.collision=1; -hitstruct.hitlocation=collisionpoint; -hitstruct.joint1=skeleton.muscles[j].parent1; -hitstruct.joint2=skeleton.muscles[j].parent2; -} -} -} -} -if(skeleton.free<1){ -if(rotation)hitstruct.hitlocation=DoRotation(hitstruct.hitlocation,0,rotation,0); -hitstruct.hitlocation=hitstruct.hitlocation+coords; -} -return hitstruct; -} -*/ -void Person::DoAnimations(){ +void Person::DoAnimations(){ if(!skeleton.free){ int i = 0; static float oldtarget; @@ -1934,7 +1447,7 @@ void Person::DoAnimations(){ if(isIdle()&¤tanimation!=getIdle())normalsupdatedelay=0; if(targetanimation==tempanim||currentanimation==tempanim){ - animation[tempanim]=tempanimation; + animation[tempanim]=tempanimation; } if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){ float gLoc[3]; @@ -1947,10 +1460,10 @@ void Person::DoAnimations(){ vel[2]=velocity.z; if(id==0){ - FSOUND_3D_SetAttributes(channels[whooshsound], gLoc, vel); - FSOUND_SetVolume(channels[whooshsound], 64*findLength(&velocity)/5); + OPENAL_3D_SetAttributes(channels[whooshsound], gLoc, vel); + OPENAL_SetVolume(channels[whooshsound], 64*findLength(&velocity)/5); } - if(((velocity.y<-15)||(crouchkeydown&&velocity.y<-8))&&abs(velocity.y)*4>fast_sqrt(velocity.x*velocity.x*velocity.z*velocity.z))landhard=1; + if(((velocity.y<-15)||(crouchkeydown&&velocity.y<-8))&&abs(velocity.y)*4>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))){ @@ -1974,7 +1487,7 @@ void Person::DoAnimations(){ crouchtogglekeydown=0; if(aitype==playercontrolled)feint=0; } - else + else { if(!crouchtogglekeydown&&animation[targetanimation].attack==reversed&&aitype==playercontrolled&&(escapednum<2||reversaltrain))feint=1; if(!isFlip())crouchtogglekeydown=1; @@ -1988,19 +1501,8 @@ void Person::DoAnimations(){ if(target>=1){ if(targetanimation==rollanim&&targetframe==3&&onfire){ onfire=0; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=0; - vel[1]=0; - vel[2]=0; - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_SetPaused(channels[stream_firesound], TRUE); + emit_sound_at(fireendsound, coords); + pause_sound(stream_firesound); deathbleeding=0; } @@ -2018,27 +1520,12 @@ void Person::DoAnimations(){ //victim->DoDamage(30); if(creature==wolftype){ DoBloodBig(0,255); - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - FSOUND_SetVolume(channels[clawslicesound], 128); - FSOUND_SetPaused(channels[clawslicesound], FALSE); + emit_sound_at(clawslicesound, victim->coords); victim->spurt=1; victim->DoBloodBig(1/victim->armorhead,210); } - if(id==0){ - bonus=TackleBonus; - bonustime=0; - bonusvalue=5; - if(victim->aitype==gethelptype)bonusvalue=50; - } + award_bonus(id, TackleBonus, + victim->aitype == gethelptype ? 50 : 0); } } @@ -2048,34 +1535,10 @@ void Person::DoAnimations(){ else if(weaponactive==0)weaponactive=-1; if(weaponactive==-1){ - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - - PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifesheathesound], gLoc, vel); - FSOUND_SetVolume(channels[knifesheathesound], 128); - FSOUND_SetPaused(channels[knifesheathesound], FALSE); + emit_sound_at(knifesheathesound, coords); } if(weaponactive!=-1){ - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - - PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - FSOUND_SetVolume(channels[knifedrawsound], 128); - FSOUND_SetPaused(channels[knifedrawsound], FALSE); + emit_sound_at(knifedrawsound, coords, 128); } } drawtogglekeydown=1; @@ -2084,14 +1547,6 @@ void Person::DoAnimations(){ 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)*/){ int whichsound; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(onterrain){ if(terrain.getOpacity(coords.x,coords.z)<.2){ if(animation[targetanimation].label[targetframe]==1)whichsound=footstepsound; @@ -2103,11 +1558,11 @@ void Person::DoAnimations(){ FootLand(0,1); } - } + } if(terrain.getOpacity(coords.x,coords.z)>=.2){ if(animation[targetanimation].label[targetframe]==1)whichsound=footstepsound3; else whichsound=footstepsound4; - } + } } if(!onterrain){ if(animation[targetanimation].label[targetframe]==1)whichsound=footstepsound3; @@ -2125,12 +1580,7 @@ void Person::DoAnimations(){ else if(animation[targetanimation].label[targetframe]==4)whichsound=knifeswishsound; if(animation[targetanimation].label[targetframe]==8&&tutoriallevel!=1)whichsound=landsound2; - PlaySoundEx( whichsound, samp[whichsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whichsound], gLoc, vel); - if(whichsound!=knifeswishsound)FSOUND_SetVolume(channels[whichsound], 128); - if(whichsound!=knifeswishsound&&(targetanimation==staffhitanim||targetanimation==staffgroundsmashanim||targetanimation==staffspinhitanim))FSOUND_SetVolume(channels[whichsound], 256); - if(whichsound==knifeswishsound)FSOUND_SetVolume(channels[whichsound], 512); - FSOUND_SetPaused(channels[whichsound], FALSE); + emit_sound_at(whichsound, coords, 256.); if(id==0) if(whichsound==footstepsound||whichsound==footstepsound2||whichsound==footstepsound3||whichsound==footstepsound4){ @@ -2143,10 +1593,7 @@ void Person::DoAnimations(){ if(animation[targetanimation].label[targetframe]==3){ whichsound--; - PlaySoundEx( whichsound, samp[whichsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whichsound], gLoc, vel); - FSOUND_SetVolume(channels[whichsound], 128); - FSOUND_SetPaused(channels[whichsound], FALSE); + emit_sound_at(whichsound, coords, 128.); } } @@ -2156,14 +1603,6 @@ void Person::DoAnimations(){ 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)*/){ int whichsound=-1; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(animation[targetanimation].label[targetframe]==4&&aitype!=playercontrolled){ if(animation[targetanimation].attack!=neutral){ i=abs(Random()%4); @@ -2187,16 +1626,13 @@ void Person::DoAnimations(){ //if(animation[targetanimation].label[targetframe]==8)whichsound=landsound2; if(whichsound!=-1){ - PlaySoundEx( whichsound, samp[whichsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whichsound], gLoc, vel); - FSOUND_SetVolume(channels[whichsound], 512); - FSOUND_SetPaused(channels[whichsound], FALSE); + emit_sound_at(whichsound, coords); } } - if((!wasLanding()&&!wasLandhard())&¤tanimation!=getIdle()&&(isLanding()||isLandhard())){ + if((!wasLanding()&&!wasLandhard())&¤tanimation!=getIdle()&&(isLanding()||isLandhard())){ FootLand(0,1); FootLand(1,1); } @@ -2213,18 +1649,7 @@ void Person::DoAnimations(){ if(findDistancefastflat(&coords,&weapons.position[i])<4&&weaponactive==-1){ if(findDistancefast(&coords,&weapons.position[i])>=1){ if(weapons.type[i]!=staff){ - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - FSOUND_SetVolume(channels[knifedrawsound], 128); - FSOUND_SetPaused(channels[knifedrawsound], FALSE); + emit_sound_at(knifedrawsound, coords, 128.); } weaponactive=0; @@ -2250,14 +1675,6 @@ void Person::DoAnimations(){ 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){ - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; bool fleshstuck=0; if(weapons.owner[i]!=-1) if(victim->weaponstuck!=-1){ @@ -2267,17 +1684,11 @@ void Person::DoAnimations(){ } if(!fleshstuck){ if(weapons.type[i]!=staff){ - PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - FSOUND_SetVolume(channels[knifedrawsound], 128); - FSOUND_SetPaused(channels[knifedrawsound], FALSE); + emit_sound_at(knifedrawsound, coords, 128.); } } if(fleshstuck){ - PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel); - FSOUND_SetVolume(channels[fleshstabremovesound], 128); - FSOUND_SetPaused(channels[fleshstabremovesound], FALSE); + emit_sound_at(fleshstabremovesound, coords, 128.); } weaponactive=0; if(weapons.owner[i]!=-1){ @@ -2305,7 +1716,7 @@ void Person::DoAnimations(){ footpoint=weapons.position[i]; if(victim->weaponstuck!=-1){ if(victim->weaponids[victim->weaponstuck]==i){ - if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3); + if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3); weapons.bloody[i]=2; weapons.blooddrip[i]=5; victim->weaponstuck=-1; @@ -2345,34 +1756,10 @@ void Person::DoAnimations(){ } } if(weaponactive==-1){ - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - - PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifesheathesound], gLoc, vel); - FSOUND_SetVolume(channels[knifesheathesound], 128); - FSOUND_SetPaused(channels[knifesheathesound], FALSE); + emit_sound_at(knifesheathesound, coords, 128.); } if(weaponactive!=-1){ - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - - PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - FSOUND_SetVolume(channels[knifedrawsound], 128); - FSOUND_SetPaused(channels[knifedrawsound], FALSE); + emit_sound_at(knifedrawsound, coords, 128.); } } @@ -2397,19 +1784,7 @@ void Person::DoAnimations(){ if((targetanimation==rabbitrunninganim||targetanimation==wolfrunninganim)&&id==0){ targetanimation=rabbittackleanim; targetframe=0; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - - PlaySoundEx( jumpsound, samp[jumpsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[jumpsound], gLoc, vel); - FSOUND_SetVolume(channels[jumpsound], 128); - FSOUND_SetPaused(channels[jumpsound], FALSE); + emit_sound_at(jumpsound, coords); } float closestdist; @@ -2445,19 +1820,7 @@ void Person::DoAnimations(){ if(rotatetarget.z<0)targetrotation=180-targetrotation; } if(targetanimation!=rabbitrunninganim){ - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - - PlaySoundEx( jumpsound, samp[jumpsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[jumpsound], gLoc, vel); - FSOUND_SetVolume(channels[jumpsound], 128); - FSOUND_SetPaused(channels[jumpsound], FALSE); + emit_sound_at(jumpsound, coords, 128.); } } } @@ -2477,25 +1840,11 @@ void Person::DoAnimations(){ DoBlood(.2,250); if(creature==wolftype)DoBloodBig(0,250); } - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 128); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); + emit_sound_at(heavyimpactsound, victim->coords, 128.); } if(creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - FSOUND_SetVolume(channels[clawslicesound], 128); - FSOUND_SetPaused(channels[clawslicesound], FALSE); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2/victim->armorhead,175); } @@ -2513,9 +1862,7 @@ void Person::DoAnimations(){ victim->Puff(head); victim->DoDamage(damagemult*100/victim->protectionhead); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } @@ -2527,23 +1874,9 @@ void Person::DoAnimations(){ victim->spurt=1; if(creature==wolftype)DoBloodBig(0,235); } - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whooshhitsound], gLoc, vel); - FSOUND_SetVolume(channels[whooshhitsound], 512); - FSOUND_SetPaused(channels[whooshhitsound], FALSE); + emit_sound_at(whooshhitsound, victim->coords); if(creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - FSOUND_SetVolume(channels[clawslicesound], 128); - FSOUND_SetPaused(channels[clawslicesound], FALSE); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2,175); } @@ -2571,25 +1904,11 @@ void Person::DoAnimations(){ if(id==0)camerashake+=.4; victim->spurt=1; DoBlood(.2,250); - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 160); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); + emit_sound_at(heavyimpactsound, victim->coords, 160.); } if(creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - FSOUND_SetVolume(channels[clawslicesound], 128); - FSOUND_SetPaused(channels[clawslicesound], FALSE); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2/victim->armorhead,175); } @@ -2607,16 +1926,10 @@ void Person::DoAnimations(){ victim->Puff(head); victim->DoDamage(damagemult*150/victim->protectionhead); - if(victim->damage>victim->damagetolerance){ - if(id==0){ - bonus=style; - bonustime=0; - bonusvalue=150; - } - } - else if(id==0){ - SolidHitBonus(); - } + if(victim->damage>victim->damagetolerance) + award_bonus(id, style); + else + SolidHitBonus(id); } } @@ -2626,25 +1939,11 @@ void Person::DoAnimations(){ if(id==0)camerashake+=.4; victim->spurt=1; DoBlood(.2,250); - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 160); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); + emit_sound_at(heavyimpactsound, victim->coords, 160.); } if(creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - FSOUND_SetVolume(channels[clawslicesound], 128); - FSOUND_SetPaused(channels[clawslicesound], FALSE); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2/victim->armorhead,175); } @@ -2662,16 +1961,10 @@ void Person::DoAnimations(){ victim->Puff(head); victim->DoDamage(damagemult*150/victim->protectionhead); - if(victim->damage>victim->damagetolerance){ - if(id==0){ - bonus=style; - bonustime=0; - bonusvalue=150; - } - } - else if(id==0){ - SolidHitBonus(); - } + if(victim->damage>victim->damagetolerance) + award_bonus(id, style); + else + SolidHitBonus(id); } } @@ -2683,18 +1976,7 @@ void Person::DoAnimations(){ victim->spurt=1; DoBlood(.2,235); } - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whooshhitsound], gLoc, vel); - FSOUND_SetVolume(channels[whooshhitsound], 512); - FSOUND_SetPaused(channels[whooshhitsound], FALSE); + emit_sound_at(whooshhitsound, victim->coords); victim->RagDoll(0); XYZ relative; relative=victim->coords-coords; @@ -2714,23 +1996,7 @@ void Person::DoAnimations(){ if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&victim->dead){ escapednum=0; if(id==0)camerashake+=.2; - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - /*PlaySoundEx( landsound2, samp[landsound2], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel); - FSOUND_SetVolume(channels[landsound2], 128); - FSOUND_SetPaused(channels[landsound2], FALSE); - */ - PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[movewhooshsound], gLoc, vel); - FSOUND_SetVolume(channels[movewhooshsound], 128); - FSOUND_SetPaused(channels[movewhooshsound], FALSE); + emit_sound_at(whooshhitsound, victim->coords, 128.); victim->skeleton.longdead=0; victim->skeleton.free=1; @@ -2763,19 +2029,8 @@ void Person::DoAnimations(){ if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*9&&victim->dead){ escapednum=0; if(id==0)camerashake+=.4; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 128); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); + emit_sound_at(heavyimpactsound, coords, 128.); } XYZ relative; relative=victim->coords-coords; @@ -2798,19 +2053,8 @@ void Person::DoAnimations(){ if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*9&&victim->skeleton.free){ escapednum=0; if(id==0)camerashake+=.4; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(tutoriallevel!=1){ - PlaySoundEx( thudsound, samp[thudsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[thudsound], gLoc, vel); - FSOUND_SetVolume(channels[thudsound], 400); - FSOUND_SetPaused(channels[thudsound], FALSE); + emit_sound_at(thudsound, coords); } victim->skeleton.longdead=0; @@ -2831,9 +2075,8 @@ void Person::DoAnimations(){ for(i=0;iskeleton.num_joints;i++){ victim->skeleton.joints[i].velocity+=relative*damagemult*20; } - if(id==0&&!victim->dead){ - SolidHitBonus(); - } + if(!victim->dead) + SolidHitBonus(id); victim->Puff(abdomen); victim->DoDamage(damagemult*20/victim->protectionhigh); @@ -2846,26 +2089,14 @@ void Person::DoAnimations(){ } if((targetanimation==crouchstabanim||targetanimation==swordgroundstabanim)&&animation[targetanimation].label[currentframe]==5){ - // if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*9){ //if(id==0)camerashake+=.4; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; 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); - PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifesheathesound], gLoc, vel); - FSOUND_SetVolume(channels[knifesheathesound], 128); - FSOUND_SetPaused(channels[knifesheathesound], FALSE); + emit_sound_at(knifesheathesound, coords, 128.); } if(victim&&hasvictim){ @@ -2911,11 +2142,8 @@ void Person::DoAnimations(){ if(whichtri!=-1){ if(victim->dead!=2){ victim->DoDamage(abs((victim->damagetolerance-victim->permanentdamage)*2)); - if(id==0&&!victim->dead){ - bonus=FinishedBonus; - bonustime=0; - bonusvalue=200; - } + if (!victim->dead) + award_bonus(id, FinishedBonus); } if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; @@ -2928,10 +2156,7 @@ void Person::DoAnimations(){ victim->skeleton.joints[i].locked=0; //victim->skeleton.joints[i].velocity=0; } - PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fleshstabsound], gLoc, vel); - FSOUND_SetVolume(channels[fleshstabsound], 128); - FSOUND_SetPaused(channels[fleshstabsound], FALSE); + emit_sound_at(fleshstabsound, coords, 128); } if(whichtri!=-1||weapons.bloody[weaponids[weaponactive]]){ @@ -2940,40 +2165,21 @@ void Person::DoAnimations(){ } if(whichtri==-1){ hasvictim=0; - PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifesheathesound], gLoc, vel); - FSOUND_SetVolume(channels[knifesheathesound], 128); - FSOUND_SetPaused(channels[knifesheathesound], FALSE); + emit_sound_at(knifesheathesound, coords, 128.); } } } } if((targetanimation==crouchstabanim||targetanimation==swordgroundstabanim)&&animation[targetanimation].label[currentframe]==6){ - // if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*9){ - //if(id==0)camerashake+=.4; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(!hasvictim){ - PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - FSOUND_SetVolume(channels[knifedrawsound], 128); - FSOUND_SetPaused(channels[knifedrawsound], FALSE); + emit_sound_at(knifedrawsound, coords, 128); } if(victim&&hasvictim){ - XYZ footvel,footpoint; + XYZ footvel,footpoint; - PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel); - FSOUND_SetVolume(channels[fleshstabremovesound], 128); - FSOUND_SetPaused(channels[fleshstabremovesound], FALSE); + emit_sound_at(fleshstabremovesound, coords, 128.); footvel=0; footpoint=(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2); @@ -3033,7 +2239,7 @@ void Person::DoAnimations(){ for(i=0;iskeleton.num_joints;i++){ victim->skeleton.joints[i].velchange=0; - victim->skeleton.joints[i].locked=0; + victim->skeleton.joints[i].locked=0; //victim->skeleton.joints[i].velocity=0; } @@ -3042,7 +2248,7 @@ void Person::DoAnimations(){ relative.y=10; Normalise(&relative); //victim->Puff(abdomen); - if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3); + if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3); if(victim->bloodlossdamagetolerance){ victim->bloodloss+=1000; @@ -3056,7 +2262,7 @@ void Person::DoAnimations(){ if(!hasvictim&&onterrain){ weapons.bloody[weaponids[weaponactive]]=0; weapons.blooddrip[weaponids[weaponactive]]=0; - } + } } if(targetanimation==upunchanim&&animation[targetanimation].label[currentframe]==5){ @@ -3067,33 +2273,10 @@ void Person::DoAnimations(){ victim->spurt=1; DoBlood(.2,235); } - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - //if(!victim->isIdle()||victim->damage>victim->damagetolerance-60){ - if(1==1){ - if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 128); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); - } - } - else { - if(tutoriallevel!=1){ - PlaySoundEx( landsound2, samp[landsound2], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel); - FSOUND_SetVolume(channels[landsound2], 256); - FSOUND_SetPaused(channels[landsound2], FALSE); - } + if(tutoriallevel!=1){ + emit_sound_at(heavyimpactsound, victim->coords, 128); } - //if(!victim->isIdle()||victim->damage>victim->damagetolerance-60) victim->RagDoll(0); XYZ relative; relative=victim->coords-coords; @@ -3114,9 +2297,7 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*60/victim->protectionhigh); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } @@ -3125,38 +2306,20 @@ void Person::DoAnimations(){ if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*2){ escapednum=0; if(id==0)camerashake+=.4; - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - //if(!victim->isIdle()||victim->damage>victim->damagetolerance-60){ if(victim->damage<=victim->damagetolerance-60&&normaldotproduct(victim->facing,victim->coords-coords)<(scale*5)*(scale*5)*0&&animation[victim->targetanimation].height!=lowheight){ if(tutoriallevel!=1){ - PlaySoundEx( thudsound, samp[thudsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[thudsound], gLoc, vel); - FSOUND_SetVolume(channels[thudsound], 512); - FSOUND_SetPaused(channels[thudsound], FALSE); + 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){ if(tutoriallevel!=1){ - PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whooshhitsound], gLoc, vel); - FSOUND_SetVolume(channels[whooshhitsound], 512); - FSOUND_SetPaused(channels[whooshhitsound], FALSE); + emit_sound_at(whooshhitsound, victim->coords); } } else { if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 256); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); - } + emit_sound_at(heavyimpactsound, victim->coords); + } } if(victim->damage>victim->damagetolerance-60||normaldotproduct(victim->facing,victim->coords-coords)>0||animation[victim->targetanimation].height==lowheight) @@ -3181,28 +2344,14 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*60/victim->protectionhigh); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } if(targetanimation==blockhighleftanim&&animation[targetanimation].label[currentframe]==5){ if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*4){ if(victim->id==0)camerashake+=.4; - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - - PlaySoundEx( landsound2, samp[landsound2], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel); - FSOUND_SetVolume(channels[landsound2], 256); - FSOUND_SetPaused(channels[landsound2], FALSE); + emit_sound_at(landsound2, victim->coords); Puff(righthand); } @@ -3211,30 +2360,16 @@ void Person::DoAnimations(){ if(targetanimation==swordslashparryanim&&animation[targetanimation].label[currentframe]==5){ if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*4){ if(victim->id==0)camerashake+=.4; - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; 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; - PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[swordstaffsound], gLoc, vel); - FSOUND_SetVolume(channels[swordstaffsound], 512); - FSOUND_SetPaused(channels[swordstaffsound], FALSE); + emit_sound_at(swordstaffsound, victim->coords); } else{ - PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel); - FSOUND_SetVolume(channels[metalhitsound], 512); - FSOUND_SetPaused(channels[metalhitsound], FALSE); + emit_sound_at(metalhitsound, victim->coords); } } @@ -3247,7 +2382,7 @@ void Person::DoAnimations(){ 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); + 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); Normalise(&aim); /*if(victim->targetanimation==jumpupanim||victim->targetanimation==jumpdownanim){ aim=DoRotation(aim,(float)abs(Random()%15)-7,(float)abs(Random()%15)-7,0); @@ -3264,35 +2399,18 @@ void Person::DoAnimations(){ weaponids[0]=weaponids[num_weapons]; } weaponactive=-1; - } + } } if(targetanimation==knifeslashstartanim&&animation[targetanimation].label[currentframe]==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){ escapednum=0; - //if(Random()%2){ if(tutoriallevel!=1)victim->DoBloodBig(1.5/victim->armorhigh,225); - //} - if(id==0){ - bonus=Slicebonus; - bonustime=0; - bonusvalue=10; - } + award_bonus(id, Slicebonus); if(tutoriallevel!=1){ - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifeslicesound], gLoc, vel); - FSOUND_SetVolume(channels[knifeslicesound], 512); - FSOUND_SetPaused(channels[knifeslicesound], FALSE); + 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)){ @@ -3310,25 +2428,25 @@ void Person::DoAnimations(){ if(tutoriallevel!=1)if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1; if(tutoriallevel!=1)weapons.blooddrip[weaponids[weaponactive]]+=3; - XYZ footvel,footpoint; + XYZ footvel,footpoint; footvel=0; if(skeleton.free){ 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; - } + } if(tutoriallevel!=1){ - if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .6, .3); + if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .6, .3); footvel=DoRotation(facing,0,90,0)*.8; //footvel.y-=.3; - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .2, 1); - sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .2, 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); + Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .2, 1); } if(tutoriallevel==1){ - sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,1,1, .6, .3); + Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,1,1, .6, .3); } victim->DoDamage(damagemult*0); } @@ -3336,40 +2454,21 @@ void Person::DoAnimations(){ if(targetanimation==swordslashanim&&animation[targetanimation].label[currentframe]==5&&victim->targetanimation!=rollanim){ if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->targetanimation!=dodgebackanim){ if(victim->weaponactive==-1||normaldotproduct(victim->facing,victim->coords-coords)>0||(Random()%2==0)){ - if(id==0){ - bonus=Slashbonus; - bonustime=0; - bonusvalue=40; - } - escapednum=0; + award_bonus(id, Slashbonus); + escapednum=0; if(tutoriallevel!=1){ if(normaldotproduct(victim->facing,victim->coords-coords)<0)victim->DoBloodBig(2/victim->armorhigh,190); else victim->DoBloodBig(2/victim->armorhigh,185); victim->deathbleeding=1; - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( swordslicesound, samp[swordslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[swordslicesound], gLoc, vel); - FSOUND_SetVolume(channels[swordslicesound], 512); - FSOUND_SetPaused(channels[swordslicesound], FALSE); + emit_sound_at(swordslicesound, victim->coords); } //victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200; - //if(animation[victim->targetanimation].attack){ - //if(victim->creature==rabbittype){ if(tutoriallevel!=1){ victim->targetframe=0; victim->targetanimation=staggerbackhardanim; victim->targetrotation=targetrotation+180; victim->target=0; } - //} - //} if(tutoriallevel!=1){ if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1; @@ -3381,49 +2480,33 @@ void Person::DoAnimations(){ //victim->bloodloss+=100*(6.5-findDistancefast(&coords,&victim->coords)); victim->DoDamage(damagemult*0); - XYZ footvel,footpoint; + XYZ footvel,footpoint; footvel=0; if(skeleton.free){ 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; - } - if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); + } + if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); footvel=DoRotation(facing,0,90,0)*.8; footvel.y-=.3; - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1); - sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 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); + Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1); } } else { - - - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; 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; - PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[swordstaffsound], gLoc, vel); - FSOUND_SetVolume(channels[swordstaffsound], 512); - FSOUND_SetPaused(channels[swordstaffsound], FALSE); + emit_sound_at(swordstaffsound, victim->coords); } else{ - PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel); - FSOUND_SetVolume(channels[metalhitsound], 512); - FSOUND_SetPaused(channels[metalhitsound], FALSE); + emit_sound_at(metalhitsound, victim->coords); } } @@ -3455,11 +2538,6 @@ void Person::DoAnimations(){ player[i].wentforweapon=0; } - /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel); - FSOUND_SetVolume(channels[metalhitsound], 512); - FSOUND_SetPaused(channels[metalhitsound], FALSE);*/ - } } } @@ -3473,18 +2551,7 @@ void Person::DoAnimations(){ if(Random()%2||creature==wolftype){ victim->spurt=1; } - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( staffheadsound, samp[staffheadsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[staffheadsound], gLoc, vel); - FSOUND_SetVolume(channels[staffheadsound], 256); - FSOUND_SetPaused(channels[staffheadsound], FALSE); + emit_sound_at(staffheadsound, victim->coords); } victim->RagDoll(0); XYZ relative; @@ -3504,11 +2571,7 @@ void Person::DoAnimations(){ if(tutoriallevel!=1){ victim->DoDamage(damagemult*120/victim->protectionhigh); - if(id==0){ - bonus=solidhit; - bonustime=0; - bonusvalue=30; - } + award_bonus(id, solidhit, 30); } } } @@ -3522,18 +2585,7 @@ void Person::DoAnimations(){ if(Random()%2||creature==wolftype){ victim->spurt=1; } - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( staffheadsound, samp[staffheadsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[staffheadsound], gLoc, vel); - FSOUND_SetVolume(channels[staffheadsound], 256); - FSOUND_SetPaused(channels[staffheadsound], FALSE); + emit_sound_at(staffheadsound, victim->coords); } victim->RagDoll(0); XYZ relative; @@ -3550,11 +2602,7 @@ void Person::DoAnimations(){ victim->Puff(head); if(tutoriallevel!=1){victim->DoDamage(damagemult*350/victim->protectionhead); - if(id==0){ - bonus=solidhit; - bonustime=0; - bonusvalue=60; - } + award_bonus(id, solidhit, 60); } } } @@ -3568,18 +2616,7 @@ void Person::DoAnimations(){ if(Random()%2||creature==wolftype){ victim->spurt=1; } - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( staffbodysound, samp[staffbodysound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[staffbodysound], gLoc, vel); - FSOUND_SetVolume(channels[staffbodysound], 256); - FSOUND_SetPaused(channels[staffbodysound], FALSE); + emit_sound_at(staffbodysound, victim->coords); } victim->skeleton.longdead=0; victim->skeleton.free=1; @@ -3587,7 +2624,7 @@ void Person::DoAnimations(){ for(i=0;iskeleton.num_joints;i++){ victim->skeleton.joints[i].velchange=0; - victim->skeleton.joints[i].locked=0; + victim->skeleton.joints[i].locked=0; //victim->skeleton.joints[i].velocity=0; } @@ -3618,11 +2655,7 @@ void Person::DoAnimations(){ if(tutoriallevel!=1){victim->DoDamage(damagemult*100/victim->protectionhigh); if(!victim->dead){ - if(id==0){ - bonus=solidhit; - bonustime=0; - bonusvalue=40; - } + award_bonus(id, solidhit, 40); } } } @@ -3632,22 +2665,12 @@ void Person::DoAnimations(){ if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->targetanimation].height!=highheight){ escapednum=0; if(id==0)camerashake+=.4; - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; XYZ relative; relative=victim->coords-coords; relative.y=0; Normalise(&relative); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); if(animation[victim->targetanimation].height==lowheight){ if(Random()%2){ @@ -3660,19 +2683,13 @@ void Person::DoAnimations(){ } victim->skeleton.joints[victim->skeleton.jointlabels[head]].velocity+=relative*damagemult*200; if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 128); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); + emit_sound_at(heavyimpactsound, victim->coords, 128.); } victim->Puff(head); victim->DoDamage(damagemult*100/victim->protectionhead); if(victim->howactive==typesleeping)victim->DoDamage(damagemult*150/victim->protectionhead); if(creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - FSOUND_SetVolume(channels[clawslicesound], 128); - FSOUND_SetPaused(channels[clawslicesound], FALSE); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2/victim->armorhead,175); } @@ -3688,18 +2705,12 @@ void Person::DoAnimations(){ victim->targetrotation=targetrotation+180; victim->target=0; if(tutoriallevel!=1){ - PlaySoundEx( landsound2, samp[landsound2], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel); - FSOUND_SetVolume(channels[landsound2], 128); - FSOUND_SetPaused(channels[landsound2], FALSE); + emit_sound_at(landsound2, victim->coords, 128.); } victim->Puff(abdomen); victim->DoDamage(damagemult*30/victim->protectionhigh); if(creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - FSOUND_SetVolume(channels[clawslicesound], 128); - FSOUND_SetPaused(channels[clawslicesound], FALSE); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2/victim->armorhigh,170); } @@ -3712,19 +2723,8 @@ void Person::DoAnimations(){ if(victim->targetanimation!=jumpupanim&&findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&victim!=this){ escapednum=0; if(id==0)camerashake+=.2; - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(tutoriallevel!=1){ - PlaySoundEx( landsound2, samp[landsound2], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel); - FSOUND_SetVolume(channels[landsound2], 128); - FSOUND_SetPaused(channels[landsound2], FALSE); + emit_sound_at(landsound2, victim->coords, 128.); } XYZ relative; relative=victim->coords-coords; @@ -3763,22 +2763,17 @@ void Person::DoAnimations(){ victim->targetrotation=targetrotation+180; victim->target=0; if(tutoriallevel!=1){ - PlaySoundEx( landsound2, samp[landsound2], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel); - FSOUND_SetVolume(channels[landsound2], 128); - FSOUND_SetPaused(channels[landsound2], FALSE); + emit_sound_at(landsound2, victim->coords, 128.); } victim->Puff(abdomen); victim->DoDamage(damagemult*30/victim->protectionlow); } - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } - } + } 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){ escapednum=0; @@ -3787,25 +2782,11 @@ void Person::DoAnimations(){ victim->spurt=1; DoBlood(.2,230); } - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 128); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); + emit_sound_at(heavyimpactsound, victim->coords, 128.); } if(creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - FSOUND_SetVolume(channels[clawslicesound], 128); - FSOUND_SetPaused(channels[clawslicesound], FALSE); + emit_sound_at(clawslicesound, victim->coords, 128); victim->spurt=1; victim->DoBloodBig(2/victim->armorhigh,170); } @@ -3823,11 +2804,7 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*150/victim->protectionhigh); - if(id==0){ - bonus=Reversal; - bonustime=0; - bonusvalue=60; - } + award_bonus(id, Reversal); } if((targetanimation==swordslashreversalanim||targetanimation==knifeslashreversalanim||targetanimation==staffhitreversalanim||targetanimation==staffspinhitreversalanim)&&animation[targetanimation].label[currentframe]==5){ @@ -3857,18 +2834,7 @@ void Person::DoAnimations(){ victim->spurt=1; DoBlood(.2,230); } - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whooshhitsound], gLoc, vel); - FSOUND_SetVolume(channels[whooshhitsound], 128); - FSOUND_SetPaused(channels[whooshhitsound], FALSE); + emit_sound_at(whooshhitsound, victim->coords, 128.); victim->RagDoll(0); XYZ relative; relative=victim->coords-oldcoords; @@ -3891,33 +2857,14 @@ void Person::DoAnimations(){ victim->spurt=1; DoBlood(.2,230); } - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - if(id==0){ - bonus=staffreversebonus; - bonustime=0; - bonusvalue=100; - } + award_bonus(id, staffreversebonus); if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 128); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); + emit_sound_at(heavyimpactsound, victim->coords, 128.); } victim->RagDoll(0); - if(id==0){ - bonus=staffreversebonus; - bonustime=0; - bonusvalue=100; - } + award_bonus(id, staffreversebonus); // Huh, again? XYZ relative; relative=victim->coords-oldcoords; @@ -3957,39 +2904,21 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*90/victim->protectionhigh); - if(id==0){ - bonus=Reversal; - bonustime=0; - bonusvalue=60; - } + award_bonus(id, Reversal); bool doslice; doslice=0; if(weaponactive!=-1||creature==wolftype)doslice=1; if(creature==rabbittype&&weaponactive!=-1)if(weapons.type[weaponids[0]]==staff)doslice=0; if(doslice){ - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(weaponactive!=-1){ victim->DoBloodBig(2/victim->armorhigh,225); - PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifeslicesound], gLoc, vel); - FSOUND_SetVolume(channels[knifeslicesound], 512); - FSOUND_SetPaused(channels[knifeslicesound], FALSE); + emit_sound_at(knifeslicesound, victim->coords); if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1; weapons.blooddrip[weaponids[weaponactive]]+=3; } - if(weaponactive==-1&&creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - FSOUND_SetVolume(channels[clawslicesound], 128); - FSOUND_SetPaused(channels[clawslicesound], FALSE); + if(weaponactive==-1&&creature==wolftype){; + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2/victim->armorhigh,175); } @@ -4019,30 +2948,7 @@ void Person::DoAnimations(){ victim->skeleton.joints[victim->skeleton.jointlabels[rightelbow]].velocity*=.5-1; victim->skeleton.joints[victim->skeleton.jointlabels[rightshoulder]].velocity*=.7-1; - if(id==0){ - bonus=swordreversebonus; - bonustime=0; - bonusvalue=100; - } - //victim->DoDamage(90); - - /*if(weaponactive!=-1){ - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - victim->DoBloodBig(2,225); - PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifeslicesound], gLoc, vel); - FSOUND_SetVolume(channels[knifeslicesound], 512); - FSOUND_SetPaused(channels[knifeslicesound], FALSE); - if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1; - weapons.blooddrip[weaponids[weaponactive]]+=3; - }*/ + award_bonus(id, swordreversebonus); } if(hasvictim&&targetanimation==knifeslashreversalanim&&animation[targetanimation].label[currentframe]==7){ @@ -4052,19 +2958,8 @@ void Person::DoAnimations(){ victim->spurt=1; DoBlood(.2,230); } - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 128); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); + emit_sound_at(heavyimpactsound, victim->coords, 128.); } victim->RagDoll(0); XYZ relative; @@ -4080,11 +2975,7 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*30/victim->protectionhigh); - if(id==0){ - bonus=Reversal; - bonustime=0; - bonusvalue=60; - } + award_bonus(id, Reversal); } if(hasvictim&&targetanimation==sneakattackanim&&animation[targetanimation].label[currentframe]==7){ @@ -4107,38 +2998,20 @@ void Person::DoAnimations(){ if(weaponactive!=-1||creature==wolftype)doslice=1; if(creature==rabbittype&&weaponactive!=-1)if(weapons.type[weaponids[0]]==staff)doslice=0; if(doslice){ - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(weaponactive!=-1){ victim->DoBloodBig(200,225); - PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifeslicesound], gLoc, vel); - FSOUND_SetVolume(channels[knifeslicesound], 512); - FSOUND_SetPaused(channels[knifeslicesound], FALSE); + emit_sound_at(knifeslicesound, victim->coords); if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; weapons.blooddrip[weaponids[weaponactive]]+=5; } if(creature==wolftype&&weaponactive==-1){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - FSOUND_SetVolume(channels[clawslicesound], 128); - FSOUND_SetPaused(channels[clawslicesound], FALSE); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2,175); } } - if(id==0){ - bonus=spinecrusher; - bonustime=0; - bonusvalue=100; - } + award_bonus(id, spinecrusher); } if(hasvictim&&(targetanimation==knifefollowanim||targetanimation==knifesneakattackanim)&&animation[targetanimation].label[currentframe]==5){ @@ -4152,57 +3025,36 @@ void Person::DoAnimations(){ bloodvel.z=20; bloodvel.y=5; bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale; - sprites.MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1); + Sprite::MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1); */ - XYZ footvel,footpoint; + XYZ footvel,footpoint; footvel=0; footpoint=weapons.tippoint[weaponids[0]]; - if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); + if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]]); - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1); - sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 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); + Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1); victim->DoBloodBig(200,195); - if(id==0){ - bonus=tracheotomy; - bonustime=0; - bonusvalue=100; - } - - //victim->neckspurtamount=5; + award_bonus(id, tracheotomy); } if(targetanimation==knifefollowanim){ - if(id==0){ - bonus=Stabbonus; - bonustime=0; - bonusvalue=40; - } - XYZ footvel,footpoint; + award_bonus(id, Stabbonus); + XYZ footvel,footpoint; footvel=0; footpoint=weapons.tippoint[weaponids[0]]; - if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); + if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1; - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .2, 1); - sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .2, 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); + Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .2, 1); } victim->bloodloss+=10000; victim->velocity=0; - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fleshstabsound], gLoc, vel); - FSOUND_SetVolume(channels[fleshstabsound], 512); - FSOUND_SetPaused(channels[fleshstabsound], FALSE); + emit_sound_at(fleshstabsound, victim->coords); if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; weapons.blooddrip[weaponids[weaponactive]]+=5; } @@ -4221,68 +3073,42 @@ void Person::DoAnimations(){ } } if(weaponactive!=-1&&animation[victim->targetanimation].attack!=reversal){ - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel); - FSOUND_SetVolume(channels[fleshstabremovesound], 512); - FSOUND_SetPaused(channels[fleshstabremovesound], FALSE); + emit_sound_at(fleshstabremovesound, victim->coords); if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; weapons.blooddrip[weaponids[weaponactive]]+=5; - XYZ footvel,footpoint; + XYZ footvel,footpoint; footvel=0; footpoint=weapons.tippoint[weaponids[0]]; - if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); + if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1; - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1); - sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 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); + Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1); } } if(hasvictim&&(targetanimation==swordsneakattackanim)&&animation[targetanimation].label[currentframe]==5){ if(weaponactive!=-1&&victim->bloodlossdamagetolerance){ - if(id==0){ - bonus=backstab; - bonustime=0; - bonusvalue=100; - } + award_bonus(id, backstab); escapednum=0; - XYZ footvel,footpoint; + XYZ footvel,footpoint; footvel=0; footpoint=(weapons.tippoint[weaponids[0]]+weapons.position[weaponids[0]])/2; - if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); + if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]]); - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodflamesprite, footpoint,DoRotation(footvel*5,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .3, 1); - sprites.MakeSprite(bloodflamesprite, footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .3, 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,DoRotation(footvel*5,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .3, 1); + Sprite::MakeSprite(bloodflamesprite, footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .3, 1); victim->DoBloodBig(200,180); victim->DoBloodBig(200,215); victim->bloodloss+=10000; victim->velocity=0; - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fleshstabsound], gLoc, vel); - FSOUND_SetVolume(channels[fleshstabsound], 512); - FSOUND_SetPaused(channels[fleshstabsound], FALSE); + emit_sound_at(fleshstabsound, victim->coords); if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; weapons.blooddrip[weaponids[weaponactive]]+=5; } @@ -4295,30 +3121,19 @@ void Person::DoAnimations(){ victim->skeleton.joints[i].velocity=0; } if(weaponactive!=-1){ - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel); - FSOUND_SetVolume(channels[fleshstabremovesound], 512); - FSOUND_SetPaused(channels[fleshstabremovesound], FALSE); + emit_sound_at(fleshstabremovesound, victim->coords); if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; weapons.blooddrip[weaponids[weaponactive]]+=5; - XYZ footvel,footpoint; + XYZ footvel,footpoint; footvel=0; footpoint=weapons.tippoint[weaponids[0]]; - if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); + if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3); footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1; - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9); - sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1); - sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 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); + Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1); } } @@ -4329,20 +3144,9 @@ void Person::DoAnimations(){ victim->spurt=1; DoBlood(.2,240); } - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(weaponactive==-1){ if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 128); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); + emit_sound_at(heavyimpactsound, victim->coords, 128.); } } bool doslice; @@ -4352,28 +3156,18 @@ void Person::DoAnimations(){ if(doslice){ if(weaponactive!=-1){ victim->DoBloodBig(2/victim->armorhead,225); - PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifeslicesound], gLoc, vel); - FSOUND_SetVolume(channels[knifeslicesound], 512); - FSOUND_SetPaused(channels[knifeslicesound], FALSE); + emit_sound_at(knifeslicesound, victim->coords); if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1; weapons.blooddrip[weaponids[weaponactive]]+=3; } - if(weaponactive==-1&&creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - FSOUND_SetVolume(channels[clawslicesound], 128); - FSOUND_SetPaused(channels[clawslicesound], FALSE); + if(weaponactive==-1&&creature==wolftype){ + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2/victim->armorhead,175); } } - if(id==0){ - bonus=Reversal; - bonustime=0; - bonusvalue=60; - } + award_bonus(id, Reversal); victim->Puff(neck); @@ -4413,11 +3207,7 @@ void Person::DoAnimations(){ if(hasvictim&&(targetanimation==spinkickreversalanim||targetanimation==sweepreversalanim||targetanimation==rabbitkickreversalanim||targetanimation==upunchreversalanim||targetanimation==jumpreversalanim||targetanimation==swordslashreversalanim||targetanimation==knifeslashreversalanim||targetanimation==rabbittacklereversal||targetanimation==wolftacklereversal||targetanimation==staffhitreversalanim||targetanimation==staffspinhitreversalanim)) if(victim->damage>victim->damagetolerance&&bonus!=reverseko){ - if(id==0){ - bonus=reverseko; - bonustime=0; - bonusvalue=100; - } + award_bonus(id, reverseko); } } @@ -4433,19 +3223,7 @@ void Person::DoAnimations(){ if(currentanimation==rabbittackleanim||currentanimation==rabbittacklinganim){ targetanimation=rollanim; targetframe=3; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - - PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[movewhooshsound], gLoc, vel); - FSOUND_SetVolume(channels[movewhooshsound], 128); - FSOUND_SetPaused(channels[movewhooshsound], FALSE); + emit_sound_at(movewhooshsound, coords, 128.); } if(currentanimation==staggerbackhighanim){ targetanimation=getIdle(); @@ -4485,34 +3263,10 @@ void Person::DoAnimations(){ } if(weaponactive==-1){ - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - - PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifesheathesound], gLoc, vel); - FSOUND_SetVolume(channels[knifesheathesound], 128); - FSOUND_SetPaused(channels[knifesheathesound], FALSE); + emit_sound_at(knifesheathesound, coords, 128.); } if(weaponactive!=-1){ - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - - PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - FSOUND_SetVolume(channels[knifedrawsound], 128); - FSOUND_SetPaused(channels[knifedrawsound], FALSE); + emit_sound_at(knifedrawsound, coords, 128.); } } if(currentanimation==rollanim){ @@ -4587,7 +3341,8 @@ void Person::DoAnimations(){ targetframe=3; velocity=facing*-8; velocity.y=4; - if(id==0)FSOUND_SetPaused(channels[whooshsound], FALSE); + if(id==0) + resume_stream(whooshsound); } if(targetanimation==walljumprightanim){ targetanimation=rightflipanim; @@ -4605,7 +3360,8 @@ void Person::DoAnimations(){ velocity=facing*8; velocity.y=4; } - if(id==0)FSOUND_SetPaused(channels[whooshsound], FALSE); + if(id==0) + resume_stream(whooshsound); } if(targetanimation==walljumpleftanim){ if(attackkeydown){ @@ -4645,7 +3401,8 @@ void Person::DoAnimations(){ velocity=DoRotation(facing,0,-30,0)*-8; velocity.y=4; } - if(id==0)FSOUND_SetPaused(channels[whooshsound], FALSE); + if(id==0) + resume_stream(whooshsound); } if(targetanimation==sneakattackanim){ float ycoords=oldcoords.y; @@ -4732,18 +3489,7 @@ void Person::DoAnimations(){ if(targetanimation==sweepreversedanim)targetrotation+=90; targetanimation=backhandspringanim; targetframe=2; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( landsound, samp[landsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[landsound], gLoc, vel); - FSOUND_SetVolume(channels[landsound], 128); - FSOUND_SetPaused(channels[landsound], FALSE); + emit_sound_at(landsound, coords, 128); if(currentanimation==upunchreversedanim||currentanimation==swordslashreversedanim){ targetanimation=rollanim; @@ -4803,13 +3549,13 @@ void Person::DoAnimations(){ //DoDamage(100); RagDoll(0); skeleton.spinny=0; - if(id!=0)SolidHitBonus(); + SolidHitBonus(!id); // FIXME: tricky id } if(feint){ escapednum++; targetanimation=rollanim; coords+=facing; - if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE); + if(id==0)pause_sound(whooshsound); } lastfeint=0; } @@ -4826,13 +3572,13 @@ void Person::DoAnimations(){ //DoDamage(100); RagDoll(0); skeleton.spinny=0; - if(id!=0)SolidHitBonus(); + SolidHitBonus(!id); // FIXME: tricky id } if(feint){ escapednum++; targetanimation=rollanim; coords+=facing*2; - if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE); + if(id==0)pause_sound(whooshsound); } lastfeint=0; } @@ -4864,7 +3610,7 @@ void Person::DoAnimations(){ targetanimation=jumpdownanim; } } - if(!skeleton.free){ + if(!skeleton.free){ oldtarget=target; if(!transspeed&&animation[targetanimation].attack!=2&&animation[targetanimation].attack!=3){ if(!isRun()||!wasRun()){ @@ -4904,7 +3650,7 @@ void Person::DoAnimations(){ if(currentanimation!=oldcurrentanimation||targetanimation!=oldtargetanimation||((currentframe!=oldcurrentframe||targetframe!=oldtargetframe)&&!calcrot)){ //Old rotates for(i=0;ifast_sqrt(velocity.x*velocity.x*velocity.z*velocity.z)){ if(id==0)camerashake+=.4; targetanimation=getLandhard(); targetframe=0; target=0; landhard=0; transspeed=15; - //} } } //skeleton.DoConstraints(); } -void Person::DoStuff(){ +void Person::DoStuff(){ static XYZ terrainnormal; static XYZ flatfacing; static XYZ flatvelocity; @@ -5053,12 +3797,6 @@ void Person::DoStuff(){ targetanimation=getRun(); targetframe=0; } - /*static float toggledelay; - toggledelay-=multiplier; - if(toggledelay<0){ - toggledelay=1; - if(Random()%3==0)superruntoggle=1-superruntoggle; - }*/ } if(weaponactive==-1&&num_weapons>0){ if(weapons.type[weaponids[0]]==staff){ @@ -5072,7 +3810,7 @@ void Person::DoStuff(){ /*if(aitype!=playercontrolled)*/ deathbleeding=1; if(burnt>.6)burnt=.6; - FSOUND_SetVolume(channels[stream_firesound], 256+256*findLength(&velocity)/3); + OPENAL_SetVolume(channels[stream_firesound], 256+256*findLength(&velocity)/3); if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){ float gLoc[3]; @@ -5085,8 +3823,8 @@ void Person::DoStuff(){ vel[2]=velocity.z; if(id==0){ - FSOUND_3D_SetAttributes(channels[whooshsound], gLoc, vel); - FSOUND_SetVolume(channels[whooshsound], 64*findLength(&velocity)/5); + OPENAL_3D_SetAttributes(channels[whooshsound], gLoc, vel); + OPENAL_SetVolume(channels[whooshsound], 64*findLength(&velocity)/5); } } } @@ -5097,7 +3835,7 @@ void Person::DoStuff(){ 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=skeleton.joints[howmany].position*scale+coords; - sprites.MakeSprite(flamesprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1); + Sprite::MakeSprite(flamesprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1); } while(flamedelay<0&&!onfire&&tutoriallevel==1&&id!=0){ @@ -5107,14 +3845,14 @@ void Person::DoStuff(){ 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=skeleton.joints[howmany].position*scale+coords; - sprites.MakeSprite(breathsprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, .3); + Sprite::MakeSprite(breathsprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, .3); } if(bleeding>0){ bleeding-=multiplier*.3; if(bloodtoggle==2){ glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); - if(bleeding<=0&&(detail!=2||osx))DoMipmaps(5,0,0,skeleton.skinsize,skeleton.skinsize); + if(bleeding<=0&&(detail!=2||osx))DoMipmaps(); } } @@ -5134,8 +3872,8 @@ void Person::DoStuff(){ } 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(velocity,((float)(Random()%100))/40,((float)(Random()%100))/40,0)*scale; - if(skeleton.free)sprites.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)sprites.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, (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); neckspurtparticledelay=.05; } if(neckspurtdelay<0){ @@ -5153,18 +3891,14 @@ void Person::DoStuff(){ 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(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale; - if(skeleton.free)sprites.MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[abdomen]].position*scale+coords,bloodvel, 1,1,1, .05, 1); - if(!skeleton.free)sprites.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, 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(id==0){ - bloodloss+=deathbleeding*40; - deathbleeding=0; - }*/ bloodloss+=deathbleeding*multiplier*80; deathbleeding-=multiplier*1.6; //if(id==0)deathbleeding-=multiplier*.2; - if(deathbleeding<0)deathbleeding=0; + if(deathbleeding<0)deathbleeding=0; if(bloodloss>damagetolerance&&animation[targetanimation].attack==neutral){ if(weaponactive!=-1){ weapons.owner[weaponids[0]]=-1; @@ -5196,9 +3930,7 @@ void Person::DoStuff(){ } if(!dead&&creature==wolftype){ - bonus=Wolfbonus; - bonustime=0; - bonusvalue=300; + award_bonus(0, Wolfbonus); } dead=2; if(targetanimation==knifefollowedanim&&!skeleton.free){ @@ -5234,10 +3966,6 @@ void Person::DoStuff(){ if(endy>skeleton.skinsize-1){endy=skeleton.skinsize-1;bleeding=0;} if(endx1){ glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); - DoMipmaps(0,startx,endx,starty,endy); + DoMipmaps(); } if(!skeleton.free){ @@ -5380,7 +4108,7 @@ void Person::DoStuff(){ 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=((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2)*scale+coords; if(targetanimation==sleepanim)footvel=DoRotation(footvel,0,90,0); - sprites.MakeSprite(breathsprite, footpoint+footvel*.2,footvel*.4, 1,1,1, .4, .3); + Sprite::MakeSprite(breathsprite, footpoint+footvel*.2,footvel*.4, 1,1,1, .4, .3); } } @@ -5468,7 +4196,7 @@ void Person::DoStuff(){ } } } - if(creature==wolftype){ + if(creature==wolftype){ twitchdelay2-=multiplier*1.5; if(tailmorphend!=0) if((isRun()||targetanimation==jumpupanim||targetanimation==jumpdownanim||targetanimation==backflipanim)&&!skeleton.free){ @@ -5577,9 +4305,7 @@ void Person::DoStuff(){ unconscioustime=0; if(creature==wolftype){ - bonus=Wolfbonus; - bonustime=0; - bonusvalue=300; + award_bonus(0, Wolfbonus); } RagDoll(0); @@ -5613,12 +4339,6 @@ void Person::DoStuff(){ } damage+=20; - - /* - if(bloodlossdamagetolerance&&dead!=2){ @@ -5673,16 +4393,11 @@ void Person::DoStuff(){ bled=0; if(!dead&&creature==wolftype){ - bonus=Wolfbonus; - bonustime=0; - bonusvalue=300; + award_bonus(0, Wolfbonus); } - if(id!=0&&unconscioustime<.1&&(bonus!=spinecrusher||bonustime>1)&&(bonus!=FinishedBonus||bonustime>1)&&bloodloss1)&&(bonus!=FinishedBonus||bonustime>1)&&bloodloss.1){ numafterkill++; } @@ -5691,26 +4406,11 @@ void Person::DoStuff(){ skeleton.free=1; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( breaksound, samp[breaksound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[breaksound], gLoc, vel); - FSOUND_SetVolume(channels[breaksound], 512); - FSOUND_SetPaused(channels[breaksound], FALSE); - /*if(id==0||findDistancefast(&coords,&viewer)<50){ - slomo=1; - slomodelay=.2; - }*/ + emit_sound_at(breaksound, coords); } if(skeleton.free==1){ - if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE); + if(id==0)pause_sound(whooshsound); if(!dead){ //If knocked over, open hands and close mouth @@ -5732,11 +4432,8 @@ void Person::DoStuff(){ skeleton.DoGravity(&scale); float damageamount; damageamount=skeleton.DoConstraints(&coords,&scale)*5; - if(id!=0&&damage>damagetolerance-damageamount&&!dead&&(bonus!=spinecrusher||bonustime>1)&&(bonus!=style||bonustime>1)&&(bonus!=cannon||bonustime>1)){ - bonus=deepimpact; - bonustime=0; - bonusvalue=50; - } + if(damage>damagetolerance-damageamount&&!dead&&(bonus!=spinecrusher||bonustime>1)&&(bonus!=style||bonustime>1)&&(bonus!=cannon||bonustime>1)) + award_bonus(id, deepimpact); DoDamage(damageamount/((protectionhigh+protectionhead+protectionlow)/3)); average=0; @@ -5776,7 +4473,7 @@ void Person::DoStuff(){ skeleton.longdead+=(2000-findLength(&average))*multiplier+multiplier; if(skeleton.longdead>2000){ if(skeleton.longdead>6000){ - if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE); + if(id==0)pause_sound(whooshsound); skeleton.free=3; DrawSkeleton(); skeleton.free=2; @@ -5832,7 +4529,7 @@ void Person::DoStuff(){ if(objects.type[i]!=treeleavestype&&objects.type[i]!=bushtype&&objects.type[i]!=firetype){ colviewer=startpoint; coltarget=endpoint; - if(objects.model[i].LineCheck(&colviewer,&coltarget,&colpoint,&objects.position[i],&objects.rotation[i])!=-1)canrecover=0; + if(objects.model[i].LineCheck(&colviewer,&coltarget,&colpoint,&objects.position[i],&objects.rotation[i])!=-1)canrecover=0; } } if(canrecover){ @@ -5860,12 +4557,8 @@ void Person::DoStuff(){ if(terrainnormal.z<0)targetrotation=180-targetrotation; rotation=targetrotation; - //if(skeleton.forward.y<0){ targetframe=0; - //} - //if(skeleton.forward.y>-.3){ // targetframe=2; - //} targetanimation=flipanim; crouchtogglekeydown=1; target=0; @@ -5889,7 +4582,7 @@ void Person::DoStuff(){ if(findLength(&average)<10&&!dead&&skeleton.free){ skeleton.longdead+=(2000-findLength(&average))*multiplier+multiplier; if(skeleton.longdead>(damage+500)*1.5){ - if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE); + if(id==0)pause_sound(whooshsound); skeleton.free=0; velocity=0; XYZ middle; @@ -6008,18 +4701,7 @@ void Person::DoStuff(){ } target=0; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[movewhooshsound], gLoc, vel); - FSOUND_SetVolume(channels[movewhooshsound], 128); - FSOUND_SetPaused(channels[movewhooshsound], FALSE); + emit_sound_at(movewhooshsound, coords, 128.); currentanimation=targetanimation; currentframe=targetframe-1; @@ -6048,18 +4730,7 @@ void Person::DoStuff(){ if(findDistancefastflat(&coords,&objects.position[i])objects.position[i].y+3*objects.scale[i]){ - /*if(onfire){ - if(!objects.onfire[i]){ - float gLoc[3]; - float vel[3]; - gLoc[0]=objects.position[i].x; - gLoc[1]=objects.position[i].y; - gLoc[2]=objects.position[i].z; - vel[0]=0; - vel[1]=0; - vel[2]=0; - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - objects.onfire[i]=1; - } - }*/ if(objects.messedwith[i]<=0){ XYZ tempvel; XYZ pos; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( bushrustle, samp[bushrustle], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[bushrustle], gLoc, vel); - FSOUND_SetVolume(channels[bushrustle], 40*findLength(&velocity)); - FSOUND_SetPaused(channels[bushrustle], FALSE); + emit_sound_at(bushrustle, coords, 40*findLength(&velocity)); if(id==0){ envsound[numenvsounds]=coords; @@ -6221,8 +4842,8 @@ void Person::DoStuff(){ pos.x+=float(abs(Random()%100)-50)/150; pos.y+=float(abs(Random()%100)-50)/150; pos.z+=float(abs(Random()%100)-50)/150; - sprites.MakeSprite(splintersprite, pos,tempvel*.5+velocity*float(abs(Random()%100))/100, 165/255+float(abs(Random()%100)-50)/400,0,0, .2+float(abs(Random()%100)-50)/1300, 1); - sprites.special[sprites.numsprites-1]=1; + Sprite::MakeSprite(splintersprite, pos,tempvel*.5+velocity*float(abs(Random()%100))/100, 165/255+float(abs(Random()%100)-50)/400,0,0, .2+float(abs(Random()%100)-50)/1300, 1); + Sprite::setLastSpriteSpecial(1); } howmany=findLength(&velocity)*4; if(detail==2) @@ -6237,16 +4858,16 @@ void Person::DoStuff(){ pos.x+=float(abs(Random()%100)-50)/150; pos.y+=float(abs(Random()%100)-50)/150; pos.z+=float(abs(Random()%100)-50)/150; - sprites.MakeSprite(splintersprite, pos,tempvel*.3+velocity*float(abs(Random()%100))/100/2, 1,1,1, .1, 1); - sprites.special[sprites.numsprites-1]=2; + Sprite::MakeSprite(splintersprite, pos,tempvel*.3+velocity*float(abs(Random()%100))/100/2, 1,1,1, .1, 1); + Sprite::setLastSpriteSpecial(2); } } objects.messedwith[i]=.5; - } + } } } - if(!skeleton.free){ + if(!skeleton.free){ bool play; play=0; if((stunned>0||surprised>0)&&numplayers>2&&aitype!=passivetype)play=1; @@ -6255,14 +4876,6 @@ void Person::DoStuff(){ if(tutoriallevel==1&&id!=0)play=0; if(play&&aitype!=playercontrolled){ int whichsound=-1; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; i=abs(Random()%4); if(speechdelay<=0){ if(creature==rabbittype){ @@ -6275,16 +4888,11 @@ void Person::DoStuff(){ } } speechdelay=.3; - //else if(animation[targetanimation].label[targetframe]==4)whichsound=knifeswishsound; - //if(animation[targetanimation].label[targetframe]==8)whichsound=landsound2; if(whichsound!=-1){ - PlaySoundEx( whichsound, samp[whichsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whichsound], gLoc, vel); - FSOUND_SetVolume(channels[whichsound], 512); - FSOUND_SetPaused(channels[whichsound], FALSE); - } - } + emit_sound_at(whichsound, coords); + } + } if(targetanimation==staggerbackhighanim)staggerdelay=1; if(targetanimation==staggerbackhardanim)staggerdelay=1; @@ -6316,7 +4924,6 @@ void Person::DoStuff(){ if(targetanimation==bounceidleanim||targetanimation==wolfidle||targetanimation==walkanim||targetanimation==drawrightanim||targetanimation==crouchdrawrightanim||targetanimation==drawleftanim||targetanimation==fightidleanim||targetanimation==fightsidestep||targetanimation==hanganim||isCrouch()||targetanimation==backhandspringanim){ //open hands and close mouth - //if(targetanimation!=wolfidle){ if(righthandmorphend!=0&&righthandmorphness==targetrighthandmorphness){ righthandmorphness=0; righthandmorphend=0; @@ -6328,7 +4935,6 @@ void Person::DoStuff(){ lefthandmorphend=0; targetlefthandmorphness=1; } - //s} if(headmorphend!=3&&headmorphend!=5&&headmorphstart!=3&&headmorphstart!=5&&headmorphend!=0&&headmorphness==targetheadmorphness){ headmorphness=0; @@ -6400,7 +5006,7 @@ void Person::DoStuff(){ } } /* - if(speechdelay>.25){ + if(speechdelay>.25){ if(headmorphend!=2)headmorphness=0; headmorphend=2; targetheadmorphness=1; @@ -6448,7 +5054,7 @@ void Person::DoStuff(){ flatfacing=DoRotation(flatfacing,0,rotation,0); facing=flatfacing; - ReflectVector(&facing,&terrainnormal); + ReflectVector(&facing,terrainnormal); Normalise(&facing); if(isRun()||targetanimation==sneakanim||targetanimation==rollanim||targetanimation==walkanim){ @@ -6494,36 +5100,36 @@ void Person::DoStuff(){ //if(!creature==wolftype||targetanimation==rabbitkickanim) if(targetanimation==rabbittackleanim){ velocity+=facing*multiplier*speed*700*scale; - velspeed=findLength(&velocity); + velspeed=findLength(&velocity); if(velspeed>speed*65*scale){ velocity/=velspeed; velspeed=speed*65*scale; velocity*=velspeed; } velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); + ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z)); + velspeed=findLength(&velocity); velocity=flatfacing*velspeed; } if(targetanimation!=rabbitrunninganim&&targetanimation!=wolfrunninganim){ if(isRun()||targetanimation==rabbitkickanim){ velocity+=facing*multiplier*speed*700*scale; - velspeed=findLength(&velocity); + velspeed=findLength(&velocity); if(velspeed>speed*45*scale){ velocity/=velspeed; velspeed=speed*45*scale; velocity*=velspeed; } velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); + ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z)); + velspeed=findLength(&velocity); if(velspeedspeed*55*scale){ velocity/=velspeed; @@ -6539,109 +5145,94 @@ void Person::DoStuff(){ } } velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); + ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z)); + velspeed=findLength(&velocity); velocity=flatfacing*velspeed; } - /*if(creature==wolftype) - if(isRun()){ - velocity+=facing*multiplier*speed*700*scale; - velspeed=findLength(&velocity); - if(velspeed>speed*55*scale){ - velocity/=velspeed; - velspeed=speed*55*scale; - velocity*=velspeed; - } - velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); - velocity=flatfacing*velspeed; - }*/ - if(targetanimation==rollanim&&animation[targetanimation].label[targetframe]!=6){ velocity+=facing*multiplier*speed*700*scale; - velspeed=findLength(&velocity); + velspeed=findLength(&velocity); if(velspeed>speed*45*scale){ velocity/=velspeed; velspeed=speed*45*scale; velocity*=velspeed; } velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); + ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z)); + velspeed=findLength(&velocity); velocity=flatfacing*velspeed; } /*if(currentanimation==rollanim&&(isCrouch()||isIdle())){ velocity+=facing*multiplier*speed*700*scale; - velspeed=findLength(&velocity); + velspeed=findLength(&velocity); if(velspeed>speed*25*scale){ velocity/=velspeed; velspeed=speed*25*scale; velocity*=velspeed; } velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); + ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z)); + velspeed=findLength(&velocity); velocity=flatfacing*velspeed; }*/ if(targetanimation==sneakanim||targetanimation==walkanim){ velocity+=facing*multiplier*speed*700*scale; - velspeed=findLength(&velocity); + velspeed=findLength(&velocity); if(velspeed>speed*12*scale){ velocity/=velspeed; velspeed=speed*12*scale; velocity*=velspeed; } velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); + ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z)); + velspeed=findLength(&velocity); velocity=flatfacing*velspeed; } if((targetanimation==fightidleanim||targetanimation==knifefightidleanim)&&(currentanimation==bounceidleanim||currentanimation==hurtidleanim)){ velocity+=facing*multiplier*speed*700*scale; - velspeed=findLength(&velocity); + velspeed=findLength(&velocity); if(velspeed>speed*2*scale){ velocity/=velspeed; velspeed=speed*2*scale; velocity*=velspeed; } velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); + ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z)); + velspeed=findLength(&velocity); velocity=flatfacing*velspeed; } if((targetanimation==bounceidleanim||currentanimation==hurtidleanim)&&(currentanimation==fightidleanim||currentanimation==knifefightidleanim)){ velocity-=facing*multiplier*speed*700*scale; - velspeed=findLength(&velocity); + velspeed=findLength(&velocity); if(velspeed>speed*2*scale){ velocity/=velspeed; velspeed=speed*2*scale; velocity*=velspeed; } velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); + ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z)); + velspeed=findLength(&velocity); velocity=flatfacing*velspeed*-1; } if(targetanimation==fightsidestep){ velocity+=DoRotation(facing*multiplier*speed*700*scale,0,-90,0); - velspeed=findLength(&velocity); + velspeed=findLength(&velocity); if(velspeed>speed*12*scale){ velocity/=velspeed; velspeed=speed*12*scale; velocity*=velspeed; } velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); + ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z)); + velspeed=findLength(&velocity); velocity=DoRotation(flatfacing*velspeed,0,-90,0); } @@ -6657,34 +5248,34 @@ void Person::DoStuff(){ if(targetanimation==backhandspringanim){ //coords-=facing*multiplier*50*scale; velocity+=facing*multiplier*speed*700*scale*-1; - velspeed=findLength(&velocity); + velspeed=findLength(&velocity); if(velspeed>speed*50*scale){ velocity/=velspeed; velspeed=speed*50*scale; velocity*=velspeed; } velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); + ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z)); + velspeed=findLength(&velocity); velocity=flatfacing*velspeed*-1; } if(targetanimation==dodgebackanim){ //coords-=facing*multiplier*50*scale; velocity+=facing*multiplier*speed*700*scale*-1; - velspeed=findLength(&velocity); + velspeed=findLength(&velocity); if(velspeed>speed*60*scale){ velocity/=velspeed; velspeed=speed*60*scale; velocity*=velspeed; } velocity.y+=gravity*multiplier*20; - ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z)); - velspeed=findLength(&velocity); + ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z)); + velspeed=findLength(&velocity); velocity=flatfacing*velspeed*-1; } if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){ - velspeed=findLength(&velocity); + velspeed=findLength(&velocity); } @@ -6699,29 +5290,18 @@ void Person::DoStuff(){ if(targetanimation==jumpupanim){jumppower=-4;targetanimation=getIdle();} target=0; - targetframe=0; + targetframe=0; onterrain=1; if(id==0){ - FSOUND_SetPaused(channels[whooshsound], TRUE); - FSOUND_SetVolume(channels[whooshsound], 0); + pause_sound(whooshsound); + OPENAL_SetVolume(channels[whooshsound], 0); } if(targetanimation==jumpdownanim||isFlip()){ if(isFlip())jumppower=-4; targetanimation=getLanding(); - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( landsound, samp[landsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[landsound], gLoc, vel); - FSOUND_SetVolume(channels[landsound], 128); - FSOUND_SetPaused(channels[landsound], FALSE); + emit_sound_at(landsound, coords, 128.); if(id==0){ envsound[numenvsounds]=coords; @@ -6740,7 +5320,7 @@ void Person::DoStuff(){ if(isIdle()||targetanimation==drawrightanim||targetanimation==drawleftanim||targetanimation==crouchdrawrightanim||targetanimation==crouchstabanim||targetanimation==swordgroundstabanim||isStop()||targetanimation==removeknifeanim||targetanimation==crouchremoveknifeanim||isLanding()||isCrouch()||animation[targetanimation].attack||(targetanimation==rollanim&&animation[targetanimation].label[targetframe]==6)){ - velspeed=findLength(&velocity); + velspeed=findLength(&velocity); velocity.y=0; if(velspeed.02&&!forwardkeydown&&!backkeydown&&!leftkeydown&&!rightkeydown&&!jumpkeydown&&isLanding()&&!landhard){ skiddingdelay=-1; - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; if(!onterrain||environment==grassyenvironment){ - PlaySoundEx( skidsound, samp[skidsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[skidsound], gLoc, vel); - FSOUND_SetVolume(channels[skidsound], 128*velspeed/10); - FSOUND_SetPaused(channels[skidsound], FALSE); + emit_sound_at(skidsound, coords, 128*velspeed/10); } else { - PlaySoundEx( snowskidsound, samp[snowskidsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[snowskidsound], gLoc, vel); - FSOUND_SetVolume(channels[snowskidsound], 128*velspeed/10); - FSOUND_SetPaused(channels[snowskidsound], FALSE); + emit_sound_at(snowskidsound, coords, 128*velspeed/10); } } @@ -6815,7 +5381,7 @@ void Person::DoStuff(){ coords=victim->coords; } } - skeleton.oldfree=skeleton.free; + skeleton.oldfree=skeleton.free; XYZ midterrain; midterrain=0; @@ -6834,7 +5400,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)=0){*/ glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); if(skeleton.muscles[i].parent1->label==abdomen||skeleton.muscles[i].parent2->label==abdomen) @@ -7129,24 +5675,18 @@ int Person::DrawSkeleton(){ (skeleton.model[start].vertex[skeleton.muscles[i].vertices[j]].z*(1-morphness)+skeleton.model[endthing].vertex[skeleton.muscles[i].vertices[j]].z*morphness)*proportionhead.z); glGetFloatv(GL_MODELVIEW_MATRIX,M); //if(!isnormal(M[12])||!isnormal(M[13])||!isnormal(M[14]))test=0; - //if(isnormal(M[12])&&isnormal(M[13])&&isnormal(M[14])){ //if(!isnormal(scale))test=1; - //if(isnormal(scale)){ skeleton.drawmodel.vertex[skeleton.muscles[i].vertices[j]].x=M[12]*scale; skeleton.drawmodel.vertex[skeleton.muscles[i].vertices[j]].y=M[13]*scale; skeleton.drawmodel.vertex[skeleton.muscles[i].vertices[j]].z=M[14]*scale; //test=2; - //} - //} glPopMatrix(); - //} } } if(!playerdetail||skeleton.free==3) { for(j=0;j=0){ glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); if(skeleton.muscles[i].parent1->label==abdomen||skeleton.muscles[i].parent2->label==abdomen) @@ -7171,7 +5711,6 @@ int Person::DrawSkeleton(){ skeleton.drawmodellow.vertex[skeleton.muscles[i].verticeslow[j]].y=M[13]*scale; skeleton.drawmodellow.vertex[skeleton.muscles[i].verticeslow[j]].z=M[14]*scale; glPopMatrix(); - //} } } glPopMatrix(); @@ -7317,12 +5856,12 @@ int Person::DrawSkeleton(){ } if(playerdetail){ if(!showpoints){ - if((tutoriallevel&&id!=0))skeleton.drawmodel.drawdifftex(sprites.cloudimpacttexture); + if((tutoriallevel&&id!=0))skeleton.drawmodel.drawdifftex(Sprite::cloudimpacttexture); else skeleton.drawmodel.draw(); } } if(!playerdetail){ - if((tutoriallevel&&id!=0))skeleton.drawmodellow.drawdifftex(sprites.cloudimpacttexture); + if((tutoriallevel&&id!=0))skeleton.drawmodellow.drawdifftex(Sprite::cloudimpacttexture); else skeleton.drawmodellow.drawdifftex(skeleton.drawmodel.textureptr); } @@ -7346,12 +5885,12 @@ int Person::DrawSkeleton(){ glTranslatef(smoketex*.6,0,0); if(playerdetail){ if(!showpoints){ - if((tutoriallevel&&id!=0))skeleton.drawmodel.drawdifftex(sprites.cloudimpacttexture); + if((tutoriallevel&&id!=0))skeleton.drawmodel.drawdifftex(Sprite::cloudimpacttexture); else skeleton.drawmodel.draw(); } } if(!playerdetail){ - if((tutoriallevel&&id!=0))skeleton.drawmodellow.drawdifftex(sprites.cloudimpacttexture); + if((tutoriallevel&&id!=0))skeleton.drawmodellow.drawdifftex(Sprite::cloudimpacttexture); else skeleton.drawmodellow.drawdifftex(skeleton.drawmodel.textureptr); } } @@ -7375,7 +5914,7 @@ int Person::DrawSkeleton(){ if(num_weapons>0){ for(k=0;klabel==righthand||skeleton.muscles[j].parent2->label==righthand)&&skeleton.muscles[j].numvertices>0){ @@ -7410,16 +5949,9 @@ int Person::DrawSkeleton(){ 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(targetanimation==staffhitanim||currentanimation==staffhitanim){ - XYZ weaptargnorm; - weaptargnorm=DoRotation(weapons.tippoint[i]-weapons.position[i],0,-rotation,0); - //weaptargnorm=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(target); - Normalise(&weaptargnorm); - weaponpoint-=weaptargnorm*2; - }*/ } } - if(weaponactive!=k&&weaponstuck!=k){ + 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; @@ -7429,7 +5961,7 @@ int Person::DrawSkeleton(){ } } } - if(weaponstuck==k){ + if(weaponstuck==k){ if(weaponstuckwhere==0)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position*.5+skeleton.joints[skeleton.jointlabels[neck]].position*.5-skeleton.forward*.8; else weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position*.5+skeleton.joints[skeleton.jointlabels[neck]].position*.5+skeleton.forward*.8; for(j=0;jtemppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i]; + if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i]; } if((currentanimation==knifeslashreversalanim&&targetanimation==knifeslashreversalanim)||(currentanimation==knifeslashreversedanim&&targetanimation==knifeslashreversedanim)){ XYZ temppoint1,temppoint2,tempforward; @@ -7497,7 +6029,7 @@ int Person::DrawSkeleton(){ weapons.rotation3[i]=0; weapons.smallrotation[i]=90; weapons.smallrotation2[i]=0; - if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i]; + if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i]; } if(targetanimation==knifethrowanim){ weapons.smallrotation[i]=90; @@ -7540,7 +6072,7 @@ int Person::DrawSkeleton(){ weapons.rotation3[i]=0; weapons.smallrotation[i]=90; weapons.smallrotation2[i]=0; - if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i]; + if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i]; } } if(weapons.type[i]==staff){ @@ -7562,7 +6094,7 @@ int Person::DrawSkeleton(){ weapons.rotation3[i]=0; weapons.smallrotation[i]=90; weapons.smallrotation2[i]=0; - if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i]; + if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i]; } } } @@ -7584,8 +6116,6 @@ int Person::DrawSkeleton(){ if(weaponstuckwhere==0)weapons.smallrotation[i]=180; else weapons.smallrotation[i]=0; weapons.smallrotation2[i]=10; - //if(animation[targetanimation].height==lowheight&&animation[targetanimation].attack==neutral){ - //} } } } @@ -7649,29 +6179,18 @@ int Person::SphereCheck(XYZ *p1,float radius, XYZ *p, XYZ *move, float *rotate, if(targetanimation==jumpupanim){jumppower=-4;targetanimation=getIdle();} target=0; - targetframe=0; + targetframe=0; onterrain=1; if(id==0){ - FSOUND_SetPaused(channels[whooshsound], TRUE); - FSOUND_SetVolume(channels[whooshsound], 0); + pause_sound(whooshsound); + OPENAL_SetVolume(channels[whooshsound], 0); } if((targetanimation==jumpdownanim||isFlip())&&!wasLanding()&&!wasLandhard()){ if(isFlip())jumppower=-4; targetanimation=getLanding(); - float gLoc[3]; - float vel[3]; - gLoc[0]=coords.x; - gLoc[1]=coords.y; - gLoc[2]=coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - PlaySoundEx( landsound, samp[landsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[landsound], gLoc, vel); - FSOUND_SetVolume(channels[landsound], 128); - FSOUND_SetPaused(channels[landsound], FALSE); + emit_sound_at(landsound, coords, 128.); if(id==0){ envsound[numenvsounds]=coords; @@ -7725,281 +6244,3 @@ int Person::SphereCheck(XYZ *p1,float radius, XYZ *p, XYZ *move, float *rotate, *p1+=*move; return firstintersecting; } - -Person::Person() -{ - whichpatchx = 0; - whichpatchz = 0; - - currentframe = 0; - targetframe = 0; - currentanimation = 0; - targetanimation = 0; - oldcurrentframe = 0; - oldtargetframe = 0; - oldcurrentanimation = 0; - oldtargetanimation = 0; - - howactive = 0; - - parriedrecently = 0; - - superruntoggle = 0; - - lastattack = 0,lastattack2 = 0,lastattack3 = 0; - - currentoffset = 0,targetoffset = 0,offset = 0; - target = 0; - transspeed = 0; - - realoldcoords = 0; - oldcoords = 0; - coords = 0; - originalcoords = 0; - velocity = 0; - - proportionhead = 0; - proportionlegs = 0; - proportionarms = 0; - proportionbody = 0; - - heightleft = 0; - heightright = 0; - - unconscioustime = 0; - - immobile = 0; - - velspeed = 0; - targetrotation = 0; - targetrot = 0; - rot = 0; - oldrot = 0; - lookrotation = 0; - lookrotation2 = 0; - rotation = 0; - rotation2 = 0; - lowrotation = 0; - tilt = 0; - targettilt = 0; - tilt2 = 0; - targettilt2 = 0; - rabbitkickenabled = 0; - - bloodloss = 0; - bleeddelay = 0; - skiddelay = 0; - skiddingdelay = 0; - deathbleeding = 0; - tempdeltav = 0; - - damagetolerance = 0; - damage = 0; - permanentdamage = 0; - superpermanentdamage = 0; lastcollide = 0; - dead = 0; - - jumppower = 0; - onground = 0; - madskills = 0; - - wentforweapon = 0; - - calcrot = 0; - - backwardsanim = 0; - - facing = 0; - - bleeding = 0; - bleedx = 0,bleedy; - direction = 0; - texupdatedelay = 0; - - headrotation = 0,headrotation2 = 0; - targetheadrotation = 0,targetheadrotation2 = 0; - - onterrain = 0; - pause = 0; - - grabdelay = 0; - - victim = 0; - hasvictim = 0; - - updatedelay = 0; - normalsupdatedelay = 0; - - jumpstart = 0; - - forwardkeydown = 0; - forwardstogglekeydown = 0; - rightkeydown = 0; - leftkeydown = 0; - backkeydown = 0; - jumpkeydown = 0; - jumptogglekeydown = 0; - crouchkeydown = 0; - crouchtogglekeydown = 0; - drawkeydown = 0; - drawtogglekeydown = 0; - throwkeydown = 0; - throwtogglekeydown = 0; - attackkeydown = 0; - feint = 0; - lastfeint = 0; - headless = 0; - - crouchkeydowntime = 0; - jumpkeydowntime = 0; - freefall = 0; - - - turnspeed = 0; - - aitype = 0; - aitarget = 0; - aiupdatedelay = 0; - losupdatedelay = 0; - ally = 0; - movetarget = 0; - collide = 0; - collided = 0; - avoidcollided = 0; - loaded = 0; - whichdirection = 0; - whichdirectiondelay = 0; - avoidsomething = 0; avoidwhere = 0; - blooddimamount = 0; - - staggerdelay = 0; - blinkdelay = 0; - twitchdelay = 0; - twitchdelay2 = 0; - twitchdelay3 = 0; - lefthandmorphness = 0; - righthandmorphness = 0; - headmorphness = 0; - chestmorphness = 0; - tailmorphness = 0; - targetlefthandmorphness = 0; - targetrighthandmorphness = 0; - targetheadmorphness = 0; - targetchestmorphness = 0; - targettailmorphness = 0; - lefthandmorphstart = 0,lefthandmorphend = 0; - righthandmorphstart = 0,righthandmorphend = 0; - headmorphstart = 0,headmorphend = 0; - chestmorphstart = 0,chestmorphend = 0; - tailmorphstart = 0,tailmorphend = 0; - - weaponmissdelay = 0; - highreversaldelay = 0; - lowreversaldelay = 0; - nocollidedelay = 0; - - creature = 0; - - id = 0; - - //Skeleton skeleton; - - speed = 0; - scale = 0; - power = 0; - speedmult = 0; - - protectionhead = 0; - protectionhigh = 0; - protectionlow = 0; - armorhead = 0; - armorhigh = 0; - armorlow = 0; - metalhead = 0; - metalhigh = 0; - metallow = 0; - - numclothes = 0; - - memset(clothes, 0, sizeof(clothes)); - memset(clothestintr, 0, sizeof(clothestintr)); - memset(clothestintg, 0, sizeof(clothestintg)); - memset(clothestintb, 0, sizeof(clothestintb)); - - landhard = 0; - bled = 0; - spurt = 0; - onfire = 0; - onfiredelay = 0; burnt = 0; - fireduration = 0; - - flamedelay = 0; - updatestuffdelay = 0; - - playerdetail = 0; - - num_weapons = 0; - - memset(weaponids, 0, sizeof(weaponids)); - - weaponactive = 0; - weaponstuck = 0; - weaponstuckwhere = 0; - weaponwhere = 0; - - numwaypoints = 0; - - memset(waypoints, 0, sizeof(waypoints)); - memset(waypointtype, 0, sizeof(waypointtype)); - - pausetime = 0; - hastempwaypoint = 0; - tempwaypoint = 0; - - headtarget = 0; - interestdelay = 0; - - finalfinaltarget = 0; - finaltarget = 0; - finalpathfindpoint = 0; - targetpathfindpoint = 0; - lastpathfindpoint = 0; - lastpathfindpoint2 = 0; - lastpathfindpoint3 = 0; - lastpathfindpoint4 = 0; - onpath = 0; - - waypoint = 0; - jumppath = 0; - - lastseen = 0; - lastseentime = 0; - lastchecktime = 0; - stunned = 0; - surprised = 0; - runninghowlong = 0; lastoccluded = 0; - laststanding = 0; - escapednum = 0; - - speechdelay = 0; - neckspurtdelay = 0; - neckspurtparticledelay = 0; - neckspurtamount = 0; - - whichskin = 0; - rabbitkickragdoll = 0; - - averageloc = 0; - oldaverageloc = 0; - - //Animation tempanimation; - - occluded = 0; - - jumpclimb = 0; -} - -Person::~Person() -{ -} -