]> git.jsancho.org Git - lugaru.git/blobdiff - Source/Person.cpp
HUGE refactoring:
[lugaru.git] / Source / Person.cpp
index edebfb243612885b8b4dd962f908a3c121d49ea5..d1ac29f591e27a9b884e11945facdcfa0b4cd8c9 100644 (file)
@@ -1,9 +1,31 @@
+/*
+Copyright (C) 2003, 2010 - Wolfire Games
+
+This file is part of Lugaru.
+
+Lugaru is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+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.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*/
+
 /**> HEADER FILES <**/
 #include "Person.h"
+#include "openal_wrapper.h"
 
 extern float multiplier;
 extern Animation animation[animation_count];
-extern FSOUND_SAMPLE   *samp[100];
+extern OPENAL_SAMPLE   *samp[100];
 extern int channels[100];
 extern Terrain terrain;
 extern float gravity;
@@ -87,9 +109,9 @@ extern int indialogue;
 
 extern bool gamestarted;
 
-extern FSOUND_STREAM * strm[10];
-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);
+extern OPENAL_STREAM * strm[20];
+extern "C"     void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused);
+extern "C" void PlayStreamEx(int chan, OPENAL_STREAM *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused);
 
 void Person::CheckKick(){
        static XYZ relative;
@@ -118,10 +140,10 @@ void Person::CheckKick(){
                                                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);
+                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                }
                                                victim->RagDoll(0);
                                                relative=velocity;
@@ -141,7 +163,7 @@ void Person::CheckKick(){
                                                velocity=facing*-10;
                                                velocity.y=5;
                                                skeleton.free=0;
-                                               if(id==0)FSOUND_SetPaused(channels[whooshsound], FALSE);
+                                               if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
 
                                                //if(victim->damage>victim->damagetolerance){
                                                if(id==0){
@@ -193,19 +215,19 @@ void Person::CatchFire(){
        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);
+       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, 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);
+       //PlaySoundEx( firesound, samp[firesound], NULL, true);
+       PlayStreamEx( stream_firesound, strm[stream_firesound], NULL, true);
+       OPENAL_3D_SetAttributes(channels[stream_firesound], gLoc, vel);
+       OPENAL_SetVolume(channels[stream_firesound], 256);
+       OPENAL_SetPaused(channels[stream_firesound], false);
 
        flamedelay=0;
 
@@ -419,7 +441,7 @@ void Person::DoBlood(float howmuch,int which){
                                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);
-                               }               
+                               }
                        }
                        if(Random()%2==0)
                                for(int i=0;i<3;i++){
@@ -510,10 +532,10 @@ void Person::DoBloodBig(float howmuch,int which){
                        }
 
                        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);
+                               PlaySoundEx( whichsound, samp[whichsound], NULL, true);
+                               OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[whichsound], 512);
+                               OPENAL_SetPaused(channels[whichsound], false);
                        }
                }
 
@@ -546,7 +568,7 @@ void Person::DoBloodBig(float howmuch,int which){
                                        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);
-                                       }       
+                                       }
                                }
                        }
                        int offsetx=0,offsety=0;
@@ -587,7 +609,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++){
@@ -598,7 +620,7 @@ void Person::DoBloodBig(float howmuch,int which){
                                                                if(i>endx)endx=i;
                                                                if(j>endy)endy=j;
                                                        }
-                                               }       
+                                               }
                                        }
 
                                        startx+=offsetx;
@@ -676,7 +698,7 @@ void Person::DoBloodBig(float howmuch,int which){
                bloodloss+=bleeding*3;
 
                if(tutoriallevel!=1&&aitype!=playercontrolled&&bloodloss>damagetolerance*2/3&&bloodloss<damagetolerance&&creature==rabbittype){
-                       if(abs(Random()%2)==0){aitype=gethelptype; 
+                       if(abs(Random()%2)==0){aitype=gethelptype;
                        lastseentime=12;
                        }
                        else aitype=attacktypecutoff;
@@ -773,7 +795,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){
                                        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);
-                                       }       
+                                       }
                                }
                        }
                        int offsetx=0,offsety=0;
@@ -803,7 +825,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){
                                                        if(i>endx)endx=i;
                                                        if(j>endy)endy=j;
                                                }
-                                       }       
+                                       }
                                }
                                if(creature==wolftype)
                                        for(i=0;i<512;i++){
@@ -814,7 +836,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){
                                                                if(i>endx)endx=i;
                                                                if(j>endy)endy=j;
                                                        }
-                                               }       
+                                               }
                                        }
                                        startx+=offsetx;
                                        endx+=offsetx;
@@ -894,7 +916,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){
        bloodloss+=bleeding*3;
 
        if(tutoriallevel!=1&&aitype!=playercontrolled&&bloodloss>damagetolerance*2/3&&bloodloss<damagetolerance&&creature==rabbittype){
-               if(abs(Random()%2)==0){aitype=gethelptype; 
+               if(abs(Random()%2)==0){aitype=gethelptype;
                lastseentime=12;
                }
                else aitype=attacktypecutoff;
@@ -1163,16 +1185,16 @@ void Person::Reverse(){
                                                        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);
+                                                       PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[swordstaffsound], 512);
+                                                       OPENAL_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);
+                                                       PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                       OPENAL_SetPaused(channels[metalhitsound], false);
                                                }
                                        }
                                        XYZ aim;
@@ -1206,10 +1228,10 @@ void Person::Reverse(){
 
 
 
-                                       /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE);
-                                       FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
-                                       FSOUND_SetVolume(channels[metalhitsound], 512);
-                                       FSOUND_SetPaused(channels[metalhitsound], FALSE);*/
+                                       /*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){
@@ -1226,16 +1248,16 @@ void Person::Reverse(){
                                                        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);
+                                                       PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[swordstaffsound], 512);
+                                                       OPENAL_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);
+                                                       PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                       OPENAL_SetPaused(channels[metalhitsound], false);
                                                }
                                        }
 
@@ -1267,10 +1289,10 @@ void Person::Reverse(){
                                 }
 
 
-                                       /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE);
-                                       FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
-                                       FSOUND_SetVolume(channels[metalhitsound], 512);
-                                       FSOUND_SetPaused(channels[metalhitsound], FALSE);*/
+                                       /*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)
@@ -1345,7 +1367,7 @@ void Person::DoDamage(float howmuch){
 
        if(aitype==passivetype&&damage<damagetolerance&&((tutoriallevel!=1||cananger)&&hostile))aitype=attacktypecutoff;
        if(tutoriallevel!=1&&aitype!=playercontrolled&&damage<damagetolerance&&damage>damagetolerance*2/3&&creature==rabbittype){
-               if(abs(Random()%2)==0){aitype=gethelptype; 
+               if(abs(Random()%2)==0){aitype=gethelptype;
                lastseentime=12;
                }
                else aitype=attacktypecutoff;
@@ -1376,10 +1398,10 @@ void Person::DoDamage(float howmuch){
                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);
+               PlaySoundEx( splattersound, samp[splattersound], NULL, true);
+               OPENAL_3D_SetAttributes(channels[splattersound], gLoc, vel);
+               OPENAL_SetVolume(channels[splattersound], 256);
+               OPENAL_SetPaused(channels[splattersound], false);
 
                skeleton.free=2;
                DoDamage(10000);
@@ -1391,7 +1413,7 @@ void Person::DoDamage(float howmuch){
                if(!dead&&creature==wolftype){
                        bonus=Wolfbonus;
                        bonustime=0;
-                       bonusvalue=300; 
+                       bonusvalue=300;
                }
                dead=2;
                coords=20;
@@ -1430,10 +1452,10 @@ 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);
+                               PlaySoundEx( whichsound, samp[whichsound], NULL, true);
+                               OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[whichsound], 512);
+                               OPENAL_SetPaused(channels[whichsound], false);
                        }
                }
                speechdelay=.3;
@@ -1737,7 +1759,7 @@ void Person::Puff(int whichlabel){
 
 
 /*
-HitStruct      Person::BulletCollideWithPlayer(XYZ start, XYZ end){
+HitStruct      Person::BulletCollideWithPlayer(XYZ start, XYZ end){
 float damage=20;
 XYZ tempbulletloc[2];
 XYZ collisionpoint;
@@ -1905,7 +1927,7 @@ hitstruct.hitlocation=hitstruct.hitlocation+coords;
 return hitstruct;
 }
 */
-void   Person::DoAnimations(){ 
+void   Person::DoAnimations(){
        if(!skeleton.free){
                int i = 0;
                static float oldtarget;
@@ -1913,7 +1935,7 @@ void      Person::DoAnimations(){
                if(isIdle()&&currentanimation!=getIdle())normalsupdatedelay=0;
 
                if(targetanimation==tempanim||currentanimation==tempanim){
-                       animation[tempanim]=tempanimation;                      
+                       animation[tempanim]=tempanimation;
                }
                if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){
                        float gLoc[3];
@@ -1926,10 +1948,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))){
@@ -1953,7 +1975,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;
@@ -1975,11 +1997,11 @@ void    Person::DoAnimations(){
                                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);
+                               PlaySoundEx( fireendsound, samp[fireendsound], NULL, true);
+                               OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[fireendsound], 256);
+                               OPENAL_SetPaused(channels[fireendsound], false);
+                               OPENAL_SetPaused(channels[stream_firesound], true);
                                deathbleeding=0;
                        }
 
@@ -2005,10 +2027,10 @@ void    Person::DoAnimations(){
                                                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);
+                                               PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                               OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                               OPENAL_SetVolume(channels[clawslicesound], 128);
+                                               OPENAL_SetPaused(channels[clawslicesound], false);
                                                victim->spurt=1;
                                                victim->DoBloodBig(1/victim->armorhead,210);
                                        }
@@ -2036,10 +2058,10 @@ void    Person::DoAnimations(){
                                                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);   
+                                               PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
+                                               OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                               OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                               OPENAL_SetPaused(channels[knifesheathesound], false);
                                        }
                                        if(weaponactive!=-1){
                                                float gLoc[3];
@@ -2051,10 +2073,10 @@ void    Person::DoAnimations(){
                                                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);      
+                                               PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
+                                               OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                               OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                               OPENAL_SetPaused(channels[knifedrawsound], false);
                                        }
                                }
                                drawtogglekeydown=1;
@@ -2082,11 +2104,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;
@@ -2104,12 +2126,12 @@ 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);
+                                       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);
 
                                        if(id==0)
                                                if(whichsound==footstepsound||whichsound==footstepsound2||whichsound==footstepsound3||whichsound==footstepsound4){
@@ -2122,10 +2144,10 @@ 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);
+                                                       PlaySoundEx( whichsound, samp[whichsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[whichsound], 128);
+                                                       OPENAL_SetPaused(channels[whichsound], false);
                                                }
                                }
 
@@ -2166,16 +2188,16 @@ 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);
+                                                                       PlaySoundEx( whichsound, samp[whichsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[whichsound], 512);
+                                                                       OPENAL_SetPaused(channels[whichsound], false);
                                                                }
                                                        }
 
 
 
-                                                       if((!wasLanding()&&!wasLandhard())&&currentanimation!=getIdle()&&(isLanding()||isLandhard())){                          
+                                                       if((!wasLanding()&&!wasLandhard())&&currentanimation!=getIdle()&&(isLanding()||isLandhard())){
                                                                FootLand(0,1);
                                                                FootLand(1,1);
                                                        }
@@ -2200,10 +2222,10 @@ void    Person::DoAnimations(){
                                                                                                        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);
+                                                                                                       PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
+                                                                                                       OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                                                       OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                                                       OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                                                }
 
                                                                                                weaponactive=0;
@@ -2246,17 +2268,17 @@ 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);
+                                                                                                                       PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
+                                                                                                                       OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                                                                       OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                                                                       OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                                                                }
                                                                                                        }
                                                                                                        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);
+                                                                                                               PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true);
+                                                                                                               OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
+                                                                                                               OPENAL_SetVolume(channels[fleshstabremovesound], 128);
+                                                                                                               OPENAL_SetPaused(channels[fleshstabremovesound], false);
                                                                                                        }
                                                                                                        weaponactive=0;
                                                                                                        if(weapons.owner[i]!=-1){
@@ -2333,10 +2355,10 @@ void    Person::DoAnimations(){
                                                                        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);   
+                                                                       PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                                                       OPENAL_SetPaused(channels[knifesheathesound], false);
                                                                }
                                                                if(weaponactive!=-1){
                                                                        float gLoc[3];
@@ -2348,10 +2370,10 @@ void    Person::DoAnimations(){
                                                                        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);      
+                                                                       PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                       OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                }
                                                        }
 
@@ -2385,10 +2407,10 @@ void    Person::DoAnimations(){
                                                                        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);
+                                                                       PlaySoundEx( jumpsound, samp[jumpsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[jumpsound], 128);
+                                                                       OPENAL_SetPaused(channels[jumpsound], false);
                                                                }
 
                                                                float closestdist;
@@ -2433,10 +2455,10 @@ void    Person::DoAnimations(){
                                                                                        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);
+                                                                                       PlaySoundEx( jumpsound, samp[jumpsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[jumpsound], 128);
+                                                                                       OPENAL_SetPaused(channels[jumpsound], false);
                                                                                }
                                                                        }
                                                        }
@@ -2465,16 +2487,16 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                }
                                                                                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);
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2/victim->armorhead,175);
                                                                                }
@@ -2514,15 +2536,15 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                               PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[whooshhitsound], 512);
+                                                                               OPENAL_SetPaused(channels[whooshhitsound], false);
                                                                                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);
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2,175);
                                                                                }
@@ -2559,16 +2581,16 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[heavyimpactsound], 160);
+                                                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                }
                                                                                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);
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2/victim->armorhead,175);
                                                                                }
@@ -2614,16 +2636,16 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[heavyimpactsound], 160);
+                                                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                }
                                                                                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);
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2/victim->armorhead,175);
                                                                                }
@@ -2670,10 +2692,10 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                               PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[whooshhitsound], 512);
+                                                                               OPENAL_SetPaused(channels[whooshhitsound], false);
                                                                                victim->RagDoll(0);
                                                                                XYZ relative;
                                                                                relative=victim->coords-coords;
@@ -2701,15 +2723,15 @@ void    Person::DoAnimations(){
                                                                                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( 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);
-                                                                               FSOUND_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[movewhooshsound], 128);
-                                                                               FSOUND_SetPaused(channels[movewhooshsound], FALSE);
+                                                                               PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[movewhooshsound], 128);
+                                                                               OPENAL_SetPaused(channels[movewhooshsound], false);
 
                                                                                victim->skeleton.longdead=0;
                                                                                victim->skeleton.free=1;
@@ -2751,10 +2773,10 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                }
                                                                                XYZ relative;
                                                                                relative=victim->coords-coords;
@@ -2786,10 +2808,10 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       PlaySoundEx( thudsound, samp[thudsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[thudsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[thudsound], 400);
+                                                                                       OPENAL_SetPaused(channels[thudsound], false);
                                                                                }
 
                                                                                victim->skeleton.longdead=0;
@@ -2841,10 +2863,10 @@ void    Person::DoAnimations(){
 
                                                                        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);
+                                                                               PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                                                               OPENAL_SetPaused(channels[knifesheathesound], false);
                                                                        }
 
                                                                        if(victim&&hasvictim){
@@ -2907,10 +2929,10 @@ 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);
+                                                                                               PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[fleshstabsound], 128);
+                                                                                               OPENAL_SetPaused(channels[fleshstabsound], false);
 
                                                                                        }
                                                                                        if(whichtri!=-1||weapons.bloody[weaponids[weaponactive]]){
@@ -2919,10 +2941,10 @@ 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);                                                           
+                                                                                               PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                                                                               OPENAL_SetPaused(channels[knifesheathesound], false);
                                                                                        }
                                                                                }
                                                                        }
@@ -2940,19 +2962,19 @@ void    Person::DoAnimations(){
                                                                        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);                                                      
+                                                                               PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                               OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                        }
 
                                                                        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);
+                                                                               PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[fleshstabremovesound], 128);
+                                                                               OPENAL_SetPaused(channels[fleshstabremovesound], false);
 
                                                                                footvel=0;
                                                                                footpoint=(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2);
@@ -3012,7 +3034,7 @@ void      Person::DoAnimations(){
 
                                                                                                for(i=0;i<victim->skeleton.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;
                                                                                                }
 
@@ -3035,7 +3057,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){
@@ -3057,18 +3079,18 @@ void    Person::DoAnimations(){
                                                                                //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);
+                                                                                               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);
-                                                                                               FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[landsound2], 256);
-                                                                                               FSOUND_SetPaused(channels[landsound2], FALSE);                                                  
+                                                                                               PlaySoundEx( landsound2, samp[landsound2], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[landsound2], 256);
+                                                                                               OPENAL_SetPaused(channels[landsound2], false);
                                                                                        }
                                                                                }
 
@@ -3115,27 +3137,27 @@ void    Person::DoAnimations(){
                                                                                //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);
+                                                                                               PlaySoundEx( thudsound, samp[thudsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[thudsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[thudsound], 512);
+                                                                                               OPENAL_SetPaused(channels[thudsound], false);
                                                                                        }
                                                                                }
                                                                                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);
+                                                                                               PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[whooshhitsound], 512);
+                                                                                               OPENAL_SetPaused(channels[whooshhitsound], false);
                                                                                        }
                                                                                }
                                                                                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);
-                                                                                       }                                                       
+                                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 256);
+                                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
+                                                                                       }
                                                                                }
 
                                                                                if(victim->damage>victim->damagetolerance-60||normaldotproduct(victim->facing,victim->coords-coords)>0||animation[victim->targetanimation].height==lowheight)
@@ -3178,10 +3200,10 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                               PlaySoundEx( landsound2, samp[landsound2], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[landsound2], 256);
+                                                                               OPENAL_SetPaused(channels[landsound2], false);
 
                                                                                Puff(righthand);
                                                                        }
@@ -3204,16 +3226,16 @@ void    Person::DoAnimations(){
                                                                                                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);
+                                                                                               PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[swordstaffsound], 512);
+                                                                                               OPENAL_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);
+                                                                                               PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                                                               OPENAL_SetPaused(channels[metalhitsound], false);
                                                                                        }
                                                                                }
 
@@ -3226,7 +3248,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);
@@ -3243,7 +3265,7 @@ void      Person::DoAnimations(){
                                                                                        weaponids[0]=weaponids[num_weapons];
                                                                                }
                                                                                weaponactive=-1;
-                                                                       }               
+                                                                       }
                                                                }
 
                                                                if(targetanimation==knifeslashstartanim&&animation[targetanimation].label[currentframe]==5){
@@ -3268,10 +3290,10 @@ void    Person::DoAnimations(){
                                                                                                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);
+                                                                                               PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[knifeslicesound], 512);
+                                                                                               OPENAL_SetPaused(channels[knifeslicesound], false);
                                                                                        }
                                                                                        //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)){
@@ -3289,14 +3311,14 @@ 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);
                                                                                                footvel=DoRotation(facing,0,90,0)*.8;
@@ -3320,7 +3342,7 @@ void      Person::DoAnimations(){
                                                                                                bonustime=0;
                                                                                                bonusvalue=40;
                                                                                        }
-                                                                                       escapednum=0; 
+                                                                                       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);
@@ -3333,10 +3355,10 @@ void    Person::DoAnimations(){
                                                                                                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);
+                                                                                               PlaySoundEx( swordslicesound, samp[swordslicesound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[swordslicesound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[swordslicesound], 512);
+                                                                                               OPENAL_SetPaused(channels[swordslicesound], false);
                                                                                        }
                                                                                        //victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200;
                                                                                        //if(animation[victim->targetanimation].attack){
@@ -3360,14 +3382,14 @@ 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);
                                                                                                footvel=DoRotation(facing,0,90,0)*.8;
                                                                                                footvel.y-=.3;
@@ -3393,16 +3415,16 @@ void    Person::DoAnimations(){
                                                                                                        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);
+                                                                                                       PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, true);
+                                                                                                       OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
+                                                                                                       OPENAL_SetVolume(channels[swordstaffsound], 512);
+                                                                                                       OPENAL_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);
+                                                                                                       PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
+                                                                                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                                                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                                                                       OPENAL_SetPaused(channels[metalhitsound], false);
                                                                                                }
                                                                                        }
 
@@ -3434,10 +3456,10 @@ 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);*/
+                                                                                       /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                                                       OPENAL_SetPaused(channels[metalhitsound], false);*/
 
                                                                                }
                                                                        }
@@ -3460,10 +3482,10 @@ void    Person::DoAnimations(){
                                                                                        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);
+                                                                                       PlaySoundEx( staffheadsound, samp[staffheadsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[staffheadsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[staffheadsound], 256);
+                                                                                       OPENAL_SetPaused(channels[staffheadsound], false);
                                                                                }
                                                                                victim->RagDoll(0);
                                                                                XYZ relative;
@@ -3509,10 +3531,10 @@ void    Person::DoAnimations(){
                                                                                        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);
+                                                                                       PlaySoundEx( staffheadsound, samp[staffheadsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[staffheadsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[staffheadsound], 256);
+                                                                                       OPENAL_SetPaused(channels[staffheadsound], false);
                                                                                }
                                                                                victim->RagDoll(0);
                                                                                XYZ relative;
@@ -3555,10 +3577,10 @@ void    Person::DoAnimations(){
                                                                                        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);
+                                                                                       PlaySoundEx( staffbodysound, samp[staffbodysound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[staffbodysound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[staffbodysound], 256);
+                                                                                       OPENAL_SetPaused(channels[staffbodysound], false);
                                                                                }
                                                                                victim->skeleton.longdead=0;
                                                                                victim->skeleton.free=1;
@@ -3566,7 +3588,7 @@ void      Person::DoAnimations(){
 
                                                                                for(i=0;i<victim->skeleton.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;
                                                                                }
 
@@ -3639,19 +3661,19 @@ 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);
+                                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                        }
                                                                                        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);
+                                                                                               PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                               OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                                victim->spurt=1;
                                                                                                victim->DoBloodBig(2/victim->armorhead,175);
                                                                                        }
@@ -3667,18 +3689,18 @@ 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);
+                                                                                               PlaySoundEx( landsound2, samp[landsound2], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[landsound2], 128);
+                                                                                               OPENAL_SetPaused(channels[landsound2], false);
                                                                                        }
                                                                                        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);
+                                                                                               PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                               OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                                victim->spurt=1;
                                                                                                victim->DoBloodBig(2/victim->armorhigh,170);
                                                                                        }
@@ -3700,10 +3722,10 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       PlaySoundEx( landsound2, samp[landsound2], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[landsound2], 128);
+                                                                                       OPENAL_SetPaused(channels[landsound2], false);
                                                                                }
                                                                                XYZ relative;
                                                                                relative=victim->coords-coords;
@@ -3742,10 +3764,10 @@ 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);
+                                                                                               PlaySoundEx( landsound2, samp[landsound2], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[landsound2], 128);
+                                                                                               OPENAL_SetPaused(channels[landsound2], false);
                                                                                        }
                                                                                        victim->Puff(abdomen);
                                                                                        victim->DoDamage(damagemult*30/victim->protectionlow);
@@ -3757,7 +3779,7 @@ void      Person::DoAnimations(){
 
                                                                        }
                                                                }
-                                                       }                               
+                                                       }
                                                        if(animation[targetanimation].attack==reversal&&(!victim->feint||(victim->lastattack==victim->lastattack2&&victim->lastattack2==victim->lastattack3&&Random()%2)||targetanimation==knifefollowanim)){
                                                                if(targetanimation==spinkickreversalanim&&animation[targetanimation].label[currentframe]==7){
                                                                        escapednum=0;
@@ -3775,16 +3797,16 @@ void    Person::DoAnimations(){
                                                                        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);
+                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                        }
                                                                        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);
+                                                                               PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                               OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                victim->spurt=1;
                                                                                victim->DoBloodBig(2/victim->armorhigh,170);
                                                                        }
@@ -3844,10 +3866,10 @@ void    Person::DoAnimations(){
                                                                        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);
+                                                                       PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[whooshhitsound], 128);
+                                                                       OPENAL_SetPaused(channels[whooshhitsound], false);
                                                                        victim->RagDoll(0);
                                                                        XYZ relative;
                                                                        relative=victim->coords-oldcoords;
@@ -3886,10 +3908,10 @@ void    Person::DoAnimations(){
                                                                        }
 
                                                                        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);
+                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                        }
                                                                        victim->RagDoll(0);
                                                                        if(id==0){
@@ -3957,18 +3979,18 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       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;
                                                                                }
                                                                                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);
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2/victim->armorhigh,175);
                                                                                }
@@ -4015,10 +4037,10 @@ void    Person::DoAnimations(){
                                                                        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);
+                                                                       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;
                                                                        }*/
@@ -4040,10 +4062,10 @@ void    Person::DoAnimations(){
                                                                        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);
+                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                        }
                                                                        victim->RagDoll(0);
                                                                        XYZ relative;
@@ -4096,19 +4118,19 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       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]]=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);
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2,175);
                                                                                }
@@ -4133,7 +4155,7 @@ void      Person::DoAnimations(){
                                                                                        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);
                                                                                        */
-                                                                                       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);
@@ -4157,7 +4179,7 @@ void      Person::DoAnimations(){
                                                                                                bonustime=0;
                                                                                                bonusvalue=40;
                                                                                        }
-                                                                                       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);
@@ -4178,10 +4200,10 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                               PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[fleshstabsound], 512);
+                                                                               OPENAL_SetPaused(channels[fleshstabsound], false);
                                                                                if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
                                                                                weapons.blooddrip[weaponids[weaponactive]]+=5;
                                                                        }
@@ -4208,14 +4230,14 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                               PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[fleshstabremovesound], 512);
+                                                                               OPENAL_SetPaused(channels[fleshstabremovesound], false);
                                                                                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);
@@ -4237,7 +4259,7 @@ void      Person::DoAnimations(){
 
                                                                                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);
@@ -4258,10 +4280,10 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                               PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[fleshstabsound], 512);
+                                                                               OPENAL_SetPaused(channels[fleshstabsound], false);
                                                                                if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
                                                                                weapons.blooddrip[weaponids[weaponactive]]+=5;
                                                                        }
@@ -4282,14 +4304,14 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                               PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[fleshstabremovesound], 512);
+                                                                               OPENAL_SetPaused(channels[fleshstabremovesound], false);
                                                                                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);
@@ -4318,10 +4340,10 @@ void    Person::DoAnimations(){
                                                                        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);
+                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                }
                                                                        }
                                                                        bool doslice;
@@ -4331,18 +4353,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);
+                                                                                       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;
                                                                                }
-                                                                               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){
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2/victim->armorhead,175);
                                                                                }
@@ -4421,10 +4443,10 @@ void    Person::DoAnimations(){
                                                                        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);
+                                                                       PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[movewhooshsound], 128);
+                                                                       OPENAL_SetPaused(channels[movewhooshsound], false);
                                                                }
                                                                if(currentanimation==staggerbackhighanim){
                                                                        targetanimation=getIdle();
@@ -4473,10 +4495,10 @@ void    Person::DoAnimations(){
                                                                                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);   
+                                                                               PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                                                               OPENAL_SetPaused(channels[knifesheathesound], false);
                                                                        }
                                                                        if(weaponactive!=-1){
                                                                                float gLoc[3];
@@ -4488,10 +4510,10 @@ void    Person::DoAnimations(){
                                                                                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);      
+                                                                               PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                               OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                        }
                                                                }
                                                                if(currentanimation==rollanim){
@@ -4566,7 +4588,7 @@ void      Person::DoAnimations(){
                                                                                targetframe=3;
                                                                                velocity=facing*-8;
                                                                                velocity.y=4;
-                                                                               if(id==0)FSOUND_SetPaused(channels[whooshsound], FALSE);
+                                                                               if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
                                                                        }
                                                                        if(targetanimation==walljumprightanim){
                                                                                targetanimation=rightflipanim;
@@ -4584,7 +4606,7 @@ void      Person::DoAnimations(){
                                                                                velocity=facing*8;
                                                                                velocity.y=4;
                                                                        }
-                                                                       if(id==0)FSOUND_SetPaused(channels[whooshsound], FALSE);
+                                                                       if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
                                                                }
                                                                if(targetanimation==walljumpleftanim){
                                                                        if(attackkeydown){
@@ -4624,7 +4646,7 @@ void      Person::DoAnimations(){
                                                                                velocity=DoRotation(facing,0,-30,0)*-8;
                                                                                velocity.y=4;
                                                                        }
-                                                                       if(id==0)FSOUND_SetPaused(channels[whooshsound], FALSE);
+                                                                       if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
                                                                }
                                                                if(targetanimation==sneakattackanim){
                                                                        float ycoords=oldcoords.y;
@@ -4719,10 +4741,10 @@ void    Person::DoAnimations(){
                                                                        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);
+                                                                       PlaySoundEx( landsound, samp[landsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[landsound], 128);
+                                                                       OPENAL_SetPaused(channels[landsound], false);
 
                                                                        if(currentanimation==upunchreversedanim||currentanimation==swordslashreversedanim){
                                                                                targetanimation=rollanim;
@@ -4788,7 +4810,7 @@ void      Person::DoAnimations(){
                                                                                escapednum++;
                                                                                targetanimation=rollanim;
                                                                                coords+=facing;
-                                                                               if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE);
+                                                                               if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
                                                                        }
                                                                        lastfeint=0;
                                                                }
@@ -4811,7 +4833,7 @@ void      Person::DoAnimations(){
                                                                                escapednum++;
                                                                                targetanimation=rollanim;
                                                                                coords+=facing*2;
-                                                                               if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE);
+                                                                               if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
                                                                        }
                                                                        lastfeint=0;
                                                                }
@@ -4843,7 +4865,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()){
@@ -4883,7 +4905,7 @@ void      Person::DoAnimations(){
                        if(currentanimation!=oldcurrentanimation||targetanimation!=oldtargetanimation||((currentframe!=oldcurrentframe||targetframe!=oldtargetframe)&&!calcrot)){
                                //Old rotates
                                for(i=0;i<skeleton.num_joints;i++){
-                                       skeleton.joints[i].position=animation[currentanimation].position[i][currentframe];      
+                                       skeleton.joints[i].position=animation[currentanimation].position[i][currentframe];
                                }
 
                                skeleton.FindForwards();
@@ -4905,7 +4927,7 @@ void      Person::DoAnimations(){
 
                                //New rotates
                                for(i=0;i<skeleton.num_joints;i++){
-                                       skeleton.joints[i].position=animation[targetanimation].position[i][targetframe];        
+                                       skeleton.joints[i].position=animation[targetanimation].position[i][targetframe];
                                }
 
                                skeleton.FindForwards();
@@ -4967,7 +4989,7 @@ void      Person::DoAnimations(){
        //skeleton.DoConstraints();
 }
 
-void   Person::DoStuff(){
+void   Person::DoStuff(){
        static XYZ terrainnormal;
        static XYZ flatfacing;
        static XYZ flatvelocity;
@@ -5051,7 +5073,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];
@@ -5064,8 +5086,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);
                        }
                }
        }
@@ -5086,7 +5108,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(breathsprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, .3);      
+               sprites.MakeSprite(breathsprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, .3);
        }
 
        if(bleeding>0){
@@ -5134,7 +5156,7 @@ void      Person::DoStuff(){
                                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(id==0){
                bloodloss+=deathbleeding*40;
@@ -5143,7 +5165,7 @@ void      Person::DoStuff(){
                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;
@@ -5177,7 +5199,7 @@ void      Person::DoStuff(){
                        if(!dead&&creature==wolftype){
                                bonus=Wolfbonus;
                                bonustime=0;
-                               bonusvalue=300; 
+                               bonusvalue=300;
                        }
                        dead=2;
                        if(targetanimation==knifefollowedanim&&!skeleton.free){
@@ -5359,7 +5381,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);                                                       
+                               sprites.MakeSprite(breathsprite, footpoint+footvel*.2,footvel*.4, 1,1,1, .4, .3);
                        }
                }
 
@@ -5447,7 +5469,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){
@@ -5558,7 +5580,7 @@ void      Person::DoStuff(){
                if(creature==wolftype){
                        bonus=Wolfbonus;
                        bonustime=0;
-                       bonusvalue=300; 
+                       bonusvalue=300;
                }
 
                RagDoll(0);
@@ -5596,7 +5618,7 @@ void      Person::DoStuff(){
                /*
                if(bloodloss<damagetolerance)
                for(i=0;i<skeleton.num_joints;i++){
-               skeleton.joints[i].velocity*=1.5;       
+               skeleton.joints[i].velocity*=1.5;
                }*/
        }
 
@@ -5622,7 +5644,7 @@ void      Person::DoStuff(){
                skeleton.free=1;
                damage-=20;
                for(i=0;i<skeleton.num_joints;i++){
-                       skeleton.joints[i].velocity=0;  
+                       skeleton.joints[i].velocity=0;
                }
        }
        if(permanentdamage>damagetolerance&&dead!=2){
@@ -5654,7 +5676,7 @@ void      Person::DoStuff(){
                if(!dead&&creature==wolftype){
                        bonus=Wolfbonus;
                        bonustime=0;
-                       bonusvalue=300; 
+                       bonusvalue=300;
                }
 
                if(id!=0&&unconscioustime<.1&&(bonus!=spinecrusher||bonustime>1)&&(bonus!=FinishedBonus||bonustime>1)&&bloodloss<damagetolerance){
@@ -5678,10 +5700,10 @@ void    Person::DoStuff(){
                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);
+               PlaySoundEx( breaksound, samp[breaksound], NULL, true);
+               OPENAL_3D_SetAttributes(channels[breaksound], gLoc, vel);
+               OPENAL_SetVolume(channels[breaksound], 512);
+               OPENAL_SetPaused(channels[breaksound], false);
                /*if(id==0||findDistancefast(&coords,&viewer)<50){
                slomo=1;
                slomodelay=.2;
@@ -5689,7 +5711,7 @@ void      Person::DoStuff(){
        }
 
        if(skeleton.free==1){
-               if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE);
+               if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
 
                if(!dead){
                        //If knocked over, open hands and close mouth
@@ -5755,7 +5777,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)OPENAL_SetPaused(channels[whooshsound], true);
                                        skeleton.free=3;
                                        DrawSkeleton();
                                        skeleton.free=2;
@@ -5811,7 +5833,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){
@@ -5868,7 +5890,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)OPENAL_SetPaused(channels[whooshsound], true);
                                skeleton.free=0;
                                velocity=0;
                                XYZ middle;
@@ -5995,10 +6017,10 @@ void    Person::DoStuff(){
                                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);
+                               PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
+                               OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[movewhooshsound], 128);
+                               OPENAL_SetPaused(channels[movewhooshsound], false);
 
                                currentanimation=targetanimation;
                                currentframe=targetframe-1;
@@ -6035,10 +6057,10 @@ void    Person::DoStuff(){
                                                                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);
+                                                               PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
+                                                               OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
+                                                               OPENAL_SetVolume(channels[firestartsound], 256);
+                                                               OPENAL_SetPaused(channels[firestartsound], false);
                                                        }
                                                        objects.onfire[i]=1;
                                                }
@@ -6060,10 +6082,10 @@ void    Person::DoStuff(){
                                                                        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);
+                                                                       PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[firestartsound], 256);
+                                                                       OPENAL_SetPaused(channels[firestartsound], false);
                                                                }
                                                                objects.onfire[i]=1;
                                                        }
@@ -6085,10 +6107,10 @@ void    Person::DoStuff(){
                                                                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);
+                                                               PlaySoundEx( bushrustle, samp[bushrustle], NULL, true);
+                                                               OPENAL_3D_SetAttributes(channels[bushrustle], gLoc, vel);
+                                                               OPENAL_SetVolume(channels[bushrustle], 40*findLength(&velocity));
+                                                               OPENAL_SetPaused(channels[bushrustle], false);
 
                                                                if(id==0){
                                                                        envsound[numenvsounds]=coords;
@@ -6131,7 +6153,7 @@ void      Person::DoStuff(){
                                                                                                }
                                                        }
                                                        objects.rotx[i]+=velocity.x*multiplier*6;
-                                                       objects.roty[i]+=velocity.z*multiplier*6;       
+                                                       objects.roty[i]+=velocity.z*multiplier*6;
                                                        objects.messedwith[i]=.5;
                                                }
                                                XYZ tempcoord;
@@ -6144,23 +6166,6 @@ void     Person::DoStuff(){
                                                                tempcoord+=objects.position[i];
                                                        }
                                                        if(findDistancefastflat(&tempcoord,&objects.position[i])<objects.scale[i]*objects.scale[i]*8&&findDistancefast(&tempcoord,&objects.position[i])<objects.scale[i]*objects.scale[i]*300&&tempcoord.y>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;
@@ -6173,10 +6178,10 @@ void    Person::DoStuff(){
                                                                        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);
+                                                                       PlaySoundEx( bushrustle, samp[bushrustle], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[bushrustle], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[bushrustle], 40*findLength(&velocity));
+                                                                       OPENAL_SetPaused(channels[bushrustle], false);
 
                                                                        if(id==0){
                                                                                envsound[numenvsounds]=coords;
@@ -6221,11 +6226,11 @@ void    Person::DoStuff(){
                                                                                                        }
                                                                }
                                                                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;
@@ -6254,16 +6259,14 @@ 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);
-                                       }       
-                               }       
+                                               PlaySoundEx( whichsound, samp[whichsound], NULL, true);
+                                               OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                                               OPENAL_SetVolume(channels[whichsound], 512);
+                                               OPENAL_SetPaused(channels[whichsound], false);
+                                       }
+                               }
 
                                if(targetanimation==staggerbackhighanim)staggerdelay=1;
                                if(targetanimation==staggerbackhardanim)staggerdelay=1;
@@ -6379,7 +6382,7 @@ void      Person::DoStuff(){
                                        }
                                }
                                /*
-                               if(speechdelay>.25){                    
+                               if(speechdelay>.25){
                                if(headmorphend!=2)headmorphness=0;
                                headmorphend=2;
                                targetheadmorphness=1;
@@ -6427,7 +6430,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){
@@ -6473,36 +6476,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(velspeed<speed*30*scale)velspeed=speed*30*scale;
                                                        velocity=flatfacing*velspeed;
                                                }
                                        }
                                        else if(isRun()){
                                                velocity+=facing*multiplier*speed*700*scale;
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                if(creature==rabbittype){
                                                        if(velspeed>speed*55*scale){
                                                                velocity/=velspeed;
@@ -6518,109 +6521,109 @@ 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); 
+                                       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); 
+                                       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);
                                        }
 
@@ -6636,34 +6639,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);
                                        }
 
 
@@ -6678,12 +6681,12 @@ 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);
+                                                       OPENAL_SetPaused(channels[whooshsound], true);
+                                                       OPENAL_SetVolume(channels[whooshsound], 0);
                                                }
 
                                                if(targetanimation==jumpdownanim||isFlip()){
@@ -6697,10 +6700,10 @@ void    Person::DoStuff(){
                                                        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);
+                                                       PlaySoundEx( landsound, samp[landsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[landsound], 128);
+                                                       OPENAL_SetPaused(channels[landsound], false);
 
                                                        if(id==0){
                                                                envsound[numenvsounds]=coords;
@@ -6719,7 +6722,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<multiplier*300*scale){
                                                        velocity=0;
@@ -6736,7 +6739,7 @@ void      Person::DoStuff(){
                                        }
 
                                        if(isLandhard()){
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                velocity.y=0;
                                                if(velspeed<multiplier*600*scale){
                                                        velocity=0;
@@ -6765,16 +6768,16 @@ void    Person::DoStuff(){
                                                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);
+                                                       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);
                                                }
                                                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);
+                                                       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);
                                                }
                                        }
 
@@ -6794,7 +6797,7 @@ void      Person::DoStuff(){
                                                coords=victim->coords;
                                        }
                        }
-                       skeleton.oldfree=skeleton.free; 
+                       skeleton.oldfree=skeleton.free;
 
                        XYZ midterrain;
                        midterrain=0;
@@ -6813,7 +6816,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)<viewdistance*viewdistance)||skeleton.free==3){  
+       if((frustum.SphereInFrustum(coords.x,coords.y+scale*3,coords.z,scale*8)&&findDistancefast(&viewer,&coords)<viewdistance*viewdistance)||skeleton.free==3){
                if(onterrain&&(isIdle()||isCrouch()||wasIdle()||wasCrouch())&&!skeleton.free){
                        calcrot=1;
                }
@@ -7354,7 +7357,7 @@ int Person::DrawSkeleton(){
                if(num_weapons>0){
                        for(k=0;k<num_weapons;k++){
                                i=weaponids[k];
-                               if(weaponactive==k){                                            
+                               if(weaponactive==k){
                                        if(weapons.type[i]!=staff){
                                                for(j=0;j<skeleton.num_muscles;j++){
                                                        if((skeleton.muscles[j].parent1->label==righthand||skeleton.muscles[j].parent2->label==righthand)&&skeleton.muscles[j].numvertices>0){
@@ -7398,7 +7401,7 @@ int Person::DrawSkeleton(){
                                                }*/
                                        }
                                }
-                               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;
@@ -7408,7 +7411,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;j<skeleton.num_muscles;j++){
@@ -7458,7 +7461,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((currentanimation==knifeslashreversalanim&&targetanimation==knifeslashreversalanim)||(currentanimation==knifeslashreversedanim&&targetanimation==knifeslashreversedanim)){
                                                        XYZ temppoint1,temppoint2,tempforward;
@@ -7476,7 +7479,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;
@@ -7519,7 +7522,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){
@@ -7541,7 +7544,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];
                                                }
                                        }
                                }
@@ -7628,12 +7631,12 @@ 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);
+                                                                       OPENAL_SetPaused(channels[whooshsound], true);
+                                                                       OPENAL_SetVolume(channels[whooshsound], 0);
                                                                }
 
                                                                if((targetanimation==jumpdownanim||isFlip())&&!wasLanding()&&!wasLandhard()){
@@ -7647,10 +7650,10 @@ int Person::SphereCheck(XYZ *p1,float radius, XYZ *p, XYZ *move, float *rotate,
                                                                        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);
+                                                                       PlaySoundEx( landsound, samp[landsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[landsound], 128);
+                                                                       OPENAL_SetPaused(channels[landsound], false);
 
                                                                        if(id==0){
                                                                                envsound[numenvsounds]=coords;