]> git.jsancho.org Git - lugaru.git/blobdiff - Source/Person.cpp
Cleanup sound loading
[lugaru.git] / Source / Person.cpp
index e495d776ae696ca8d24308a91febb9357fdf63d7..b9e61813b4c34900d6da5d67fc3922efca118018 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"
+#include "Animation.h"
+#include "Sounds.h"
 
 extern float multiplier;
-extern Animation animation[animation_count];
-extern FSOUND_SAMPLE   *samp[100];
 extern int channels[100];
 extern Terrain terrain;
 extern float gravity;
 extern int environment;
-extern Sprites sprites;
 extern int detail;
 extern FRUSTUM frustum;
 extern XYZ viewer;
@@ -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,179 +1748,10 @@ 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);
 }
 
 
-/*
-HitStruct      Person::BulletCollideWithPlayer(XYZ start, XYZ end){
-float damage=20;
-XYZ tempbulletloc[2];
-XYZ collisionpoint;
-XYZ sparkpos;
-GLfloat M[16];
-int collide;
-float howfar;
-XYZ average;
-XYZ facing;
-int howmany;
-float distancemax;
-HitStruct hitstruct;
-hitstruct.collision=0;
-//Make bounding sphere
-average=0;
-howmany=0;
-for(int j=0;j<skeleton.num_joints;j++){
-average.x=average.x+skeleton.joints[j].position.x;
-average.y=average.y+skeleton.joints[j].position.y;
-average.z=average.z+skeleton.joints[j].position.z;
-howmany++;
-}
-average=average/howmany;
-distancemax=0;
-for(int j=0;j<skeleton.num_joints;j++){
-if(findDistancefast(average,skeleton.joints[j].position)>distancemax){
-distancemax=findDistancefast(average,skeleton.joints[j].position);
-}
-}
-distancemax=fast_sqrt(distancemax);
-//Collide with player
-if(skeleton.free<1){
-start=start-coords;
-end=end-coords;
-if(rotation)start=DoRotation(start,0,-rotation,0);
-if(rotation)end=DoRotation(end,0,-rotation,0);
-}
-tempbulletloc[0]=start;
-tempbulletloc[1]=end;
-if(sphere_line_intersection(tempbulletloc[0].x,tempbulletloc[0].y,tempbulletloc[0].z,
-tempbulletloc[1].x,tempbulletloc[1].y,tempbulletloc[1].z,
-average.x, average.y, average.z, distancemax)){
-for(int j=0;j<skeleton.num_joints;j++){
-if(skeleton.joints[j].hasparent&&skeleton.joints[j].visible){
-tempbulletloc[0]=start;
-tempbulletloc[1]=end;
-glPushMatrix();
-glLoadIdentity();
-glScalef(1,1/skeleton.joints[j].length,1);
-glRotatef(skeleton.joints[j].rotate2-90,0,0,1);
-glRotatef(skeleton.joints[j].rotate1-90,0,1,0);
-glTranslatef(  (-(skeleton.joints[j].position.x+skeleton.joints[j].parent->position.x)/2),
-(-(skeleton.joints[j].position.y+skeleton.joints[j].parent->position.y)/2),
-(-(skeleton.joints[j].position.z+skeleton.joints[j].parent->position.z)/2));
-glTranslatef(tempbulletloc[0].x,tempbulletloc[0].y,tempbulletloc[0].z);
-glGetFloatv(GL_MODELVIEW_MATRIX,M);
-tempbulletloc[0].x=M[12];
-tempbulletloc[0].y=M[13];
-tempbulletloc[0].z=M[14];
-glPopMatrix();
-glPushMatrix();
-glLoadIdentity();
-glScalef(1,1/skeleton.joints[j].length,1);
-glRotatef(skeleton.joints[j].rotate2-90,0,0,1);
-glRotatef(skeleton.joints[j].rotate1-90,0,1,0);
-glTranslatef(  (-(skeleton.joints[j].position.x+skeleton.joints[j].parent->position.x)/2),
-(-(skeleton.joints[j].position.y+skeleton.joints[j].parent->position.y)/2),
-(-(skeleton.joints[j].position.z+skeleton.joints[j].parent->position.z)/2));
-glTranslatef(tempbulletloc[1].x,tempbulletloc[1].y,tempbulletloc[1].z);
-glGetFloatv(GL_MODELVIEW_MATRIX,M);
-tempbulletloc[1].x=M[12];
-tempbulletloc[1].y=M[13];
-tempbulletloc[1].z=M[14];
-glPopMatrix();
-collide=skeletonmodels[skeleton.joints[j].modelnum].LineCheck(tempbulletloc[0],tempbulletloc[1],&collisionpoint);
-if(collide!=-1)
-{
-glPushMatrix();
-glLoadIdentity();
-glTranslatef(  (skeleton.joints[j].position.x+skeleton.joints[j].parent->position.x)/2,
-(skeleton.joints[j].position.y+skeleton.joints[j].parent->position.y)/2,
-(skeleton.joints[j].position.z+skeleton.joints[j].parent->position.z)/2);
-glRotatef(-skeleton.joints[j].rotate1+90,0,1,0);
-glRotatef(-skeleton.joints[j].rotate2+90,0,0,1);
-glScalef(1,skeleton.joints[j].length,1);
-glTranslatef(collisionpoint.x,collisionpoint.y,collisionpoint.z);
-glGetFloatv(GL_MODELVIEW_MATRIX,M);
-collisionpoint.x=M[12];
-collisionpoint.y=M[13];
-collisionpoint.z=M[14];
-glPopMatrix();
-hitstruct.collision=1;
-hitstruct.hitlocation=collisionpoint;
-hitstruct.joint1=&skeleton.joints[j];
-hitstruct.joint2=skeleton.joints[j].parent;
-}
-}
-}
-for(int j=0;j<skeleton.num_muscles;j++){
-if(skeleton.muscles[j].visible){
-tempbulletloc[0]=start;
-tempbulletloc[1]=end;
-glPushMatrix();
-glLoadIdentity();
-glScalef(1,1/skeleton.muscles[j].length,1);
-glRotatef(skeleton.muscles[j].rotate3,0,1,0);
-glRotatef(skeleton.muscles[j].rotate2-90,0,0,1);
-glRotatef(skeleton.muscles[j].rotate1-90,0,1,0);
-glTranslatef(  (-(skeleton.muscles[j].parent1->position.x+skeleton.muscles[j].parent2->position.x)/2),
-(-(skeleton.muscles[j].parent1->position.y+skeleton.muscles[j].parent2->position.y)/2),
-(-(skeleton.muscles[j].parent1->position.z+skeleton.muscles[j].parent2->position.z)/2));
-
-glTranslatef(tempbulletloc[0].x,tempbulletloc[0].y,tempbulletloc[0].z);
-glGetFloatv(GL_MODELVIEW_MATRIX,M);
-tempbulletloc[0].x=M[12];
-tempbulletloc[0].y=M[13];
-tempbulletloc[0].z=M[14];
-glPopMatrix();
-glPushMatrix();
-glLoadIdentity();
-glScalef(1,1/skeleton.muscles[j].length,1);
-glRotatef(skeleton.muscles[j].rotate3,0,1,0);
-glRotatef(skeleton.muscles[j].rotate2-90,0,0,1);
-glRotatef(skeleton.muscles[j].rotate1-90,0,1,0);
-
-glTranslatef(  (-(skeleton.muscles[j].parent1->position.x+skeleton.muscles[j].parent2->position.x)/2),
-(-(skeleton.muscles[j].parent1->position.y+skeleton.muscles[j].parent2->position.y)/2),
-(-(skeleton.muscles[j].parent1->position.z+skeleton.muscles[j].parent2->position.z)/2));
-glTranslatef(tempbulletloc[1].x,tempbulletloc[1].y,tempbulletloc[1].z);
-glGetFloatv(GL_MODELVIEW_MATRIX,M);
-tempbulletloc[1].x=M[12];
-tempbulletloc[1].y=M[13];
-tempbulletloc[1].z=M[14];
-glPopMatrix();
-collide=skeletonmodels[skeleton.muscles[j].parent1->modelnum].LineCheck(tempbulletloc[0],tempbulletloc[1],&collisionpoint);
-if(collide!=-1)
-{
-glPushMatrix();
-glLoadIdentity();
-glTranslatef(  (skeleton.muscles[j].parent1->position.x+skeleton.muscles[j].parent2->position.x)/2,
-(skeleton.muscles[j].parent1->position.y+skeleton.muscles[j].parent2->position.y)/2,
-(skeleton.muscles[j].parent1->position.z+skeleton.muscles[j].parent2->position.z)/2);
-glRotatef(-skeleton.muscles[j].rotate1+90,0,1,0);
-glRotatef(-skeleton.muscles[j].rotate2+90,0,0,1);
-glRotatef(-skeleton.muscles[j].rotate3,0,1,0);
-glScalef(1,findDistance(skeleton.muscles[j].parent1->position,skeleton.muscles[j].parent2->position),1);
-glTranslatef(collisionpoint.x,collisionpoint.y,collisionpoint.z);
-glGetFloatv(GL_MODELVIEW_MATRIX,M);
-collisionpoint.x=M[12];
-collisionpoint.y=M[13];
-collisionpoint.z=M[14];
-glPopMatrix();
-hitstruct.collision=1;
-hitstruct.hitlocation=collisionpoint;
-hitstruct.joint1=skeleton.muscles[j].parent1;
-hitstruct.joint2=skeleton.muscles[j].parent2;
-}
-}
-}
-}
-if(skeleton.free<1){
-if(rotation)hitstruct.hitlocation=DoRotation(hitstruct.hitlocation,0,rotation,0);
-hitstruct.hitlocation=hitstruct.hitlocation+coords;
-}
-return hitstruct;
-}
-*/
 void   Person::DoAnimations(){
        if(!skeleton.free){
                int i = 0;
@@ -1947,8 +1773,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 +1823,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 +1853,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 +1884,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 +1899,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 +1952,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 +1970,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 +2014,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 +2048,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 +2094,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 +2131,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 +2181,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 +2196,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 +2233,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 +2281,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 +2313,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 +2362,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 +2407,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 +2462,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 +2518,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 +2549,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 +2599,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 +2634,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 +2689,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 +2755,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 +2767,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 +2788,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 +2868,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 +2905,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 +2963,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 +3026,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 +3052,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 +3116,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 +3145,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 +3181,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 +3215,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 +3241,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 +3282,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 +3308,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 +3357,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 +3403,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 +3487,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 +3515,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 +3548,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 +3590,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 +3623,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 +3692,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 +3734,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 +3805,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 +3863,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 +3888,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 +3944,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 +3978,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 +4007,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 +4026,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 +4056,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 +4087,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 +4106,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 +4130,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 +4166,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 +4179,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 +4269,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 +4321,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 +4336,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 +4413,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 +4431,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 +4471,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 +4567,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 +4635,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 +4658,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 +4879,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 +4892,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 +4905,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 +4917,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 +4927,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 +4954,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 +4973,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 +5050,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 +5192,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 +5425,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 +5506,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 +5516,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 +5582,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 +5695,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 +5823,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 +5863,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 +5888,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 +5913,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 +5938,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 +5953,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 +5971,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 +5984,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 +6010,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 +6026,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 +6064,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 +6235,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 +6288,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 +6302,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,26 +6326,11 @@ 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;
                                        }
 
-                                       /*if(creature==wolftype)
-                                       if(isRun()){
-                                       velocity+=facing*multiplier*speed*700*scale;
-                                       velspeed=findLength(&velocity);
-                                       if(velspeed>speed*55*scale){
-                                       velocity/=velspeed;
-                                       velspeed=speed*55*scale;
-                                       velocity*=velspeed;
-                                       }
-                                       velocity.y+=gravity*multiplier*20;
-                                       ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                       velspeed=findLength(&velocity);
-                                       velocity=flatfacing*velspeed;
-                                       }*/
-
                                        if(targetanimation==rollanim&&animation[targetanimation].label[targetframe]!=6){
                                                velocity+=facing*multiplier*speed*700*scale;
                                                velspeed=findLength(&velocity);
@@ -6568,7 +6340,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 +6355,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 +6369,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 +6383,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 +6398,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 +6412,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 +6436,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 +6450,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 +6475,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 +6491,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 +6559,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 +6635,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 +6788,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 +7093,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 +7122,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 +7429,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 +7445,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;