]> git.jsancho.org Git - lugaru.git/blobdiff - Source/Person.cpp
Cleanning up Sprite class. More can be done, but it's already prettier.
[lugaru.git] / Source / Person.cpp
index ee9ab1f027efc042f902d54263a41d7205f24d60..cf4a6fbcac35bc34b8fb34b7b10d23166a18c507 100644 (file)
@@ -1,14 +1,35 @@
+/*
+Copyright (C) 2003, 2010 - Wolfire Games
+
+This file is part of Lugaru.
+
+Lugaru is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*/
+
 /**> HEADER FILES <**/
 #include "Person.h"
+#include "openal_wrapper.h"
 
 extern float multiplier;
 extern Animation animation[animation_count];
-extern FSOUND_SAMPLE   *samp[100];
+extern OPENAL_SAMPLE   *samp[100];
 extern int channels[100];
 extern Terrain terrain;
 extern float gravity;
 extern int environment;
-extern Sprites sprites;
 extern int detail;
 extern FRUSTUM frustum;
 extern XYZ viewer;
@@ -87,9 +108,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;
@@ -118,10 +139,10 @@ void Person::CheckKick(){
                                                vel[1]=velocity.y;
                                                vel[2]=velocity.z;
                                                if(tutoriallevel!=1){
-                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE);
-                                                       FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
-                                                       FSOUND_SetVolume(channels[heavyimpactsound], 128);
-                                                       FSOUND_SetPaused(channels[heavyimpactsound], FALSE);
+                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                }
                                                victim->RagDoll(0);
                                                relative=velocity;
@@ -141,7 +162,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){
@@ -180,7 +201,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;
@@ -193,19 +214,19 @@ void Person::CatchFire(){
        vel[0]=0;
        vel[1]=0;
        vel[2]=0;
-       PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE);
-       FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel);
-       FSOUND_SetVolume(channels[firestartsound], 256);
-       FSOUND_SetPaused(channels[firestartsound], FALSE);
+       PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
+       OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
+       OPENAL_SetVolume(channels[firestartsound], 256);
+       OPENAL_SetPaused(channels[firestartsound], false);
 
        vel[0]=velocity.x;
        vel[1]=velocity.y;
        vel[2]=velocity.z;
-       //PlaySoundEx( firesound, samp[firesound], NULL, TRUE);
-       PlayStreamEx( stream_firesound, strm[stream_firesound], NULL, TRUE);
-       FSOUND_3D_SetAttributes(channels[stream_firesound], gLoc, vel);
-       FSOUND_SetVolume(channels[stream_firesound], 256);
-       FSOUND_SetPaused(channels[stream_firesound], FALSE);
+       //PlaySoundEx( firesound, samp[firesound], NULL, true);
+       PlayStreamEx( stream_firesound, strm[stream_firesound], NULL, true);
+       OPENAL_3D_SetAttributes(channels[stream_firesound], gLoc, vel);
+       OPENAL_SetVolume(channels[stream_firesound], 256);
+       OPENAL_SetPaused(channels[stream_firesound], false);
 
        flamedelay=0;
 
@@ -413,36 +434,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);
                                        }
                                }
                }
@@ -456,16 +474,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;
                }
 
        }
@@ -510,10 +528,10 @@ void Person::DoBloodBig(float howmuch,int which){
                        }
 
                        if(whichsound!=-1){
-                               PlaySoundEx( whichsound, samp[whichsound], NULL, TRUE);
-                               FSOUND_3D_SetAttributes(channels[whichsound], gLoc, vel);
-                               FSOUND_SetVolume(channels[whichsound], 512);
-                               FSOUND_SetPaused(channels[whichsound], FALSE);
+                               PlaySoundEx( whichsound, samp[whichsound], NULL, true);
+                               OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[whichsound], 512);
+                               OPENAL_SetPaused(channels[whichsound], false);
                        }
                }
 
@@ -540,13 +558,13 @@ void Person::DoBloodBig(float howmuch,int which){
                                        if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
                                        if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale;
                                        if(skeleton.free){
-                                               sprites.MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
-                                               sprites.MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1);
+                                               Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
+                                               Sprite::MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1);
                                        }
                                        if(!skeleton.free){
-                                               sprites.MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
-                                               sprites.MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
-                                       }       
+                                               Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
+                                               Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
+                                       }
                                }
                        }
                        int offsetx=0,offsety=0;
@@ -587,7 +605,7 @@ void Person::DoBloodBig(float howmuch,int which){
                                                        if(i>endx)endx=i;
                                                        if(j>endy)endy=j;
                                                }
-                                       }       
+                                       }
                                }
                                if(creature==wolftype)
                                        for(i=0;i<512;i++){
@@ -598,7 +616,7 @@ void Person::DoBloodBig(float howmuch,int which){
                                                                if(i>endx)endx=i;
                                                                if(j>endy)endy=j;
                                                        }
-                                               }       
+                                               }
                                        }
 
                                        startx+=offsetx;
@@ -676,7 +694,7 @@ void Person::DoBloodBig(float howmuch,int which){
                bloodloss+=bleeding*3;
 
                if(tutoriallevel!=1&&aitype!=playercontrolled&&bloodloss>damagetolerance*2/3&&bloodloss<damagetolerance&&creature==rabbittype){
-                       if(abs(Random()%2)==0){aitype=gethelptype; 
+                       if(abs(Random()%2)==0){aitype=gethelptype;
                        lastseentime=12;
                        }
                        else aitype=attacktypecutoff;
@@ -767,13 +785,13 @@ 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);
+                                       }
                                }
                        }
                        int offsetx=0,offsety=0;
@@ -803,7 +821,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){
                                                        if(i>endx)endx=i;
                                                        if(j>endy)endy=j;
                                                }
-                                       }       
+                                       }
                                }
                                if(creature==wolftype)
                                        for(i=0;i<512;i++){
@@ -814,7 +832,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){
                                                                if(i>endx)endx=i;
                                                                if(j>endy)endy=j;
                                                        }
-                                               }       
+                                               }
                                        }
                                        startx+=offsetx;
                                        endx+=offsetx;
@@ -894,7 +912,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){
        bloodloss+=bleeding*3;
 
        if(tutoriallevel!=1&&aitype!=playercontrolled&&bloodloss>damagetolerance*2/3&&bloodloss<damagetolerance&&creature==rabbittype){
-               if(abs(Random()%2)==0){aitype=gethelptype; 
+               if(abs(Random()%2)==0){aitype=gethelptype;
                lastseentime=12;
                }
                else aitype=attacktypecutoff;
@@ -1163,16 +1181,16 @@ void Person::Reverse(){
                                                        if(weapons.type[victim->weaponids[0]]==staff)weapons.damage[victim->weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
                                                        if(weapons.type[weaponids[0]]==staff)weapons.damage[weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
 
-                                                       PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, TRUE);
-                                                       FSOUND_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
-                                                       FSOUND_SetVolume(channels[swordstaffsound], 512);
-                                                       FSOUND_SetPaused(channels[swordstaffsound], FALSE);
+                                                       PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[swordstaffsound], 512);
+                                                       OPENAL_SetPaused(channels[swordstaffsound], false);
                                                }
                                                else{
-                                                       PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE);
-                                                       FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
-                                                       FSOUND_SetVolume(channels[metalhitsound], 512);
-                                                       FSOUND_SetPaused(channels[metalhitsound], FALSE);
+                                                       PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                       OPENAL_SetPaused(channels[metalhitsound], false);
                                                }
                                        }
                                        XYZ aim;
@@ -1206,10 +1224,10 @@ void Person::Reverse(){
 
 
 
-                                       /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE);
-                                       FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
-                                       FSOUND_SetVolume(channels[metalhitsound], 512);
-                                       FSOUND_SetPaused(channels[metalhitsound], FALSE);*/
+                                       /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
+                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                       OPENAL_SetPaused(channels[metalhitsound], false);*/
                                }
 
                                if(abs(Random()%20)==0){
@@ -1226,16 +1244,16 @@ void Person::Reverse(){
                                                        if(weapons.type[victim->weaponids[0]]==staff)weapons.damage[victim->weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
                                                        if(weapons.type[weaponids[0]]==staff)weapons.damage[weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
 
-                                                       PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, TRUE);
-                                                       FSOUND_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
-                                                       FSOUND_SetVolume(channels[swordstaffsound], 512);
-                                                       FSOUND_SetPaused(channels[swordstaffsound], FALSE);
+                                                       PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[swordstaffsound], 512);
+                                                       OPENAL_SetPaused(channels[swordstaffsound], false);
                                                }
                                                else{
-                                                       PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE);
-                                                       FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
-                                                       FSOUND_SetVolume(channels[metalhitsound], 512);
-                                                       FSOUND_SetPaused(channels[metalhitsound], FALSE);
+                                                       PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                       OPENAL_SetPaused(channels[metalhitsound], false);
                                                }
                                        }
 
@@ -1267,10 +1285,10 @@ void Person::Reverse(){
                                 }
 
 
-                                       /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE);
-                                       FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
-                                       FSOUND_SetVolume(channels[metalhitsound], 512);
-                                       FSOUND_SetPaused(channels[metalhitsound], FALSE);*/
+                                       /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
+                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                       OPENAL_SetPaused(channels[metalhitsound], false);*/
                                }
                        }
                        if(hasvictim)
@@ -1345,7 +1363,7 @@ void Person::DoDamage(float howmuch){
 
        if(aitype==passivetype&&damage<damagetolerance&&((tutoriallevel!=1||cananger)&&hostile))aitype=attacktypecutoff;
        if(tutoriallevel!=1&&aitype!=playercontrolled&&damage<damagetolerance&&damage>damagetolerance*2/3&&creature==rabbittype){
-               if(abs(Random()%2)==0){aitype=gethelptype; 
+               if(abs(Random()%2)==0){aitype=gethelptype;
                lastseentime=12;
                }
                else aitype=attacktypecutoff;
@@ -1363,9 +1381,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];
@@ -1376,10 +1394,10 @@ void Person::DoDamage(float howmuch){
                vel[0]=0;
                vel[1]=0;
                vel[2]=0;
-               PlaySoundEx( splattersound, samp[splattersound], NULL, TRUE);
-               FSOUND_3D_SetAttributes(channels[splattersound], gLoc, vel);
-               FSOUND_SetVolume(channels[splattersound], 256);
-               FSOUND_SetPaused(channels[splattersound], FALSE);
+               PlaySoundEx( splattersound, samp[splattersound], NULL, true);
+               OPENAL_3D_SetAttributes(channels[splattersound], gLoc, vel);
+               OPENAL_SetVolume(channels[splattersound], 256);
+               OPENAL_SetPaused(channels[splattersound], false);
 
                skeleton.free=2;
                DoDamage(10000);
@@ -1391,7 +1409,7 @@ void Person::DoDamage(float howmuch){
                if(!dead&&creature==wolftype){
                        bonus=Wolfbonus;
                        bonustime=0;
-                       bonusvalue=300; 
+                       bonusvalue=300;
                }
                dead=2;
                coords=20;
@@ -1430,10 +1448,10 @@ void Person::DoDamage(float howmuch){
                        }
 
                        if(whichsound!=-1){
-                               PlaySoundEx( whichsound, samp[whichsound], NULL, TRUE);
-                               FSOUND_3D_SetAttributes(channels[whichsound], gLoc, vel);
-                               FSOUND_SetVolume(channels[whichsound], 512);
-                               FSOUND_SetPaused(channels[whichsound], FALSE);
+                               PlaySoundEx( whichsound, samp[whichsound], NULL, true);
+                               OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[whichsound], 512);
+                               OPENAL_SetPaused(channels[whichsound], false);
                        }
                }
                speechdelay=.3;
@@ -1685,7 +1703,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;
@@ -1694,7 +1712,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){
@@ -1704,7 +1722,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;
@@ -1713,7 +1731,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())
@@ -1723,7 +1741,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);
                }
 }
 
@@ -1732,12 +1750,12 @@ 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){
+HitStruct      Person::BulletCollideWithPlayer(XYZ start, XYZ end){
 float damage=20;
 XYZ tempbulletloc[2];
 XYZ collisionpoint;
@@ -1905,7 +1923,7 @@ hitstruct.hitlocation=hitstruct.hitlocation+coords;
 return hitstruct;
 }
 */
-void   Person::DoAnimations(){ 
+void   Person::DoAnimations(){
        if(!skeleton.free){
                int i = 0;
                static float oldtarget;
@@ -1913,7 +1931,7 @@ void      Person::DoAnimations(){
                if(isIdle()&&currentanimation!=getIdle())normalsupdatedelay=0;
 
                if(targetanimation==tempanim||currentanimation==tempanim){
-                       animation[tempanim]=tempanimation;                      
+                       animation[tempanim]=tempanimation;
                }
                if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){
                        float gLoc[3];
@@ -1926,10 +1944,10 @@ void    Person::DoAnimations(){
                        vel[2]=velocity.z;
 
                        if(id==0){
-                               FSOUND_3D_SetAttributes(channels[whooshsound], gLoc, vel);
-                               FSOUND_SetVolume(channels[whooshsound], 64*findLength(&velocity)/5);
+                               OPENAL_3D_SetAttributes(channels[whooshsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[whooshsound], 64*findLength(&velocity)/5);
                        }
-                       if(((velocity.y<-15)||(crouchkeydown&&velocity.y<-8))&&abs(velocity.y)*4>fast_sqrt(velocity.x*velocity.x*velocity.z*velocity.z))landhard=1;                     
+                       if(((velocity.y<-15)||(crouchkeydown&&velocity.y<-8))&&abs(velocity.y)*4>fast_sqrt(velocity.x*velocity.x*velocity.z*velocity.z))landhard=1;
                        if(!crouchkeydown&&velocity.y>=-15)landhard=0;
                }
                if((currentanimation==jumpupanim||targetanimation==jumpdownanim)/*&&velocity.y<40*/&&!isFlip()&&(!isLanding()&&!isLandhard())&&((crouchkeydown&&!crouchtogglekeydown))){
@@ -1953,7 +1971,7 @@ void      Person::DoAnimations(){
                        crouchtogglekeydown=0;
                        if(aitype==playercontrolled)feint=0;
                }
-               else 
+               else
                {
                        if(!crouchtogglekeydown&&animation[targetanimation].attack==reversed&&aitype==playercontrolled&&(escapednum<2||reversaltrain))feint=1;
                        if(!isFlip())crouchtogglekeydown=1;
@@ -1975,11 +1993,11 @@ void    Person::DoAnimations(){
                                vel[0]=0;
                                vel[1]=0;
                                vel[2]=0;
-                               PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE);
-                               FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel);
-                               FSOUND_SetVolume(channels[fireendsound], 256);
-                               FSOUND_SetPaused(channels[fireendsound], FALSE);
-                               FSOUND_SetPaused(channels[stream_firesound], TRUE);
+                               PlaySoundEx( fireendsound, samp[fireendsound], NULL, true);
+                               OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[fireendsound], 256);
+                               OPENAL_SetPaused(channels[fireendsound], false);
+                               OPENAL_SetPaused(channels[stream_firesound], true);
                                deathbleeding=0;
                        }
 
@@ -2005,10 +2023,10 @@ void    Person::DoAnimations(){
                                                vel[0]=velocity.x;
                                                vel[1]=velocity.y;
                                                vel[2]=velocity.z;
-                                               PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE);
-                                               FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
-                                               FSOUND_SetVolume(channels[clawslicesound], 128);
-                                               FSOUND_SetPaused(channels[clawslicesound], FALSE);
+                                               PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                               OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                               OPENAL_SetVolume(channels[clawslicesound], 128);
+                                               OPENAL_SetPaused(channels[clawslicesound], false);
                                                victim->spurt=1;
                                                victim->DoBloodBig(1/victim->armorhead,210);
                                        }
@@ -2036,10 +2054,10 @@ void    Person::DoAnimations(){
                                                vel[1]=velocity.y;
                                                vel[2]=velocity.z;
 
-                                               PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, TRUE);
-                                               FSOUND_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
-                                               FSOUND_SetVolume(channels[knifesheathesound], 128);
-                                               FSOUND_SetPaused(channels[knifesheathesound], FALSE);   
+                                               PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
+                                               OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                               OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                               OPENAL_SetPaused(channels[knifesheathesound], false);
                                        }
                                        if(weaponactive!=-1){
                                                float gLoc[3];
@@ -2051,10 +2069,10 @@ void    Person::DoAnimations(){
                                                vel[1]=velocity.y;
                                                vel[2]=velocity.z;
 
-                                               PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE);
-                                               FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
-                                               FSOUND_SetVolume(channels[knifedrawsound], 128);
-                                               FSOUND_SetPaused(channels[knifedrawsound], FALSE);      
+                                               PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
+                                               OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                               OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                               OPENAL_SetPaused(channels[knifedrawsound], false);
                                        }
                                }
                                drawtogglekeydown=1;
@@ -2082,11 +2100,11 @@ void    Person::DoAnimations(){
                                                                FootLand(0,1);
                                                        }
 
-                                               }       
+                                               }
                                                if(terrain.getOpacity(coords.x,coords.z)>=.2){
                                                        if(animation[targetanimation].label[targetframe]==1)whichsound=footstepsound3;
                                                        else whichsound=footstepsound4;
-                                               }                       
+                                               }
                                        }
                                        if(!onterrain){
                                                if(animation[targetanimation].label[targetframe]==1)whichsound=footstepsound3;
@@ -2104,12 +2122,12 @@ void    Person::DoAnimations(){
                                        else if(animation[targetanimation].label[targetframe]==4)whichsound=knifeswishsound;
                                        if(animation[targetanimation].label[targetframe]==8&&tutoriallevel!=1)whichsound=landsound2;
 
-                                       PlaySoundEx( whichsound, samp[whichsound], NULL, TRUE);
-                                       FSOUND_3D_SetAttributes(channels[whichsound], gLoc, vel);
-                                       if(whichsound!=knifeswishsound)FSOUND_SetVolume(channels[whichsound], 128);
-                                       if(whichsound!=knifeswishsound&&(targetanimation==staffhitanim||targetanimation==staffgroundsmashanim||targetanimation==staffspinhitanim))FSOUND_SetVolume(channels[whichsound], 256);
-                                       if(whichsound==knifeswishsound)FSOUND_SetVolume(channels[whichsound], 512);
-                                       FSOUND_SetPaused(channels[whichsound], FALSE);
+                                       PlaySoundEx( whichsound, samp[whichsound], NULL, true);
+                                       OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                                       if(whichsound!=knifeswishsound)OPENAL_SetVolume(channels[whichsound], 128);
+                                       if(whichsound!=knifeswishsound&&(targetanimation==staffhitanim||targetanimation==staffgroundsmashanim||targetanimation==staffspinhitanim))OPENAL_SetVolume(channels[whichsound], 256);
+                                       if(whichsound==knifeswishsound)OPENAL_SetVolume(channels[whichsound], 512);
+                                       OPENAL_SetPaused(channels[whichsound], false);
 
                                        if(id==0)
                                                if(whichsound==footstepsound||whichsound==footstepsound2||whichsound==footstepsound3||whichsound==footstepsound4){
@@ -2122,10 +2140,10 @@ void    Person::DoAnimations(){
 
                                                if(animation[targetanimation].label[targetframe]==3){
                                                        whichsound--;
-                                                       PlaySoundEx( whichsound, samp[whichsound], NULL, TRUE);
-                                                       FSOUND_3D_SetAttributes(channels[whichsound], gLoc, vel);
-                                                       FSOUND_SetVolume(channels[whichsound], 128);
-                                                       FSOUND_SetPaused(channels[whichsound], FALSE);
+                                                       PlaySoundEx( whichsound, samp[whichsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[whichsound], 128);
+                                                       OPENAL_SetPaused(channels[whichsound], false);
                                                }
                                }
 
@@ -2166,16 +2184,16 @@ void    Person::DoAnimations(){
                                                                //if(animation[targetanimation].label[targetframe]==8)whichsound=landsound2;
 
                                                                if(whichsound!=-1){
-                                                                       PlaySoundEx( whichsound, samp[whichsound], NULL, TRUE);
-                                                                       FSOUND_3D_SetAttributes(channels[whichsound], gLoc, vel);
-                                                                       FSOUND_SetVolume(channels[whichsound], 512);
-                                                                       FSOUND_SetPaused(channels[whichsound], FALSE);
+                                                                       PlaySoundEx( whichsound, samp[whichsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[whichsound], 512);
+                                                                       OPENAL_SetPaused(channels[whichsound], false);
                                                                }
                                                        }
 
 
 
-                                                       if((!wasLanding()&&!wasLandhard())&&currentanimation!=getIdle()&&(isLanding()||isLandhard())){                          
+                                                       if((!wasLanding()&&!wasLandhard())&&currentanimation!=getIdle()&&(isLanding()||isLandhard())){
                                                                FootLand(0,1);
                                                                FootLand(1,1);
                                                        }
@@ -2200,10 +2218,10 @@ void    Person::DoAnimations(){
                                                                                                        vel[0]=velocity.x;
                                                                                                        vel[1]=velocity.y;
                                                                                                        vel[2]=velocity.z;
-                                                                                                       PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE);
-                                                                                                       FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
-                                                                                                       FSOUND_SetVolume(channels[knifedrawsound], 128);
-                                                                                                       FSOUND_SetPaused(channels[knifedrawsound], FALSE);
+                                                                                                       PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
+                                                                                                       OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                                                       OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                                                       OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                                                }
 
                                                                                                weaponactive=0;
@@ -2246,17 +2264,17 @@ void    Person::DoAnimations(){
                                                                                                        }
                                                                                                        if(!fleshstuck){
                                                                                                                if(weapons.type[i]!=staff){
-                                                                                                                       PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE);
-                                                                                                                       FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
-                                                                                                                       FSOUND_SetVolume(channels[knifedrawsound], 128);
-                                                                                                                       FSOUND_SetPaused(channels[knifedrawsound], FALSE);
+                                                                                                                       PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
+                                                                                                                       OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                                                                       OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                                                                       OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                                                                }
                                                                                                        }
                                                                                                        if(fleshstuck){
-                                                                                                               PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, TRUE);
-                                                                                                               FSOUND_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
-                                                                                                               FSOUND_SetVolume(channels[fleshstabremovesound], 128);
-                                                                                                               FSOUND_SetPaused(channels[fleshstabremovesound], FALSE);
+                                                                                                               PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true);
+                                                                                                               OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
+                                                                                                               OPENAL_SetVolume(channels[fleshstabremovesound], 128);
+                                                                                                               OPENAL_SetPaused(channels[fleshstabremovesound], false);
                                                                                                        }
                                                                                                        weaponactive=0;
                                                                                                        if(weapons.owner[i]!=-1){
@@ -2284,7 +2302,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;
@@ -2333,10 +2351,10 @@ void    Person::DoAnimations(){
                                                                        vel[1]=velocity.y;
                                                                        vel[2]=velocity.z;
 
-                                                                       PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, TRUE);
-                                                                       FSOUND_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
-                                                                       FSOUND_SetVolume(channels[knifesheathesound], 128);
-                                                                       FSOUND_SetPaused(channels[knifesheathesound], FALSE);   
+                                                                       PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                                                       OPENAL_SetPaused(channels[knifesheathesound], false);
                                                                }
                                                                if(weaponactive!=-1){
                                                                        float gLoc[3];
@@ -2348,10 +2366,10 @@ void    Person::DoAnimations(){
                                                                        vel[1]=velocity.y;
                                                                        vel[2]=velocity.z;
 
-                                                                       PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE);
-                                                                       FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
-                                                                       FSOUND_SetVolume(channels[knifedrawsound], 128);
-                                                                       FSOUND_SetPaused(channels[knifedrawsound], FALSE);      
+                                                                       PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                       OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                }
                                                        }
 
@@ -2385,10 +2403,10 @@ void    Person::DoAnimations(){
                                                                        vel[1]=velocity.y;
                                                                        vel[2]=velocity.z;
 
-                                                                       PlaySoundEx( jumpsound, samp[jumpsound], NULL, TRUE);
-                                                                       FSOUND_3D_SetAttributes(channels[jumpsound], gLoc, vel);
-                                                                       FSOUND_SetVolume(channels[jumpsound], 128);
-                                                                       FSOUND_SetPaused(channels[jumpsound], FALSE);
+                                                                       PlaySoundEx( jumpsound, samp[jumpsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[jumpsound], 128);
+                                                                       OPENAL_SetPaused(channels[jumpsound], false);
                                                                }
 
                                                                float closestdist;
@@ -2433,10 +2451,10 @@ void    Person::DoAnimations(){
                                                                                        vel[1]=velocity.y;
                                                                                        vel[2]=velocity.z;
 
-                                                                                       PlaySoundEx( jumpsound, samp[jumpsound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[jumpsound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[jumpsound], 128);
-                                                                                       FSOUND_SetPaused(channels[jumpsound], FALSE);
+                                                                                       PlaySoundEx( jumpsound, samp[jumpsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[jumpsound], 128);
+                                                                                       OPENAL_SetPaused(channels[jumpsound], false);
                                                                                }
                                                                        }
                                                        }
@@ -2465,16 +2483,16 @@ void    Person::DoAnimations(){
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
                                                                                if(tutoriallevel!=1){
-                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[heavyimpactsound], 128);
-                                                                                       FSOUND_SetPaused(channels[heavyimpactsound], FALSE);
+                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                }
                                                                                if(creature==wolftype){
-                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[clawslicesound], 128);
-                                                                                       FSOUND_SetPaused(channels[clawslicesound], FALSE);
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2/victim->armorhead,175);
                                                                                }
@@ -2514,15 +2532,15 @@ void    Person::DoAnimations(){
                                                                                vel[0]=velocity.x;
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
-                                                                               PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[whooshhitsound], 512);
-                                                                               FSOUND_SetPaused(channels[whooshhitsound], FALSE);
+                                                                               PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[whooshhitsound], 512);
+                                                                               OPENAL_SetPaused(channels[whooshhitsound], false);
                                                                                if(creature==wolftype){
-                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[clawslicesound], 128);
-                                                                                       FSOUND_SetPaused(channels[clawslicesound], FALSE);
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2,175);
                                                                                }
@@ -2559,16 +2577,16 @@ void    Person::DoAnimations(){
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
                                                                                if(tutoriallevel!=1){
-                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[heavyimpactsound], 160);
-                                                                                       FSOUND_SetPaused(channels[heavyimpactsound], FALSE);
+                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[heavyimpactsound], 160);
+                                                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                }
                                                                                if(creature==wolftype){
-                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[clawslicesound], 128);
-                                                                                       FSOUND_SetPaused(channels[clawslicesound], FALSE);
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2/victim->armorhead,175);
                                                                                }
@@ -2614,16 +2632,16 @@ void    Person::DoAnimations(){
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
                                                                                if(tutoriallevel!=1){
-                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[heavyimpactsound], 160);
-                                                                                       FSOUND_SetPaused(channels[heavyimpactsound], FALSE);
+                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[heavyimpactsound], 160);
+                                                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                }
                                                                                if(creature==wolftype){
-                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[clawslicesound], 128);
-                                                                                       FSOUND_SetPaused(channels[clawslicesound], FALSE);
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2/victim->armorhead,175);
                                                                                }
@@ -2670,10 +2688,10 @@ void    Person::DoAnimations(){
                                                                                vel[0]=velocity.x;
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
-                                                                               PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[whooshhitsound], 512);
-                                                                               FSOUND_SetPaused(channels[whooshhitsound], FALSE);
+                                                                               PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[whooshhitsound], 512);
+                                                                               OPENAL_SetPaused(channels[whooshhitsound], false);
                                                                                victim->RagDoll(0);
                                                                                XYZ relative;
                                                                                relative=victim->coords-coords;
@@ -2701,15 +2719,15 @@ void    Person::DoAnimations(){
                                                                                vel[0]=velocity.x;
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
-                                                                               /*PlaySoundEx( landsound2, samp[landsound2], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[landsound2], 128);
-                                                                               FSOUND_SetPaused(channels[landsound2], FALSE);
+                                                                               /*PlaySoundEx( landsound2, samp[landsound2], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[landsound2], 128);
+                                                                               OPENAL_SetPaused(channels[landsound2], false);
                                                                                */
-                                                                               PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[movewhooshsound], 128);
-                                                                               FSOUND_SetPaused(channels[movewhooshsound], FALSE);
+                                                                               PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[movewhooshsound], 128);
+                                                                               OPENAL_SetPaused(channels[movewhooshsound], false);
 
                                                                                victim->skeleton.longdead=0;
                                                                                victim->skeleton.free=1;
@@ -2751,10 +2769,10 @@ void    Person::DoAnimations(){
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
                                                                                if(tutoriallevel!=1){
-                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[heavyimpactsound], 128);
-                                                                                       FSOUND_SetPaused(channels[heavyimpactsound], FALSE);
+                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                }
                                                                                XYZ relative;
                                                                                relative=victim->coords-coords;
@@ -2786,10 +2804,10 @@ void    Person::DoAnimations(){
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
                                                                                if(tutoriallevel!=1){
-                                                                                       PlaySoundEx( thudsound, samp[thudsound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[thudsound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[thudsound], 400);
-                                                                                       FSOUND_SetPaused(channels[thudsound], FALSE);
+                                                                                       PlaySoundEx( thudsound, samp[thudsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[thudsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[thudsound], 400);
+                                                                                       OPENAL_SetPaused(channels[thudsound], false);
                                                                                }
 
                                                                                victim->skeleton.longdead=0;
@@ -2841,10 +2859,10 @@ void    Person::DoAnimations(){
 
                                                                        if(!hasvictim){
                                                                                terrain.MakeDecal(blooddecalfast,(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2),.08,.6,Random()%360);
-                                                                               PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[knifesheathesound], 128);
-                                                                               FSOUND_SetPaused(channels[knifesheathesound], FALSE);
+                                                                               PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                                                               OPENAL_SetPaused(channels[knifesheathesound], false);
                                                                        }
 
                                                                        if(victim&&hasvictim){
@@ -2907,10 +2925,10 @@ void    Person::DoAnimations(){
                                                                                                        victim->skeleton.joints[i].locked=0;
                                                                                                        //victim->skeleton.joints[i].velocity=0;
                                                                                                }
-                                                                                               PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[fleshstabsound], 128);
-                                                                                               FSOUND_SetPaused(channels[fleshstabsound], FALSE);
+                                                                                               PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[fleshstabsound], 128);
+                                                                                               OPENAL_SetPaused(channels[fleshstabsound], false);
 
                                                                                        }
                                                                                        if(whichtri!=-1||weapons.bloody[weaponids[weaponactive]]){
@@ -2919,10 +2937,10 @@ void    Person::DoAnimations(){
                                                                                        }
                                                                                        if(whichtri==-1){
                                                                                                hasvictim=0;
-                                                                                               PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[knifesheathesound], 128);
-                                                                                               FSOUND_SetPaused(channels[knifesheathesound], FALSE);                                                           
+                                                                                               PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                                                                               OPENAL_SetPaused(channels[knifesheathesound], false);
                                                                                        }
                                                                                }
                                                                        }
@@ -2940,19 +2958,19 @@ void    Person::DoAnimations(){
                                                                        vel[1]=velocity.y;
                                                                        vel[2]=velocity.z;
                                                                        if(!hasvictim){
-                                                                               PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[knifedrawsound], 128);
-                                                                               FSOUND_SetPaused(channels[knifedrawsound], FALSE);                                                      
+                                                                               PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                               OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                        }
 
                                                                        if(victim&&hasvictim){
-                                                                               XYZ footvel,footpoint;  
+                                                                               XYZ footvel,footpoint;
 
-                                                                               PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[fleshstabremovesound], 128);
-                                                                               FSOUND_SetPaused(channels[fleshstabremovesound], FALSE);
+                                                                               PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[fleshstabremovesound], 128);
+                                                                               OPENAL_SetPaused(channels[fleshstabremovesound], false);
 
                                                                                footvel=0;
                                                                                footpoint=(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2);
@@ -3012,7 +3030,7 @@ void      Person::DoAnimations(){
 
                                                                                                for(i=0;i<victim->skeleton.num_joints;i++){
                                                                                                        victim->skeleton.joints[i].velchange=0;
-                                                                                                       victim->skeleton.joints[i].locked=0;                                                            
+                                                                                                       victim->skeleton.joints[i].locked=0;
                                                                                                        //victim->skeleton.joints[i].velocity=0;
                                                                                                }
 
@@ -3021,7 +3039,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;
@@ -3035,7 +3053,7 @@ void      Person::DoAnimations(){
                                                                        if(!hasvictim&&onterrain){
                                                                                weapons.bloody[weaponids[weaponactive]]=0;
                                                                                weapons.blooddrip[weaponids[weaponactive]]=0;
-                                                                       }                                       
+                                                                       }
                                                                }
 
                                                                if(targetanimation==upunchanim&&animation[targetanimation].label[currentframe]==5){
@@ -3057,18 +3075,18 @@ void    Person::DoAnimations(){
                                                                                //if(!victim->isIdle()||victim->damage>victim->damagetolerance-60){
                                                                                if(1==1){
                                                                                        if(tutoriallevel!=1){
-                                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[heavyimpactsound], 128);
-                                                                                               FSOUND_SetPaused(channels[heavyimpactsound], FALSE);
+                                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                        }
                                                                                }
                                                                                else {
                                                                                        if(tutoriallevel!=1){
-                                                                                               PlaySoundEx( landsound2, samp[landsound2], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[landsound2], 256);
-                                                                                               FSOUND_SetPaused(channels[landsound2], FALSE);                                                  
+                                                                                               PlaySoundEx( landsound2, samp[landsound2], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[landsound2], 256);
+                                                                                               OPENAL_SetPaused(channels[landsound2], false);
                                                                                        }
                                                                                }
 
@@ -3115,27 +3133,27 @@ void    Person::DoAnimations(){
                                                                                //if(!victim->isIdle()||victim->damage>victim->damagetolerance-60){
                                                                                if(victim->damage<=victim->damagetolerance-60&&normaldotproduct(victim->facing,victim->coords-coords)<(scale*5)*(scale*5)*0&&animation[victim->targetanimation].height!=lowheight){
                                                                                        if(tutoriallevel!=1){
-                                                                                               PlaySoundEx( thudsound, samp[thudsound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[thudsound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[thudsound], 512);
-                                                                                               FSOUND_SetPaused(channels[thudsound], FALSE);
+                                                                                               PlaySoundEx( thudsound, samp[thudsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[thudsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[thudsound], 512);
+                                                                                               OPENAL_SetPaused(channels[thudsound], false);
                                                                                        }
                                                                                }
                                                                                else if(victim->damage<=victim->damagetolerance-60&&normaldotproduct(victim->facing,victim->coords-coords)<(scale*5)*(scale*5)*0&&animation[victim->targetanimation].height==lowheight){
                                                                                        if(tutoriallevel!=1){
-                                                                                               PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[whooshhitsound], 512);
-                                                                                               FSOUND_SetPaused(channels[whooshhitsound], FALSE);
+                                                                                               PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[whooshhitsound], 512);
+                                                                                               OPENAL_SetPaused(channels[whooshhitsound], false);
                                                                                        }
                                                                                }
                                                                                else {
                                                                                        if(tutoriallevel!=1){
-                                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[heavyimpactsound], 256);
-                                                                                               FSOUND_SetPaused(channels[heavyimpactsound], FALSE);
-                                                                                       }                                                       
+                                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 256);
+                                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
+                                                                                       }
                                                                                }
 
                                                                                if(victim->damage>victim->damagetolerance-60||normaldotproduct(victim->facing,victim->coords-coords)>0||animation[victim->targetanimation].height==lowheight)
@@ -3178,10 +3196,10 @@ void    Person::DoAnimations(){
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
 
-                                                                               PlaySoundEx( landsound2, samp[landsound2], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[landsound2], 256);
-                                                                               FSOUND_SetPaused(channels[landsound2], FALSE);
+                                                                               PlaySoundEx( landsound2, samp[landsound2], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[landsound2], 256);
+                                                                               OPENAL_SetPaused(channels[landsound2], false);
 
                                                                                Puff(righthand);
                                                                        }
@@ -3204,16 +3222,16 @@ void    Person::DoAnimations(){
                                                                                                if(weapons.type[victim->weaponids[0]]==staff)weapons.damage[victim->weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
                                                                                                if(weapons.type[weaponids[0]]==staff)weapons.damage[weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
 
-                                                                                               PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[swordstaffsound], 512);
-                                                                                               FSOUND_SetPaused(channels[swordstaffsound], FALSE);
+                                                                                               PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[swordstaffsound], 512);
+                                                                                               OPENAL_SetPaused(channels[swordstaffsound], false);
                                                                                        }
                                                                                        else{
-                                                                                               PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[metalhitsound], 512);
-                                                                                               FSOUND_SetPaused(channels[metalhitsound], FALSE);
+                                                                                               PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                                                               OPENAL_SetPaused(channels[metalhitsound], false);
                                                                                        }
                                                                                }
 
@@ -3226,7 +3244,7 @@ void      Person::DoAnimations(){
                                                                                escapednum=0;
                                                                                XYZ aim;
                                                                                weapons.owner[weaponids[0]]=-1;
-                                                                               aim=victim->coords+DoRotation(victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position,0,victim->rotation,0)*victim->scale+victim->velocity*findDistance(&victim->coords,&coords)/50-(coords+DoRotation(skeleton.joints[skeleton.jointlabels[righthand]].position,0,rotation,0)*scale);                                          
+                                                                               aim=victim->coords+DoRotation(victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position,0,victim->rotation,0)*victim->scale+victim->velocity*findDistance(&victim->coords,&coords)/50-(coords+DoRotation(skeleton.joints[skeleton.jointlabels[righthand]].position,0,rotation,0)*scale);
                                                                                Normalise(&aim);
                                                                                /*if(victim->targetanimation==jumpupanim||victim->targetanimation==jumpdownanim){
                                                                                aim=DoRotation(aim,(float)abs(Random()%15)-7,(float)abs(Random()%15)-7,0);
@@ -3243,7 +3261,7 @@ void      Person::DoAnimations(){
                                                                                        weaponids[0]=weaponids[num_weapons];
                                                                                }
                                                                                weaponactive=-1;
-                                                                       }               
+                                                                       }
                                                                }
 
                                                                if(targetanimation==knifeslashstartanim&&animation[targetanimation].label[currentframe]==5){
@@ -3268,10 +3286,10 @@ void    Person::DoAnimations(){
                                                                                                vel[0]=velocity.x;
                                                                                                vel[1]=velocity.y;
                                                                                                vel[2]=velocity.z;
-                                                                                               PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[knifeslicesound], 512);
-                                                                                               FSOUND_SetPaused(channels[knifeslicesound], FALSE);
+                                                                                               PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[knifeslicesound], 512);
+                                                                                               OPENAL_SetPaused(channels[knifeslicesound], false);
                                                                                        }
                                                                                        //victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200;
                                                                                        if(animation[victim->targetanimation].attack&&(victim->aitype!=playercontrolled||victim->targetanimation==knifeslashstartanim)&&(victim->creature==rabbittype||victim->deathbleeding<=0)){
@@ -3289,25 +3307,25 @@ void    Person::DoAnimations(){
                                                                                        if(tutoriallevel!=1)if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1;
                                                                                        if(tutoriallevel!=1)weapons.blooddrip[weaponids[weaponactive]]+=3;
 
-                                                                                       XYZ footvel,footpoint;  
+                                                                                       XYZ footvel,footpoint;
                                                                                        footvel=0;
                                                                                        if(skeleton.free){
                                                                                                footpoint=(victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2*victim->scale+victim->coords;
                                                                                        }
                                                                                        if(!skeleton.free){
                                                                                                footpoint=DoRotation((victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2,0,victim->rotation,0)*victim->scale+victim->coords;
-                                                                                       }               
+                                                                                       }
                                                                                        if(tutoriallevel!=1){
-                                                                                               if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .6, .3);
+                                                                                               if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .6, .3);
                                                                                                footvel=DoRotation(facing,0,90,0)*.8;
                                                                                                //footvel.y-=.3;
-                                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .2, 1);
-                                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .2, 1);
+                                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .2, 1);
+                                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .2, 1);
                                                                                        }
                                                                                        if(tutoriallevel==1){
-                                                                                               sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,1,1, .6, .3);
+                                                                                               Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,1,1, .6, .3);
                                                                                        }
                                                                                        victim->DoDamage(damagemult*0);
                                                                                }
@@ -3320,7 +3338,7 @@ void      Person::DoAnimations(){
                                                                                                bonustime=0;
                                                                                                bonusvalue=40;
                                                                                        }
-                                                                                       escapednum=0; 
+                                                                                       escapednum=0;
                                                                                        if(tutoriallevel!=1){
                                                                                                if(normaldotproduct(victim->facing,victim->coords-coords)<0)victim->DoBloodBig(2/victim->armorhigh,190);
                                                                                                else victim->DoBloodBig(2/victim->armorhigh,185);
@@ -3333,10 +3351,10 @@ void    Person::DoAnimations(){
                                                                                                vel[0]=velocity.x;
                                                                                                vel[1]=velocity.y;
                                                                                                vel[2]=velocity.z;
-                                                                                               PlaySoundEx( swordslicesound, samp[swordslicesound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[swordslicesound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[swordslicesound], 512);
-                                                                                               FSOUND_SetPaused(channels[swordslicesound], FALSE);
+                                                                                               PlaySoundEx( swordslicesound, samp[swordslicesound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[swordslicesound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[swordslicesound], 512);
+                                                                                               OPENAL_SetPaused(channels[swordslicesound], false);
                                                                                        }
                                                                                        //victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200;
                                                                                        //if(animation[victim->targetanimation].attack){
@@ -3360,21 +3378,21 @@ void    Person::DoAnimations(){
                                                                                                //victim->bloodloss+=100*(6.5-findDistancefast(&coords,&victim->coords));
                                                                                                victim->DoDamage(damagemult*0);
 
-                                                                                               XYZ footvel,footpoint;  
+                                                                                               XYZ footvel,footpoint;
                                                                                                footvel=0;
                                                                                                if(skeleton.free){
                                                                                                        footpoint=(victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2*victim->scale+victim->coords;
                                                                                                }
                                                                                                if(!skeleton.free){
                                                                                                        footpoint=DoRotation((victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2,0,victim->rotation,0)*victim->scale+victim->coords;
-                                                                                               }               
-                                                                                               if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
+                                                                                               }
+                                                                                               if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
                                                                                                footvel=DoRotation(facing,0,90,0)*.8;
                                                                                                footvel.y-=.3;
-                                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                                               sprites.MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
-                                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
-                                                                                               sprites.MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1);
+                                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                                               Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
+                                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
+                                                                                               Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1);
                                                                                        }
                                                                                }
                                                                                else {
@@ -3393,16 +3411,16 @@ void    Person::DoAnimations(){
                                                                                                        if(weapons.type[victim->weaponids[0]]==staff)weapons.damage[victim->weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
                                                                                                        if(weapons.type[weaponids[0]]==staff)weapons.damage[weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
 
-                                                                                                       PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, TRUE);
-                                                                                                       FSOUND_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
-                                                                                                       FSOUND_SetVolume(channels[swordstaffsound], 512);
-                                                                                                       FSOUND_SetPaused(channels[swordstaffsound], FALSE);
+                                                                                                       PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, true);
+                                                                                                       OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
+                                                                                                       OPENAL_SetVolume(channels[swordstaffsound], 512);
+                                                                                                       OPENAL_SetPaused(channels[swordstaffsound], false);
                                                                                                }
                                                                                                else{
-                                                                                                       PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE);
-                                                                                                       FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
-                                                                                                       FSOUND_SetVolume(channels[metalhitsound], 512);
-                                                                                                       FSOUND_SetPaused(channels[metalhitsound], FALSE);
+                                                                                                       PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
+                                                                                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                                                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                                                                       OPENAL_SetPaused(channels[metalhitsound], false);
                                                                                                }
                                                                                        }
 
@@ -3434,10 +3452,10 @@ void    Person::DoAnimations(){
                                                                                                player[i].wentforweapon=0;
                                                                                        }
 
-                                                                                       /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[metalhitsound], 512);
-                                                                                       FSOUND_SetPaused(channels[metalhitsound], FALSE);*/
+                                                                                       /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[metalhitsound], 512);
+                                                                                       OPENAL_SetPaused(channels[metalhitsound], false);*/
 
                                                                                }
                                                                        }
@@ -3460,10 +3478,10 @@ void    Person::DoAnimations(){
                                                                                        vel[0]=velocity.x;
                                                                                        vel[1]=velocity.y;
                                                                                        vel[2]=velocity.z;
-                                                                                       PlaySoundEx( staffheadsound, samp[staffheadsound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[staffheadsound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[staffheadsound], 256);
-                                                                                       FSOUND_SetPaused(channels[staffheadsound], FALSE);
+                                                                                       PlaySoundEx( staffheadsound, samp[staffheadsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[staffheadsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[staffheadsound], 256);
+                                                                                       OPENAL_SetPaused(channels[staffheadsound], false);
                                                                                }
                                                                                victim->RagDoll(0);
                                                                                XYZ relative;
@@ -3509,10 +3527,10 @@ void    Person::DoAnimations(){
                                                                                        vel[0]=velocity.x;
                                                                                        vel[1]=velocity.y;
                                                                                        vel[2]=velocity.z;
-                                                                                       PlaySoundEx( staffheadsound, samp[staffheadsound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[staffheadsound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[staffheadsound], 256);
-                                                                                       FSOUND_SetPaused(channels[staffheadsound], FALSE);
+                                                                                       PlaySoundEx( staffheadsound, samp[staffheadsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[staffheadsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[staffheadsound], 256);
+                                                                                       OPENAL_SetPaused(channels[staffheadsound], false);
                                                                                }
                                                                                victim->RagDoll(0);
                                                                                XYZ relative;
@@ -3555,10 +3573,10 @@ void    Person::DoAnimations(){
                                                                                        vel[0]=velocity.x;
                                                                                        vel[1]=velocity.y;
                                                                                        vel[2]=velocity.z;
-                                                                                       PlaySoundEx( staffbodysound, samp[staffbodysound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[staffbodysound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[staffbodysound], 256);
-                                                                                       FSOUND_SetPaused(channels[staffbodysound], FALSE);
+                                                                                       PlaySoundEx( staffbodysound, samp[staffbodysound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[staffbodysound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[staffbodysound], 256);
+                                                                                       OPENAL_SetPaused(channels[staffbodysound], false);
                                                                                }
                                                                                victim->skeleton.longdead=0;
                                                                                victim->skeleton.free=1;
@@ -3566,7 +3584,7 @@ void      Person::DoAnimations(){
 
                                                                                for(i=0;i<victim->skeleton.num_joints;i++){
                                                                                        victim->skeleton.joints[i].velchange=0;
-                                                                                       victim->skeleton.joints[i].locked=0;                                                            
+                                                                                       victim->skeleton.joints[i].locked=0;
                                                                                        //victim->skeleton.joints[i].velocity=0;
                                                                                }
 
@@ -3639,19 +3657,19 @@ void    Person::DoAnimations(){
                                                                                        }
                                                                                        victim->skeleton.joints[victim->skeleton.jointlabels[head]].velocity+=relative*damagemult*200;
                                                                                        if(tutoriallevel!=1){
-                                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[heavyimpactsound], 128);
-                                                                                               FSOUND_SetPaused(channels[heavyimpactsound], FALSE);
+                                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                        }
                                                                                        victim->Puff(head);
                                                                                        victim->DoDamage(damagemult*100/victim->protectionhead);
                                                                                        if(victim->howactive==typesleeping)victim->DoDamage(damagemult*150/victim->protectionhead);
                                                                                        if(creature==wolftype){
-                                                                                               PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[clawslicesound], 128);
-                                                                                               FSOUND_SetPaused(channels[clawslicesound], FALSE);
+                                                                                               PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                               OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                                victim->spurt=1;
                                                                                                victim->DoBloodBig(2/victim->armorhead,175);
                                                                                        }
@@ -3667,18 +3685,18 @@ void    Person::DoAnimations(){
                                                                                        victim->targetrotation=targetrotation+180;
                                                                                        victim->target=0;
                                                                                        if(tutoriallevel!=1){
-                                                                                               PlaySoundEx( landsound2, samp[landsound2], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[landsound2], 128);
-                                                                                               FSOUND_SetPaused(channels[landsound2], FALSE);
+                                                                                               PlaySoundEx( landsound2, samp[landsound2], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[landsound2], 128);
+                                                                                               OPENAL_SetPaused(channels[landsound2], false);
                                                                                        }
                                                                                        victim->Puff(abdomen);
                                                                                        victim->DoDamage(damagemult*30/victim->protectionhigh);
                                                                                        if(creature==wolftype){
-                                                                                               PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[clawslicesound], 128);
-                                                                                               FSOUND_SetPaused(channels[clawslicesound], FALSE);
+                                                                                               PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                               OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                                victim->spurt=1;
                                                                                                victim->DoBloodBig(2/victim->armorhigh,170);
                                                                                        }
@@ -3700,10 +3718,10 @@ void    Person::DoAnimations(){
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
                                                                                if(tutoriallevel!=1){
-                                                                                       PlaySoundEx( landsound2, samp[landsound2], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[landsound2], 128);
-                                                                                       FSOUND_SetPaused(channels[landsound2], FALSE);
+                                                                                       PlaySoundEx( landsound2, samp[landsound2], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[landsound2], 128);
+                                                                                       OPENAL_SetPaused(channels[landsound2], false);
                                                                                }
                                                                                XYZ relative;
                                                                                relative=victim->coords-coords;
@@ -3742,10 +3760,10 @@ void    Person::DoAnimations(){
                                                                                        victim->targetrotation=targetrotation+180;
                                                                                        victim->target=0;
                                                                                        if(tutoriallevel!=1){
-                                                                                               PlaySoundEx( landsound2, samp[landsound2], NULL, TRUE);
-                                                                                               FSOUND_3D_SetAttributes(channels[landsound2], gLoc, vel);
-                                                                                               FSOUND_SetVolume(channels[landsound2], 128);
-                                                                                               FSOUND_SetPaused(channels[landsound2], FALSE);
+                                                                                               PlaySoundEx( landsound2, samp[landsound2], NULL, true);
+                                                                                               OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
+                                                                                               OPENAL_SetVolume(channels[landsound2], 128);
+                                                                                               OPENAL_SetPaused(channels[landsound2], false);
                                                                                        }
                                                                                        victim->Puff(abdomen);
                                                                                        victim->DoDamage(damagemult*30/victim->protectionlow);
@@ -3757,7 +3775,7 @@ void      Person::DoAnimations(){
 
                                                                        }
                                                                }
-                                                       }                               
+                                                       }
                                                        if(animation[targetanimation].attack==reversal&&(!victim->feint||(victim->lastattack==victim->lastattack2&&victim->lastattack2==victim->lastattack3&&Random()%2)||targetanimation==knifefollowanim)){
                                                                if(targetanimation==spinkickreversalanim&&animation[targetanimation].label[currentframe]==7){
                                                                        escapednum=0;
@@ -3775,16 +3793,16 @@ void    Person::DoAnimations(){
                                                                        vel[1]=velocity.y;
                                                                        vel[2]=velocity.z;
                                                                        if(tutoriallevel!=1){
-                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[heavyimpactsound], 128);
-                                                                               FSOUND_SetPaused(channels[heavyimpactsound], FALSE);
+                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                        }
                                                                        if(creature==wolftype){
-                                                                               PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[clawslicesound], 128);
-                                                                               FSOUND_SetPaused(channels[clawslicesound], FALSE);
+                                                                               PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                               OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                victim->spurt=1;
                                                                                victim->DoBloodBig(2/victim->armorhigh,170);
                                                                        }
@@ -3844,10 +3862,10 @@ void    Person::DoAnimations(){
                                                                        vel[0]=velocity.x;
                                                                        vel[1]=velocity.y;
                                                                        vel[2]=velocity.z;
-                                                                       PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, TRUE);
-                                                                       FSOUND_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
-                                                                       FSOUND_SetVolume(channels[whooshhitsound], 128);
-                                                                       FSOUND_SetPaused(channels[whooshhitsound], FALSE);
+                                                                       PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[whooshhitsound], 128);
+                                                                       OPENAL_SetPaused(channels[whooshhitsound], false);
                                                                        victim->RagDoll(0);
                                                                        XYZ relative;
                                                                        relative=victim->coords-oldcoords;
@@ -3886,10 +3904,10 @@ void    Person::DoAnimations(){
                                                                        }
 
                                                                        if(tutoriallevel!=1){
-                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[heavyimpactsound], 128);
-                                                                               FSOUND_SetPaused(channels[heavyimpactsound], FALSE);
+                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                        }
                                                                        victim->RagDoll(0);
                                                                        if(id==0){
@@ -3957,18 +3975,18 @@ void    Person::DoAnimations(){
                                                                                vel[2]=velocity.z;
                                                                                if(weaponactive!=-1){
                                                                                        victim->DoBloodBig(2/victim->armorhigh,225);
-                                                                                       PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[knifeslicesound], 512);
-                                                                                       FSOUND_SetPaused(channels[knifeslicesound], FALSE);
+                                                                                       PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[knifeslicesound], 512);
+                                                                                       OPENAL_SetPaused(channels[knifeslicesound], false);
                                                                                        if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1;
                                                                                        weapons.blooddrip[weaponids[weaponactive]]+=3;
                                                                                }
                                                                                if(weaponactive==-1&&creature==wolftype){
-                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[clawslicesound], 128);
-                                                                                       FSOUND_SetPaused(channels[clawslicesound], FALSE);
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2/victim->armorhigh,175);
                                                                                }
@@ -4015,10 +4033,10 @@ void    Person::DoAnimations(){
                                                                        vel[1]=velocity.y;
                                                                        vel[2]=velocity.z;
                                                                        victim->DoBloodBig(2,225);
-                                                                       PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, TRUE);
-                                                                       FSOUND_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
-                                                                       FSOUND_SetVolume(channels[knifeslicesound], 512);
-                                                                       FSOUND_SetPaused(channels[knifeslicesound], FALSE);
+                                                                       PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[knifeslicesound], 512);
+                                                                       OPENAL_SetPaused(channels[knifeslicesound], false);
                                                                        if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1;
                                                                        weapons.blooddrip[weaponids[weaponactive]]+=3;
                                                                        }*/
@@ -4040,10 +4058,10 @@ void    Person::DoAnimations(){
                                                                        vel[1]=velocity.y;
                                                                        vel[2]=velocity.z;
                                                                        if(tutoriallevel!=1){
-                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[heavyimpactsound], 128);
-                                                                               FSOUND_SetPaused(channels[heavyimpactsound], FALSE);
+                                                                               PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                               OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                        }
                                                                        victim->RagDoll(0);
                                                                        XYZ relative;
@@ -4096,19 +4114,19 @@ void    Person::DoAnimations(){
                                                                                vel[2]=velocity.z;
                                                                                if(weaponactive!=-1){
                                                                                        victim->DoBloodBig(200,225);
-                                                                                       PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[knifeslicesound], 512);
-                                                                                       FSOUND_SetPaused(channels[knifeslicesound], FALSE);
+                                                                                       PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[knifeslicesound], 512);
+                                                                                       OPENAL_SetPaused(channels[knifeslicesound], false);
                                                                                        if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
                                                                                        weapons.blooddrip[weaponids[weaponactive]]+=5;
                                                                                }
 
                                                                                if(creature==wolftype&&weaponactive==-1){
-                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[clawslicesound], 128);
-                                                                                       FSOUND_SetPaused(channels[clawslicesound], FALSE);
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2,175);
                                                                                }
@@ -4131,17 +4149,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;  
+                                                                                       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;
@@ -4157,15 +4175,15 @@ void    Person::DoAnimations(){
                                                                                                bonustime=0;
                                                                                                bonusvalue=40;
                                                                                        }
-                                                                                       XYZ footvel,footpoint;  
+                                                                                       XYZ footvel,footpoint;
                                                                                        footvel=0;
                                                                                        footpoint=weapons.tippoint[weaponids[0]];
-                                                                                       if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
+                                                                                       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;
@@ -4178,10 +4196,10 @@ void    Person::DoAnimations(){
                                                                                vel[0]=velocity.x;
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
-                                                                               PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[fleshstabsound], 512);
-                                                                               FSOUND_SetPaused(channels[fleshstabsound], FALSE);
+                                                                               PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[fleshstabsound], 512);
+                                                                               OPENAL_SetPaused(channels[fleshstabsound], false);
                                                                                if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
                                                                                weapons.blooddrip[weaponids[weaponactive]]+=5;
                                                                        }
@@ -4208,22 +4226,22 @@ void    Person::DoAnimations(){
                                                                                vel[0]=velocity.x;
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
-                                                                               PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[fleshstabremovesound], 512);
-                                                                               FSOUND_SetPaused(channels[fleshstabremovesound], FALSE);
+                                                                               PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[fleshstabremovesound], 512);
+                                                                               OPENAL_SetPaused(channels[fleshstabremovesound], false);
                                                                                if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
                                                                                weapons.blooddrip[weaponids[weaponactive]]+=5;
 
-                                                                               XYZ footvel,footpoint;  
+                                                                               XYZ footvel,footpoint;
                                                                                footvel=0;
                                                                                footpoint=weapons.tippoint[weaponids[0]];
-                                                                               if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
+                                                                               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);
                                                                        }
                                                                }
 
@@ -4237,15 +4255,15 @@ void    Person::DoAnimations(){
 
                                                                                escapednum=0;
 
-                                                                               XYZ footvel,footpoint;  
+                                                                               XYZ footvel,footpoint;
                                                                                footvel=0;
                                                                                footpoint=(weapons.tippoint[weaponids[0]]+weapons.position[weaponids[0]])/2;
-                                                                               if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
+                                                                               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;
@@ -4258,10 +4276,10 @@ void    Person::DoAnimations(){
                                                                                vel[0]=velocity.x;
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
-                                                                               PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[fleshstabsound], 512);
-                                                                               FSOUND_SetPaused(channels[fleshstabsound], FALSE);
+                                                                               PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[fleshstabsound], 512);
+                                                                               OPENAL_SetPaused(channels[fleshstabsound], false);
                                                                                if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
                                                                                weapons.blooddrip[weaponids[weaponactive]]+=5;
                                                                        }
@@ -4282,22 +4300,22 @@ void    Person::DoAnimations(){
                                                                                vel[0]=velocity.x;
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
-                                                                               PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[fleshstabremovesound], 512);
-                                                                               FSOUND_SetPaused(channels[fleshstabremovesound], FALSE);
+                                                                               PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[fleshstabremovesound], 512);
+                                                                               OPENAL_SetPaused(channels[fleshstabremovesound], false);
                                                                                if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
                                                                                weapons.blooddrip[weaponids[weaponactive]]+=5;
 
-                                                                               XYZ footvel,footpoint;  
+                                                                               XYZ footvel,footpoint;
                                                                                footvel=0;
                                                                                footpoint=weapons.tippoint[weaponids[0]];
-                                                                               if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
+                                                                               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);
                                                                        }
                                                                }
 
@@ -4318,10 +4336,10 @@ void    Person::DoAnimations(){
                                                                        vel[2]=velocity.z;
                                                                        if(weaponactive==-1){
                                                                                if(tutoriallevel!=1){
-                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[heavyimpactsound], 128);
-                                                                                       FSOUND_SetPaused(channels[heavyimpactsound], FALSE);
+                                                                                       PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[heavyimpactsound], 128);
+                                                                                       OPENAL_SetPaused(channels[heavyimpactsound], false);
                                                                                }
                                                                        }
                                                                        bool doslice;
@@ -4331,18 +4349,18 @@ void    Person::DoAnimations(){
                                                                        if(doslice){
                                                                                if(weaponactive!=-1){
                                                                                        victim->DoBloodBig(2/victim->armorhead,225);
-                                                                                       PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[knifeslicesound], 512);
-                                                                                       FSOUND_SetPaused(channels[knifeslicesound], FALSE);
+                                                                                       PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[knifeslicesound], 512);
+                                                                                       OPENAL_SetPaused(channels[knifeslicesound], false);
                                                                                        if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1;
                                                                                        weapons.blooddrip[weaponids[weaponactive]]+=3;
                                                                                }
-                                                                               if(weaponactive==-1&&creature==wolftype){       
-                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, TRUE);
-                                                                                       FSOUND_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
-                                                                                       FSOUND_SetVolume(channels[clawslicesound], 128);
-                                                                                       FSOUND_SetPaused(channels[clawslicesound], FALSE);
+                                                                               if(weaponactive==-1&&creature==wolftype){
+                                                                                       PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
+                                                                                       OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
+                                                                                       OPENAL_SetVolume(channels[clawslicesound], 128);
+                                                                                       OPENAL_SetPaused(channels[clawslicesound], false);
                                                                                        victim->spurt=1;
                                                                                        victim->DoBloodBig(2/victim->armorhead,175);
                                                                                }
@@ -4421,10 +4439,10 @@ void    Person::DoAnimations(){
                                                                        vel[1]=velocity.y;
                                                                        vel[2]=velocity.z;
 
-                                                                       PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, TRUE);
-                                                                       FSOUND_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
-                                                                       FSOUND_SetVolume(channels[movewhooshsound], 128);
-                                                                       FSOUND_SetPaused(channels[movewhooshsound], FALSE);
+                                                                       PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[movewhooshsound], 128);
+                                                                       OPENAL_SetPaused(channels[movewhooshsound], false);
                                                                }
                                                                if(currentanimation==staggerbackhighanim){
                                                                        targetanimation=getIdle();
@@ -4473,10 +4491,10 @@ void    Person::DoAnimations(){
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
 
-                                                                               PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[knifesheathesound], 128);
-                                                                               FSOUND_SetPaused(channels[knifesheathesound], FALSE);   
+                                                                               PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[knifesheathesound], 128);
+                                                                               OPENAL_SetPaused(channels[knifesheathesound], false);
                                                                        }
                                                                        if(weaponactive!=-1){
                                                                                float gLoc[3];
@@ -4488,10 +4506,10 @@ void    Person::DoAnimations(){
                                                                                vel[1]=velocity.y;
                                                                                vel[2]=velocity.z;
 
-                                                                               PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE);
-                                                                               FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
-                                                                               FSOUND_SetVolume(channels[knifedrawsound], 128);
-                                                                               FSOUND_SetPaused(channels[knifedrawsound], FALSE);      
+                                                                               PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
+                                                                               OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
+                                                                               OPENAL_SetVolume(channels[knifedrawsound], 128);
+                                                                               OPENAL_SetPaused(channels[knifedrawsound], false);
                                                                        }
                                                                }
                                                                if(currentanimation==rollanim){
@@ -4566,7 +4584,7 @@ void      Person::DoAnimations(){
                                                                                targetframe=3;
                                                                                velocity=facing*-8;
                                                                                velocity.y=4;
-                                                                               if(id==0)FSOUND_SetPaused(channels[whooshsound], FALSE);
+                                                                               if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
                                                                        }
                                                                        if(targetanimation==walljumprightanim){
                                                                                targetanimation=rightflipanim;
@@ -4584,7 +4602,7 @@ void      Person::DoAnimations(){
                                                                                velocity=facing*8;
                                                                                velocity.y=4;
                                                                        }
-                                                                       if(id==0)FSOUND_SetPaused(channels[whooshsound], FALSE);
+                                                                       if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
                                                                }
                                                                if(targetanimation==walljumpleftanim){
                                                                        if(attackkeydown){
@@ -4624,7 +4642,7 @@ void      Person::DoAnimations(){
                                                                                velocity=DoRotation(facing,0,-30,0)*-8;
                                                                                velocity.y=4;
                                                                        }
-                                                                       if(id==0)FSOUND_SetPaused(channels[whooshsound], FALSE);
+                                                                       if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
                                                                }
                                                                if(targetanimation==sneakattackanim){
                                                                        float ycoords=oldcoords.y;
@@ -4719,10 +4737,10 @@ void    Person::DoAnimations(){
                                                                        vel[0]=velocity.x;
                                                                        vel[1]=velocity.y;
                                                                        vel[2]=velocity.z;
-                                                                       PlaySoundEx( landsound, samp[landsound], NULL, TRUE);
-                                                                       FSOUND_3D_SetAttributes(channels[landsound], gLoc, vel);
-                                                                       FSOUND_SetVolume(channels[landsound], 128);
-                                                                       FSOUND_SetPaused(channels[landsound], FALSE);
+                                                                       PlaySoundEx( landsound, samp[landsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[landsound], 128);
+                                                                       OPENAL_SetPaused(channels[landsound], false);
 
                                                                        if(currentanimation==upunchreversedanim||currentanimation==swordslashreversedanim){
                                                                                targetanimation=rollanim;
@@ -4788,7 +4806,7 @@ void      Person::DoAnimations(){
                                                                                escapednum++;
                                                                                targetanimation=rollanim;
                                                                                coords+=facing;
-                                                                               if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE);
+                                                                               if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
                                                                        }
                                                                        lastfeint=0;
                                                                }
@@ -4811,7 +4829,7 @@ void      Person::DoAnimations(){
                                                                                escapednum++;
                                                                                targetanimation=rollanim;
                                                                                coords+=facing*2;
-                                                                               if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE);
+                                                                               if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
                                                                        }
                                                                        lastfeint=0;
                                                                }
@@ -4843,7 +4861,7 @@ void      Person::DoAnimations(){
                                                                targetanimation=jumpdownanim;
                                                        }
                }
-               if(!skeleton.free){             
+               if(!skeleton.free){
                        oldtarget=target;
                        if(!transspeed&&animation[targetanimation].attack!=2&&animation[targetanimation].attack!=3){
                                if(!isRun()||!wasRun()){
@@ -4883,7 +4901,7 @@ void      Person::DoAnimations(){
                        if(currentanimation!=oldcurrentanimation||targetanimation!=oldtargetanimation||((currentframe!=oldcurrentframe||targetframe!=oldtargetframe)&&!calcrot)){
                                //Old rotates
                                for(i=0;i<skeleton.num_joints;i++){
-                                       skeleton.joints[i].position=animation[currentanimation].position[i][currentframe];      
+                                       skeleton.joints[i].position=animation[currentanimation].position[i][currentframe];
                                }
 
                                skeleton.FindForwards();
@@ -4905,7 +4923,7 @@ void      Person::DoAnimations(){
 
                                //New rotates
                                for(i=0;i<skeleton.num_joints;i++){
-                                       skeleton.joints[i].position=animation[targetanimation].position[i][targetframe];        
+                                       skeleton.joints[i].position=animation[targetanimation].position[i][targetframe];
                                }
 
                                skeleton.FindForwards();
@@ -4967,7 +4985,7 @@ void      Person::DoAnimations(){
        //skeleton.DoConstraints();
 }
 
-void   Person::DoStuff(){
+void   Person::DoStuff(){
        static XYZ terrainnormal;
        static XYZ flatfacing;
        static XYZ flatvelocity;
@@ -5051,7 +5069,7 @@ void      Person::DoStuff(){
                /*if(aitype!=playercontrolled)*/
                deathbleeding=1;
                if(burnt>.6)burnt=.6;
-               FSOUND_SetVolume(channels[stream_firesound], 256+256*findLength(&velocity)/3);
+               OPENAL_SetVolume(channels[stream_firesound], 256+256*findLength(&velocity)/3);
 
                if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){
                        float gLoc[3];
@@ -5064,8 +5082,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);
                        }
                }
        }
@@ -5076,7 +5094,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){
@@ -5086,7 +5104,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){
@@ -5113,8 +5131,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){
@@ -5132,9 +5150,9 @@ 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;
@@ -5143,7 +5161,7 @@ void      Person::DoStuff(){
                bloodloss+=deathbleeding*multiplier*80;
                deathbleeding-=multiplier*1.6;
                //if(id==0)deathbleeding-=multiplier*.2;
-               if(deathbleeding<0)deathbleeding=0;     
+               if(deathbleeding<0)deathbleeding=0;
                if(bloodloss>damagetolerance&&animation[targetanimation].attack==neutral){
                        if(weaponactive!=-1){
                                weapons.owner[weaponids[0]]=-1;
@@ -5177,7 +5195,7 @@ void      Person::DoStuff(){
                        if(!dead&&creature==wolftype){
                                bonus=Wolfbonus;
                                bonustime=0;
-                               bonusvalue=300; 
+                               bonusvalue=300;
                        }
                        dead=2;
                        if(targetanimation==knifefollowedanim&&!skeleton.free){
@@ -5359,7 +5377,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);
                        }
                }
 
@@ -5447,7 +5465,7 @@ void      Person::DoStuff(){
                        }
                }
        }
-       if(creature==wolftype){                         
+       if(creature==wolftype){
                twitchdelay2-=multiplier*1.5;
                if(tailmorphend!=0)
                        if((isRun()||targetanimation==jumpupanim||targetanimation==jumpdownanim||targetanimation==backflipanim)&&!skeleton.free){
@@ -5558,7 +5576,7 @@ void      Person::DoStuff(){
                if(creature==wolftype){
                        bonus=Wolfbonus;
                        bonustime=0;
-                       bonusvalue=300; 
+                       bonusvalue=300;
                }
 
                RagDoll(0);
@@ -5596,7 +5614,7 @@ void      Person::DoStuff(){
                /*
                if(bloodloss<damagetolerance)
                for(i=0;i<skeleton.num_joints;i++){
-               skeleton.joints[i].velocity*=1.5;       
+               skeleton.joints[i].velocity*=1.5;
                }*/
        }
 
@@ -5622,7 +5640,7 @@ void      Person::DoStuff(){
                skeleton.free=1;
                damage-=20;
                for(i=0;i<skeleton.num_joints;i++){
-                       skeleton.joints[i].velocity=0;  
+                       skeleton.joints[i].velocity=0;
                }
        }
        if(permanentdamage>damagetolerance&&dead!=2){
@@ -5654,7 +5672,7 @@ void      Person::DoStuff(){
                if(!dead&&creature==wolftype){
                        bonus=Wolfbonus;
                        bonustime=0;
-                       bonusvalue=300; 
+                       bonusvalue=300;
                }
 
                if(id!=0&&unconscioustime<.1&&(bonus!=spinecrusher||bonustime>1)&&(bonus!=FinishedBonus||bonustime>1)&&bloodloss<damagetolerance){
@@ -5678,10 +5696,10 @@ void    Person::DoStuff(){
                vel[0]=velocity.x;
                vel[1]=velocity.y;
                vel[2]=velocity.z;
-               PlaySoundEx( breaksound, samp[breaksound], NULL, TRUE);
-               FSOUND_3D_SetAttributes(channels[breaksound], gLoc, vel);
-               FSOUND_SetVolume(channels[breaksound], 512);
-               FSOUND_SetPaused(channels[breaksound], FALSE);
+               PlaySoundEx( breaksound, samp[breaksound], NULL, true);
+               OPENAL_3D_SetAttributes(channels[breaksound], gLoc, vel);
+               OPENAL_SetVolume(channels[breaksound], 512);
+               OPENAL_SetPaused(channels[breaksound], false);
                /*if(id==0||findDistancefast(&coords,&viewer)<50){
                slomo=1;
                slomodelay=.2;
@@ -5689,7 +5707,7 @@ void      Person::DoStuff(){
        }
 
        if(skeleton.free==1){
-               if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE);
+               if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
 
                if(!dead){
                        //If knocked over, open hands and close mouth
@@ -5755,7 +5773,7 @@ void      Person::DoStuff(){
                        skeleton.longdead+=(2000-findLength(&average))*multiplier+multiplier;
                        if(skeleton.longdead>2000){
                                if(skeleton.longdead>6000){
-                                       if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE);
+                                       if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
                                        skeleton.free=3;
                                        DrawSkeleton();
                                        skeleton.free=2;
@@ -5811,7 +5829,7 @@ void      Person::DoStuff(){
                                if(objects.type[i]!=treeleavestype&&objects.type[i]!=bushtype&&objects.type[i]!=firetype){
                                        colviewer=startpoint;
                                        coltarget=endpoint;
-                                       if(objects.model[i].LineCheck(&colviewer,&coltarget,&colpoint,&objects.position[i],&objects.rotation[i])!=-1)canrecover=0;      
+                                       if(objects.model[i].LineCheck(&colviewer,&coltarget,&colpoint,&objects.position[i],&objects.rotation[i])!=-1)canrecover=0;
                                }
                        }
                        if(canrecover){
@@ -5868,7 +5886,7 @@ void      Person::DoStuff(){
                if(findLength(&average)<10&&!dead&&skeleton.free){
                        skeleton.longdead+=(2000-findLength(&average))*multiplier+multiplier;
                        if(skeleton.longdead>(damage+500)*1.5){
-                               if(id==0)FSOUND_SetPaused(channels[whooshsound], TRUE);
+                               if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
                                skeleton.free=0;
                                velocity=0;
                                XYZ middle;
@@ -5995,10 +6013,10 @@ void    Person::DoStuff(){
                                vel[0]=velocity.x;
                                vel[1]=velocity.y;
                                vel[2]=velocity.z;
-                               PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, TRUE);
-                               FSOUND_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
-                               FSOUND_SetVolume(channels[movewhooshsound], 128);
-                               FSOUND_SetPaused(channels[movewhooshsound], FALSE);
+                               PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
+                               OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
+                               OPENAL_SetVolume(channels[movewhooshsound], 128);
+                               OPENAL_SetPaused(channels[movewhooshsound], false);
 
                                currentanimation=targetanimation;
                                currentframe=targetframe-1;
@@ -6035,10 +6053,10 @@ void    Person::DoStuff(){
                                                                vel[0]=0;
                                                                vel[1]=0;
                                                                vel[2]=0;
-                                                               PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE);
-                                                               FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel);
-                                                               FSOUND_SetVolume(channels[firestartsound], 256);
-                                                               FSOUND_SetPaused(channels[firestartsound], FALSE);
+                                                               PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
+                                                               OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
+                                                               OPENAL_SetVolume(channels[firestartsound], 256);
+                                                               OPENAL_SetPaused(channels[firestartsound], false);
                                                        }
                                                        objects.onfire[i]=1;
                                                }
@@ -6060,10 +6078,10 @@ void    Person::DoStuff(){
                                                                        vel[0]=0;
                                                                        vel[1]=0;
                                                                        vel[2]=0;
-                                                                       PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE);
-                                                                       FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel);
-                                                                       FSOUND_SetVolume(channels[firestartsound], 256);
-                                                                       FSOUND_SetPaused(channels[firestartsound], FALSE);
+                                                                       PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[firestartsound], 256);
+                                                                       OPENAL_SetPaused(channels[firestartsound], false);
                                                                }
                                                                objects.onfire[i]=1;
                                                        }
@@ -6085,10 +6103,10 @@ void    Person::DoStuff(){
                                                                vel[0]=velocity.x;
                                                                vel[1]=velocity.y;
                                                                vel[2]=velocity.z;
-                                                               PlaySoundEx( bushrustle, samp[bushrustle], NULL, TRUE);
-                                                               FSOUND_3D_SetAttributes(channels[bushrustle], gLoc, vel);
-                                                               FSOUND_SetVolume(channels[bushrustle], 40*findLength(&velocity));
-                                                               FSOUND_SetPaused(channels[bushrustle], FALSE);
+                                                               PlaySoundEx( bushrustle, samp[bushrustle], NULL, true);
+                                                               OPENAL_3D_SetAttributes(channels[bushrustle], gLoc, vel);
+                                                               OPENAL_SetVolume(channels[bushrustle], 40*findLength(&velocity));
+                                                               OPENAL_SetPaused(channels[bushrustle], false);
 
                                                                if(id==0){
                                                                        envsound[numenvsounds]=coords;
@@ -6111,8 +6129,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)
@@ -6126,12 +6144,12 @@ 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;
-                                                       objects.roty[i]+=velocity.z*multiplier*6;       
+                                                       objects.roty[i]+=velocity.z*multiplier*6;
                                                        objects.messedwith[i]=.5;
                                                }
                                                XYZ tempcoord;
@@ -6144,23 +6162,6 @@ void     Person::DoStuff(){
                                                                tempcoord+=objects.position[i];
                                                        }
                                                        if(findDistancefastflat(&tempcoord,&objects.position[i])<objects.scale[i]*objects.scale[i]*8&&findDistancefast(&tempcoord,&objects.position[i])<objects.scale[i]*objects.scale[i]*300&&tempcoord.y>objects.position[i].y+3*objects.scale[i]){
-                                                               /*if(onfire){
-                                                               if(!objects.onfire[i]){
-                                                               float gLoc[3];
-                                                               float vel[3];
-                                                               gLoc[0]=objects.position[i].x;
-                                                               gLoc[1]=objects.position[i].y;
-                                                               gLoc[2]=objects.position[i].z;
-                                                               vel[0]=0;
-                                                               vel[1]=0;
-                                                               vel[2]=0;
-                                                               PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE);
-                                                               FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel);
-                                                               FSOUND_SetVolume(channels[firestartsound], 256);
-                                                               FSOUND_SetPaused(channels[firestartsound], FALSE);
-                                                               objects.onfire[i]=1;
-                                                               }
-                                                               }*/
                                                                if(objects.messedwith[i]<=0){
                                                                        XYZ tempvel;
                                                                        XYZ pos;
@@ -6173,10 +6174,10 @@ void    Person::DoStuff(){
                                                                        vel[0]=velocity.x;
                                                                        vel[1]=velocity.y;
                                                                        vel[2]=velocity.z;
-                                                                       PlaySoundEx( bushrustle, samp[bushrustle], NULL, TRUE);
-                                                                       FSOUND_3D_SetAttributes(channels[bushrustle], gLoc, vel);
-                                                                       FSOUND_SetVolume(channels[bushrustle], 40*findLength(&velocity));
-                                                                       FSOUND_SetPaused(channels[bushrustle], FALSE);
+                                                                       PlaySoundEx( bushrustle, samp[bushrustle], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[bushrustle], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[bushrustle], 40*findLength(&velocity));
+                                                                       OPENAL_SetPaused(channels[bushrustle], false);
 
                                                                        if(id==0){
                                                                                envsound[numenvsounds]=coords;
@@ -6200,8 +6201,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)
@@ -6216,16 +6217,16 @@ void    Person::DoStuff(){
                                                                                                                pos.x+=float(abs(Random()%100)-50)/150;
                                                                                                                pos.y+=float(abs(Random()%100)-50)/150;
                                                                                                                pos.z+=float(abs(Random()%100)-50)/150;
-                                                                                                               sprites.MakeSprite(splintersprite, pos,tempvel*.3+velocity*float(abs(Random()%100))/100/2, 1,1,1, .1, 1);
-                                                                                                               sprites.special[sprites.numsprites-1]=2;
+                                                                                                               Sprite::MakeSprite(splintersprite, pos,tempvel*.3+velocity*float(abs(Random()%100))/100/2, 1,1,1, .1, 1);
+                                                                                                               Sprite::setLastSpriteSpecial(2);
                                                                                                        }
                                                                }
                                                                objects.messedwith[i]=.5;
-                                                       }       
+                                                       }
                                                }
                        }
 
-                       if(!skeleton.free){     
+                       if(!skeleton.free){
                                bool play;
                                play=0;
                                if((stunned>0||surprised>0)&&numplayers>2&&aitype!=passivetype)play=1;
@@ -6254,16 +6255,14 @@ void    Person::DoStuff(){
                                                }
                                        }
                                        speechdelay=.3;
-                                       //else if(animation[targetanimation].label[targetframe]==4)whichsound=knifeswishsound;
-                                       //if(animation[targetanimation].label[targetframe]==8)whichsound=landsound2;
 
                                        if(whichsound!=-1){
-                                               PlaySoundEx( whichsound, samp[whichsound], NULL, TRUE);
-                                               FSOUND_3D_SetAttributes(channels[whichsound], gLoc, vel);
-                                               FSOUND_SetVolume(channels[whichsound], 512);
-                                               FSOUND_SetPaused(channels[whichsound], FALSE);
-                                       }       
-                               }       
+                                               PlaySoundEx( whichsound, samp[whichsound], NULL, true);
+                                               OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
+                                               OPENAL_SetVolume(channels[whichsound], 512);
+                                               OPENAL_SetPaused(channels[whichsound], false);
+                                       }
+                               }
 
                                if(targetanimation==staggerbackhighanim)staggerdelay=1;
                                if(targetanimation==staggerbackhardanim)staggerdelay=1;
@@ -6379,7 +6378,7 @@ void      Person::DoStuff(){
                                        }
                                }
                                /*
-                               if(speechdelay>.25){                    
+                               if(speechdelay>.25){
                                if(headmorphend!=2)headmorphness=0;
                                headmorphend=2;
                                targetheadmorphness=1;
@@ -6427,7 +6426,7 @@ void      Person::DoStuff(){
 
                                        flatfacing=DoRotation(flatfacing,0,rotation,0);
                                        facing=flatfacing;
-                                       ReflectVector(&facing,&terrainnormal);
+                                       ReflectVector(&facing,terrainnormal);
                                        Normalise(&facing);
 
                                        if(isRun()||targetanimation==sneakanim||targetanimation==rollanim||targetanimation==walkanim){
@@ -6473,36 +6472,36 @@ void    Person::DoStuff(){
                                        //if(!creature==wolftype||targetanimation==rabbitkickanim)
                                        if(targetanimation==rabbittackleanim){
                                                velocity+=facing*multiplier*speed*700*scale;
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                if(velspeed>speed*65*scale){
                                                        velocity/=velspeed;
                                                        velspeed=speed*65*scale;
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                               velspeed=findLength(&velocity); 
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
+                                               velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed;
                                        }
                                        if(targetanimation!=rabbitrunninganim&&targetanimation!=wolfrunninganim){
                                                if(isRun()||targetanimation==rabbitkickanim){
                                                        velocity+=facing*multiplier*speed*700*scale;
-                                                       velspeed=findLength(&velocity); 
+                                                       velspeed=findLength(&velocity);
                                                        if(velspeed>speed*45*scale){
                                                                velocity/=velspeed;
                                                                velspeed=speed*45*scale;
                                                                velocity*=velspeed;
                                                        }
                                                        velocity.y+=gravity*multiplier*20;
-                                                       ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                                       velspeed=findLength(&velocity); 
+                                                       ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
+                                                       velspeed=findLength(&velocity);
                                                        if(velspeed<speed*30*scale)velspeed=speed*30*scale;
                                                        velocity=flatfacing*velspeed;
                                                }
                                        }
                                        else if(isRun()){
                                                velocity+=facing*multiplier*speed*700*scale;
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                if(creature==rabbittype){
                                                        if(velspeed>speed*55*scale){
                                                                velocity/=velspeed;
@@ -6518,109 +6517,109 @@ void  Person::DoStuff(){
                                                        }
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                               velspeed=findLength(&velocity); 
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
+                                               velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed;
                                        }
 
                                        /*if(creature==wolftype)
                                        if(isRun()){
                                        velocity+=facing*multiplier*speed*700*scale;
-                                       velspeed=findLength(&velocity); 
+                                       velspeed=findLength(&velocity);
                                        if(velspeed>speed*55*scale){
                                        velocity/=velspeed;
                                        velspeed=speed*55*scale;
                                        velocity*=velspeed;
                                        }
                                        velocity.y+=gravity*multiplier*20;
-                                       ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                       velspeed=findLength(&velocity); 
+                                       ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
+                                       velspeed=findLength(&velocity);
                                        velocity=flatfacing*velspeed;
                                        }*/
 
                                        if(targetanimation==rollanim&&animation[targetanimation].label[targetframe]!=6){
                                                velocity+=facing*multiplier*speed*700*scale;
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                if(velspeed>speed*45*scale){
                                                        velocity/=velspeed;
                                                        velspeed=speed*45*scale;
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                               velspeed=findLength(&velocity); 
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
+                                               velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed;
                                        }
 
 
                                        /*if(currentanimation==rollanim&&(isCrouch()||isIdle())){
                                        velocity+=facing*multiplier*speed*700*scale;
-                                       velspeed=findLength(&velocity); 
+                                       velspeed=findLength(&velocity);
                                        if(velspeed>speed*25*scale){
                                        velocity/=velspeed;
                                        velspeed=speed*25*scale;
                                        velocity*=velspeed;
                                        }
                                        velocity.y+=gravity*multiplier*20;
-                                       ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                       velspeed=findLength(&velocity); 
+                                       ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
+                                       velspeed=findLength(&velocity);
                                        velocity=flatfacing*velspeed;
                                        }*/
 
                                        if(targetanimation==sneakanim||targetanimation==walkanim){
                                                velocity+=facing*multiplier*speed*700*scale;
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                if(velspeed>speed*12*scale){
                                                        velocity/=velspeed;
                                                        velspeed=speed*12*scale;
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                               velspeed=findLength(&velocity); 
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
+                                               velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed;
                                        }
 
                                        if((targetanimation==fightidleanim||targetanimation==knifefightidleanim)&&(currentanimation==bounceidleanim||currentanimation==hurtidleanim)){
                                                velocity+=facing*multiplier*speed*700*scale;
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                if(velspeed>speed*2*scale){
                                                        velocity/=velspeed;
                                                        velspeed=speed*2*scale;
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                               velspeed=findLength(&velocity); 
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
+                                               velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed;
                                        }
 
 
                                        if((targetanimation==bounceidleanim||currentanimation==hurtidleanim)&&(currentanimation==fightidleanim||currentanimation==knifefightidleanim)){
                                                velocity-=facing*multiplier*speed*700*scale;
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                if(velspeed>speed*2*scale){
                                                        velocity/=velspeed;
                                                        velspeed=speed*2*scale;
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                               velspeed=findLength(&velocity); 
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
+                                               velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed*-1;
                                        }
 
                                        if(targetanimation==fightsidestep){
                                                velocity+=DoRotation(facing*multiplier*speed*700*scale,0,-90,0);
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                if(velspeed>speed*12*scale){
                                                        velocity/=velspeed;
                                                        velspeed=speed*12*scale;
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                               velspeed=findLength(&velocity); 
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
+                                               velspeed=findLength(&velocity);
                                                velocity=DoRotation(flatfacing*velspeed,0,-90,0);
                                        }
 
@@ -6636,34 +6635,34 @@ void    Person::DoStuff(){
                                        if(targetanimation==backhandspringanim){
                                                //coords-=facing*multiplier*50*scale;
                                                velocity+=facing*multiplier*speed*700*scale*-1;
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                if(velspeed>speed*50*scale){
                                                        velocity/=velspeed;
                                                        velspeed=speed*50*scale;
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                               velspeed=findLength(&velocity); 
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
+                                               velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed*-1;
                                        }
                                        if(targetanimation==dodgebackanim){
                                                //coords-=facing*multiplier*50*scale;
                                                velocity+=facing*multiplier*speed*700*scale*-1;
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                if(velspeed>speed*60*scale){
                                                        velocity/=velspeed;
                                                        velspeed=speed*60*scale;
                                                        velocity*=velspeed;
                                                }
                                                velocity.y+=gravity*multiplier*20;
-                                               ReflectVector(&velocity,&terrain.getNormal(coords.x,coords.z));
-                                               velspeed=findLength(&velocity); 
+                                               ReflectVector(&velocity,terrain.getNormal(coords.x,coords.z));
+                                               velspeed=findLength(&velocity);
                                                velocity=flatfacing*velspeed*-1;
                                        }
 
                                        if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                        }
 
 
@@ -6678,12 +6677,12 @@ void    Person::DoStuff(){
 
                                                if(targetanimation==jumpupanim){jumppower=-4;targetanimation=getIdle();}
                                                target=0;
-                                               targetframe=0;  
+                                               targetframe=0;
                                                onterrain=1;
 
                                                if(id==0){
-                                                       FSOUND_SetPaused(channels[whooshsound], TRUE);
-                                                       FSOUND_SetVolume(channels[whooshsound], 0);
+                                                       OPENAL_SetPaused(channels[whooshsound], true);
+                                                       OPENAL_SetVolume(channels[whooshsound], 0);
                                                }
 
                                                if(targetanimation==jumpdownanim||isFlip()){
@@ -6697,10 +6696,10 @@ void    Person::DoStuff(){
                                                        vel[0]=velocity.x;
                                                        vel[1]=velocity.y;
                                                        vel[2]=velocity.z;
-                                                       PlaySoundEx( landsound, samp[landsound], NULL, TRUE);
-                                                       FSOUND_3D_SetAttributes(channels[landsound], gLoc, vel);
-                                                       FSOUND_SetVolume(channels[landsound], 128);
-                                                       FSOUND_SetPaused(channels[landsound], FALSE);
+                                                       PlaySoundEx( landsound, samp[landsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[landsound], 128);
+                                                       OPENAL_SetPaused(channels[landsound], false);
 
                                                        if(id==0){
                                                                envsound[numenvsounds]=coords;
@@ -6719,7 +6718,7 @@ void      Person::DoStuff(){
 
 
                                        if(isIdle()||targetanimation==drawrightanim||targetanimation==drawleftanim||targetanimation==crouchdrawrightanim||targetanimation==crouchstabanim||targetanimation==swordgroundstabanim||isStop()||targetanimation==removeknifeanim||targetanimation==crouchremoveknifeanim||isLanding()||isCrouch()||animation[targetanimation].attack||(targetanimation==rollanim&&animation[targetanimation].label[targetframe]==6)){
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                velocity.y=0;
                                                if(velspeed<multiplier*300*scale){
                                                        velocity=0;
@@ -6736,7 +6735,7 @@ void      Person::DoStuff(){
                                        }
 
                                        if(isLandhard()){
-                                               velspeed=findLength(&velocity); 
+                                               velspeed=findLength(&velocity);
                                                velocity.y=0;
                                                if(velspeed<multiplier*600*scale){
                                                        velocity=0;
@@ -6765,16 +6764,16 @@ void    Person::DoStuff(){
                                                vel[1]=velocity.y;
                                                vel[2]=velocity.z;
                                                if(!onterrain||environment==grassyenvironment){
-                                                       PlaySoundEx( skidsound, samp[skidsound], NULL, TRUE);
-                                                       FSOUND_3D_SetAttributes(channels[skidsound], gLoc, vel);
-                                                       FSOUND_SetVolume(channels[skidsound], 128*velspeed/10);
-                                                       FSOUND_SetPaused(channels[skidsound], FALSE);
+                                                       PlaySoundEx( skidsound, samp[skidsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[skidsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[skidsound], 128*velspeed/10);
+                                                       OPENAL_SetPaused(channels[skidsound], false);
                                                }
                                                else {
-                                                       PlaySoundEx( snowskidsound, samp[snowskidsound], NULL, TRUE);
-                                                       FSOUND_3D_SetAttributes(channels[snowskidsound], gLoc, vel);
-                                                       FSOUND_SetVolume(channels[snowskidsound], 128*velspeed/10);
-                                                       FSOUND_SetPaused(channels[snowskidsound], FALSE);
+                                                       PlaySoundEx( snowskidsound, samp[snowskidsound], NULL, true);
+                                                       OPENAL_3D_SetAttributes(channels[snowskidsound], gLoc, vel);
+                                                       OPENAL_SetVolume(channels[snowskidsound], 128*velspeed/10);
+                                                       OPENAL_SetPaused(channels[snowskidsound], false);
                                                }
                                        }
 
@@ -6794,7 +6793,7 @@ void      Person::DoStuff(){
                                                coords=victim->coords;
                                        }
                        }
-                       skeleton.oldfree=skeleton.free; 
+                       skeleton.oldfree=skeleton.free;
 
                        XYZ midterrain;
                        midterrain=0;
@@ -6813,7 +6812,7 @@ void      Person::DoStuff(){
 
 int Person::DrawSkeleton(){
        int oldplayerdetail;
-       if((frustum.SphereInFrustum(coords.x,coords.y+scale*3,coords.z,scale*8)&&findDistancefast(&viewer,&coords)<viewdistance*viewdistance)||skeleton.free==3){  
+       if((frustum.SphereInFrustum(coords.x,coords.y+scale*3,coords.z,scale*8)&&findDistancefast(&viewer,&coords)<viewdistance*viewdistance)||skeleton.free==3){
                if(onterrain&&(isIdle()||isCrouch()||wasIdle()||wasCrouch())&&!skeleton.free){
                        calcrot=1;
                }
@@ -7296,12 +7295,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);
                        }
 
@@ -7325,12 +7324,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);
                                                }
                                }
@@ -7354,7 +7353,7 @@ int Person::DrawSkeleton(){
                if(num_weapons>0){
                        for(k=0;k<num_weapons;k++){
                                i=weaponids[k];
-                               if(weaponactive==k){                                            
+                               if(weaponactive==k){
                                        if(weapons.type[i]!=staff){
                                                for(j=0;j<skeleton.num_muscles;j++){
                                                        if((skeleton.muscles[j].parent1->label==righthand||skeleton.muscles[j].parent2->label==righthand)&&skeleton.muscles[j].numvertices>0){
@@ -7398,7 +7397,7 @@ int Person::DrawSkeleton(){
                                                }*/
                                        }
                                }
-                               if(weaponactive!=k&&weaponstuck!=k){                                            
+                               if(weaponactive!=k&&weaponstuck!=k){
                                        if(weapons.type[i]==knife)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[righthip]].position-skeleton.joints[skeleton.jointlabels[lefthip]].position)*.1+(skeleton.joints[skeleton.jointlabels[rightshoulder]].position-skeleton.joints[skeleton.jointlabels[leftshoulder]].position)*.35;
                                        if(weapons.type[i]==sword)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33;
                                        if(weapons.type[i]==staff)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33;
@@ -7408,7 +7407,7 @@ int Person::DrawSkeleton(){
                                                }
                                        }
                                }
-                               if(weaponstuck==k){                                             
+                               if(weaponstuck==k){
                                        if(weaponstuckwhere==0)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position*.5+skeleton.joints[skeleton.jointlabels[neck]].position*.5-skeleton.forward*.8;
                                        else weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position*.5+skeleton.joints[skeleton.jointlabels[neck]].position*.5+skeleton.forward*.8;
                                        for(j=0;j<skeleton.num_muscles;j++){
@@ -7458,7 +7457,7 @@ int Person::DrawSkeleton(){
                                                        weapons.rotation3[i]=0;
                                                        weapons.smallrotation[i]=-90;
                                                        weapons.smallrotation2[i]=0;
-                                                       if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i];                                                     
+                                                       if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i];
                                                }
                                                if((currentanimation==knifeslashreversalanim&&targetanimation==knifeslashreversalanim)||(currentanimation==knifeslashreversedanim&&targetanimation==knifeslashreversedanim)){
                                                        XYZ temppoint1,temppoint2,tempforward;
@@ -7476,7 +7475,7 @@ int Person::DrawSkeleton(){
                                                        weapons.rotation3[i]=0;
                                                        weapons.smallrotation[i]=90;
                                                        weapons.smallrotation2[i]=0;
-                                                       if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i];                                                     
+                                                       if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i];
                                                }
                                                if(targetanimation==knifethrowanim){
                                                        weapons.smallrotation[i]=90;
@@ -7519,7 +7518,7 @@ int Person::DrawSkeleton(){
                                                        weapons.rotation3[i]=0;
                                                        weapons.smallrotation[i]=90;
                                                        weapons.smallrotation2[i]=0;
-                                                       if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i];                     
+                                                       if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i];
                                                }
                                        }
                                        if(weapons.type[i]==staff){
@@ -7541,7 +7540,7 @@ int Person::DrawSkeleton(){
                                                        weapons.rotation3[i]=0;
                                                        weapons.smallrotation[i]=90;
                                                        weapons.smallrotation2[i]=0;
-                                                       if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i];                     
+                                                       if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i];
                                                }
                                        }
                                }
@@ -7628,12 +7627,12 @@ int Person::SphereCheck(XYZ *p1,float radius, XYZ *p, XYZ *move, float *rotate,
 
                                                                if(targetanimation==jumpupanim){jumppower=-4;targetanimation=getIdle();}
                                                                target=0;
-                                                               targetframe=0;  
+                                                               targetframe=0;
                                                                onterrain=1;
 
                                                                if(id==0){
-                                                                       FSOUND_SetPaused(channels[whooshsound], TRUE);
-                                                                       FSOUND_SetVolume(channels[whooshsound], 0);
+                                                                       OPENAL_SetPaused(channels[whooshsound], true);
+                                                                       OPENAL_SetVolume(channels[whooshsound], 0);
                                                                }
 
                                                                if((targetanimation==jumpdownanim||isFlip())&&!wasLanding()&&!wasLandhard()){
@@ -7647,10 +7646,10 @@ int Person::SphereCheck(XYZ *p1,float radius, XYZ *p, XYZ *move, float *rotate,
                                                                        vel[0]=velocity.x;
                                                                        vel[1]=velocity.y;
                                                                        vel[2]=velocity.z;
-                                                                       PlaySoundEx( landsound, samp[landsound], NULL, TRUE);
-                                                                       FSOUND_3D_SetAttributes(channels[landsound], gLoc, vel);
-                                                                       FSOUND_SetVolume(channels[landsound], 128);
-                                                                       FSOUND_SetPaused(channels[landsound], FALSE);
+                                                                       PlaySoundEx( landsound, samp[landsound], NULL, true);
+                                                                       OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
+                                                                       OPENAL_SetVolume(channels[landsound], 128);
+                                                                       OPENAL_SetPaused(channels[landsound], false);
 
                                                                        if(id==0){
                                                                                envsound[numenvsounds]=coords;