]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameTick.cpp
Merged with parent
[lugaru.git] / Source / GameTick.cpp
index 2c357a5eb8f04fc0efbb9c3712bcbf9e83290f12..4bcb66c07ae657b55880ff5c8a41cea3d1648df1 100644 (file)
@@ -222,6 +222,31 @@ extern float accountcampaigntime[10];
 
 extern int accountcampaignchoicesmade[10];
 extern int accountcampaignchoices[10][5000];
+
+static const char *rabbitskin[] = {
+":Data:Textures:Fur3.jpg",
+":Data:Textures:Fur.jpg",
+":Data:Textures:Fur2.jpg",
+":Data:Textures:Lynx.jpg",
+":Data:Textures:Otter.jpg",
+":Data:Textures:Opal.jpg",
+":Data:Textures:Sable.jpg",
+":Data:Textures:Chocolate.jpg",
+":Data:Textures:BW2.jpg",
+":Data:Textures:WB2.jpg"
+};
+
+static const char *wolfskin[] = {
+":Data:Textures:Wolf.jpg",
+":Data:Textures:Darkwolf.jpg",
+":Data:Textures:Snowwolf.jpg"
+};
+
+#define STATIC_ASSERT(x) extern int s_a_dummy[2 * (!!(x)) - 1];
+STATIC_ASSERT (rabbittype == 0 && wolftype == 1)
+
+static const char **creatureskin[] = {rabbitskin, wolfskin};
+
 /********************> Tick() <*****/
 extern OPENAL_STREAM * strm[20];
 extern "C"     void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused);
@@ -647,10 +672,10 @@ void      Game::Setenvironment(int which)
                        OPENAL_SetVolume(channels[stream_wind], 256);
                }
 
-               LoadTexture(ConvertFileName(":Data:Textures:snowtree.png"),&objects.treetextureptr,0,1);
-               LoadTexture(ConvertFileName(":Data:Textures:bushsnow.png"),&objects.bushtextureptr,0,1);
-               LoadTexture(ConvertFileName(":Data:Textures:bouldersnow.jpg"),&objects.rocktextureptr,1,0);
-               LoadTexture(ConvertFileName(":Data:Textures:snowbox.jpg"),&objects.boxtextureptr,1,0);
+               LoadTexture(":Data:Textures:snowtree.png",&objects.treetextureptr,0,1);
+               LoadTexture(":Data:Textures:bushsnow.png",&objects.bushtextureptr,0,1);
+               LoadTexture(":Data:Textures:bouldersnow.jpg",&objects.rocktextureptr,1,0);
+               LoadTexture(":Data:Textures:snowbox.jpg",&objects.boxtextureptr,1,0);
 
                OPENAL_Sample_Free(samp[footstepsound]);
                OPENAL_Sample_Free(samp[footstepsound2]);
@@ -665,25 +690,25 @@ void      Game::Setenvironment(int which)
                OPENAL_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f);
                OPENAL_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f);
 
-               LoadTexture(ConvertFileName(":Data:Textures:snow.jpg"),&terraintexture,1,0);
+               LoadTexture(":Data:Textures:snow.jpg",&terraintexture,1,0);
 
-               LoadTexture(ConvertFileName(":Data:Textures:rock.jpg"),&terraintexture2,1,0);
+               LoadTexture(":Data:Textures:rock.jpg",&terraintexture2,1,0);
 
-               //LoadTexture(ConvertFileName(":Data:Textures:detailgrain.png"),&terraintexture3,1);
+               //LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1);
 
 
 
 
                temptexdetail=texdetail;
                if(texdetail>1)texdetail=4;
-               skybox.load(    ConvertFileName(":Data:Textures:Skybox(snow):Front.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Left.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Back.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Right.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Up.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Down.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Cloud.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Reflect.jpg"));
+               skybox.load(    ":Data:Textures:Skybox(snow):Front.jpg",
+                       ":Data:Textures:Skybox(snow):Left.jpg",
+                       ":Data:Textures:Skybox(snow):Back.jpg",
+                       ":Data:Textures:Skybox(snow):Right.jpg",
+                       ":Data:Textures:Skybox(snow):Up.jpg",
+                       ":Data:Textures:Skybox(snow):Down.jpg",
+                       ":Data:Textures:Skybox(snow):Cloud.jpg",
+                       ":Data:Textures:Skybox(snow):Reflect.jpg");
 
 
 
@@ -693,10 +718,10 @@ void      Game::Setenvironment(int which)
        if(environment==desertenvironment){
                windvector=0;
                windvector.z=2;
-               LoadTexture(ConvertFileName(":Data:Textures:deserttree.png"),&objects.treetextureptr,0,1);
-               LoadTexture(ConvertFileName(":Data:Textures:bushdesert.png"),&objects.bushtextureptr,0,1);
-               LoadTexture(ConvertFileName(":Data:Textures:boulderdesert.jpg"),&objects.rocktextureptr,1,0);
-               LoadTexture(ConvertFileName(":Data:Textures:desertbox.jpg"),&objects.boxtextureptr,1,0);
+               LoadTexture(":Data:Textures:deserttree.png",&objects.treetextureptr,0,1);
+               LoadTexture(":Data:Textures:bushdesert.png",&objects.bushtextureptr,0,1);
+               LoadTexture(":Data:Textures:boulderdesert.jpg",&objects.rocktextureptr,1,0);
+               LoadTexture(":Data:Textures:desertbox.jpg",&objects.boxtextureptr,1,0);
 
 
                if(ambientsound){
@@ -719,24 +744,24 @@ void      Game::Setenvironment(int which)
                OPENAL_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f);
                OPENAL_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f);
 
-               LoadTexture(ConvertFileName(":Data:Textures:sand.jpg"),&terraintexture,1,0);
+               LoadTexture(":Data:Textures:sand.jpg",&terraintexture,1,0);
 
-               LoadTexture(ConvertFileName(":Data:Textures:sandslope.jpg"),&terraintexture2,1,0);
+               LoadTexture(":Data:Textures:sandslope.jpg",&terraintexture2,1,0);
 
-               //LoadTexture(ConvertFileName(":Data:Textures:detailgrain.png"),&terraintexture3,1);
+               //LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1);
 
 
 
                temptexdetail=texdetail;
                if(texdetail>1)texdetail=4;
-               skybox.load(    ConvertFileName(":Data:Textures:Skybox(sand):Front.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Left.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Back.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Right.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Up.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Down.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Cloud.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Reflect.jpg"));
+               skybox.load(    ":Data:Textures:Skybox(sand):Front.jpg",
+                       ":Data:Textures:Skybox(sand):Left.jpg",
+                       ":Data:Textures:Skybox(sand):Back.jpg",
+                       ":Data:Textures:Skybox(sand):Right.jpg",
+                       ":Data:Textures:Skybox(sand):Up.jpg",
+                       ":Data:Textures:Skybox(sand):Down.jpg",
+                       ":Data:Textures:Skybox(sand):Cloud.jpg",
+                       ":Data:Textures:Skybox(sand):Reflect.jpg");
 
 
 
@@ -746,10 +771,10 @@ void      Game::Setenvironment(int which)
        if(environment==grassyenvironment){
                windvector=0;
                windvector.z=2;
-               LoadTexture(ConvertFileName(":Data:Textures:tree.png"),&objects.treetextureptr,0,1);
-               LoadTexture(ConvertFileName(":Data:Textures:bush.png"),&objects.bushtextureptr,0,1);
-               LoadTexture(ConvertFileName(":Data:Textures:boulder.jpg"),&objects.rocktextureptr,1,0);
-               LoadTexture(ConvertFileName(":Data:Textures:grassbox.jpg"),&objects.boxtextureptr,1,0);
+               LoadTexture(":Data:Textures:tree.png",&objects.treetextureptr,0,1);
+               LoadTexture(":Data:Textures:bush.png",&objects.bushtextureptr,0,1);
+               LoadTexture(":Data:Textures:boulder.jpg",&objects.rocktextureptr,1,0);
+               LoadTexture(":Data:Textures:grassbox.jpg",&objects.boxtextureptr,1,0);
 
                if(ambientsound){
                        PlayStreamEx( stream_wind, strm[stream_wind], NULL, true);
@@ -770,24 +795,24 @@ void      Game::Setenvironment(int which)
                OPENAL_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f);
                OPENAL_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f);
 
-               LoadTexture(ConvertFileName(":Data:Textures:grassdirt.jpg"),&terraintexture,1,0);
+               LoadTexture(":Data:Textures:grassdirt.jpg",&terraintexture,1,0);
 
-               LoadTexture(ConvertFileName(":Data:Textures:mossrock.jpg"),&terraintexture2,1,0);
+               LoadTexture(":Data:Textures:mossrock.jpg",&terraintexture2,1,0);
 
-               //LoadTexture(ConvertFileName(":Data:Textures:detail.png"),&terraintexture3,1);
+               //LoadTexture(":Data:Textures:detail.png",&terraintexture3,1);
 
 
 
                temptexdetail=texdetail;
                if(texdetail>1)texdetail=4;
-               skybox.load(    ConvertFileName(":Data:Textures:Skybox(grass):Front.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Left.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Back.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Right.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Up.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Down.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Cloud.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Reflect.jpg"));
+               skybox.load(    ":Data:Textures:Skybox(grass):Front.jpg",
+                       ":Data:Textures:Skybox(grass):Left.jpg",
+                       ":Data:Textures:Skybox(grass):Back.jpg",
+                       ":Data:Textures:Skybox(grass):Right.jpg",
+                       ":Data:Textures:Skybox(grass):Up.jpg",
+                       ":Data:Textures:Skybox(grass):Down.jpg",
+                       ":Data:Textures:Skybox(grass):Cloud.jpg",
+                       ":Data:Textures:Skybox(grass):Reflect.jpg");
 
 
 
@@ -795,7 +820,7 @@ void        Game::Setenvironment(int which)
        }
        temptexdetail=texdetail;
        texdetail=1;
-       terrain.load(ConvertFileName(":Data:Textures:heightmap.png"));
+       terrain.load(":Data:Textures:heightmap.png");
 
        texdetail=temptexdetail;
 }
@@ -804,24 +829,24 @@ void      Game::Setenvironment(int which)
 void   Game::Loadlevel(int which){
        stealthloading=0;
 
-       if(which==0)Loadlevel((char *)ConvertFileName(":Data:Maps:map1"));
-       else if(which==1)Loadlevel((char *)ConvertFileName(":Data:Maps:map2"));
-       else if(which==2)Loadlevel((char *)ConvertFileName(":Data:Maps:map3"));
-       else if(which==3)Loadlevel((char *)ConvertFileName(":Data:Maps:map4"));
-       else if(which==4)Loadlevel((char *)ConvertFileName(":Data:Maps:map5"));
-       else if(which==5)Loadlevel((char *)ConvertFileName(":Data:Maps:map6"));
-       else if(which==6)Loadlevel((char *)ConvertFileName(":Data:Maps:map7"));
-       else if(which==7)Loadlevel((char *)ConvertFileName(":Data:Maps:map8"));
-       else if(which==8)Loadlevel((char *)ConvertFileName(":Data:Maps:map9"));
-       else if(which==9)Loadlevel((char *)ConvertFileName(":Data:Maps:map10"));
-       else if(which==10)Loadlevel((char *)ConvertFileName(":Data:Maps:map11"));
-       else if(which==11)Loadlevel((char *)ConvertFileName(":Data:Maps:map12"));
-       else if(which==12)Loadlevel((char *)ConvertFileName(":Data:Maps:map13"));
-       else if(which==13)Loadlevel((char *)ConvertFileName(":Data:Maps:map14"));
-       else if(which==14)Loadlevel((char *)ConvertFileName(":Data:Maps:map15"));
-       else if(which==15)Loadlevel((char *)ConvertFileName(":Data:Maps:map16"));
-       else if(which==-1){tutoriallevel=-1;Loadlevel((char *)ConvertFileName(":Data:Maps:tutorial"));}
-       else Loadlevel((char *)ConvertFileName(":Data:Maps:mapsave"));
+       if(which==0)Loadlevel((char *)":Data:Maps:map1");
+       else if(which==1)Loadlevel((char *)":Data:Maps:map2");
+       else if(which==2)Loadlevel((char *)":Data:Maps:map3");
+       else if(which==3)Loadlevel((char *)":Data:Maps:map4");
+       else if(which==4)Loadlevel((char *)":Data:Maps:map5");
+       else if(which==5)Loadlevel((char *)":Data:Maps:map6");
+       else if(which==6)Loadlevel((char *)":Data:Maps:map7");
+       else if(which==7)Loadlevel((char *)":Data:Maps:map8");
+       else if(which==8)Loadlevel((char *)":Data:Maps:map9");
+       else if(which==9)Loadlevel((char *)":Data:Maps:map10");
+       else if(which==10)Loadlevel((char *)":Data:Maps:map11");
+       else if(which==11)Loadlevel((char *)":Data:Maps:map12");
+       else if(which==12)Loadlevel((char *)":Data:Maps:map13");
+       else if(which==13)Loadlevel((char *)":Data:Maps:map14");
+       else if(which==14)Loadlevel((char *)":Data:Maps:map15");
+       else if(which==15)Loadlevel((char *)":Data:Maps:map16");
+       else if(which==-1){tutoriallevel=-1;Loadlevel((char *)":Data:Maps:tutorial");}
+       else Loadlevel((char *)":Data:Maps:mapsave");
 
        whichlevel=which;
 }
@@ -902,7 +927,7 @@ void        Game::Loadlevel(char *name){
                won=0;
 
                //campaign=0;
-               animation[bounceidleanim].Load((char *)ConvertFileName(":Data:Animations:Idle"),middleheight,neutral);
+               animation[bounceidleanim].Load((char *)":Data:Animations:Idle",middleheight,neutral);
 
                numdialogues=0;
 
@@ -1386,52 +1411,7 @@ void     Game::Loadlevel(char *name){
                        //if(!player[i].loaded)player[i].skeleton.skinText = new GLubyte[texsize];
                        //player[i].skeleton.skinText.resize(texsize);
 
-                       if(player[i].creature==rabbittype)
-                       {
-                               if(player[i].whichskin==0){
-                                       LoadTextureSave(":Data:Textures:Fur3.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                               else if(player[i].whichskin==1){
-                                       LoadTextureSave(":Data:Textures:Fur.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                               else if(player[i].whichskin==2){
-                                       LoadTextureSave(":Data:Textures:Fur2.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                               else if(player[i].whichskin==3){
-                                       LoadTextureSave(":Data:Textures:Lynx.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                               else if(player[i].whichskin==4){
-                                       LoadTextureSave(":Data:Textures:Otter.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                               else if(player[i].whichskin==5){
-                                       LoadTextureSave(":Data:Textures:Opal.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                               else if(player[i].whichskin==6){
-                                       LoadTextureSave(":Data:Textures:Sable.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                               else if(player[i].whichskin==7){
-                                       LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                               else if(player[i].whichskin==8){
-                                       LoadTextureSave(":Data:Textures:BW2.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                               else if(player[i].whichskin==9){
-                                       LoadTextureSave(":Data:Textures:WB2.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                       }
-                       if(player[i].creature==wolftype)
-                       {
-                               //k=abs(Random()%3);
-                               if(player[i].whichskin==0){
-                                       LoadTextureSave(":Data:Textures:Wolf.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                               else if(player[i].whichskin==1){
-                                       LoadTextureSave(":Data:Textures:Darkwolf.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                               else if(player[i].whichskin==2){
-                                       LoadTextureSave(":Data:Textures:Snowwolf.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                       }
+                       LoadTextureSave(creatureskin[player[i].creature][player[i].whichskin],&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
 
                        if(player[i].numclothes)
                        {
@@ -1513,7 +1493,7 @@ void      Game::Loadlevel(char *name){
                                player[i].proportionlegs.z=0;
                        }
 
-                       player[i].tempanimation.Load((char *)ConvertFileName(":Data:Animations:Tempanim"),0,0);
+                       player[i].tempanimation.Load((char *)":Data:Animations:Tempanim",0,0);
 
                        player[i].headmorphness=0;
                        player[i].targetheadmorphness=1;
@@ -1703,6 +1683,43 @@ void     Game::Tick()
 
 
        static bool mainmenutogglekeydown;
+
+       if (IsKeyDown(theKeyMap, MAC_F6_KEY) && !freezetogglekeydown) {
+               if (IsKeyDown(theKeyMap, MAC_SHIFT_KEY)) {
+                       stereoreverse=true;
+               } else {
+                       stereoreverse=false;
+               }
+
+               if (stereoreverse) {
+                       printf("Stereo reversed\n");
+               } else {
+                       printf("Stereo unreversed\n");
+               }
+               freezetogglekeydown=1;
+       }
+
+       if (IsKeyDown(theKeyMap, MAC_F7_KEY)) {
+               if (IsKeyDown(theKeyMap, MAC_SHIFT_KEY)) {
+                       stereoseparation -= 0.001;
+               } else {
+                       stereoseparation -= 0.010;
+               }
+
+               printf("Stereo decreased increased to %f\n", stereoseparation);
+       }
+
+       if (IsKeyDown(theKeyMap, MAC_F8_KEY)) {
+               if (IsKeyDown(theKeyMap, MAC_SHIFT_KEY)) {
+                       stereoseparation += 0.001;
+               } else {
+                       stereoseparation += 0.010;
+               }
+
+               printf("Stereo separation increased to %f\n", stereoseparation);
+       }
+
+
        if(!console){
                if(mainmenu&&endgame==1)mainmenu=10;
                if(IsKeyDown(theKeyMap, MAC_ESCAPE_KEY)&&!mainmenutogglekeydown&&(mainmenu==7&&entername)){
@@ -3461,7 +3478,7 @@ void      Game::Tick()
 
 
                                                                FILE                    *tfile;
-                                                               tfile=fopen( mapname, "wb" );
+                                                               tfile=fopen( ConvertFileName(mapname), "wb" );
                                                                fpackf(tfile, "Bi", mapvers);
                                                                //fpackf(tfile, "Bi", indemo);
                                                                fpackf(tfile, "Bi", maptype);
@@ -4642,36 +4659,8 @@ void     Game::Tick()
                                                                }
 
                                                                player[0].numclothes=0;
-                                                               if(player[0].whichskin==0){
-                                                                       LoadTextureSave(":Data:Textures:Fur3.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
-                                                               }
-                                                               else if(player[0].whichskin==1){
-                                                                       LoadTextureSave(":Data:Textures:Fur.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
-                                                               }
-                                                               else if(player[0].whichskin==2){
-                                                                       LoadTextureSave(":Data:Textures:Fur2.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
-                                                               }
-                                                               else if(player[0].whichskin==3){
-                                                                       LoadTextureSave(":Data:Textures:Lynx.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
-                                                               }
-                                                               else if(player[0].whichskin==4){
-                                                                       LoadTextureSave(":Data:Textures:Otter.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
-                                                               }
-                                                               else if(player[0].whichskin==5){
-                                                                       LoadTextureSave(":Data:Textures:Opal.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
-                                                               }
-                                                               else if(player[0].whichskin==6){
-                                                                       LoadTextureSave(":Data:Textures:Sable.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
-                                                               }
-                                                               else if(player[0].whichskin==7){
-                                                                       LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
-                                                               }
-                                                               else if(player[0].whichskin==8){
-                                                                       LoadTextureSave(":Data:Textures:BW2.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
-                                                               }
-                                                               else if(player[0].whichskin==9){
-                                                                       LoadTextureSave(":Data:Textures:WB2.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
-                                                               }
+                                                               LoadTextureSave(creatureskin[player[0].creature][player[0].whichskin],
+                                                                               &player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
 
                                                                editoractive=typeactive;
                                                                player[0].immobile=0;
@@ -5085,36 +5074,8 @@ void     Game::Tick()
                                                                                }
                                                                        }
                                                                        player[closest].numclothes=0;
-                                                                       if(player[closest].whichskin==0){
-                                                                               LoadTextureSave(":Data:Textures:Fur3.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                       }
-                                                                       else if(player[closest].whichskin==1){
-                                                                               LoadTextureSave(":Data:Textures:Fur.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                       }
-                                                                       else if(player[closest].whichskin==2){
-                                                                               LoadTextureSave(":Data:Textures:Fur2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                       }
-                                                                       else if(player[closest].whichskin==3){
-                                                                               LoadTextureSave(":Data:Textures:Lynx.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                       }
-                                                                       else if(player[closest].whichskin==4){
-                                                                               LoadTextureSave(":Data:Textures:Otter.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                       }
-                                                                       else if(player[closest].whichskin==5){
-                                                                               LoadTextureSave(":Data:Textures:Opal.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                       }
-                                                                       else if(player[closest].whichskin==6){
-                                                                               LoadTextureSave(":Data:Textures:Sable.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                       }
-                                                                       else if(player[closest].whichskin==7){
-                                                                               LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                       }
-                                                                       else if(player[closest].whichskin==8){
-                                                                               LoadTextureSave(":Data:Textures:BW2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                       }
-                                                                       else if(player[closest].whichskin==9){
-                                                                               LoadTextureSave(":Data:Textures:WB2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                       }
+                                                                       LoadTextureSave(creatureskin[player[closest].creature][player[closest].whichskin],
+                                                                                       &player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
 
                                                                        donesomething=1;
                                                        }
@@ -5123,37 +5084,8 @@ void     Game::Tick()
                                                                int closest=0;
 
                                                                player[closest].numclothes=0;
-                                                               if(player[closest].whichskin==0){
-                                                                       LoadTextureSave(":Data:Textures:Fur3.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                               }
-                                                               else if(player[closest].whichskin==1){
-                                                                       LoadTextureSave(":Data:Textures:Fur.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                               }
-                                                               else if(player[closest].whichskin==2){
-                                                                       LoadTextureSave(":Data:Textures:Fur2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                               }
-                                                               else if(player[closest].whichskin==3){
-                                                                       LoadTextureSave(":Data:Textures:Lynx.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                               }
-                                                               else if(player[closest].whichskin==4){
-                                                                       LoadTextureSave(":Data:Textures:Otter.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                               }
-                                                               else if(player[closest].whichskin==5){
-                                                                       LoadTextureSave(":Data:Textures:Opal.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                               }
-                                                               else if(player[closest].whichskin==6){
-                                                                       LoadTextureSave(":Data:Textures:Sable.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                               }
-                                                               else if(player[closest].whichskin==7){
-                                                                       LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                               }
-                                                               else if(player[closest].whichskin==8){
-                                                                       LoadTextureSave(":Data:Textures:BW2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                               }
-                                                               else if(player[closest].whichskin==9){
-                                                                       LoadTextureSave(":Data:Textures:WB2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                               }
-
+                                                               LoadTextureSave(creatureskin[player[closest].creature][player[closest].whichskin],
+                                                                               &player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
                                                                donesomething=1;
                                                        }
 
@@ -7178,50 +7110,8 @@ void     Game::Tick()
                                                                        if(player[closest].whichskin>9)player[closest].whichskin=0;
                                                                        if(player[closest].whichskin>2&&player[closest].creature==wolftype)player[closest].whichskin=0;
 
-                                                                       if(player[closest].creature==rabbittype){
-                                                                               if(player[closest].whichskin==0){
-                                                                                       LoadTextureSave(":Data:Textures:Fur3.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==1){
-                                                                                       LoadTextureSave(":Data:Textures:Fur.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==2){
-                                                                                       LoadTextureSave(":Data:Textures:Fur2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==3){
-                                                                                       LoadTextureSave(":Data:Textures:Lynx.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==4){
-                                                                                       LoadTextureSave(":Data:Textures:Otter.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==5){
-                                                                                       LoadTextureSave(":Data:Textures:Opal.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==6){
-                                                                                       LoadTextureSave(":Data:Textures:Sable.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==7){
-                                                                                       LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==8){
-                                                                                       LoadTextureSave(":Data:Textures:BW2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==9){
-                                                                                       LoadTextureSave(":Data:Textures:WB2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                       }
-                                                                       if(player[closest].creature==wolftype){
-                                                                               k=abs(Random()%3);
-                                                                               if(player[closest].whichskin==0){
-                                                                                       LoadTextureSave(":Data:Textures:Wolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==1){
-                                                                                       LoadTextureSave(":Data:Textures:Darkwolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==2){
-                                                                                       LoadTextureSave(":Data:Textures:Snowwolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                       }
+                                                                       LoadTextureSave(creatureskin[player[closest].creature][player[closest].whichskin],
+                                                                                       &player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
                                                                }
 
                                                                if(player[closest].numclothes){
@@ -7761,7 +7651,7 @@ void      Game::Tick()
                                                                        player[numplayers].proportionlegs.z=0;
                                                                }
 
-                                                               player[numplayers].tempanimation.Load((char *)ConvertFileName(":Data:Animations:Tempanim"),0,0);
+                                                               player[numplayers].tempanimation.Load((char *)":Data:Animations:Tempanim",0,0);
 
                                                                player[numplayers].damagetolerance=200;