]> git.jsancho.org Git - lugaru.git/blobdiff - Source/Person.cpp
Missing files in the CMakeList.txt
[lugaru.git] / Source / Person.cpp
index e495d776ae696ca8d24308a91febb9357fdf63d7..716130cd9957c71f6a6ad2b1405a93eff983f3dc 100644 (file)
@@ -21,15 +21,15 @@ 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;
 extern int environment;
-extern Sprites sprites;
 extern int detail;
 extern FRUSTUM frustum;
 extern XYZ viewer;
@@ -88,8 +88,6 @@ extern float damagetaken;
 extern int hostile;
 extern float hostiletime;
 
-extern int mainmenu;
-
 extern int numfalls;
 extern int numflipfail;
 extern int numseen;
@@ -108,9 +106,9 @@ extern int indialogue;
 
 extern bool gamestarted;
 
-extern FSOUND_STREAM * strm[20];
-extern "C"     void PlaySoundEx(int channel, FSOUND_SAMPLE *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused);
-extern "C" void PlayStreamEx(int chan, FSOUND_STREAM *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused);
+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;
@@ -140,9 +138,9 @@ void Person::CheckKick(){
                                                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);
+                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                }
                                                victim->RagDoll(0);
                                                relative=velocity;
@@ -162,7 +160,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){
@@ -201,7 +199,7 @@ void Person::CatchFire(){
                if(skeleton.free)flatvelocity=skeleton.joints[howmany].velocity;
                if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords;
                if(skeleton.free)flatfacing=skeleton.joints[howmany].position*scale+coords;
-               sprites.MakeSprite(flamesprite, flatfacing,flatvelocity, 1,1,1, 2, 1);
+               Sprite::MakeSprite(flamesprite, flatfacing,flatvelocity, 1,1,1, 2, 1);
        }
 
        onfiredelay=0.5;
@@ -215,18 +213,18 @@ void Person::CatchFire(){
        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);
+       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);
+       OPENAL_3D_SetAttributes(channels[stream_firesound], gLoc, vel);
+       OPENAL_SetVolume(channels[stream_firesound], 256);
+       OPENAL_SetPaused(channels[stream_firesound], false);
 
        flamedelay=0;
 
@@ -434,36 +432,33 @@ void Person::DoBlood(float howmuch,int which){
                                if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
                                if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale;
                                if(skeleton.free){
-                                       sprites.MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
-                                       sprites.MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1);
+                                       Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
+                                       Sprite::MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1);
                                }
                                if(!skeleton.free){
-                                       sprites.MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
-                                       sprites.MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
+                                       Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
+                                       Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
                                }
                        }
                        if(Random()%2==0)
                                for(int i=0;i<3;i++){
                                        if(Random()%2!=0){
                                                bloodvel=0;
-                                               if(!skeleton.free){
+                                               if(skeleton.free) {
+                                                       bloodvel-=DoRotation(skeleton.forward*10*scale,((float)(Random()%100))/4,((float)(Random()%100))/4,0);
+                                                       bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
+                                               } else {
                                                        bloodvel.z=10;
                                                        bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
+                                                       bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale;
                                                }
-                                               if(skeleton.free){
-                                                       bloodvel-=DoRotation(skeleton.forward*10*scale,((float)(Random()%100))/4,((float)(Random()%100))/4,0);
-                                               }
-                                               if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
-                                               if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale;
                                                bloodvel*=.2;
                                                if(skeleton.free){
-                                                       sprites.MakeSprite(splintersprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
-                                                       sprites.special[sprites.numsprites-1]=3;
-                                               }
-                                               if(!skeleton.free){
-                                                       sprites.MakeSprite(splintersprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
-                                                       sprites.special[sprites.numsprites-1]=3;
+                                                       Sprite::MakeSprite(splintersprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
+                                               } else {
+                                                       Sprite::MakeSprite(splintersprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
                                                }
+                                               Sprite::setLastSpriteSpecial(3);
                                        }
                                }
                }
@@ -477,16 +472,16 @@ void Person::DoBlood(float howmuch,int which){
                                        bleedxint=abs(Random()%512);
                                        bleedyint=abs(Random()%512);
                                }
-                               if(creature==wolftype)
-                                       while(wolfbloodText[bleedxint*512*3+bleedyint*3+0]>which+4||wolfbloodText[bleedxint*512*3+bleedyint*3+0]<which-4||bleedxint<10||bleedyint<10||bleedxint>500||bleedyint>500){
-                                               bleedxint=abs(Random()%512);
-                                               bleedyint=abs(Random()%512);
-                                       }
-                                       bleedy=bleedxint;
-                                       bleedx=bleedyint;
-                                       bleedy/=realtexdetail;
-                                       bleedx/=realtexdetail;
-                                       direction=abs(Random()%2)*2-1;
+                       if(creature==wolftype)
+                               while(wolfbloodText[bleedxint*512*3+bleedyint*3+0]>which+4||wolfbloodText[bleedxint*512*3+bleedyint*3+0]<which-4||bleedxint<10||bleedyint<10||bleedxint>500||bleedyint>500){
+                                       bleedxint=abs(Random()%512);
+                                       bleedyint=abs(Random()%512);
+                               }
+                       bleedy=bleedxint;
+                       bleedx=bleedyint;
+                       bleedy/=realtexdetail;
+                       bleedx/=realtexdetail;
+                       direction=abs(Random()%2)*2-1;
                }
 
        }
@@ -532,9 +527,9 @@ 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);
+                               OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[whichsound], 512);
+                               OPENAL_SetPaused(channels[whichsound], false);
                        }
                }
 
@@ -561,12 +556,12 @@ void Person::DoBloodBig(float howmuch,int which){
                                        if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
                                        if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale;
                                        if(skeleton.free){
-                                               sprites.MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
-                                               sprites.MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1);
+                                               Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
+                                               Sprite::MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1);
                                        }
                                        if(!skeleton.free){
-                                               sprites.MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
-                                               sprites.MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
+                                               Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
+                                               Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
                                        }
                                }
                        }
@@ -788,12 +783,12 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){
                                        if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
                                        if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale;
                                        if(skeleton.free){
-                                               sprites.MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
-                                               sprites.MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1);
+                                               Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
+                                               Sprite::MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1);
                                        }
                                        if(!skeleton.free){
-                                               sprites.MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
-                                               sprites.MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
+                                               Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
+                                               Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
                                        }
                                }
                        }
@@ -1185,15 +1180,15 @@ void Person::Reverse(){
                                                        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);
+                                                       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);
+                                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                       OPENAL_SetPaused(channels[metalhitsound], false);
                                                }
                                        }
                                        XYZ aim;
@@ -1228,9 +1223,9 @@ 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);*/
+                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                       OPENAL_SetPaused(channels[metalhitsound], false);*/
                                }
 
                                if(abs(Random()%20)==0){
@@ -1248,15 +1243,15 @@ void Person::Reverse(){
                                                        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);
+                                                       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);
+                                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                       OPENAL_SetPaused(channels[metalhitsound], false);
                                                }
                                        }
 
@@ -1289,9 +1284,9 @@ 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);*/
+                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                       OPENAL_SetPaused(channels[metalhitsound], false);*/
                                }
                        }
                        if(hasvictim)
@@ -1384,9 +1379,9 @@ void Person::DoDamage(float howmuch){
                        flatvelocity2.x+=(float)(abs(Random()%100)-50)/10;
                        flatvelocity2.y+=(float)(abs(Random()%100)-50)/10;
                        flatvelocity2.z+=(float)(abs(Random()%100)-50)/10;
-                       sprites.MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, 3, 1);
-                       sprites.MakeSprite(bloodsprite, flatfacing2,flatvelocity2, 1,1,1, .4, 1);
-                       sprites.MakeSprite(cloudsprite, flatfacing2,flatvelocity2*0, .6,0,0, 1, .5);
+                       Sprite::MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, 3, 1);
+                       Sprite::MakeSprite(bloodsprite, flatfacing2,flatvelocity2, 1,1,1, .4, 1);
+                       Sprite::MakeSprite(cloudsprite, flatfacing2,flatvelocity2*0, .6,0,0, 1, .5);
                }
 
                float gLoc[3];
@@ -1398,9 +1393,9 @@ void Person::DoDamage(float howmuch){
                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);
+               OPENAL_3D_SetAttributes(channels[splattersound], gLoc, vel);
+               OPENAL_SetVolume(channels[splattersound], 256);
+               OPENAL_SetPaused(channels[splattersound], false);
 
                skeleton.free=2;
                DoDamage(10000);
@@ -1452,9 +1447,9 @@ 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);
+                               OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[whichsound], 512);
+                               OPENAL_SetPaused(channels[whichsound], false);
                        }
                }
                speechdelay=.3;
@@ -1468,7 +1463,7 @@ void Person::DoHead(){
        static XYZ facing;
        static float lookspeed=500;
 
-       if(!freeze&&!winfreeze&&(!mainmenu||!gamestarted)){
+       if(!freeze&&!winfreeze){
 
                //head facing
                targetheadrotation=(float)((int)((0-rotation-targetheadrotation+180)*100)%36000)/100;
@@ -1706,7 +1701,7 @@ void Person::FootLand(int which, float opacity){
                        if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
                        if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
                        //footpoint.y=coords.y;
-                       if(findDistancefast(&footpoint,&viewer))sprites.MakeSprite(cloudsprite, footpoint,footvel, 1,1,1, .5, .2*opacity);
+                       if(findDistancefast(&footpoint,&viewer))Sprite::MakeSprite(cloudsprite, footpoint,footvel, 1,1,1, .5, .2*opacity);
                }
                else if(environment==snowyenvironment&&onterrain&&terrain.getOpacity(coords.x,coords.z)<.2){
                        footvel=velocity/5;
@@ -1715,7 +1710,7 @@ void Person::FootLand(int which, float opacity){
                        if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
                        footpoint.y=terrain.getHeight(footpoint.x,footpoint.z);
                        terrainlight=terrain.getLighting(footpoint.x,footpoint.z);
-                       if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)sprites.MakeSprite(cloudsprite, footpoint,footvel*.6, terrainlight.x,terrainlight.y,terrainlight.z, .5, .7*opacity);
+                       if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)Sprite::MakeSprite(cloudsprite, footpoint,footvel*.6, terrainlight.x,terrainlight.y,terrainlight.z, .5, .7*opacity);
                        if(opacity>=1||detail==2)if(detail==2)if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)terrain.MakeDecal(footprintdecal,footpoint,.2,1*opacity,rotation);
                }
                else if(environment==grassyenvironment&&onterrain&&terrain.getOpacity(coords.x,coords.z)<.2){
@@ -1725,7 +1720,7 @@ void Person::FootLand(int which, float opacity){
                        if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
                        footpoint.y=terrain.getHeight(footpoint.x,footpoint.z);
                        terrainlight=terrain.getLighting(footpoint.x,footpoint.z);
-                       if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)sprites.MakeSprite(cloudsprite, footpoint,footvel*.6, terrainlight.x*90/255,terrainlight.y*70/255,terrainlight.z*8/255, .5, .5*opacity);
+                       if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)Sprite::MakeSprite(cloudsprite, footpoint,footvel*.6, terrainlight.x*90/255,terrainlight.y*70/255,terrainlight.z*8/255, .5, .5*opacity);
                }
                else if(environment==desertenvironment&&onterrain&&terrain.getOpacity(coords.x,coords.z)<.2){
                        footvel=velocity/5;
@@ -1734,7 +1729,7 @@ void Person::FootLand(int which, float opacity){
                        if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
                        footpoint.y=terrain.getHeight(footpoint.x,footpoint.z);
                        terrainlight=terrain.getLighting(footpoint.x,footpoint.z);
-                       if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)sprites.MakeSprite(cloudsprite, footpoint,footvel*.6, terrainlight.x*190/255,terrainlight.y*170/255,terrainlight.z*108/255, .5, .7*opacity);
+                       if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)Sprite::MakeSprite(cloudsprite, footpoint,footvel*.6, terrainlight.x*190/255,terrainlight.y*170/255,terrainlight.z*108/255, .5, .7*opacity);
                        if(opacity>=1||detail==2)if(detail==2)if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)terrain.MakeDecal(footprintdecal,footpoint,.2,.25*opacity,rotation);
                }
                else if(isLanding()||targetanimation==jumpupanim||isLandhard())
@@ -1744,7 +1739,7 @@ void Person::FootLand(int which, float opacity){
                        if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
                        if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
                        //footpoint.y=coords.y;
-                       if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)sprites.MakeSprite(cloudsprite, footpoint,footvel*.6, 1,1,1, .5, .2*opacity);
+                       if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)Sprite::MakeSprite(cloudsprite, footpoint,footvel*.6, 1,1,1, .5, .2*opacity);
                }
 }
 
@@ -1753,7 +1748,7 @@ void Person::Puff(int whichlabel){
 
        footvel=0;
        footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[whichlabel]].position,0,rotation,0)*scale+coords;
-       sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,1,1, .9, .3);
+       Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,1,1, .9, .3);
 }
 
 
@@ -1947,8 +1942,8 @@ 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(!crouchkeydown&&velocity.y>=-15)landhard=0;
@@ -1997,10 +1992,10 @@ void    Person::DoAnimations(){
                                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);
+                               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;
                        }
 
@@ -2027,9 +2022,9 @@ void      Person::DoAnimations(){
                                                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);
+                                               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);
                                        }
@@ -2058,9 +2053,9 @@ void      Person::DoAnimations(){
                                                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);
+                                               OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                               OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                               OPENAL_SetPaused(channels[knifesheathesound], false);
                                        }
                                        if(weaponactive!=-1){
                                                float gLoc[3];
@@ -2073,9 +2068,9 @@ void      Person::DoAnimations(){
                                                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);
+                                               OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                               OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                               OPENAL_SetPaused(channels[knifedrawsound], false);
                                        }
                                }
                                drawtogglekeydown=1;
@@ -2126,11 +2121,11 @@ void    Person::DoAnimations(){
                                        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);
+                                       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){
@@ -2144,9 +2139,9 @@ 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);
+                                                       OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[whichsound], 128);
+                                                       OPENAL_SetPaused(channels[whichsound], false);
                                                }
                                }
 
@@ -2188,9 +2183,9 @@ void      Person::DoAnimations(){
 
                                                                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);
+                                                                       OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[whichsound], 512);
+                                                                       OPENAL_SetPaused(channels[whichsound], false);
                                                                }
                                                        }
 
@@ -2222,9 +2217,9 @@ 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);
+                                                                                                       OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                                                       OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                                                       OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                                                }
 
                                                                                                weaponactive=0;
@@ -2268,16 +2263,16 @@ 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);
+                                                                                                                       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);
+                                                                                                               OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
+                                                                                                               OPENAL_SetVolume(channels[fleshstabremovesound], 128);
+                                                                                                               OPENAL_SetPaused(channels[fleshstabremovesound], false);
                                                                                                        }
                                                                                                        weaponactive=0;
                                                                                                        if(weapons.owner[i]!=-1){
@@ -2305,7 +2300,7 @@ void      Person::DoAnimations(){
                                                                                                                footpoint=weapons.position[i];
                                                                                                                if(victim->weaponstuck!=-1){
                                                                                                                        if(victim->weaponids[victim->weaponstuck]==i){
-                                                                                                                               if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3);
+                                                                                                                               if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3);
                                                                                                                                weapons.bloody[i]=2;
                                                                                                                                weapons.blooddrip[i]=5;
                                                                                                                                victim->weaponstuck=-1;
@@ -2355,9 +2350,9 @@ void      Person::DoAnimations(){
                                                                        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);
+                                                                       OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                                                       OPENAL_SetPaused(channels[knifesheathesound], false);
                                                                }
                                                                if(weaponactive!=-1){
                                                                        float gLoc[3];
@@ -2370,9 +2365,9 @@ void      Person::DoAnimations(){
                                                                        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);
+                                                                       OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                       OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                }
                                                        }
 
@@ -2407,9 +2402,9 @@ void      Person::DoAnimations(){
                                                                        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);
+                                                                       OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[jumpsound], 128);
+                                                                       OPENAL_SetPaused(channels[jumpsound], false);
                                                                }
 
                                                                float closestdist;
@@ -2455,9 +2450,9 @@ void      Person::DoAnimations(){
                                                                                        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);
+                                                                                       OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[jumpsound], 128);
+                                                                                       OPENAL_SetPaused(channels[jumpsound], false);
                                                                                }
                                                                        }
                                                        }
@@ -2487,15 +2482,15 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       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);
+                                                                                       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);
                                                                                }
@@ -2536,14 +2531,14 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                               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);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2,175);
                                                                                }
@@ -2581,15 +2576,15 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       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);
+                                                                                       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);
                                                                                }
@@ -2636,15 +2631,15 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       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);
+                                                                                       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);
                                                                                }
@@ -2692,9 +2687,9 @@ void      Person::DoAnimations(){
                                                                                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);
+                                                                               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;
@@ -2723,14 +2718,14 @@ 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], 128);
-                                                                               FSOUND_SetPaused(channels[landsound2], false);
+                                                                               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);
+                                                                               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;
@@ -2773,9 +2768,9 @@ void      Person::DoAnimations(){
                                                                                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);
+                                                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                }
                                                                                XYZ relative;
                                                                                relative=victim->coords-coords;
@@ -2808,9 +2803,9 @@ void      Person::DoAnimations(){
                                                                                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);
+                                                                                       OPENAL_3D_SetAttributes(channels[thudsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[thudsound], 400);
+                                                                                       OPENAL_SetPaused(channels[thudsound], false);
                                                                                }
 
                                                                                victim->skeleton.longdead=0;
@@ -2863,9 +2858,9 @@ 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);
+                                                                               OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                                                               OPENAL_SetPaused(channels[knifesheathesound], false);
                                                                        }
 
                                                                        if(victim&&hasvictim){
@@ -2929,9 +2924,9 @@ void      Person::DoAnimations(){
                                                                                                        //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);
+                                                                                               OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[fleshstabsound], 128);
+                                                                                               OPENAL_SetPaused(channels[fleshstabsound], false);
 
                                                                                        }
                                                                                        if(whichtri!=-1||weapons.bloody[weaponids[weaponactive]]){
@@ -2941,9 +2936,9 @@ 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);
+                                                                                               OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                                                                               OPENAL_SetPaused(channels[knifesheathesound], false);
                                                                                        }
                                                                                }
                                                                        }
@@ -2962,18 +2957,18 @@ void    Person::DoAnimations(){
                                                                        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);
+                                                                               OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                               OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                        }
 
                                                                        if(victim&&hasvictim){
                                                                                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);
+                                                                               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);
@@ -3042,7 +3037,7 @@ void      Person::DoAnimations(){
                                                                                                relative.y=10;
                                                                                                Normalise(&relative);
                                                                                                //victim->Puff(abdomen);
-                                                                                               if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3);
+                                                                                               if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3);
 
                                                                                                if(victim->bloodloss<victim->damagetolerance){
                                                                                                        victim->bloodloss+=1000;
@@ -3079,17 +3074,17 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                               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);
+                                                                                               OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[landsound2], 256);
+                                                                                               OPENAL_SetPaused(channels[landsound2], false);
                                                                                        }
                                                                                }
 
@@ -3137,25 +3132,25 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                               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);
+                                                                                               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);
+                                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 256);
+                                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                        }
                                                                                }
 
@@ -3200,9 +3195,9 @@ void      Person::DoAnimations(){
                                                                                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);
+                                                                               OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[landsound2], 256);
+                                                                               OPENAL_SetPaused(channels[landsound2], false);
 
                                                                                Puff(righthand);
                                                                        }
@@ -3226,15 +3221,15 @@ void    Person::DoAnimations(){
                                                                                                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);
+                                                                                               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);
+                                                                                               OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                                                               OPENAL_SetPaused(channels[metalhitsound], false);
                                                                                        }
                                                                                }
 
@@ -3290,9 +3285,9 @@ void      Person::DoAnimations(){
                                                                                                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);
+                                                                                               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)){
@@ -3319,16 +3314,16 @@ void    Person::DoAnimations(){
                                                                                                footpoint=DoRotation((victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2,0,victim->rotation,0)*victim->scale+victim->coords;
                                                                                        }
                                                                                        if(tutoriallevel!=1){
-                                                                                               if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .6, .3);
+                                                                                               if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .6, .3);
                                                                                                footvel=DoRotation(facing,0,90,0)*.8;
                                                                                                //footvel.y-=.3;
-                                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .2, 1);
-                                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .2, 1);
+                                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .2, 1);
+                                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .2, 1);
                                                                                        }
                                                                                        if(tutoriallevel==1){
-                                                                                               sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,1,1, .6, .3);
+                                                                                               Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,1,1, .6, .3);
                                                                                        }
                                                                                        victim->DoDamage(damagemult*0);
                                                                                }
@@ -3355,9 +3350,9 @@ void      Person::DoAnimations(){
                                                                                                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);
+                                                                                               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){
@@ -3389,13 +3384,13 @@ void    Person::DoAnimations(){
                                                                                                if(!skeleton.free){
                                                                                                        footpoint=DoRotation((victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2,0,victim->rotation,0)*victim->scale+victim->coords;
                                                                                                }
-                                                                                               if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
+                                                                                               if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
                                                                                                footvel=DoRotation(facing,0,90,0)*.8;
                                                                                                footvel.y-=.3;
-                                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
-                                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1);
+                                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
+                                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1);
                                                                                        }
                                                                                }
                                                                                else {
@@ -3415,15 +3410,15 @@ void    Person::DoAnimations(){
                                                                                                        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);
+                                                                                                       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);
+                                                                                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                                                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                                                                       OPENAL_SetPaused(channels[metalhitsound], false);
                                                                                                }
                                                                                        }
 
@@ -3456,9 +3451,9 @@ void      Person::DoAnimations(){
                                                                                        }
 
                                                                                        /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
-                                                                                       FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[metalhitsound], 512);
-                                                                                       FSOUND_SetPaused(channels[metalhitsound], false);*/
+                                                                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                                                       OPENAL_SetPaused(channels[metalhitsound], false);*/
 
                                                                                }
                                                                        }
@@ -3482,9 +3477,9 @@ void      Person::DoAnimations(){
                                                                                        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);
+                                                                                       OPENAL_3D_SetAttributes(channels[staffheadsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[staffheadsound], 256);
+                                                                                       OPENAL_SetPaused(channels[staffheadsound], false);
                                                                                }
                                                                                victim->RagDoll(0);
                                                                                XYZ relative;
@@ -3531,9 +3526,9 @@ void      Person::DoAnimations(){
                                                                                        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);
+                                                                                       OPENAL_3D_SetAttributes(channels[staffheadsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[staffheadsound], 256);
+                                                                                       OPENAL_SetPaused(channels[staffheadsound], false);
                                                                                }
                                                                                victim->RagDoll(0);
                                                                                XYZ relative;
@@ -3577,9 +3572,9 @@ void      Person::DoAnimations(){
                                                                                        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);
+                                                                                       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;
@@ -3661,18 +3656,18 @@ 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);
+                                                                                               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);
+                                                                                               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);
                                                                                        }
@@ -3689,17 +3684,17 @@ void    Person::DoAnimations(){
                                                                                        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);
+                                                                                               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);
+                                                                                               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);
                                                                                        }
@@ -3722,9 +3717,9 @@ void      Person::DoAnimations(){
                                                                                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);
+                                                                                       OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[landsound2], 128);
+                                                                                       OPENAL_SetPaused(channels[landsound2], false);
                                                                                }
                                                                                XYZ relative;
                                                                                relative=victim->coords-coords;
@@ -3764,9 +3759,9 @@ void      Person::DoAnimations(){
                                                                                        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);
+                                                                                               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);
@@ -3797,15 +3792,15 @@ void    Person::DoAnimations(){
                                                                        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);
+                                                                               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);
+                                                                               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);
                                                                        }
@@ -3866,9 +3861,9 @@ void      Person::DoAnimations(){
                                                                        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);
+                                                                       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;
@@ -3908,9 +3903,9 @@ 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);
+                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                        }
                                                                        victim->RagDoll(0);
                                                                        if(id==0){
@@ -3979,17 +3974,17 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       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);
+                                                                                       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);
                                                                                }
@@ -4037,9 +4032,9 @@ void      Person::DoAnimations(){
                                                                        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);
+                                                                       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;
                                                                        }*/
@@ -4062,9 +4057,9 @@ void      Person::DoAnimations(){
                                                                        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);
+                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                        }
                                                                        victim->RagDoll(0);
                                                                        XYZ relative;
@@ -4118,18 +4113,18 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       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);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2,175);
                                                                                }
@@ -4152,17 +4147,17 @@ void    Person::DoAnimations(){
                                                                                        bloodvel.z=20;
                                                                                        bloodvel.y=5;
                                                                                        bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
-                                                                                       sprites.MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
+                                                                                       Sprite::MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
                                                                                        */
                                                                                        XYZ footvel,footpoint;
                                                                                        footvel=0;
                                                                                        footpoint=weapons.tippoint[weaponids[0]];
-                                                                                       if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
+                                                                                       if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
                                                                                        footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]]);
-                                                                                       sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                                       sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                                       sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
-                                                                                       sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1);
+                                                                                       Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                                       Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                                       Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
+                                                                                       Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1);
                                                                                        victim->DoBloodBig(200,195);
                                                                                        if(id==0){
                                                                                                bonus=tracheotomy;
@@ -4181,12 +4176,12 @@ void    Person::DoAnimations(){
                                                                                        XYZ footvel,footpoint;
                                                                                        footvel=0;
                                                                                        footpoint=weapons.tippoint[weaponids[0]];
-                                                                                       if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
+                                                                                       if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
                                                                                        footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1;
-                                                                                       sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                                       sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                                       sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .2, 1);
-                                                                                       sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .2, 1);
+                                                                                       Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                                       Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                                       Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .2, 1);
+                                                                                       Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .2, 1);
 
                                                                                }
                                                                                victim->bloodloss+=10000;
@@ -4200,9 +4195,9 @@ void      Person::DoAnimations(){
                                                                                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);
+                                                                               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;
                                                                        }
@@ -4230,21 +4225,21 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                               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;
                                                                                footvel=0;
                                                                                footpoint=weapons.tippoint[weaponids[0]];
-                                                                               if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
+                                                                               if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
                                                                                footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1;
-                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
-                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1);
+                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
+                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1);
                                                                        }
                                                                }
 
@@ -4261,12 +4256,12 @@ void    Person::DoAnimations(){
                                                                                XYZ footvel,footpoint;
                                                                                footvel=0;
                                                                                footpoint=(weapons.tippoint[weaponids[0]]+weapons.position[weaponids[0]])/2;
-                                                                               if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
+                                                                               if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
                                                                                footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]]);
-                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,DoRotation(footvel*5,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .3, 1);
-                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .3, 1);
+                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,DoRotation(footvel*5,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .3, 1);
+                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .3, 1);
                                                                                victim->DoBloodBig(200,180);
                                                                                victim->DoBloodBig(200,215);
                                                                                victim->bloodloss+=10000;
@@ -4280,9 +4275,9 @@ void      Person::DoAnimations(){
                                                                                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);
+                                                                               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;
                                                                        }
@@ -4304,21 +4299,21 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                               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;
                                                                                footvel=0;
                                                                                footpoint=weapons.tippoint[weaponids[0]];
-                                                                               if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
+                                                                               if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
                                                                                footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1;
-                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
-                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1);
+                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
+                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1);
                                                                        }
                                                                }
 
@@ -4340,9 +4335,9 @@ void      Person::DoAnimations(){
                                                                        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);
+                                                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                }
                                                                        }
                                                                        bool doslice;
@@ -4353,17 +4348,17 @@ void    Person::DoAnimations(){
                                                                                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);
+                                                                                       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);
+                                                                                       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);
                                                                                }
@@ -4443,9 +4438,9 @@ void      Person::DoAnimations(){
                                                                        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);
+                                                                       OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[movewhooshsound], 128);
+                                                                       OPENAL_SetPaused(channels[movewhooshsound], false);
                                                                }
                                                                if(currentanimation==staggerbackhighanim){
                                                                        targetanimation=getIdle();
@@ -4495,9 +4490,9 @@ void      Person::DoAnimations(){
                                                                                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);
+                                                                               OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                                                               OPENAL_SetPaused(channels[knifesheathesound], false);
                                                                        }
                                                                        if(weaponactive!=-1){
                                                                                float gLoc[3];
@@ -4510,9 +4505,9 @@ void      Person::DoAnimations(){
                                                                                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);
+                                                                               OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                               OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                        }
                                                                }
                                                                if(currentanimation==rollanim){
@@ -4587,7 +4582,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;
@@ -4605,7 +4600,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){
@@ -4645,7 +4640,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;
@@ -4741,9 +4736,9 @@ void      Person::DoAnimations(){
                                                                        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);
+                                                                       OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[landsound], 128);
+                                                                       OPENAL_SetPaused(channels[landsound], false);
 
                                                                        if(currentanimation==upunchreversedanim||currentanimation==swordslashreversedanim){
                                                                                targetanimation=rollanim;
@@ -4809,7 +4804,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;
                                                                }
@@ -4832,7 +4827,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;
                                                                }
@@ -5053,12 +5048,6 @@ void     Person::DoStuff(){
                        targetanimation=getRun();
                        targetframe=0;
                }
-               /*static float toggledelay;
-               toggledelay-=multiplier;
-               if(toggledelay<0){
-               toggledelay=1;
-               if(Random()%3==0)superruntoggle=1-superruntoggle;
-               }*/
        }
        if(weaponactive==-1&&num_weapons>0){
                if(weapons.type[weaponids[0]]==staff){
@@ -5072,7 +5061,7 @@ void      Person::DoStuff(){
                /*if(aitype!=playercontrolled)*/
                deathbleeding=1;
                if(burnt>.6)burnt=.6;
-               FSOUND_SetVolume(channels[stream_firesound], 256+256*findLength(&velocity)/3);
+               OPENAL_SetVolume(channels[stream_firesound], 256+256*findLength(&velocity)/3);
 
                if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){
                        float gLoc[3];
@@ -5085,8 +5074,8 @@ void      Person::DoStuff(){
                        vel[2]=velocity.z;
 
                        if(id==0){
-                               FSOUND_3D_SetAttributes(channels[whooshsound], gLoc, vel);
-                               FSOUND_SetVolume(channels[whooshsound], 64*findLength(&velocity)/5);
+                               OPENAL_3D_SetAttributes(channels[whooshsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[whooshsound], 64*findLength(&velocity)/5);
                        }
                }
        }
@@ -5097,7 +5086,7 @@ void      Person::DoStuff(){
                if(skeleton.free)flatvelocity=skeleton.joints[howmany].velocity*scale/2;
                if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords;
                if(skeleton.free)flatfacing=skeleton.joints[howmany].position*scale+coords;
-               sprites.MakeSprite(flamesprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
+               Sprite::MakeSprite(flamesprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
        }
 
        while(flamedelay<0&&!onfire&&tutoriallevel==1&&id!=0){
@@ -5107,7 +5096,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);
+               Sprite::MakeSprite(breathsprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, .3);
        }
 
        if(bleeding>0){
@@ -5134,8 +5123,8 @@ void      Person::DoStuff(){
                        }
                        if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/40,rotation+((float)(Random()%100))/40,0)*scale;
                        if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/40,((float)(Random()%100))/40,0)*scale;
-                       if(skeleton.free)sprites.MakeSprite(bloodsprite, (skeleton.joints[skeleton.jointlabels[neck]].position+(skeleton.joints[skeleton.jointlabels[neck]].position-skeleton.joints[skeleton.jointlabels[head]].position)/5)*scale+coords,bloodvel, 1,1,1, .05, .9);
-                       if(!skeleton.free)sprites.MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position+(skeleton.joints[skeleton.jointlabels[neck]].position-skeleton.joints[skeleton.jointlabels[head]].position)/5,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, .9);
+                       if(skeleton.free)Sprite::MakeSprite(bloodsprite, (skeleton.joints[skeleton.jointlabels[neck]].position+(skeleton.joints[skeleton.jointlabels[neck]].position-skeleton.joints[skeleton.jointlabels[head]].position)/5)*scale+coords,bloodvel, 1,1,1, .05, .9);
+                       if(!skeleton.free)Sprite::MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position+(skeleton.joints[skeleton.jointlabels[neck]].position-skeleton.joints[skeleton.jointlabels[head]].position)/5,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, .9);
                        neckspurtparticledelay=.05;
                }
                if(neckspurtdelay<0){
@@ -5153,14 +5142,10 @@ void    Person::DoStuff(){
                                bloodvel=0;
                                if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[abdomen]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
                                if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale;
-                               if(skeleton.free)sprites.MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[abdomen]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
-                               if(!skeleton.free)sprites.MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[abdomen]].position+skeleton.joints[skeleton.jointlabels[abdomen]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
+                               if(skeleton.free)Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[abdomen]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
+                               if(!skeleton.free)Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[abdomen]].position+skeleton.joints[skeleton.jointlabels[abdomen]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
                        }
                }
-               /*if(id==0){
-               bloodloss+=deathbleeding*40;
-               deathbleeding=0;
-               }*/
                bloodloss+=deathbleeding*multiplier*80;
                deathbleeding-=multiplier*1.6;
                //if(id==0)deathbleeding-=multiplier*.2;
@@ -5234,10 +5219,6 @@ void     Person::DoStuff(){
                if(endy>skeleton.skinsize-1){endy=skeleton.skinsize-1;bleeding=0;}
                if(endx<startx)endx=startx;
                if(endy<starty)endy=starty;
-               /*int startx=0;
-               int starty=0;
-               int endx=256;
-               int endy=256;*/
 
                for(i=startx;i<endx;i++){
                        for(j=starty;j<endy;j++){
@@ -5380,7 +5361,7 @@ void      Person::DoStuff(){
                                if(!skeleton.free)footpoint=DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords;
                                if(skeleton.free)footpoint=((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2)*scale+coords;
                                if(targetanimation==sleepanim)footvel=DoRotation(footvel,0,90,0);
-                               sprites.MakeSprite(breathsprite, footpoint+footvel*.2,footvel*.4, 1,1,1, .4, .3);
+                               Sprite::MakeSprite(breathsprite, footpoint+footvel*.2,footvel*.4, 1,1,1, .4, .3);
                        }
                }
 
@@ -5613,12 +5594,6 @@ void     Person::DoStuff(){
                }
 
                damage+=20;
-
-               /*
-               if(bloodloss<damagetolerance)
-               for(i=0;i<skeleton.num_joints;i++){
-               skeleton.joints[i].velocity*=1.5;
-               }*/
        }
 
        //if(dead)damage-=multiplier/4;
@@ -5700,9 +5675,9 @@ void      Person::DoStuff(){
                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);
+               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;
@@ -5710,7 +5685,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
@@ -5776,7 +5751,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;
@@ -5889,7 +5864,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;
@@ -6017,9 +5992,9 @@ void      Person::DoStuff(){
                                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);
+                               OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[movewhooshsound], 128);
+                               OPENAL_SetPaused(channels[movewhooshsound], false);
 
                                currentanimation=targetanimation;
                                currentframe=targetframe-1;
@@ -6057,9 +6032,9 @@ void      Person::DoStuff(){
                                                                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);
+                                                               OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
+                                                               OPENAL_SetVolume(channels[firestartsound], 256);
+                                                               OPENAL_SetPaused(channels[firestartsound], false);
                                                        }
                                                        objects.onfire[i]=1;
                                                }
@@ -6082,9 +6057,9 @@ void      Person::DoStuff(){
                                                                        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);
+                                                                       OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[firestartsound], 256);
+                                                                       OPENAL_SetPaused(channels[firestartsound], false);
                                                                }
                                                                objects.onfire[i]=1;
                                                        }
@@ -6107,9 +6082,9 @@ void      Person::DoStuff(){
                                                                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);
+                                                               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;
@@ -6132,8 +6107,8 @@ void      Person::DoStuff(){
                                                                                        pos.x+=float(abs(Random()%100)-50)/200;
                                                                                        pos.y+=float(abs(Random()%100)-50)/200;
                                                                                        pos.z+=float(abs(Random()%100)-50)/200;
-                                                                                       sprites.MakeSprite(splintersprite, pos,tempvel*.5+velocity*float(abs(Random()%100))/100, 165/255+float(abs(Random()%100)-50)/400,0,0, .2+float(abs(Random()%100)-50)/1300, 1);
-                                                                                       sprites.special[sprites.numsprites-1]=1;
+                                                                                       Sprite::MakeSprite(splintersprite, pos,tempvel*.5+velocity*float(abs(Random()%100))/100, 165/255+float(abs(Random()%100)-50)/400,0,0, .2+float(abs(Random()%100)-50)/1300, 1);
+                                                                                       Sprite::setLastSpriteSpecial(1);
                                                                                }
                                                                                howmany=findLength(&velocity)*4;
                                                                                if(detail==2)
@@ -6147,8 +6122,8 @@ void      Person::DoStuff(){
                                                                                                        pos.x+=float(abs(Random()%100)-50)/200;
                                                                                                        pos.y+=float(abs(Random()%100)-50)/200;
                                                                                                        pos.z+=float(abs(Random()%100)-50)/200;
-                                                                                                       sprites.MakeSprite(splintersprite, pos,tempvel*.3+velocity*float(abs(Random()%100))/100/2, 1,1,1, .1, 1);
-                                                                                                       sprites.special[sprites.numsprites-1]=2;
+                                                                                                       Sprite::MakeSprite(splintersprite, pos,tempvel*.3+velocity*float(abs(Random()%100))/100/2, 1,1,1, .1, 1);
+                                                                                                       Sprite::setLastSpriteSpecial(2);
                                                                                                }
                                                        }
                                                        objects.rotx[i]+=velocity.x*multiplier*6;
@@ -6165,23 +6140,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;
@@ -6195,9 +6153,9 @@ void      Person::DoStuff(){
                                                                        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);
+                                                                       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,8 +6179,8 @@ void      Person::DoStuff(){
                                                                                                pos.x+=float(abs(Random()%100)-50)/150;
                                                                                                pos.y+=float(abs(Random()%100)-50)/150;
                                                                                                pos.z+=float(abs(Random()%100)-50)/150;
-                                                                                               sprites.MakeSprite(splintersprite, pos,tempvel*.5+velocity*float(abs(Random()%100))/100, 165/255+float(abs(Random()%100)-50)/400,0,0, .2+float(abs(Random()%100)-50)/1300, 1);
-                                                                                               sprites.special[sprites.numsprites-1]=1;
+                                                                                               Sprite::MakeSprite(splintersprite, pos,tempvel*.5+velocity*float(abs(Random()%100))/100, 165/255+float(abs(Random()%100)-50)/400,0,0, .2+float(abs(Random()%100)-50)/1300, 1);
+                                                                                               Sprite::setLastSpriteSpecial(1);
                                                                                        }
                                                                                        howmany=findLength(&velocity)*4;
                                                                                        if(detail==2)
@@ -6237,8 +6195,8 @@ void      Person::DoStuff(){
                                                                                                                pos.x+=float(abs(Random()%100)-50)/150;
                                                                                                                pos.y+=float(abs(Random()%100)-50)/150;
                                                                                                                pos.z+=float(abs(Random()%100)-50)/150;
-                                                                                                               sprites.MakeSprite(splintersprite, pos,tempvel*.3+velocity*float(abs(Random()%100))/100/2, 1,1,1, .1, 1);
-                                                                                                               sprites.special[sprites.numsprites-1]=2;
+                                                                                                               Sprite::MakeSprite(splintersprite, pos,tempvel*.3+velocity*float(abs(Random()%100))/100/2, 1,1,1, .1, 1);
+                                                                                                               Sprite::setLastSpriteSpecial(2);
                                                                                                        }
                                                                }
                                                                objects.messedwith[i]=.5;
@@ -6275,14 +6233,12 @@ 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);
+                                               OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                                               OPENAL_SetVolume(channels[whichsound], 512);
+                                               OPENAL_SetPaused(channels[whichsound], false);
                                        }
                                }
 
@@ -6448,7 +6404,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){
@@ -6501,7 +6457,7 @@ void      Person::DoStuff(){
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
                                                velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed;
                                        }
@@ -6515,7 +6471,7 @@ void      Person::DoStuff(){
                                                                velocity*=velspeed;
                                                        }
                                                        velocity.y+=gravity*multiplier*20;
-                                                       ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
+                                                       ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
                                                        velspeed=findLength(&velocity);
                                                        if(velspeed<speed*30*scale)velspeed=speed*30*scale;
                                                        velocity=flatfacing*velspeed;
@@ -6539,7 +6495,7 @@ void      Person::DoStuff(){
                                                        }
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
                                                velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed;
                                        }
@@ -6554,7 +6510,7 @@ void      Person::DoStuff(){
                                        velocity*=velspeed;
                                        }
                                        velocity.y+=gravity*multiplier*20;
-                                       ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
+                                       ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
                                        velspeed=findLength(&velocity);
                                        velocity=flatfacing*velspeed;
                                        }*/
@@ -6568,7 +6524,7 @@ void      Person::DoStuff(){
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
                                                velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed;
                                        }
@@ -6583,7 +6539,7 @@ void      Person::DoStuff(){
                                        velocity*=velspeed;
                                        }
                                        velocity.y+=gravity*multiplier*20;
-                                       ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
+                                       ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
                                        velspeed=findLength(&velocity);
                                        velocity=flatfacing*velspeed;
                                        }*/
@@ -6597,7 +6553,7 @@ void      Person::DoStuff(){
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
                                                velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed;
                                        }
@@ -6611,7 +6567,7 @@ void      Person::DoStuff(){
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
                                                velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed;
                                        }
@@ -6626,7 +6582,7 @@ void      Person::DoStuff(){
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
                                                velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed*-1;
                                        }
@@ -6640,7 +6596,7 @@ void      Person::DoStuff(){
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
                                                velspeed=findLength(&velocity);
                                                velocity=DoRotation(flatfacing*velspeed,0,-90,0);
                                        }
@@ -6664,7 +6620,7 @@ void      Person::DoStuff(){
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
                                                velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed*-1;
                                        }
@@ -6678,7 +6634,7 @@ void      Person::DoStuff(){
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
                                                velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed*-1;
                                        }
@@ -6703,8 +6659,8 @@ void      Person::DoStuff(){
                                                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()){
@@ -6719,9 +6675,9 @@ void      Person::DoStuff(){
                                                        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);
+                                                       OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[landsound], 128);
+                                                       OPENAL_SetPaused(channels[landsound], false);
 
                                                        if(id==0){
                                                                envsound[numenvsounds]=coords;
@@ -6787,15 +6743,15 @@ void    Person::DoStuff(){
                                                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);
+                                                       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);
+                                                       OPENAL_3D_SetAttributes(channels[snowskidsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[snowskidsound], 128*velspeed/10);
+                                                       OPENAL_SetPaused(channels[snowskidsound], false);
                                                }
                                        }
 
@@ -6863,9 +6819,12 @@ int Person::DrawSkeleton(){
                if(findDistancefast(&viewer,&coords)<viewdistance*viewdistance/256&&(detail!=1&&detail!=2)){
                        playerdetail=1;
                }
-               if(id==0)playerdetail=1;
-               if(playerdetail!=oldplayerdetail)updatedelay=0;
-               if(playerdetail!=oldplayerdetail)normalsupdatedelay=0;
+               if(id==0)
+                       playerdetail=1;
+               if(playerdetail!=oldplayerdetail) {
+                       updatedelay=0;
+                       normalsupdatedelay=0;
+               }
                static float updatedelaychange;
                static float morphness;
                static float framemult;
@@ -7013,7 +6972,8 @@ int Person::DrawSkeleton(){
                                        }
                                }
                        }
-                       if(!skeleton.free&&(!animation[targetanimation].attack&&targetanimation!=getupfrombackanim&&targetanimation!=getupfrombackanim&&((targetanimation!=rollanim&&!isFlip())||animation[targetanimation].label[targetframe]==6)&&targetanimation!=getupfromfrontanim&&targetanimation!=wolfrunninganim&&targetanimation!=rabbitrunninganim&&targetanimation!=backhandspringanim&&targetanimation!=walljumpfrontanim&&targetanimation!=hurtidleanim&&!isLandhard()&&!isSleeping()))DoHead();
+                       if(!skeleton.free&&(!animation[targetanimation].attack&&targetanimation!=getupfrombackanim&&((targetanimation!=rollanim&&!isFlip())||animation[targetanimation].label[targetframe]==6)&&targetanimation!=getupfromfrontanim&&targetanimation!=wolfrunninganim&&targetanimation!=rabbitrunninganim&&targetanimation!=backhandspringanim&&targetanimation!=walljumpfrontanim&&targetanimation!=hurtidleanim&&!isLandhard()&&!isSleeping()))
+                               DoHead();
                        else {
                                targetheadrotation=-targetrotation;
                                targetheadrotation2=0;
@@ -7317,12 +7277,12 @@ int Person::DrawSkeleton(){
                        }
                        if(playerdetail){
                                if(!showpoints){
-                                       if((tutoriallevel&&id!=0))skeleton.drawmodel.drawdifftex(sprites.cloudimpacttexture);
+                                       if((tutoriallevel&&id!=0))skeleton.drawmodel.drawdifftex(Sprite::cloudimpacttexture);
                                        else skeleton.drawmodel.draw();
                                }
                        }
                        if(!playerdetail){
-                               if((tutoriallevel&&id!=0))skeleton.drawmodellow.drawdifftex(sprites.cloudimpacttexture);
+                               if((tutoriallevel&&id!=0))skeleton.drawmodellow.drawdifftex(Sprite::cloudimpacttexture);
                                else skeleton.drawmodellow.drawdifftex(skeleton.drawmodel.textureptr);
                        }
 
@@ -7346,12 +7306,12 @@ int Person::DrawSkeleton(){
                                                glTranslatef(smoketex*.6,0,0);
                                                if(playerdetail){
                                                        if(!showpoints){
-                                                               if((tutoriallevel&&id!=0))skeleton.drawmodel.drawdifftex(sprites.cloudimpacttexture);
+                                                               if((tutoriallevel&&id!=0))skeleton.drawmodel.drawdifftex(Sprite::cloudimpacttexture);
                                                                else skeleton.drawmodel.draw();
                                                        }
                                                }
                                                if(!playerdetail){
-                                                       if((tutoriallevel&&id!=0))skeleton.drawmodellow.drawdifftex(sprites.cloudimpacttexture);
+                                                       if((tutoriallevel&&id!=0))skeleton.drawmodellow.drawdifftex(Sprite::cloudimpacttexture);
                                                        else skeleton.drawmodellow.drawdifftex(skeleton.drawmodel.textureptr);
                                                }
                                }
@@ -7653,8 +7613,8 @@ int Person::SphereCheck(XYZ *p1,float radius, XYZ *p, XYZ *move, float *rotate,
                                                                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()){
@@ -7669,9 +7629,9 @@ int Person::SphereCheck(XYZ *p1,float radius, XYZ *p, XYZ *move, float *rotate,
                                                                        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);
+                                                                       OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[landsound], 128);
+                                                                       OPENAL_SetPaused(channels[landsound], false);
 
                                                                        if(id==0){
                                                                                envsound[numenvsounds]=coords;