X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FPerson.cpp;h=3ee97382eb4ad4c48aa033c3eb3dda39408b4a49;hb=9dab8db49cf697e08bc6ad9d15f500a259a7f2d2;hp=d77c81e6b47b3cb341ccc12f691158970f1a79f8;hpb=14d27ff7369d8892e08b520309c90ece4ab883a7;p=lugaru.git diff --git a/Source/Person.cpp b/Source/Person.cpp index d77c81e..3ee9738 100644 --- a/Source/Person.cpp +++ b/Source/Person.cpp @@ -72,10 +72,6 @@ extern XYZ envsound[30]; extern float envsoundvol[30]; extern float envsoundlife[30]; extern int numenvsounds; -extern int bonus; -extern float bonusvalue; -extern float bonustotal; -extern float bonustime; extern int tutoriallevel; extern float smoketex; extern int tutorialstage; @@ -90,9 +86,6 @@ extern int indialogue; extern bool gamestarted; -extern "C" void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused); -extern "C" void PlayStreamEx(int chan, OPENAL_STREAM *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused); - void Person::CheckKick(){ static XYZ relative; static int i; @@ -111,20 +104,8 @@ void Person::CheckKick(){ 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); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 128); - OPENAL_SetPaused(channels[heavyimpactsound], false); - } + if(tutoriallevel!=1) + emit_sound_at(heavyimpactsound, victim->coords); victim->RagDoll(0); relative=velocity; relative.y=0; @@ -145,13 +126,7 @@ void Person::CheckKick(){ skeleton.free=0; if(id==0)OPENAL_SetPaused(channels[whooshsound], false); - //if(victim->damage>victim->damagetolerance){ - if(id==0){ - bonus=cannon; - bonustime=0; - bonusvalue=100; - } - //} + award_bonus(id, cannon); } else if (victim->isCrouch()){ targetanimation=rabbitkickreversedanim; @@ -187,57 +162,15 @@ void Person::CatchFire(){ 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); - OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel); - OPENAL_SetVolume(channels[firestartsound], 256); - OPENAL_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, samp[stream_firesound], NULL, true); - OPENAL_3D_SetAttributes(channels[stream_firesound], gLoc, vel); - OPENAL_SetVolume(channels[stream_firesound], 256); - OPENAL_SetPaused(channels[stream_firesound], false); + 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){ @@ -479,14 +324,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); @@ -508,12 +345,8 @@ void Person::DoBloodBig(float howmuch,int which){ //if(i==2)whichsound=rabbitpain2sound; } - if(whichsound!=-1){ - PlaySoundEx( whichsound, samp[whichsound], NULL, true); - OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel); - OPENAL_SetVolume(channels[whichsound], 512); - OPENAL_SetPaused(channels[whichsound], false); - } + if(whichsound!=-1) + emit_sound_at(whichsound, coords); } if(id==0&&howmuch>0){ @@ -1149,29 +982,14 @@ void Person::Reverse(){ 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); - OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel); - OPENAL_SetVolume(channels[swordstaffsound], 512); - OPENAL_SetPaused(channels[swordstaffsound], false); + emit_sound_at(swordstaffsound, victim->coords); } else{ - PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true); - OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel); - OPENAL_SetVolume(channels[metalhitsound], 512); - OPENAL_SetPaused(channels[metalhitsound], false); + emit_sound_at(metalhitsound, victim->coords); } } XYZ aim; @@ -1205,36 +1023,18 @@ void Person::Reverse(){ - /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true); - OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel); - OPENAL_SetVolume(channels[metalhitsound], 512); - OPENAL_SetPaused(channels[metalhitsound], false);*/ } if(abs(Random()%20)==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; 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); - OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel); - OPENAL_SetVolume(channels[swordstaffsound], 512); - OPENAL_SetPaused(channels[swordstaffsound], false); + emit_sound_at(swordstaffsound, coords); } else{ - PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true); - OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel); - OPENAL_SetVolume(channels[metalhitsound], 512); - OPENAL_SetPaused(channels[metalhitsound], false); + emit_sound_at(metalhitsound, coords); } } @@ -1266,10 +1066,6 @@ void Person::Reverse(){ } - /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true); - OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel); - OPENAL_SetVolume(channels[metalhitsound], 512); - OPENAL_SetPaused(channels[metalhitsound], false);*/ } } if(hasvictim) @@ -1367,18 +1163,7 @@ void Person::DoDamage(float howmuch){ 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); - OPENAL_3D_SetAttributes(channels[splattersound], gLoc, vel); - OPENAL_SetVolume(channels[splattersound], 256); - OPENAL_SetPaused(channels[splattersound], false); + emit_sound_at(splattersound, coords); skeleton.free=2; DoDamage(10000); @@ -1388,9 +1173,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; @@ -1399,14 +1182,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); @@ -1429,10 +1204,7 @@ void Person::DoDamage(float howmuch){ } if(whichsound!=-1){ - PlaySoundEx( whichsound, samp[whichsound], NULL, true); - OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel); - OPENAL_SetVolume(channels[whichsound], 512); - OPENAL_SetPaused(channels[whichsound], false); + emit_sound_at(whichsound, coords); } } speechdelay=.3; @@ -1797,18 +1569,7 @@ 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); - OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel); - OPENAL_SetVolume(channels[fireendsound], 256); - OPENAL_SetPaused(channels[fireendsound], false); + emit_sound_at(fireendsound, coords); OPENAL_SetPaused(channels[stream_firesound], true); deathbleeding=0; } @@ -1827,27 +1588,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); - OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - OPENAL_SetVolume(channels[clawslicesound], 128); - OPENAL_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); } } @@ -1857,34 +1603,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); - OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel); - OPENAL_SetVolume(channels[knifesheathesound], 128); - OPENAL_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); - OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - OPENAL_SetVolume(channels[knifedrawsound], 128); - OPENAL_SetPaused(channels[knifedrawsound], false); + emit_sound_at(knifedrawsound, coords, 128); } } drawtogglekeydown=1; @@ -1893,14 +1615,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; @@ -1934,12 +1648,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); - OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel); - if(whichsound!=knifeswishsound)OPENAL_SetVolume(channels[whichsound], 128); - if(whichsound!=knifeswishsound&&(targetanimation==staffhitanim||targetanimation==staffgroundsmashanim||targetanimation==staffspinhitanim))OPENAL_SetVolume(channels[whichsound], 256); - if(whichsound==knifeswishsound)OPENAL_SetVolume(channels[whichsound], 512); - OPENAL_SetPaused(channels[whichsound], false); + emit_sound_at(whichsound, coords, 256.); if(id==0) if(whichsound==footstepsound||whichsound==footstepsound2||whichsound==footstepsound3||whichsound==footstepsound4){ @@ -1952,10 +1661,7 @@ void Person::DoAnimations(){ if(animation[targetanimation].label[targetframe]==3){ whichsound--; - PlaySoundEx( whichsound, samp[whichsound], NULL, true); - OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel); - OPENAL_SetVolume(channels[whichsound], 128); - OPENAL_SetPaused(channels[whichsound], false); + emit_sound_at(whichsound, coords, 128.); } } @@ -1965,14 +1671,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); @@ -1996,10 +1694,7 @@ void Person::DoAnimations(){ //if(animation[targetanimation].label[targetframe]==8)whichsound=landsound2; if(whichsound!=-1){ - PlaySoundEx( whichsound, samp[whichsound], NULL, true); - OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel); - OPENAL_SetVolume(channels[whichsound], 512); - OPENAL_SetPaused(channels[whichsound], false); + emit_sound_at(whichsound, coords); } } @@ -2022,18 +1717,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); - OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - OPENAL_SetVolume(channels[knifedrawsound], 128); - OPENAL_SetPaused(channels[knifedrawsound], false); + emit_sound_at(knifedrawsound, coords, 128.); } weaponactive=0; @@ -2059,14 +1743,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){ @@ -2076,17 +1752,11 @@ void Person::DoAnimations(){ } if(!fleshstuck){ if(weapons.type[i]!=staff){ - PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true); - OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - OPENAL_SetVolume(channels[knifedrawsound], 128); - OPENAL_SetPaused(channels[knifedrawsound], false); + emit_sound_at(knifedrawsound, coords, 128.); } } if(fleshstuck){ - PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true); - OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel); - OPENAL_SetVolume(channels[fleshstabremovesound], 128); - OPENAL_SetPaused(channels[fleshstabremovesound], false); + emit_sound_at(fleshstabremovesound, coords, 128.); } weaponactive=0; if(weapons.owner[i]!=-1){ @@ -2154,34 +1824,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); - OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel); - OPENAL_SetVolume(channels[knifesheathesound], 128); - OPENAL_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); - OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - OPENAL_SetVolume(channels[knifedrawsound], 128); - OPENAL_SetPaused(channels[knifedrawsound], false); + emit_sound_at(knifedrawsound, coords, 128.); } } @@ -2206,19 +1852,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); - OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel); - OPENAL_SetVolume(channels[jumpsound], 128); - OPENAL_SetPaused(channels[jumpsound], false); + emit_sound_at(jumpsound, coords); } float closestdist; @@ -2254,19 +1888,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); - OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel); - OPENAL_SetVolume(channels[jumpsound], 128); - OPENAL_SetPaused(channels[jumpsound], false); + emit_sound_at(jumpsound, coords, 128.); } } } @@ -2286,25 +1908,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); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 128); - OPENAL_SetPaused(channels[heavyimpactsound], false); + emit_sound_at(heavyimpactsound, victim->coords, 128.); } if(creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true); - OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - OPENAL_SetVolume(channels[clawslicesound], 128); - OPENAL_SetPaused(channels[clawslicesound], false); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2/victim->armorhead,175); } @@ -2322,9 +1930,7 @@ void Person::DoAnimations(){ victim->Puff(head); victim->DoDamage(damagemult*100/victim->protectionhead); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } @@ -2336,23 +1942,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); - OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel); - OPENAL_SetVolume(channels[whooshhitsound], 512); - OPENAL_SetPaused(channels[whooshhitsound], false); + emit_sound_at(whooshhitsound, victim->coords); if(creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true); - OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - OPENAL_SetVolume(channels[clawslicesound], 128); - OPENAL_SetPaused(channels[clawslicesound], false); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2,175); } @@ -2380,25 +1972,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); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 160); - OPENAL_SetPaused(channels[heavyimpactsound], false); + emit_sound_at(heavyimpactsound, victim->coords, 160.); } if(creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true); - OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - OPENAL_SetVolume(channels[clawslicesound], 128); - OPENAL_SetPaused(channels[clawslicesound], false); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2/victim->armorhead,175); } @@ -2416,16 +1994,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); } } @@ -2435,25 +2007,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); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 160); - OPENAL_SetPaused(channels[heavyimpactsound], false); + emit_sound_at(heavyimpactsound, victim->coords, 160.); } if(creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true); - OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - OPENAL_SetVolume(channels[clawslicesound], 128); - OPENAL_SetPaused(channels[clawslicesound], false); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2/victim->armorhead,175); } @@ -2471,16 +2029,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); } } @@ -2492,18 +2044,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); - OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel); - OPENAL_SetVolume(channels[whooshhitsound], 512); - OPENAL_SetPaused(channels[whooshhitsound], false); + emit_sound_at(whooshhitsound, victim->coords); victim->RagDoll(0); XYZ relative; relative=victim->coords-coords; @@ -2523,23 +2064,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); - OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel); - OPENAL_SetVolume(channels[landsound2], 128); - OPENAL_SetPaused(channels[landsound2], false); - */ - PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true); - OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel); - OPENAL_SetVolume(channels[movewhooshsound], 128); - OPENAL_SetPaused(channels[movewhooshsound], false); + emit_sound_at(whooshhitsound, victim->coords, 128.); victim->skeleton.longdead=0; victim->skeleton.free=1; @@ -2572,19 +2097,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); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 128); - OPENAL_SetPaused(channels[heavyimpactsound], false); + emit_sound_at(heavyimpactsound, coords, 128.); } XYZ relative; relative=victim->coords-coords; @@ -2607,19 +2121,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); - OPENAL_3D_SetAttributes(channels[thudsound], gLoc, vel); - OPENAL_SetVolume(channels[thudsound], 400); - OPENAL_SetPaused(channels[thudsound], false); + emit_sound_at(thudsound, coords); } victim->skeleton.longdead=0; @@ -2640,9 +2143,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); @@ -2655,26 +2157,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); - OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel); - OPENAL_SetVolume(channels[knifesheathesound], 128); - OPENAL_SetPaused(channels[knifesheathesound], false); + emit_sound_at(knifesheathesound, coords, 128.); } if(victim&&hasvictim){ @@ -2720,11 +2210,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; @@ -2737,10 +2224,7 @@ void Person::DoAnimations(){ victim->skeleton.joints[i].locked=0; //victim->skeleton.joints[i].velocity=0; } - PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, true); - OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel); - OPENAL_SetVolume(channels[fleshstabsound], 128); - OPENAL_SetPaused(channels[fleshstabsound], false); + emit_sound_at(fleshstabsound, coords, 128); } if(whichtri!=-1||weapons.bloody[weaponids[weaponactive]]){ @@ -2749,40 +2233,21 @@ void Person::DoAnimations(){ } if(whichtri==-1){ hasvictim=0; - PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true); - OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel); - OPENAL_SetVolume(channels[knifesheathesound], 128); - OPENAL_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); - OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - OPENAL_SetVolume(channels[knifedrawsound], 128); - OPENAL_SetPaused(channels[knifedrawsound], false); + emit_sound_at(knifedrawsound, coords, 128); } if(victim&&hasvictim){ XYZ footvel,footpoint; - PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true); - OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel); - OPENAL_SetVolume(channels[fleshstabremovesound], 128); - OPENAL_SetPaused(channels[fleshstabremovesound], false); + emit_sound_at(fleshstabremovesound, coords, 128.); footvel=0; footpoint=(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2); @@ -2876,33 +2341,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); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 128); - OPENAL_SetPaused(channels[heavyimpactsound], false); - } - } - else { - if(tutoriallevel!=1){ - PlaySoundEx( landsound2, samp[landsound2], NULL, true); - OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel); - OPENAL_SetVolume(channels[landsound2], 256); - OPENAL_SetPaused(channels[landsound2], false); - } + if(tutoriallevel!=1){ + emit_sound_at(heavyimpactsound, victim->coords, 128); } - //if(!victim->isIdle()||victim->damage>victim->damagetolerance-60) victim->RagDoll(0); XYZ relative; relative=victim->coords-coords; @@ -2923,9 +2365,7 @@ void Person::DoAnimations(){ victim->Puff(abdomen); victim->DoDamage(damagemult*60/victim->protectionhigh); - if(id==0){ - SolidHitBonus(); - } + SolidHitBonus(id); } } @@ -2934,37 +2374,19 @@ 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); - OPENAL_3D_SetAttributes(channels[thudsound], gLoc, vel); - OPENAL_SetVolume(channels[thudsound], 512); - OPENAL_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); - OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel); - OPENAL_SetVolume(channels[whooshhitsound], 512); - OPENAL_SetPaused(channels[whooshhitsound], false); + emit_sound_at(whooshhitsound, victim->coords); } } else { if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 256); - OPENAL_SetPaused(channels[heavyimpactsound], false); + emit_sound_at(heavyimpactsound, victim->coords); } } @@ -2990,28 +2412,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); - OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel); - OPENAL_SetVolume(channels[landsound2], 256); - OPENAL_SetPaused(channels[landsound2], false); + emit_sound_at(landsound2, victim->coords); Puff(righthand); } @@ -3020,30 +2428,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); - OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel); - OPENAL_SetVolume(channels[swordstaffsound], 512); - OPENAL_SetPaused(channels[swordstaffsound], false); + emit_sound_at(swordstaffsound, victim->coords); } else{ - PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true); - OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel); - OPENAL_SetVolume(channels[metalhitsound], 512); - OPENAL_SetPaused(channels[metalhitsound], false); + emit_sound_at(metalhitsound, victim->coords); } } @@ -3080,28 +2474,11 @@ void Person::DoAnimations(){ if(hasvictim) if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*4.5&&/*animation[victim->targetanimation].height!=lowheight&&*/victim->targetanimation!=dodgebackanim&&victim->targetanimation!=rollanim){ escapednum=0; - //if(Random()%2){ if(tutoriallevel!=1)victim->DoBloodBig(1.5/victim->armorhigh,225); - //} - if(id==0){ - bonus=Slicebonus; - bonustime=0; - bonusvalue=10; - } + award_bonus(id, Slicebonus); if(tutoriallevel!=1){ - float gLoc[3]; - float vel[3]; - 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); - OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel); - OPENAL_SetVolume(channels[knifeslicesound], 512); - OPENAL_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)){ @@ -3145,40 +2522,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; - } + 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); - OPENAL_3D_SetAttributes(channels[swordslicesound], gLoc, vel); - OPENAL_SetVolume(channels[swordslicesound], 512); - OPENAL_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; @@ -3208,31 +2566,15 @@ void Person::DoAnimations(){ } } 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); - OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel); - OPENAL_SetVolume(channels[swordstaffsound], 512); - OPENAL_SetPaused(channels[swordstaffsound], false); + emit_sound_at(swordstaffsound, victim->coords); } else{ - PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true); - OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel); - OPENAL_SetVolume(channels[metalhitsound], 512); - OPENAL_SetPaused(channels[metalhitsound], false); + emit_sound_at(metalhitsound, victim->coords); } } @@ -3264,11 +2606,6 @@ void Person::DoAnimations(){ player[i].wentforweapon=0; } - /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true); - OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel); - OPENAL_SetVolume(channels[metalhitsound], 512); - OPENAL_SetPaused(channels[metalhitsound], false);*/ - } } } @@ -3282,18 +2619,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); - OPENAL_3D_SetAttributes(channels[staffheadsound], gLoc, vel); - OPENAL_SetVolume(channels[staffheadsound], 256); - OPENAL_SetPaused(channels[staffheadsound], false); + emit_sound_at(staffheadsound, victim->coords); } victim->RagDoll(0); XYZ relative; @@ -3313,11 +2639,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); } } } @@ -3331,18 +2653,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); - OPENAL_3D_SetAttributes(channels[staffheadsound], gLoc, vel); - OPENAL_SetVolume(channels[staffheadsound], 256); - OPENAL_SetPaused(channels[staffheadsound], false); + emit_sound_at(staffheadsound, victim->coords); } victim->RagDoll(0); XYZ relative; @@ -3359,11 +2670,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); } } } @@ -3377,18 +2684,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); - OPENAL_3D_SetAttributes(channels[staffbodysound], gLoc, vel); - OPENAL_SetVolume(channels[staffbodysound], 256); - OPENAL_SetPaused(channels[staffbodysound], false); + emit_sound_at(staffbodysound, victim->coords); } victim->skeleton.longdead=0; victim->skeleton.free=1; @@ -3427,11 +2723,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); } } } @@ -3441,22 +2733,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){ @@ -3469,19 +2751,13 @@ void Person::DoAnimations(){ } victim->skeleton.joints[victim->skeleton.jointlabels[head]].velocity+=relative*damagemult*200; if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 128); - OPENAL_SetPaused(channels[heavyimpactsound], false); + 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); - OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - OPENAL_SetVolume(channels[clawslicesound], 128); - OPENAL_SetPaused(channels[clawslicesound], false); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2/victim->armorhead,175); } @@ -3497,18 +2773,12 @@ void Person::DoAnimations(){ victim->targetrotation=targetrotation+180; victim->target=0; if(tutoriallevel!=1){ - PlaySoundEx( landsound2, samp[landsound2], NULL, true); - OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel); - OPENAL_SetVolume(channels[landsound2], 128); - OPENAL_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); - OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - OPENAL_SetVolume(channels[clawslicesound], 128); - OPENAL_SetPaused(channels[clawslicesound], false); + emit_sound_at(clawslicesound, victim->coords, 128.); victim->spurt=1; victim->DoBloodBig(2/victim->armorhigh,170); } @@ -3521,19 +2791,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); - OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel); - OPENAL_SetVolume(channels[landsound2], 128); - OPENAL_SetPaused(channels[landsound2], false); + emit_sound_at(landsound2, victim->coords, 128.); } XYZ relative; relative=victim->coords-coords; @@ -3572,18 +2831,13 @@ void Person::DoAnimations(){ victim->targetrotation=targetrotation+180; victim->target=0; if(tutoriallevel!=1){ - PlaySoundEx( landsound2, samp[landsound2], NULL, true); - OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel); - OPENAL_SetVolume(channels[landsound2], 128); - OPENAL_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); } } @@ -3596,25 +2850,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); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 128); - OPENAL_SetPaused(channels[heavyimpactsound], false); + emit_sound_at(heavyimpactsound, victim->coords, 128.); } if(creature==wolftype){ - PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true); - OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - OPENAL_SetVolume(channels[clawslicesound], 128); - OPENAL_SetPaused(channels[clawslicesound], false); + emit_sound_at(clawslicesound, victim->coords, 128); victim->spurt=1; victim->DoBloodBig(2/victim->armorhigh,170); } @@ -3632,11 +2872,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){ @@ -3666,18 +2902,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); - OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel); - OPENAL_SetVolume(channels[whooshhitsound], 128); - OPENAL_SetPaused(channels[whooshhitsound], false); + emit_sound_at(whooshhitsound, victim->coords, 128.); victim->RagDoll(0); XYZ relative; relative=victim->coords-oldcoords; @@ -3700,33 +2925,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); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 128); - OPENAL_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; @@ -3766,39 +2972,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); - OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel); - OPENAL_SetVolume(channels[knifeslicesound], 512); - OPENAL_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); - OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - OPENAL_SetVolume(channels[clawslicesound], 128); - OPENAL_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); } @@ -3828,30 +3016,7 @@ void Person::DoAnimations(){ victim->skeleton.joints[victim->skeleton.jointlabels[rightelbow]].velocity*=.5-1; victim->skeleton.joints[victim->skeleton.jointlabels[rightshoulder]].velocity*=.7-1; - if(id==0){ - bonus=swordreversebonus; - bonustime=0; - bonusvalue=100; - } - //victim->DoDamage(90); - - /*if(weaponactive!=-1){ - float gLoc[3]; - float vel[3]; - gLoc[0]=victim->coords.x; - gLoc[1]=victim->coords.y; - gLoc[2]=victim->coords.z; - vel[0]=velocity.x; - vel[1]=velocity.y; - vel[2]=velocity.z; - victim->DoBloodBig(2,225); - PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true); - OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel); - OPENAL_SetVolume(channels[knifeslicesound], 512); - OPENAL_SetPaused(channels[knifeslicesound], false); - if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1; - weapons.blooddrip[weaponids[weaponactive]]+=3; - }*/ + award_bonus(id, swordreversebonus); } if(hasvictim&&targetanimation==knifeslashreversalanim&&animation[targetanimation].label[currentframe]==7){ @@ -3861,19 +3026,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); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 128); - OPENAL_SetPaused(channels[heavyimpactsound], false); + emit_sound_at(heavyimpactsound, victim->coords, 128.); } victim->RagDoll(0); XYZ relative; @@ -3889,11 +3043,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){ @@ -3916,38 +3066,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); - OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel); - OPENAL_SetVolume(channels[knifeslicesound], 512); - OPENAL_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); - OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - OPENAL_SetVolume(channels[clawslicesound], 128); - OPENAL_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){ @@ -3973,20 +3105,10 @@ void Person::DoAnimations(){ Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1); Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1); victim->DoBloodBig(200,195); - if(id==0){ - bonus=tracheotomy; - bonustime=0; - bonusvalue=100; - } - - //victim->neckspurtamount=5; + award_bonus(id, tracheotomy); } if(targetanimation==knifefollowanim){ - if(id==0){ - bonus=Stabbonus; - bonustime=0; - bonusvalue=40; - } + award_bonus(id, Stabbonus); XYZ footvel,footpoint; footvel=0; footpoint=weapons.tippoint[weaponids[0]]; @@ -4000,18 +3122,7 @@ void Person::DoAnimations(){ } 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); - OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel); - OPENAL_SetVolume(channels[fleshstabsound], 512); - OPENAL_SetPaused(channels[fleshstabsound], false); + emit_sound_at(fleshstabsound, victim->coords); if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; weapons.blooddrip[weaponids[weaponactive]]+=5; } @@ -4030,18 +3141,7 @@ 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); - OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel); - OPENAL_SetVolume(channels[fleshstabremovesound], 512); - OPENAL_SetPaused(channels[fleshstabremovesound], false); + emit_sound_at(fleshstabremovesound, victim->coords); if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; weapons.blooddrip[weaponids[weaponactive]]+=5; @@ -4059,11 +3159,7 @@ void Person::DoAnimations(){ if(hasvictim&&(targetanimation==swordsneakattackanim)&&animation[targetanimation].label[currentframe]==5){ if(weaponactive!=-1&&victim->bloodlossdamagetolerance){ - if(id==0){ - bonus=backstab; - bonustime=0; - bonusvalue=100; - } + award_bonus(id, backstab); escapednum=0; @@ -4080,18 +3176,7 @@ void Person::DoAnimations(){ 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); - OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel); - OPENAL_SetVolume(channels[fleshstabsound], 512); - OPENAL_SetPaused(channels[fleshstabsound], false); + emit_sound_at(fleshstabsound, victim->coords); if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; weapons.blooddrip[weaponids[weaponactive]]+=5; } @@ -4104,18 +3189,7 @@ 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); - OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel); - OPENAL_SetVolume(channels[fleshstabremovesound], 512); - OPENAL_SetPaused(channels[fleshstabremovesound], false); + emit_sound_at(fleshstabremovesound, victim->coords); if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; weapons.blooddrip[weaponids[weaponactive]]+=5; @@ -4138,20 +3212,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); - OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - OPENAL_SetVolume(channels[heavyimpactsound], 128); - OPENAL_SetPaused(channels[heavyimpactsound], false); + emit_sound_at(heavyimpactsound, victim->coords, 128.); } } bool doslice; @@ -4161,28 +3224,18 @@ void Person::DoAnimations(){ if(doslice){ if(weaponactive!=-1){ victim->DoBloodBig(2/victim->armorhead,225); - PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true); - OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel); - OPENAL_SetVolume(channels[knifeslicesound], 512); - OPENAL_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); - OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel); - OPENAL_SetVolume(channels[clawslicesound], 128); - OPENAL_SetPaused(channels[clawslicesound], false); + 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); @@ -4222,11 +3275,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); } } @@ -4242,19 +3291,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); - OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel); - OPENAL_SetVolume(channels[movewhooshsound], 128); - OPENAL_SetPaused(channels[movewhooshsound], false); + emit_sound_at(movewhooshsound, coords, 128.); } if(currentanimation==staggerbackhighanim){ targetanimation=getIdle(); @@ -4294,34 +3331,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); - OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel); - OPENAL_SetVolume(channels[knifesheathesound], 128); - OPENAL_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); - OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - OPENAL_SetVolume(channels[knifedrawsound], 128); - OPENAL_SetPaused(channels[knifedrawsound], false); + emit_sound_at(knifedrawsound, coords, 128.); } } if(currentanimation==rollanim){ @@ -4541,18 +3554,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); - OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel); - OPENAL_SetVolume(channels[landsound], 128); - OPENAL_SetPaused(channels[landsound], false); + emit_sound_at(landsound, coords, 128); if(currentanimation==upunchreversedanim||currentanimation==swordslashreversedanim){ targetanimation=rollanim; @@ -4612,7 +3614,7 @@ void Person::DoAnimations(){ //DoDamage(100); RagDoll(0); skeleton.spinny=0; - if(id!=0)SolidHitBonus(); + SolidHitBonus(!id); // FIXME: tricky id } if(feint){ escapednum++; @@ -4635,7 +3637,7 @@ void Person::DoAnimations(){ //DoDamage(100); RagDoll(0); skeleton.spinny=0; - if(id!=0)SolidHitBonus(); + SolidHitBonus(!id); // FIXME: tricky id } if(feint){ escapednum++; @@ -4784,14 +3786,12 @@ void Person::DoAnimations(){ } if(isLanding()&&landhard){ - //if(abs(velocity.y)>fast_sqrt(velocity.x*velocity.x*velocity.z*velocity.z)){ if(id==0)camerashake+=.4; targetanimation=getLandhard(); targetframe=0; target=0; landhard=0; transspeed=15; - //} } } //skeleton.DoConstraints(); @@ -4995,9 +3995,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){ @@ -5372,9 +4370,7 @@ void Person::DoStuff(){ unconscioustime=0; if(creature==wolftype){ - bonus=Wolfbonus; - bonustime=0; - bonusvalue=300; + award_bonus(0, Wolfbonus); } RagDoll(0); @@ -5462,16 +4458,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++; } @@ -5480,18 +4471,7 @@ 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); - OPENAL_3D_SetAttributes(channels[breaksound], gLoc, vel); - OPENAL_SetVolume(channels[breaksound], 512); - OPENAL_SetPaused(channels[breaksound], false); + emit_sound_at(breaksound, coords); /*if(id==0||findDistancefast(&coords,&viewer)<50){ slomo=1; slomodelay=.2; @@ -5521,11 +4501,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; @@ -5649,12 +4626,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; @@ -5797,18 +4770,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); - OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel); - OPENAL_SetVolume(channels[movewhooshsound], 128); - OPENAL_SetPaused(channels[movewhooshsound], false); + emit_sound_at(movewhooshsound, coords, 128.); currentanimation=targetanimation; currentframe=targetframe-1; @@ -5837,18 +4799,7 @@ void Person::DoStuff(){ if(findDistancefastflat(&coords,&objects.position[i]).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); - OPENAL_3D_SetAttributes(channels[skidsound], gLoc, vel); - OPENAL_SetVolume(channels[skidsound], 128*velspeed/10); - OPENAL_SetPaused(channels[skidsound], false); + emit_sound_at(skidsound, coords, 128*velspeed/10); } else { - PlaySoundEx( snowskidsound, samp[snowskidsound], NULL, true); - OPENAL_3D_SetAttributes(channels[snowskidsound], gLoc, vel); - OPENAL_SetVolume(channels[snowskidsound], 128*velspeed/10); - OPENAL_SetPaused(channels[snowskidsound], false); + emit_sound_at(snowskidsound, coords, 128*velspeed/10); } } @@ -6888,24 +5768,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) @@ -6930,7 +5804,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(); @@ -7343,8 +6216,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){ - //} } } } @@ -7419,18 +6290,7 @@ int Person::SphereCheck(XYZ *p1,float radius, XYZ *p, XYZ *move, float *rotate, 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); - OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel); - OPENAL_SetVolume(channels[landsound], 128); - OPENAL_SetPaused(channels[landsound], false); + emit_sound_at(landsound, coords, 128.); if(id==0){ envsound[numenvsounds]=coords; @@ -7484,281 +6344,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() -{ -} -