- if(bonustime==0){
- PlaySoundEx( fireendsound, samp[fireendsound], NULL, true);
- OPENAL_SetVolume(channels[fireendsound], 256);
- OPENAL_SetPaused(channels[fireendsound], false);
- }
- if(bonustime==0){
- if(bonus!=solidhit&&bonus!=twoxcombo&&bonus!=threexcombo&&bonus!=fourxcombo&&bonus!=megacombo)bonusnum[bonus]++;
- else bonusnum[bonus]+=0.15;
- if(tutoriallevel)bonusvalue=0;
- bonusvalue/=bonusnum[bonus];
- bonustotal+=bonusvalue;
- }
- bonustime+=multiplier;
-
- if(environment==snowyenvironment){
- precipdelay-=multiplier;
- while(precipdelay<0){
- precipdelay+=.04;
- if(!detail)precipdelay+=.04;
- XYZ footvel,footpoint;
-
- footvel=0;
- footpoint=viewer+viewerfacing*6;
- footpoint.y+=((float)abs(Random()%1200))/100-6;
- footpoint.x+=((float)abs(Random()%1200))/100-6;
- footpoint.z+=((float)abs(Random()%1200))/100-6;
- Sprite::MakeSprite(snowsprite, footpoint,footvel, 1,1,1, .1, 1);
- }
- }
- for(k=0;k<numplayers;k++){
- if(player[k].aitype==playercontrolled)player[k].turnspeed=500;
- if(player[k].aitype!=playercontrolled)player[k].turnspeed=500;
-
- if((player[k].isRun()&&((player[k].targetrotation!=rabbitrunninganim&&player[k].targetrotation!=wolfrunninganim)||player[k].targetframe==4))||player[k].targetanimation==removeknifeanim||player[k].targetanimation==crouchremoveknifeanim||player[k].targetanimation==flipanim||player[k].targetanimation==fightsidestep||player[k].targetanimation==walkanim){
- if(abs(player[k].rotation-player[k].targetrotation)<multiplier*player[k].turnspeed)player[k].rotation=player[k].targetrotation;
- else if(player[k].rotation>player[k].targetrotation){
- player[k].rotation-=multiplier*player[k].turnspeed;
- }
- else if(player[k].rotation<player[k].targetrotation){
- player[k].rotation+=multiplier*player[k].turnspeed;
- }
- }
-
-
- if(player[k].isStop()||player[k].isLanding()||player[k].targetanimation==staggerbackhighanim||(player[k].targetanimation==sneakanim&&player[k].currentanimation==sneakanim)||player[k].targetanimation==staggerbackhardanim||player[k].targetanimation==backhandspringanim||player[k].targetanimation==dodgebackanim||player[k].targetanimation==rollanim||(animation[player[k].targetanimation].attack&&player[k].targetanimation!=rabbitkickanim&&(player[k].targetanimation!=crouchstabanim||player[k].hasvictim)&&(player[k].targetanimation!=swordgroundstabanim||player[k].hasvictim))){
- player[k].turnspeed*=2;
- if(abs(player[k].rotation-player[k].targetrotation)<multiplier*player[k].turnspeed)player[k].rotation=player[k].targetrotation;
- else if(player[k].rotation>player[k].targetrotation){
- player[k].rotation-=multiplier*player[k].turnspeed;
- }
- else if(player[k].rotation<player[k].targetrotation){
- player[k].rotation+=multiplier*player[k].turnspeed;
- }
- player[k].turnspeed/=2;
- }
-
- if(player[k].targetanimation==sneakanim&&player[k].currentanimation!=sneakanim){
- player[k].turnspeed*=4;
- if(abs(player[k].rotation-player[k].targetrotation)<multiplier*player[k].turnspeed)player[k].rotation=player[k].targetrotation;
- else if(player[k].rotation>player[k].targetrotation){
- player[k].rotation-=multiplier*player[k].turnspeed;
- }
- else if(player[k].rotation<player[k].targetrotation){
- player[k].rotation+=multiplier*player[k].turnspeed;
- }
- player[k].turnspeed/=4;
- }
-
- /*if(player[k].aitype!=passivetype||(findDistancefast(&player[k].coords,&viewer)<viewdistance*viewdistance))*/ player[k].DoStuff();
- if(player[k].immobile&&k!=0)player[k].coords=player[k].realoldcoords;
-
- if(findDistancefast(&player[k].coords,&player[k].realoldcoords)>0){
- if(!player[k].skeleton.free&&player[k].targetanimation!=climbanim&&player[k].targetanimation!=hanganim){
- bool tempcollide=0;
-
- if(player[k].collide<-.3)player[k].collide=-.3;
- if(player[k].collide>1)player[k].collide=1;
- player[k].collide-=multiplier*30;
-
- if(player[k].coords.y<terrain.getHeight(player[k].coords.x,player[k].coords.z)){
- player[k].coords.y=terrain.getHeight(player[k].coords.x,player[k].coords.z);
- }
- if(terrain.patchobjectnum[player[k].whichpatchx][player[k].whichpatchz])
- for(l=0;l<terrain.patchobjectnum[player[k].whichpatchx][player[k].whichpatchz];l++){
- i=terrain.patchobjects[player[k].whichpatchx][player[k].whichpatchz][l];
- if(objects.type[i]!=rocktype||(((objects.scale[i]>.5&&player[k].aitype==playercontrolled)||objects.position[i].y>player[k].coords.y))){
- lowpoint=player[k].coords;
- if(player[k].targetanimation!=jumpupanim&&player[k].targetanimation!=jumpdownanim&&!player[k].isFlip())lowpoint.y+=1.25;
- else lowpoint.y+=1.3;
- if(player[k].coords.y<terrain.getHeight(player[k].coords.x,player[k].coords.z)&&player[k].coords.y>terrain.getHeight(player[k].coords.x,player[k].coords.z)-.1){
- player[k].coords.y=terrain.getHeight(player[k].coords.x,player[k].coords.z);
- }
- /*while(player[k].coords.y<terrain.getHeight(player[k].coords.x,player[k].coords.z))
- player[k].coords+=terrain.getNormal(player[k].coords.x,player[k].coords.z)/50;
- */
- if(player[k].SphereCheck(&lowpoint, 1.3, &colpoint, &objects.position[i], &objects.rotation[i], &objects.model[i])!=-1){
- flatfacing=lowpoint-player[k].coords;
- player[k].coords=lowpoint;
- player[k].coords.y-=1.3;
- player[k].collide=1;
- tempcollide=1;
- if(player[k].aitype==playercontrolled&&(player[k].targetanimation==jumpupanim||player[k].targetanimation==jumpdownanim||player[k].isFlip())&&!player[k].jumptogglekeydown&&player[k].jumpkeydown){
- lowpointtarget=lowpoint+DoRotation(player[k].facing,0,-90,0)*1.5;
- tempcoords1=lowpoint;
- whichhit=objects.model[i].LineCheck(&lowpoint,&lowpointtarget,&colpoint,&objects.position[i],&objects.rotation[i]);
- if(whichhit!=-1&&abs(objects.model[i].facenormals[whichhit].y)<.3){
- player[k].target=0;
- player[k].targetanimation=walljumpleftanim;
- player[k].targetframe=0;
- float gLoc[3];
- float vel[3];
- gLoc[0]=player[k].coords.x;
- gLoc[1]=player[k].coords.y;
- gLoc[2]=player[k].coords.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
- OPENAL_SetVolume(channels[movewhooshsound], 256);
- OPENAL_SetPaused(channels[movewhooshsound], false);
- if(k==0)OPENAL_SetPaused(channels[whooshsound], true);
-
- lowpointtarget=DoRotation(objects.model[i].facenormals[whichhit],0,objects.rotation[i],0);
- player[k].rotation=-asin(0-lowpointtarget.x);
- player[k].rotation*=360/6.28;
- if(lowpointtarget.z<0)player[k].rotation=180-player[k].rotation;
- player[k].targetrotation=player[k].rotation;
- player[k].lowrotation=player[k].rotation;
- if(k==0)numwallflipped++;
- }
- else
- {
- lowpoint=tempcoords1;
- lowpointtarget=lowpoint+DoRotation(player[k].facing,0,90,0)*1.5;
- whichhit=objects.model[i].LineCheck(&lowpoint,&lowpointtarget,&colpoint,&objects.position[i],&objects.rotation[i]);
- if(whichhit!=-1&&abs(objects.model[i].facenormals[whichhit].y)<.3){
- player[k].target=0;
- player[k].targetanimation=walljumprightanim;
- player[k].targetframe=0;
- float gLoc[3];
- float vel[3];
- gLoc[0]=player[k].coords.x;
- gLoc[1]=player[k].coords.y;
- gLoc[2]=player[k].coords.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
- OPENAL_SetVolume(channels[movewhooshsound], 256);
- OPENAL_SetPaused(channels[movewhooshsound], false);
- if(k==0)OPENAL_SetPaused(channels[whooshsound], true);
-
- lowpointtarget=DoRotation(objects.model[i].facenormals[whichhit],0,objects.rotation[i],0);
- player[k].rotation=-asin(0-lowpointtarget.x);
- player[k].rotation*=360/6.28;
- if(lowpointtarget.z<0)player[k].rotation=180-player[k].rotation;
- player[k].targetrotation=player[k].rotation;
- player[k].lowrotation=player[k].rotation;
- if(k==0)numwallflipped++;
- }
- else
- {
- lowpoint=tempcoords1;
- lowpointtarget=lowpoint+player[k].facing*2;
- whichhit=objects.model[i].LineCheck(&lowpoint,&lowpointtarget,&colpoint,&objects.position[i],&objects.rotation[i]);
- if(whichhit!=-1&&abs(objects.model[i].facenormals[whichhit].y)<.3){
- player[k].target=0;
- player[k].targetanimation=walljumpbackanim;
- player[k].targetframe=0;
- float gLoc[3];
- float vel[3];
- gLoc[0]=player[k].coords.x;
- gLoc[1]=player[k].coords.y;
- gLoc[2]=player[k].coords.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
- OPENAL_SetVolume(channels[movewhooshsound], 256);
- OPENAL_SetPaused(channels[movewhooshsound], false);
- if(k==0)OPENAL_SetPaused(channels[whooshsound], true);
-
- lowpointtarget=DoRotation(objects.model[i].facenormals[whichhit],0,objects.rotation[i],0);
- player[k].rotation=-asin(0-lowpointtarget.x);
- player[k].rotation*=360/6.28;
- if(lowpointtarget.z<0)player[k].rotation=180-player[k].rotation;
- player[k].targetrotation=player[k].rotation;
- player[k].lowrotation=player[k].rotation;
- if(k==0)numwallflipped++;
- }
- else
- {
- lowpoint=tempcoords1;
- lowpointtarget=lowpoint-player[k].facing*2;
- whichhit=objects.model[i].LineCheck(&lowpoint,&lowpointtarget,&colpoint,&objects.position[i],&objects.rotation[i]);
- if(whichhit!=-1&&abs(objects.model[i].facenormals[whichhit].y)<.3){
- player[k].target=0;
- player[k].targetanimation=walljumpfrontanim;
- player[k].targetframe=0;
- float gLoc[3];
- float vel[3];
- gLoc[0]=player[k].coords.x;
- gLoc[1]=player[k].coords.y;
- gLoc[2]=player[k].coords.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
- OPENAL_SetVolume(channels[movewhooshsound], 256);
- OPENAL_SetPaused(channels[movewhooshsound], false);
- if(k==0)OPENAL_SetPaused(channels[whooshsound], true);
-
- lowpointtarget=DoRotation(objects.model[i].facenormals[whichhit],0,objects.rotation[i],0);
- player[k].rotation=-asin(0-lowpointtarget.x);
- player[k].rotation*=360/6.28;
- if(lowpointtarget.z<0)player[k].rotation=180-player[k].rotation;
- player[k].rotation+=180;
- player[k].targetrotation=player[k].rotation;
- player[k].lowrotation=player[k].rotation;
- if(k==0)numwallflipped++;
- }
- }
- }
- }
- }
- }
- }
- else if(objects.type[i]==rocktype){
- lowpoint2=player[k].coords;
- lowpoint=player[k].coords;
- lowpoint.y+=2;
- if(objects.model[i].LineCheck(&lowpoint,&lowpoint2,&colpoint,&objects.position[i],&objects.rotation[i])!=-1){
- player[k].coords=colpoint;
- player[k].collide=1;
- tempcollide=1;
-
- if((player[k].targetanimation==jumpdownanim||player[k].isFlip())){
- if(player[k].isFlip()&&animation[player[k].targetanimation].label[player[k].targetframe]==7)player[k].RagDoll(0);
-
- if(player[k].targetanimation==jumpupanim){player[k].jumppower=-4;player[k].targetanimation=player[k].getIdle();}
- player[k].target=0;
- player[k].targetframe=0;
- player[k].onterrain=1;
-
- if(player[k].id==0){
- OPENAL_SetPaused(channels[whooshsound], true);
- OPENAL_SetVolume(channels[whooshsound], 0);
- }
-
- if((player[k].targetanimation==jumpdownanim||player[k].isFlip())&&!player[k].wasLanding()){
- if(player[k].isFlip())player[k].jumppower=-4;
- player[k].targetanimation=player[k].getLanding();
- float gLoc[3];
- float vel[3];
- gLoc[0]=player[k].coords.x;
- gLoc[1]=player[k].coords.y;
- gLoc[2]=player[k].coords.z;
- vel[0]=player[k].velocity.x;
- vel[1]=player[k].velocity.y;
- vel[2]=player[k].velocity.z;
- PlaySoundEx( landsound, samp[landsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
- OPENAL_SetVolume(channels[landsound], 128);
- OPENAL_SetPaused(channels[landsound], false);
- if(k==0){
- envsound[numenvsounds]=player[k].coords;
- envsoundvol[numenvsounds]=16;
- envsoundlife[numenvsounds]=.4;
- numenvsounds++;
- }
-
- }
- }
- }
- }
- }
- if(tempcollide&&terrain.patchobjectnum[player[k].whichpatchx][player[k].whichpatchz]&&(/*player[k].jumptogglekeydown*/1==1||player[k].aitype!=playercontrolled))
- for(l=0;l<terrain.patchobjectnum[player[k].whichpatchx][player[k].whichpatchz];l++){
- i=terrain.patchobjects[player[k].whichpatchx][player[k].whichpatchz][l];
- lowpoint=player[k].coords;
- lowpoint.y+=1.35;
- if(objects.type[i]!=rocktype)
- if(player[k].SphereCheck(&lowpoint, 1.33, &colpoint, &objects.position[i], &objects.rotation[i], &objects.model[i])!=-1){
- if(player[k].targetanimation!=jumpupanim&&player[k].targetanimation!=jumpdownanim&&player[k].onterrain)player[k].avoidcollided=1;
- player[k].coords=lowpoint;
- player[k].coords.y-=1.35;
- player[k].collide=1;
-
- if((player[k].grabdelay<=0||player[k].aitype!=playercontrolled)&&((/*(player[k].isRun()||player[k].targetanimation==sneakanim||player[k].targetanimation==walkanim)&&*/player[k].currentanimation!=climbanim&&player[k].currentanimation!=hanganim&&!player[k].isWallJump())||player[k].targetanimation==jumpupanim||player[k].targetanimation==jumpdownanim)){
- lowpoint=player[k].coords;
- objects.model[i].SphereCheckPossible(&lowpoint, 1.5, &objects.position[i], &objects.rotation[i]);
- lowpoint=player[k].coords;
- lowpoint.y+=.05;
- facing=0;
- facing.z=-1;
- facing=DoRotation(facing,0,player[k].targetrotation+180,0);
- lowpointtarget=lowpoint+facing*1.4;
- whichhit=objects.model[i].LineCheckPossible(&lowpoint,&lowpointtarget,&colpoint,&objects.position[i],&objects.rotation[i]);
- if(whichhit!=-1){
- lowpoint=player[k].coords;
- lowpoint.y+=.1;
- lowpointtarget=lowpoint+facing*1.4;
- lowpoint2=lowpoint;
- lowpointtarget2=lowpointtarget;
- lowpoint3=lowpoint;
- lowpointtarget3=lowpointtarget;
- lowpoint4=lowpoint;
- lowpointtarget4=lowpointtarget;
- lowpoint5=lowpoint;
- lowpointtarget5=lowpointtarget;
- lowpoint6=lowpoint;
- lowpointtarget6=lowpointtarget;
- lowpoint7=lowpoint;
- lowpointtarget7=lowpoint;
- lowpoint2.x+=.1;
- lowpointtarget2.x+=.1;
- lowpoint3.z+=.1;
- lowpointtarget3.z+=.1;
- lowpoint4.x-=.1;
- lowpointtarget4.x-=.1;
- lowpoint5.z-=.1;
- lowpointtarget5.z-=.1;
- lowpoint6.y+=45/13;
- lowpointtarget6.y+=45/13;
- lowpointtarget6+=facing*.6;
- lowpointtarget7.y+=90/13;
- whichhit=objects.model[i].LineCheckPossible(&lowpoint,&lowpointtarget,&colpoint,&objects.position[i],&objects.rotation[i]);
- if(objects.friction[i]>.5)
- if(whichhit!=-1){
- //if(k==0){
- if(whichhit!=-1)if(player[k].targetanimation!=jumpupanim&&player[k].targetanimation!=jumpdownanim)player[k].collided=1;
- if(checkcollide(lowpoint7,lowpointtarget7)==-1)
- if(checkcollide(lowpoint6,lowpointtarget6)==-1)
- if(objects.model[i].LineCheckPossible(&lowpoint2,&lowpointtarget2,&colpoint,&objects.position[i],&objects.rotation[i])!=-1&&objects.model[i].LineCheckPossible(&lowpoint3,&lowpointtarget3,&colpoint,&objects.position[i],&objects.rotation[i])!=-1&&objects.model[i].LineCheckPossible(&lowpoint4,&lowpointtarget4,&colpoint,&objects.position[i],&objects.rotation[i])!=-1&&objects.model[i].LineCheckPossible(&lowpoint5,&lowpointtarget5,&colpoint,&objects.position[i],&objects.rotation[i])!=-1)
- for(j=0;j<45;j++){
- lowpoint=player[k].coords;
- lowpoint.y+=(float)j/13;
- lowpointtarget=lowpoint+facing*1.4;
- if(objects.model[i].LineCheckPossible(&lowpoint,&lowpointtarget,&colpoint2,&objects.position[i],&objects.rotation[i])==-1){
- if(j<=6){
- j=100;
- }
- /*if(j>=25&&(player[k].isRun()||player[k].targetanimation==sneakanim||player[k].targetanimation==walkanim)){
- j=100;
- }*/
- if(j<=25&&player[k].targetanimation==jumpdownanim){
- j=100;
- }
- if(j!=100&&(/*j>25||(player[k].isRun()||player[k].targetanimation==sneakanim||player[k].targetanimation==walkanim)||*/player[k].targetanimation==jumpupanim||player[k].targetanimation==jumpdownanim)){
- lowpoint=DoRotation(objects.model[i].facenormals[whichhit],0,objects.rotation[k],0);
- if(1==1/*dotproduct(&player[k].velocity,&lowpoint)>0||player[k].aitype!=playercontrolled||(player[k].isRun()||player[k].targetanimation==sneakanim||player[k].targetanimation==walkanim||player[k].targetanimation==jumpupanim)*/){
- lowpoint=player[k].coords;
- lowpoint.y+=(float)j/13;
- lowpointtarget=lowpoint+facing*1.3;
- flatfacing=player[k].coords;
- player[k].coords=colpoint-DoRotation(objects.model[i].facenormals[whichhit],0,objects.rotation[k],0)*.01;
- player[k].coords.y=lowpointtarget.y-.07;
- player[k].currentoffset=(flatfacing-player[k].coords)/player[k].scale;
-
- if(j>10||!player[k].isRun()){
- if(player[k].targetanimation==jumpdownanim||player[k].targetanimation==jumpupanim){
- if(k==0)OPENAL_SetPaused(channels[whooshsound], true);
- }
- float gLoc[3];
- float vel[3];
- gLoc[0]=player[k].coords.x;
- gLoc[1]=player[k].coords.y;
- gLoc[2]=player[k].coords.z;
- vel[0]=player[k].velocity.x;
- vel[1]=player[k].velocity.y;
- vel[2]=player[k].velocity.z;
- PlaySoundEx( jumpsound, samp[jumpsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel);
- OPENAL_SetVolume(channels[jumpsound], 128);
- OPENAL_SetPaused(channels[jumpsound], false);
-
- lowpointtarget=DoRotation(objects.model[i].facenormals[whichhit],0,objects.rotation[i],0);
- player[k].rotation=-asin(0-lowpointtarget.x);
- player[k].rotation*=360/6.28;
- if(lowpointtarget.z<0)player[k].rotation=180-player[k].rotation;
- player[k].targetrotation=player[k].rotation;
- player[k].lowrotation=player[k].rotation;
-
- //player[k].velocity=lowpointtarget*.03;
- player[k].velocity=0;
-
- if(/*(player[k].isRun()||player[k].targetanimation==sneakanim||player[k].targetanimation==walkanim)||*/player[k].targetanimation==jumpupanim){
- //player[k].currentanimation=climbanim;
- player[k].targetanimation=climbanim;
- player[k].jumppower=0;
- player[k].jumpclimb=1;
- }
- player[k].transspeed=6;
- player[k].target=0;
-
- //player[k].currentframe=1;
- player[k].targetframe=1;
- if(j>25){
- //player[k].currentframe=0;
- player[k].targetframe=0;
- //player[k].currentanimation=hanganim;
- player[k].targetanimation=hanganim;
- player[k].jumppower=0;
- }
- }
- j=100;
- }
- }
- }
- }
- //}
- }
- }
- }
- }
- }
- if(player[k].collide<=0){
- if(!player[k].onterrain&&player[k].targetanimation!=jumpupanim&&player[k].targetanimation!=jumpdownanim&&player[k].targetanimation!=climbanim&&player[k].targetanimation!=hanganim&&!player[k].isWallJump()&&!player[k].isFlip()){
- if(player[k].currentanimation!=climbanim&&player[k].currentanimation!=tempanim&&player[k].targetanimation!=backhandspringanim&&(player[k].targetanimation!=rollanim||player[k].targetframe<2||player[k].targetframe>6)){
- if(player[k].targetanimation==staggerbackhighanim||player[k].targetanimation==staggerbackhardanim)player[k].RagDoll(0);
- player[k].targetanimation=jumpdownanim;
- player[k].targetframe=0;
- player[k].target=0;
-
- float gLoc[3];
- float vel[3];
- gLoc[0]=player[k].coords.x;
- gLoc[1]=player[k].coords.y;
- gLoc[2]=player[k].coords.z;
- vel[0]=player[k].velocity.x;
- vel[1]=player[k].velocity.y;
- vel[2]=player[k].velocity.z;
- if(k==0){
- PlaySoundEx( whooshsound, samp[whooshsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[whooshsound], gLoc, vel);
- OPENAL_SetVolume(channels[whooshsound], 128);
- OPENAL_SetPaused(channels[whooshsound], false);
- }
- }
- player[k].velocity.y+=gravity;
- }
- }
- }
- }
- player[k].realoldcoords=player[k].coords;
- }
-
- static XYZ oldviewer;
-
- if(indialogue==-1){
- player[0].forwardkeydown=Input::isKeyDown(forwardkey);
- player[0].leftkeydown=Input::isKeyDown(leftkey);
- player[0].backkeydown=Input::isKeyDown(backkey);
- player[0].rightkeydown=Input::isKeyDown(rightkey);
- player[0].jumpkeydown=Input::isKeyDown(jumpkey);
- player[0].crouchkeydown=Input::isKeyDown(crouchkey);
- player[0].drawkeydown=Input::isKeyDown(drawkey);
- player[0].throwkeydown=Input::isKeyDown(throwkey);
- }
- else
- {
- player[0].forwardkeydown=0;
- player[0].leftkeydown=0;
- player[0].backkeydown=0;
- player[0].rightkeydown=0;
- player[0].jumpkeydown=0;
- player[0].crouchkeydown=0;
- player[0].drawkeydown=0;
- player[0].throwkeydown=0;
- }
-
- if(!player[0].jumpkeydown)player[0].jumpclimb=0;
-
-
- static bool endkeydown;
- if(indialogue!=-1){
- cameramode=1;
- if(directing){
- facing=0;
- facing.z=-1;
-
- facing=DoRotation(facing,-rotation2,0,0);
- facing=DoRotation(facing,0,0-rotation,0);
-
- flatfacing=0;
- flatfacing.z=-1;
-
- flatfacing=DoRotation(flatfacing,0,-rotation,0);
-
- if(Input::isKeyDown(forwardkey))viewer+=facing*multiplier*4;
- if(Input::isKeyDown(backkey))viewer-=facing*multiplier*4;
- if(Input::isKeyDown(leftkey))viewer+=DoRotation(flatfacing*multiplier,0,90,0)*4;
- if(Input::isKeyDown(rightkey))viewer+=DoRotation(flatfacing*multiplier,0,-90,0)*4;
- if(Input::isKeyDown(jumpkey))viewer.y+=multiplier*4;
- if(Input::isKeyDown(crouchkey))viewer.y-=multiplier*4;
- if(!endkeydown&&(Input::isKeyDown(SDLK_1)||Input::isKeyDown(SDLK_2)||Input::isKeyDown(SDLK_3)||Input::isKeyDown(SDLK_4)||Input::isKeyDown(SDLK_5)
- ||Input::isKeyDown(SDLK_6)||Input::isKeyDown(SDLK_7)||Input::isKeyDown(SDLK_8)||Input::isKeyDown(SDLK_9)||Input::isKeyDown(SDLK_0)
- ||Input::isKeyDown(SDLK_MINUS))){
- int whichend;
- if(Input::isKeyDown(SDLK_1))whichend=1;
- if(Input::isKeyDown(SDLK_2))whichend=2;
- if(Input::isKeyDown(SDLK_3))whichend=3;
- if(Input::isKeyDown(SDLK_4))whichend=4;
- if(Input::isKeyDown(SDLK_5))whichend=5;
- if(Input::isKeyDown(SDLK_6))whichend=6;
- if(Input::isKeyDown(SDLK_7))whichend=7;
- if(Input::isKeyDown(SDLK_8))whichend=8;
- if(Input::isKeyDown(SDLK_9))whichend=9;
- if(Input::isKeyDown(SDLK_0))whichend=0;
- if(Input::isKeyDown(SDLK_MINUS))whichend=-1;
- if(whichend!=-1){
- participantfocus[whichdialogue][indialogue]=whichend;
- participantlocation[whichdialogue][whichend]=player[whichend].coords;
- participantrotation[whichdialogue][whichend]=player[whichend].rotation;
- }
- if(whichend==-1){
- participantfocus[whichdialogue][indialogue]=-1;
- }
- if(player[participantfocus[whichdialogue][indialogue]].dead){
- indialogue=-1;
- directing=0;
- cameramode=0;
- }
- dialoguecamera[whichdialogue][indialogue]=viewer;
- dialoguecamerarotation[whichdialogue][indialogue]=rotation;
- dialoguecamerarotation2[whichdialogue][indialogue]=rotation2;
- indialogue++;
- if(indialogue<numdialogueboxes[whichdialogue]){
- if(dialogueboxsound[whichdialogue][indialogue]!=0){
- static float gLoc[3];
- static float vel[3];
- XYZ temppos;
- temppos=player[participantfocus[whichdialogue][indialogue]].coords;
- temppos=temppos-viewer;
- Normalise(&temppos);
- temppos+=viewer;
-
- gLoc[0]=temppos.x;
- gLoc[1]=temppos.y;
- gLoc[2]=temppos.z;vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- int whichsoundplay;
- if(dialogueboxsound[whichdialogue][indialogue]==1)whichsoundplay=rabbitchitter;
- if(dialogueboxsound[whichdialogue][indialogue]==2)whichsoundplay=rabbitchitter2;
- if(dialogueboxsound[whichdialogue][indialogue]==3)whichsoundplay=rabbitpainsound;
- if(dialogueboxsound[whichdialogue][indialogue]==4)whichsoundplay=rabbitpain1sound;
- if(dialogueboxsound[whichdialogue][indialogue]==5)whichsoundplay=rabbitattacksound;
- if(dialogueboxsound[whichdialogue][indialogue]==6)whichsoundplay=rabbitattack2sound;
- if(dialogueboxsound[whichdialogue][indialogue]==7)whichsoundplay=rabbitattack3sound;
- if(dialogueboxsound[whichdialogue][indialogue]==8)whichsoundplay=rabbitattack4sound;
- if(dialogueboxsound[whichdialogue][indialogue]==9)whichsoundplay=growlsound;
- if(dialogueboxsound[whichdialogue][indialogue]==10)whichsoundplay=growl2sound;
- if(dialogueboxsound[whichdialogue][indialogue]==11)whichsoundplay=snarlsound;
- if(dialogueboxsound[whichdialogue][indialogue]==12)whichsoundplay=snarl2sound;
- if(dialogueboxsound[whichdialogue][indialogue]==13)whichsoundplay=barksound;
- if(dialogueboxsound[whichdialogue][indialogue]==14)whichsoundplay=bark2sound;
- if(dialogueboxsound[whichdialogue][indialogue]==15)whichsoundplay=bark3sound;
- if(dialogueboxsound[whichdialogue][indialogue]==16)whichsoundplay=barkgrowlsound;
- if(dialogueboxsound[whichdialogue][indialogue]==-1)whichsoundplay=fireendsound;
- if(dialogueboxsound[whichdialogue][indialogue]==-2)whichsoundplay=firestartsound;
- if(dialogueboxsound[whichdialogue][indialogue]==-3)whichsoundplay=consolesuccesssound;
- if(dialogueboxsound[whichdialogue][indialogue]==-4)whichsoundplay=consolefailsound;
- PlaySoundEx( whichsoundplay, samp[whichsoundplay], NULL, true);
- OPENAL_3D_SetAttributes(channels[whichsoundplay], gLoc, vel);
- OPENAL_SetVolume(channels[whichsoundplay], 256);
- OPENAL_SetPaused(channels[whichsoundplay], false);
- }
- }
-
- for(j=0;j<numplayers;j++){
- participantfacing[whichdialogue][indialogue][j]=participantfacing[whichdialogue][indialogue-1][j];
- }
-
- endkeydown=1;
- }
- if((Input::isKeyDown(SDLK_KP1)||Input::isKeyDown(SDLK_KP2)||Input::isKeyDown(SDLK_KP3)||Input::isKeyDown(SDLK_KP4)||Input::isKeyDown(SDLK_KP5)
- ||Input::isKeyDown(SDLK_KP6)||Input::isKeyDown(SDLK_KP7)||Input::isKeyDown(SDLK_KP8)||Input::isKeyDown(SDLK_KP9)||Input::isKeyDown(SDLK_KP0)
- )){
- int whichend;
- if(Input::isKeyDown(SDLK_KP1))whichend=1;
- if(Input::isKeyDown(SDLK_KP2))whichend=2;
- if(Input::isKeyDown(SDLK_KP3))whichend=3;
- if(Input::isKeyDown(SDLK_KP4))whichend=4;
- if(Input::isKeyDown(SDLK_KP5))whichend=5;
- if(Input::isKeyDown(SDLK_KP6))whichend=6;
- if(Input::isKeyDown(SDLK_KP7))whichend=7;
- if(Input::isKeyDown(SDLK_KP8))whichend=8;
- if(Input::isKeyDown(SDLK_KP9))whichend=9;
- if(Input::isKeyDown(SDLK_KP0))whichend=0;
- participantfacing[whichdialogue][indialogue][whichend]=facing;
- }
- if(!Input::isKeyDown(SDLK_1)&&!Input::isKeyDown(SDLK_2)&&!Input::isKeyDown(SDLK_3)&&!Input::isKeyDown(SDLK_4)&&!Input::isKeyDown(SDLK_5)
- &&!Input::isKeyDown(SDLK_6)&&!Input::isKeyDown(SDLK_7)&&!Input::isKeyDown(SDLK_8)&&!Input::isKeyDown(SDLK_9)&&!Input::isKeyDown(SDLK_0)
- &&!Input::isKeyDown(SDLK_MINUS)){
- endkeydown=0;
- }
- if(indialogue>=numdialogueboxes[whichdialogue]){
- indialogue=-1;
- directing=0;
- cameramode=0;
- }
- }
- if(!directing){
- OPENAL_SetPaused(channels[whooshsound], true);
- viewer=dialoguecamera[whichdialogue][indialogue];
- if(viewer.y<terrain.getHeight(viewer.x,viewer.z)+.1){
- viewer.y=terrain.getHeight(viewer.x,viewer.z)+.1;
- }
- rotation=dialoguecamerarotation[whichdialogue][indialogue];
- rotation2=dialoguecamerarotation2[whichdialogue][indialogue];
- if(dialoguetime>0.5)
- if((!endkeydown&&(Input::isKeyDown(SDLK_1)||Input::isKeyDown(SDLK_2)||Input::isKeyDown(SDLK_3)||Input::isKeyDown(SDLK_4)||Input::isKeyDown(SDLK_5)
- ||Input::isKeyDown(SDLK_6)||Input::isKeyDown(SDLK_7)||Input::isKeyDown(SDLK_8)||Input::isKeyDown(SDLK_9)||Input::isKeyDown(SDLK_0)
- ||Input::isKeyDown(SDLK_MINUS)))||(Input::isKeyDown(attackkey)&&!oldbuttondialogue)){
- indialogue++;
- endkeydown=1;
- if(indialogue<numdialogueboxes[whichdialogue]){
- if(dialogueboxsound[whichdialogue][indialogue]!=0){
- static float gLoc[3];
- static float vel[3];
- XYZ temppos;
- temppos=player[participantfocus[whichdialogue][indialogue]].coords;
- temppos=temppos-viewer;
- Normalise(&temppos);
- temppos+=viewer;
-
- gLoc[0]=temppos.x;
- gLoc[1]=temppos.y;
- gLoc[2]=temppos.z;vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- int whichsoundplay;
- if(dialogueboxsound[whichdialogue][indialogue]==1)whichsoundplay=rabbitchitter;
- if(dialogueboxsound[whichdialogue][indialogue]==2)whichsoundplay=rabbitchitter2;
- if(dialogueboxsound[whichdialogue][indialogue]==3)whichsoundplay=rabbitpainsound;
- if(dialogueboxsound[whichdialogue][indialogue]==4)whichsoundplay=rabbitpain1sound;
- if(dialogueboxsound[whichdialogue][indialogue]==5)whichsoundplay=rabbitattacksound;
- if(dialogueboxsound[whichdialogue][indialogue]==6)whichsoundplay=rabbitattack2sound;
- if(dialogueboxsound[whichdialogue][indialogue]==7)whichsoundplay=rabbitattack3sound;
- if(dialogueboxsound[whichdialogue][indialogue]==8)whichsoundplay=rabbitattack4sound;
- if(dialogueboxsound[whichdialogue][indialogue]==9)whichsoundplay=growlsound;
- if(dialogueboxsound[whichdialogue][indialogue]==10)whichsoundplay=growl2sound;
- if(dialogueboxsound[whichdialogue][indialogue]==11)whichsoundplay=snarlsound;
- if(dialogueboxsound[whichdialogue][indialogue]==12)whichsoundplay=snarl2sound;
- if(dialogueboxsound[whichdialogue][indialogue]==13)whichsoundplay=barksound;
- if(dialogueboxsound[whichdialogue][indialogue]==14)whichsoundplay=bark2sound;
- if(dialogueboxsound[whichdialogue][indialogue]==15)whichsoundplay=bark3sound;
- if(dialogueboxsound[whichdialogue][indialogue]==16)whichsoundplay=barkgrowlsound;
- if(dialogueboxsound[whichdialogue][indialogue]==-1)whichsoundplay=fireendsound;
- if(dialogueboxsound[whichdialogue][indialogue]==-2)whichsoundplay=firestartsound;
- if(dialogueboxsound[whichdialogue][indialogue]==-3)whichsoundplay=consolesuccesssound;
- if(dialogueboxsound[whichdialogue][indialogue]==-4)whichsoundplay=consolefailsound;
- if(dialogueboxsound[whichdialogue][indialogue]==-6)whichsoundplay=alarmsound;
- if(dialogueboxsound[whichdialogue][indialogue]!=-5){
- PlaySoundEx( whichsoundplay, samp[whichsoundplay], NULL, true);
- OPENAL_3D_SetAttributes(channels[whichsoundplay], gLoc, vel);
- OPENAL_SetVolume(channels[whichsoundplay], 256);
- OPENAL_SetPaused(channels[whichsoundplay], false);
- }
- if(dialogueboxsound[whichdialogue][indialogue]==-5){
- hotspot[numhotspots]=player[0].coords;
- hotspotsize[numhotspots]=10;
- hotspottype[numhotspots]=-1;
-
- numhotspots++;
- }
- if(dialogueboxsound[whichdialogue][indialogue]==-6){
- hostile=1;
- }
-
- if(player[participantfocus[whichdialogue][indialogue]].dead){
- indialogue=-1;
- directing=0;
- cameramode=0;
- }
- }
- }
- }
- if(!Input::isKeyDown(SDLK_1)&&!Input::isKeyDown(SDLK_2)&&!Input::isKeyDown(SDLK_3)&&!Input::isKeyDown(SDLK_4)&&!Input::isKeyDown(SDLK_5)
- &&!Input::isKeyDown(SDLK_6)&&!Input::isKeyDown(SDLK_7)&&!Input::isKeyDown(SDLK_8)&&!Input::isKeyDown(SDLK_9)&&!Input::isKeyDown(SDLK_0)
- &&!Input::isKeyDown(SDLK_MINUS)){
- endkeydown=0;
- }
- if(indialogue>=numdialogueboxes[whichdialogue]){
- indialogue=-1;
- directing=0;
- cameramode=0;
- if(dialoguetype[whichdialogue]>19&&dialoguetype[whichdialogue]<30){
- hostile=1;
- }
- if(dialoguetype[whichdialogue]>29&&dialoguetype[whichdialogue]<40){
- windialogue=1;
- }
- if(dialoguetype[whichdialogue]>49&&dialoguetype[whichdialogue]<60){
- hostile=1;
- for(i=1;i<numplayers;i++){
- player[i].aitype = attacktypecutoff;
- }
- }
- }
- }
- }
-
- if(!Input::isKeyDown(attackkey))oldbuttondialogue=0;
- else oldbuttondialogue=1;
-
- static float keyrefreshdelay=0,bigrefreshdelay=0;
-
- if(!player[0].jumpkeydown){
- player[0].jumptogglekeydown=0;
- }
- if(player[0].jumpkeydown&&player[0].targetanimation!=jumpupanim&&player[0].targetanimation!=jumpdownanim&&!player[0].isFlip())player[0].jumptogglekeydown=1;
-
-
- dialoguetime+=multiplier;
- skybox.cloudmove+=multiplier;
- hawkrotation+=multiplier*25;
- realhawkcoords=0;
- realhawkcoords.x=25;
- realhawkcoords=DoRotation(realhawkcoords,0,hawkrotation,0)+hawkcoords;
- hawkcalldelay-=multiplier/2;
-
- if(hawkcalldelay<=0)
- {
- static float gLoc[3];
- static float vel[3];
- gLoc[0]=realhawkcoords.x;
- gLoc[1]=realhawkcoords.y;
- gLoc[2]=realhawkcoords.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- PlaySoundEx( hawksound, samp[hawksound], NULL, true);
- OPENAL_3D_SetAttributes(channels[hawksound], gLoc, vel);
- OPENAL_SetVolume(channels[hawksound], 128);
- OPENAL_SetPaused(channels[hawksound], false);
-
- hawkcalldelay=16+abs(Random()%8);
- }
- static float temptexdetail;
-
-
- if(Input::isKeyDown(SDLK_h)&&debugmode){
- player[0].damagetolerance=200000;
- player[0].damage=0;
- player[0].burnt=0;
- player[0].permanentdamage=0;
- player[0].superpermanentdamage=0;
- }
-
- if(Input::isKeyDown(SDLK_j)&&!envtogglekeydown&&debugmode){
- environment++;
- if(environment>2)environment=0;
- Setenvironment(environment);
-
- envtogglekeydown=1;
- }
-
-
- if(!Input::isKeyDown(SDLK_j)){
- envtogglekeydown=0;
- }
-
- if(Input::isKeyDown(SDLK_c)&&!cameratogglekeydown&&debugmode){
- cameramode=1-cameramode;
- cameratogglekeydown=1;
- }
-
- if(!Input::isKeyDown(SDLK_c)){
- cameratogglekeydown=0;
- }
-
- if(Input::isKeyDown(SDLK_x)&&!Input::isKeyDown(SDLK_LSHIFT)&&!detailtogglekeydown&&debugmode){
- if(player[0].num_weapons>0){
- if(weapons.type[player[0].weaponids[0]]==sword)weapons.type[player[0].weaponids[0]]=staff;
- else if(weapons.type[player[0].weaponids[0]]==staff)weapons.type[player[0].weaponids[0]]=knife;
- else weapons.type[player[0].weaponids[0]]=sword;
- if(weapons.type[player[0].weaponids[0]]==sword){
- weapons.mass[player[0].weaponids[0]]=1.5;
- weapons.tipmass[player[0].weaponids[0]]=1;
- weapons.length[player[0].weaponids[0]]=.8;
- }
- if(weapons.type[player[0].weaponids[0]]==staff){
- weapons.mass[player[0].weaponids[0]]=2;
- weapons.tipmass[player[0].weaponids[0]]=1;
- weapons.length[player[0].weaponids[0]]=1.5;
- }
-
- if(weapons.type[player[0].weaponids[0]]==knife){
- weapons.mass[player[0].weaponids[0]]=1;
- weapons.tipmass[player[0].weaponids[0]]=1.2;
- weapons.length[player[0].weaponids[0]]=.25;
- }
- }
- detailtogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_x)&&Input::isKeyDown(SDLK_LSHIFT)&&!detailtogglekeydown&&debugmode){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- if(closest!=-1){
- if(player[closest].num_weapons)
- {
- if(weapons.type[player[closest].weaponids[0]]==sword)weapons.type[player[closest].weaponids[0]]=staff;
- else if(weapons.type[player[closest].weaponids[0]]==staff)weapons.type[player[closest].weaponids[0]]=knife;
- else weapons.type[player[closest].weaponids[0]]=sword;
- if(weapons.type[player[closest].weaponids[0]]==sword){
- weapons.mass[player[closest].weaponids[0]]=1.5;
- weapons.tipmass[player[closest].weaponids[0]]=1;
- weapons.length[player[closest].weaponids[0]]=.8;
- }
- if(weapons.type[player[0].weaponids[0]]==staff){
- weapons.mass[player[0].weaponids[0]]=2;
- weapons.tipmass[player[0].weaponids[0]]=1;
- weapons.length[player[0].weaponids[0]]=1.5;
- }
- if(weapons.type[player[closest].weaponids[0]]==knife){
- weapons.mass[player[closest].weaponids[0]]=1;
- weapons.tipmass[player[closest].weaponids[0]]=1.2;
- weapons.length[player[closest].weaponids[0]]=.25;
- }
- }
- if(!player[closest].num_weapons)
- {
- player[closest].weaponids[0]=weapons.numweapons;
- weapons.owner[weapons.numweapons]=closest;
- weapons.type[weapons.numweapons]=knife;
- weapons.damage[weapons.numweapons]=0;
- weapons.numweapons++;
- player[closest].num_weapons=1;
- if(weapons.type[player[closest].weaponids[0]]==sword){
- weapons.mass[player[closest].weaponids[0]]=1.5;
- weapons.tipmass[player[closest].weaponids[0]]=1;
- weapons.length[player[closest].weaponids[0]]=.8;
- }
- if(weapons.type[player[closest].weaponids[0]]==knife){
- weapons.mass[player[closest].weaponids[0]]=1;
- weapons.tipmass[player[closest].weaponids[0]]=1.2;
- weapons.length[player[closest].weaponids[0]]=.25;
- }
- }
- }
- detailtogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_u)&&debugmode){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
-
- player[closest].rotation+=multiplier*50;
- player[closest].targetrotation=player[closest].rotation;
- }
-
-
- if(Input::isKeyDown(SDLK_o)&&!Input::isKeyDown(SDLK_LSHIFT)&&debugmode){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- if(Input::isKeyDown(SDLK_LCTRL))closest=0;
-
- if(closest!=-1){
- player[closest].whichskin++;
- if(player[closest].whichskin>9)player[closest].whichskin=0;
- if(player[closest].whichskin>2&&player[closest].creature==wolftype)player[closest].whichskin=0;
-
- 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){
- for(i=0;i<player[closest].numclothes;i++){
- tintr=player[closest].clothestintr[i];
- tintg=player[closest].clothestintg[i];
- tintb=player[closest].clothestintb[i];
- AddClothes((char *)player[closest].clothes[i],0,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- player[closest].DoMipmaps(5,0,0,player[closest].skeleton.skinsize,player[closest].skeleton.skinsize);
- }
-
- detailtogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_o)&&Input::isKeyDown(SDLK_LSHIFT)&&debugmode){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- if(closest!=-1){
- if(player[closest].creature==wolftype){
- headprop=player[closest].proportionhead.x/1.1;
- bodyprop=player[closest].proportionbody.x/1.1;
- armprop=player[closest].proportionarms.x/1.1;
- legprop=player[closest].proportionlegs.x/1.1;
- }
-
- if(player[closest].creature==rabbittype){
- headprop=player[closest].proportionhead.x/1.2;
- bodyprop=player[closest].proportionbody.x/1.05;
- armprop=player[closest].proportionarms.x/1.00;
- legprop=player[closest].proportionlegs.x/1.1;
- }
-
-
- if(player[closest].creature==rabbittype){
- player[closest].skeleton.id=closest;
- player[closest].skeleton.Load((char *)":Data:Skeleton:Basic Figure Wolf",(char *)":Data:Skeleton:Basic Figure Wolf Low",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Wolf.solid",(char *)":Data:Models:Wolf2.solid",(char *)":Data:Models:Wolf3.solid",(char *)":Data:Models:Wolf4.solid",(char *)":Data:Models:Wolf5.solid",(char *)":Data:Models:Wolf6.solid",(char *)":Data:Models:Wolf7.solid",(char *)":Data:Models:Wolflow.solid",(char *)":Data:Models:Belt.solid",0);
- LoadTextureSave(":Data:Textures:Wolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[closest],&player[closest].skeleton.skinsize);
- player[closest].whichskin=0;
- player[closest].creature=wolftype;
-
- player[closest].proportionhead=1.1;
- player[closest].proportionbody=1.1;
- player[closest].proportionarms=1.1;
- player[closest].proportionlegs=1.1;
- player[closest].proportionlegs.y=1.1;
- player[closest].scale=.23*5*player[0].scale;
-
- player[closest].damagetolerance=300;
- }
- else
- {
- player[closest].skeleton.id=closest;
- player[closest].skeleton.Load((char *)":Data:Skeleton:Basic Figure",(char *)":Data:Skeleton:Basic Figurelow",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Body.solid",(char *)":Data:Models:Body2.solid",(char *)":Data:Models:Body3.solid",(char *)":Data:Models:Body4.solid",(char *)":Data:Models:Body5.solid",(char *)":Data:Models:Body6.solid",(char *)":Data:Models:Body7.solid",(char *)":Data:Models:Bodylow.solid",(char *)":Data:Models:Belt.solid",1);
- LoadTextureSave(":Data:Textures:Fur3.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- player[closest].whichskin=0;
- player[closest].creature=rabbittype;
-
- player[closest].proportionhead=1.2;
- player[closest].proportionbody=1.05;
- player[closest].proportionarms=1.00;
- player[closest].proportionlegs=1.1;
- player[closest].proportionlegs.y=1.05;
- player[closest].scale=.2*5*player[0].scale;
-
- player[closest].damagetolerance=200;
- }
-
- if(player[closest].creature==wolftype){
- player[closest].proportionhead=1.1*headprop;
- player[closest].proportionbody=1.1*bodyprop;
- player[closest].proportionarms=1.1*armprop;
- player[closest].proportionlegs=1.1*legprop;
- }
-
- if(player[closest].creature==rabbittype){
- player[closest].proportionhead=1.2*headprop;
- player[closest].proportionbody=1.05*bodyprop;
- player[closest].proportionarms=1.00*armprop;
- player[closest].proportionlegs=1.1*legprop;
- player[closest].proportionlegs.y=1.05*legprop;
- }
-
- }
- detailtogglekeydown=1;
- }
-
- if(!Input::isKeyDown(SDLK_x)){
- detailtogglekeydown=0;
- }
-
- if(Input::isKeyDown(SDLK_b)&&!slomotogglekeydown&&!Input::isKeyDown(SDLK_LSHIFT)&&debugmode){
- slomo=1-slomo;
- slomodelay=1000;
- slomotogglekeydown=1;
- }
-
-
- if(((Input::isKeyDown(SDLK_i)&&!Input::isKeyDown(SDLK_LSHIFT)))&&!explodetogglekeydown&&debugmode){
- int closest=-1;
- float closestdist=-1;
- float distance;
- XYZ flatfacing2,flatvelocity2;
- XYZ blah;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(distance<144&&!player[i].headless)
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- blah = player[i].coords;
- }
- }
-
- if(closest!=-1){
- XYZ headspurtdirection;
- int i = player[closest].skeleton.jointlabels[head];
- for(k=0;k<player[closest].skeleton.num_joints; k++){
- if(!player[closest].skeleton.free)flatvelocity2=player[closest].velocity;
- if(player[closest].skeleton.free)flatvelocity2=player[closest].skeleton.joints[i].velocity;
- if(!player[closest].skeleton.free)flatfacing2=DoRotation(DoRotation(DoRotation(player[closest].skeleton.joints[i].position,0,0,player[closest].tilt),player[closest].tilt2,0,0),0,player[closest].rotation,0)*player[closest].scale+player[closest].coords;
- if(player[closest].skeleton.free)flatfacing2=player[closest].skeleton.joints[i].position*player[closest].scale+player[closest].coords;
- flatvelocity2.x+=(float)(abs(Random()%100)-50)/10;
- flatvelocity2.y+=(float)(abs(Random()%100)-50)/10;
- flatvelocity2.z+=(float)(abs(Random()%100)-50)/10;
- headspurtdirection=player[closest].skeleton.joints[player[closest].skeleton.jointlabels[head]].position-player[closest].skeleton.joints[player[closest].skeleton.jointlabels[neck]].position;
- Normalise(&headspurtdirection);
- Sprite::MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, .6, 1);
- flatvelocity2+=headspurtdirection*8;
- Sprite::MakeSprite(bloodsprite, flatfacing2,flatvelocity2/2, 1,1,1, .16, 1);
- }
- Sprite::MakeSprite(cloudsprite, flatfacing2,flatvelocity2*0, .6,0,0, 1, .5);
-
- float gLoc[3];
- float vel[3];
- gLoc[0]=blah.x;
- gLoc[1]=blah.y;
- gLoc[2]=blah.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- PlaySoundEx( splattersound, samp[splattersound], NULL, true);
- OPENAL_3D_SetAttributes(channels[splattersound], gLoc, vel);
- OPENAL_SetVolume(channels[splattersound], 256);
- OPENAL_SetPaused(channels[splattersound], false);
-
- PlaySoundEx( breaksound2, samp[breaksound2], NULL, true);
- OPENAL_3D_SetAttributes(channels[breaksound2], gLoc, vel);
- OPENAL_SetVolume(channels[breaksound2], 100);
- OPENAL_SetPaused(channels[breaksound2], false);
-
- if(player[closest].skeleton.free==2)player[closest].skeleton.free=0;
- player[closest].RagDoll(0);
- player[closest].dead=2;
- player[closest].headless=1;
- player[closest].DoBloodBig(3,165);
-
- camerashake+=.3;
- }
-
- explodetogglekeydown=1;
- }
-
- if(((Input::isKeyDown(SDLK_i)&&Input::isKeyDown(SDLK_LSHIFT)))&&!explodetogglekeydown&&debugmode){
- int closest=-1;
- float closestdist=-1;
- float distance;
- XYZ flatfacing2,flatvelocity2;
- XYZ blah;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(distance<144)
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- blah=player[i].coords;
- }
- }
-
- if(closest!=-1){
- float gLoc[3];
- float vel[3];
- gLoc[0]=blah.x;
- gLoc[1]=blah.y;
- gLoc[2]=blah.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
-
- PlaySoundEx( splattersound, samp[splattersound], NULL, true);
- OPENAL_3D_SetAttributes(channels[splattersound], gLoc, vel);
- OPENAL_SetVolume(channels[splattersound], 256);
- OPENAL_SetPaused(channels[splattersound], false);
-
- PlaySoundEx( breaksound2, samp[breaksound2], NULL, true);
- OPENAL_3D_SetAttributes(channels[breaksound2], gLoc, vel);
- OPENAL_SetVolume(channels[breaksound2], 600);
- OPENAL_SetPaused(channels[breaksound2], false);
-
- for(i=0;i<player[closest].skeleton.num_joints; i++){
- if(!player[closest].skeleton.free)flatvelocity2=player[closest].velocity;
- if(player[closest].skeleton.free)flatvelocity2=player[closest].skeleton.joints[i].velocity;
- if(!player[closest].skeleton.free)flatfacing2=DoRotation(DoRotation(DoRotation(player[closest].skeleton.joints[i].position,0,0,player[closest].tilt),player[closest].tilt2,0,0),0,player[closest].rotation,0)*player[closest].scale+player[closest].coords;
- if(player[closest].skeleton.free)flatfacing2=player[closest].skeleton.joints[i].position*player[closest].scale+player[closest].coords;
- flatvelocity2.x+=(float)(abs(Random()%100)-50)/10;
- flatvelocity2.y+=(float)(abs(Random()%100)-50)/10;
- flatvelocity2.z+=(float)(abs(Random()%100)-50)/10;
- Sprite::MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, 3, 1);
- Sprite::MakeSprite(bloodsprite, flatfacing2,flatvelocity2, 1,1,1, .3, 1);
- Sprite::MakeSprite(cloudsprite, flatfacing2,flatvelocity2*0, .6,0,0, 1, .5);
- }
-
- for(i=0;i<player[closest].skeleton.num_joints; i++){
- if(!player[closest].skeleton.free)flatvelocity2=player[closest].velocity;
- if(player[closest].skeleton.free)flatvelocity2=player[closest].skeleton.joints[i].velocity;
- if(!player[closest].skeleton.free)flatfacing2=DoRotation(DoRotation(DoRotation(player[closest].skeleton.joints[i].position,0,0,player[closest].tilt),player[closest].tilt2,0,0),0,player[closest].rotation,0)*player[closest].scale+player[closest].coords;
- if(player[closest].skeleton.free)flatfacing2=player[closest].skeleton.joints[i].position*player[closest].scale+player[closest].coords;
- flatvelocity2.x+=(float)(abs(Random()%100)-50)/10;
- flatvelocity2.y+=(float)(abs(Random()%100)-50)/10;
- flatvelocity2.z+=(float)(abs(Random()%100)-50)/10;
- Sprite::MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, 3, 1);
- Sprite::MakeSprite(bloodsprite, flatfacing2,flatvelocity2, 1,1,1, .4, 1);
- }
-
- for(i=0;i<player[closest].skeleton.num_joints; i++){
- if(!player[closest].skeleton.free)flatvelocity2=player[closest].velocity;
- if(player[closest].skeleton.free)flatvelocity2=player[closest].skeleton.joints[i].velocity;
- if(!player[closest].skeleton.free)flatfacing2=DoRotation(DoRotation(DoRotation(player[closest].skeleton.joints[i].position,0,0,player[closest].tilt),player[closest].tilt2,0,0),0,player[closest].rotation,0)*player[closest].scale+player[closest].coords;
- if(player[closest].skeleton.free)flatfacing2=player[closest].skeleton.joints[i].position*player[closest].scale+player[closest].coords;
- flatvelocity2.x+=(float)(abs(Random()%100)-50)/10;
- flatvelocity2.y+=(float)(abs(Random()%100)-50)/10;
- flatvelocity2.z+=(float)(abs(Random()%100)-50)/10;
- Sprite::MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2*2, 1,1,1, 3, 1);
- Sprite::MakeSprite(bloodsprite, flatfacing2,flatvelocity2*2, 1,1,1, .4, 1);
- }
-
- for(i=0;i<player[closest].skeleton.num_joints; i++){
- if(!player[closest].skeleton.free)flatvelocity2=player[closest].velocity;
- if(player[closest].skeleton.free)flatvelocity2=player[closest].skeleton.joints[i].velocity;
- if(!player[closest].skeleton.free)flatfacing2=DoRotation(DoRotation(DoRotation(player[closest].skeleton.joints[i].position,0,0,player[closest].tilt),player[closest].tilt2,0,0),0,player[closest].rotation,0)*player[closest].scale+player[closest].coords;
- if(player[closest].skeleton.free)flatfacing2=player[closest].skeleton.joints[i].position*player[closest].scale+player[closest].coords;
- flatvelocity2.x+=(float)(abs(Random()%100)-50)/10;
- flatvelocity2.y+=(float)(abs(Random()%100)-50)/10;
- flatvelocity2.z+=(float)(abs(Random()%100)-50)/10;
- Sprite::MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2*2, 1,1,1, 3, 1);
- Sprite::MakeSprite(bloodsprite, flatfacing2,flatvelocity2*2, 1,1,1, .4, 1);
- }
-
- XYZ temppos;
- for(j=0;j<numplayers; j++){
- if(j!=closest){
- if(findDistancefast(&player[j].coords,&player[closest].coords)<25){
- player[j].DoDamage((25-findDistancefast(&player[j].coords,&player[closest].coords))*60);
- if(player[j].skeleton.free==2)player[j].skeleton.free=1;
- player[j].skeleton.longdead=0;
- player[j].RagDoll(0);
- for(i=0;i<player[j].skeleton.num_joints; i++){
- temppos=player[j].skeleton.joints[i].position+player[j].coords;
- if(findDistancefast(&temppos,&player[closest].coords)<25){
- flatvelocity2=temppos-player[closest].coords;
- Normalise(&flatvelocity2);
- player[j].skeleton.joints[i].velocity+=flatvelocity2*((20-findDistancefast(&temppos,&player[closest].coords))*20);
- }
- }
- }
- }
- }
-
- player[closest].DoDamage(10000);
- player[closest].RagDoll(0);
- player[closest].dead=2;
- player[closest].coords=20;
- player[closest].skeleton.free=2;
-
- camerashake+=.6;
-
- }
-
- explodetogglekeydown=1;
- }
-
- if(!Input::isKeyDown(SDLK_i)){
- explodetogglekeydown=0;
- }
-
- if(!Input::isKeyDown(SDLK_b)&&!Input::isKeyDown(SDLK_f)&&!Input::isKeyDown(SDLK_k)&&!Input::isKeyDown(SDLK_s)){
- slomotogglekeydown=0;
- }
-
-
- if(Input::isKeyDown(SDLK_f)&&!slomotogglekeydown&&debugmode){
- player[0].onfire=1-player[0].onfire;
- if(player[0].onfire){
- player[0].CatchFire();
- }
- if(!player[0].onfire){
- float gLoc[3];
- float vel[3];
- gLoc[0]=player[0].coords.x;
- gLoc[1]=player[0].coords.y;
- gLoc[2]=player[0].coords.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- 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);
- }
- slomotogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_DELETE)&&editorenabled&&!drawmodetogglekeydown&&Input::isKeyDown(SDLK_LSHIFT)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- if(closestdist>0&&closest>=0){
- //player[closest]=player[numplayers-1];
- //player[closest].skeleton=player[numplayers-1].skeleton;
- numplayers--;
- }
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_DELETE)&&editorenabled&&!drawmodetogglekeydown&&Input::isKeyDown(SDLK_LCTRL)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(max_objects>1)
- for(i=1;i<max_objects;i++){
- distance=findDistancefast(&objects.position[i],&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- if(closestdist>0&&closest>=0){
- objects.position[closest].y-=500;
- }
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_m)&&!drawmodetogglekeydown&&!Input::isKeyDown(SDLK_LSHIFT)&&editorenabled&&debugmode){
- //drawmode++;
- //if(drawmode>2)drawmode=0;
- if(objects.numobjects<max_objects-1){
- XYZ boxcoords;
- boxcoords.x=player[0].coords.x;
- boxcoords.z=player[0].coords.z;
- boxcoords.y=player[0].coords.y-3;
- if(editortype==bushtype)boxcoords.y=player[0].coords.y-.5;
- if(editortype==firetype)boxcoords.y=player[0].coords.y-.5;
- //objects.MakeObject(abs(Random()%3),boxcoords,Random()%360);
- float temprotat,temprotat2;
- temprotat=editorrotation;
- temprotat2=editorrotation2;
- if(temprotat<0||editortype==bushtype)temprotat=Random()%360;
- if(temprotat2<0)temprotat2=Random()%360;
-
- objects.MakeObject(editortype,boxcoords,(int)temprotat-((int)temprotat)%30,(int)temprotat2,editorsize);
- if(editortype==treetrunktype)
- objects.MakeObject(treeleavestype,boxcoords,Random()%360*(temprotat2<2)+(int)editorrotation-((int)editorrotation)%30,editorrotation2,editorsize);
- }
-
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_p)&&!drawmodetogglekeydown&&!Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)&&editorenabled){
- if(numplayers<maxplayers-1){
- player[numplayers].scale=.2*5*player[0].scale;
- player[numplayers].creature=rabbittype;
- player[numplayers].howactive=editoractive;
- player[numplayers].skeleton.id=numplayers;
- player[numplayers].skeleton.Load((char *)":Data:Skeleton:Basic Figure",(char *)":Data:Skeleton:Basic Figurelow",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Body.solid",(char *)":Data:Models:Body2.solid",(char *)":Data:Models:Body3.solid",(char *)":Data:Models:Body4.solid",(char *)":Data:Models:Body5.solid",(char *)":Data:Models:Body6.solid",(char *)":Data:Models:Body7.solid",(char *)":Data:Models:Bodylow.solid",(char *)":Data:Models:Belt.solid",1);
-
- //texsize=512*512*3/texdetail/texdetail;
- //if(!player[numplayers].loaded)player[numplayers].skeleton.skinText = new GLubyte[texsize];
- //player[numplayers].skeleton.skinText.resize(texsize);
-
- k=abs(Random()%2)+1;
- if(k==0){
- LoadTextureSave(":Data:Textures:Fur3.jpg",&player[numplayers].skeleton.drawmodel.textureptr,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize);
- player[numplayers].whichskin=0;
- }
- else if(k==1){
- LoadTextureSave(":Data:Textures:Fur.jpg",&player[numplayers].skeleton.drawmodel.textureptr,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize);
- player[numplayers].whichskin=1;
- }
- else {
- LoadTextureSave(":Data:Textures:Fur2.jpg",&player[numplayers].skeleton.drawmodel.textureptr,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize);
- player[numplayers].whichskin=2;
- }
-
- LoadTexture(":Data:Textures:Belt.png",&player[numplayers].skeleton.drawmodelclothes.textureptr,1,1);
- player[numplayers].power=1;
- player[numplayers].speedmult=1;
- player[numplayers].currentanimation=bounceidleanim;
- player[numplayers].targetanimation=bounceidleanim;
- player[numplayers].currentframe=0;
- player[numplayers].targetframe=1;
- player[numplayers].target=0;
- player[numplayers].bled=0;
- player[numplayers].speed=1+(float)(Random()%100)/1000;
-
- player[numplayers].targetrotation=player[0].targetrotation;
- player[numplayers].rotation=player[0].rotation;
-
- player[numplayers].velocity=0;
- player[numplayers].coords=player[0].coords;
- player[numplayers].oldcoords=player[numplayers].coords;
- player[numplayers].realoldcoords=player[numplayers].coords;
-
- player[numplayers].id=numplayers;
- player[numplayers].skeleton.id=numplayers;
- player[numplayers].updatedelay=0;
- player[numplayers].normalsupdatedelay=0;
-
- player[numplayers].aitype=passivetype;
- player[numplayers].aitarget=0;
-
- if(player[0].creature==wolftype){
- headprop=player[0].proportionhead.x/1.1;
- bodyprop=player[0].proportionbody.x/1.1;
- armprop=player[0].proportionarms.x/1.1;
- legprop=player[0].proportionlegs.x/1.1;
- }
-
- if(player[0].creature==rabbittype){
- headprop=player[0].proportionhead.x/1.2;
- bodyprop=player[0].proportionbody.x/1.05;
- armprop=player[0].proportionarms.x/1.00;
- legprop=player[0].proportionlegs.x/1.1;
- }
-
- if(player[numplayers].creature==wolftype){
- player[numplayers].proportionhead=1.1*headprop;
- player[numplayers].proportionbody=1.1*bodyprop;
- player[numplayers].proportionarms=1.1*armprop;
- player[numplayers].proportionlegs=1.1*legprop;
- }
-
- if(player[numplayers].creature==rabbittype){
- player[numplayers].proportionhead=1.2*headprop;
- player[numplayers].proportionbody=1.05*bodyprop;
- player[numplayers].proportionarms=1.00*armprop;
- player[numplayers].proportionlegs=1.1*legprop;
- player[numplayers].proportionlegs.y=1.05*legprop;
- }
-
- player[numplayers].headless=0;
- player[numplayers].onfire=0;
-
- if(cellophane){
- player[numplayers].proportionhead.z=0;
- player[numplayers].proportionbody.z=0;
- player[numplayers].proportionarms.z=0;
- player[numplayers].proportionlegs.z=0;
- }
-
- player[numplayers].tempanimation.Load((char *)"Tempanim",0,0);
-
- player[numplayers].damagetolerance=200;
-
- player[numplayers].protectionhead=player[0].protectionhead;
- player[numplayers].protectionhigh=player[0].protectionhigh;
- player[numplayers].protectionlow=player[0].protectionlow;
- player[numplayers].armorhead=player[0].armorhead;
- player[numplayers].armorhigh=player[0].armorhigh;
- player[numplayers].armorlow=player[0].armorlow;
- player[numplayers].metalhead=player[0].metalhead;
- player[numplayers].metalhigh=player[0].metalhigh;
- player[numplayers].metallow=player[0].metallow;
-
- player[numplayers].immobile=player[0].immobile;
-
- player[numplayers].numclothes=player[0].numclothes;
- if(player[numplayers].numclothes)
- for(i=0;i<player[numplayers].numclothes;i++){
- strcpy(player[numplayers].clothes[i], player[0].clothes[i]);
- player[numplayers].clothestintr[i]=player[0].clothestintr[i];
- player[numplayers].clothestintg[i]=player[0].clothestintg[i];
- player[numplayers].clothestintb[i]=player[0].clothestintb[i];
- tintr=player[numplayers].clothestintr[i];
- tintg=player[numplayers].clothestintg[i];
- tintb=player[numplayers].clothestintb[i];
- AddClothes((char *)player[numplayers].clothes[i],0,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize);
- }
- if(player[numplayers].numclothes){
- player[numplayers].DoMipmaps(5,0,0,player[numplayers].skeleton.skinsize,player[numplayers].skeleton.skinsize);
- }
-
- player[numplayers].power=player[0].power;
- player[numplayers].speedmult=player[0].speedmult;
-
- player[numplayers].damage=0;
- player[numplayers].permanentdamage=0;
- player[numplayers].superpermanentdamage=0;
- player[numplayers].deathbleeding=0;
- player[numplayers].bleeding=0;
- player[numplayers].numwaypoints=0;
- player[numplayers].waypoint=0;
- player[numplayers].jumppath=0;
- player[numplayers].weaponstuck=-1;
- player[numplayers].weaponactive=-1;
- player[numplayers].num_weapons=0;
- player[numplayers].bloodloss=0;
- player[numplayers].dead=0;
-
- player[numplayers].loaded=1;
-
- numplayers++;
- }
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_p)&&!drawmodetogglekeydown&&Input::isKeyDown(SDLK_LSHIFT)&&editorenabled){
- if(player[numplayers-1].numwaypoints<90){
- player[numplayers-1].waypoints[player[numplayers-1].numwaypoints]=player[0].coords;
- player[numplayers-1].waypointtype[player[numplayers-1].numwaypoints]=editorpathtype;
- player[numplayers-1].numwaypoints++;
- }
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_p)&&!drawmodetogglekeydown&&Input::isKeyDown(SDLK_LCTRL)&&editorenabled){
- if(numpathpoints<30){
- bool connected,alreadyconnected;
- connected=0;
- if(numpathpoints>1)
- for(i=0;i<numpathpoints;i++){
- if(findDistancefast(&pathpoint[i],&player[0].coords)<.5&&i!=pathpointselected&&!connected){
- alreadyconnected=0;
- for(j=0;j<numpathpointconnect[pathpointselected];j++){
- if(pathpointconnect[pathpointselected][j]==i)alreadyconnected=1;
- }
- if(!alreadyconnected){
- numpathpointconnect[pathpointselected]++;
- connected=1;
- pathpointconnect[pathpointselected][numpathpointconnect[pathpointselected]-1]=i;
- }
- }
- }
- if(!connected){
- numpathpoints++;
- pathpoint[numpathpoints-1]=player[0].coords;
- numpathpointconnect[numpathpoints-1]=0;
- if(numpathpoints>1&&pathpointselected!=-1){
- numpathpointconnect[pathpointselected]++;
- pathpointconnect[pathpointselected][numpathpointconnect[pathpointselected]-1]=numpathpoints-1;
- }
- pathpointselected=numpathpoints-1;
- }
- }
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_PERIOD)&&!drawmodetogglekeydown&&editorenabled){
- pathpointselected++;
- if(pathpointselected>=numpathpoints)pathpointselected=-1;
- drawmodetogglekeydown=1;
- }
- if(Input::isKeyDown(SDLK_COMMA)&&!Input::isKeyDown(SDLK_LSHIFT)&&!drawmodetogglekeydown&&editorenabled){
- pathpointselected--;
- if(pathpointselected<=-2)
- pathpointselected=numpathpoints-1;
- drawmodetogglekeydown=1;
- }
- if(Input::isKeyDown(SDLK_COMMA)&&Input::isKeyDown(SDLK_LSHIFT)&&!drawmodetogglekeydown&&editorenabled){
- if(pathpointselected!=-1){
- numpathpoints--;
- pathpoint[pathpointselected]=pathpoint[numpathpoints];
- numpathpointconnect[pathpointselected]=numpathpointconnect[numpathpoints];
- for(i=0;i<numpathpointconnect[pathpointselected];i++){
- pathpointconnect[pathpointselected][i]=pathpointconnect[numpathpoints][i];
- }
- for(i=0;i<numpathpoints;i++){
- for(j=0;j<numpathpointconnect[i];j++){
- if(pathpointconnect[i][j]==pathpointselected){
- pathpointconnect[i][j]=pathpointconnect[i][numpathpointconnect[i]-1];
- numpathpointconnect[i]--;
- }
- if(pathpointconnect[i][j]==numpathpoints){
- pathpointconnect[i][j]=pathpointselected;
- }
- }
- }
- pathpointselected=numpathpoints-1;
- }
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_m)&&!drawmodetogglekeydown&&Input::isKeyDown(SDLK_LSHIFT)&&debugmode){
- editorenabled=1-editorenabled;
- if(editorenabled){
- player[0].damagetolerance=100000;
- } else {
- player[0].damagetolerance=200;
- }
- player[0].damage=0; // these lines were in both if and else, but I think they would better fit in the if
- player[0].permanentdamage=0;
- player[0].superpermanentdamage=0;
- player[0].bloodloss=0;
- player[0].deathbleeding=0;
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_LEFT)&&!drawmodetogglekeydown&&editorenabled&&Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)){
- editortype--;
- if(editortype==treeleavestype||editortype==10)editortype--;
- if(editortype<0)editortype=firetype;
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_RIGHT)&&!drawmodetogglekeydown&&editorenabled&&Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)){
- editortype++;
- if(editortype==treeleavestype||editortype==10)editortype++;
- if(editortype>firetype)editortype=0;
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_LEFT)&&editorenabled&&!Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)){
- editorrotation-=multiplier*100;
- if(editorrotation<-.01)editorrotation=-.01;
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_RIGHT)&&editorenabled&&!Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)){
- editorrotation+=multiplier*100;
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_UP)&&editorenabled&&!Input::isKeyDown(SDLK_LCTRL)){
- editorsize+=multiplier;
- drawmodetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_DOWN)&&editorenabled&&!Input::isKeyDown(SDLK_LCTRL)){
- editorsize-=multiplier;
- if(editorsize<.1)editorsize=.1;
- drawmodetogglekeydown=1;
- }
-
-
- if(Input::isKeyDown(SDLK_LEFT)&&!drawmodetogglekeydown&&editorenabled&&Input::isKeyDown(SDLK_LSHIFT)&&Input::isKeyDown(SDLK_LCTRL)){
- mapradius-=multiplier*10;
- }
-
- if(Input::isKeyDown(SDLK_RIGHT)&&!drawmodetogglekeydown&&editorenabled&&Input::isKeyDown(SDLK_LSHIFT)&&Input::isKeyDown(SDLK_LCTRL)){
- mapradius+=multiplier*10;
- }
- if(Input::isKeyDown(SDLK_UP)&&editorenabled&&Input::isKeyDown(SDLK_LCTRL)){
- editorrotation2+=multiplier*100;
- }
-
- if(Input::isKeyDown(SDLK_DOWN)&&editorenabled&&Input::isKeyDown(SDLK_LCTRL)){
- editorrotation2-=multiplier*100;
- if(editorrotation2<-.01)editorrotation2=-.01;
- }
- if(Input::isKeyDown(SDLK_DELETE)&&editorenabled&&objects.numobjects&&!drawmodetogglekeydown&&!Input::isKeyDown(SDLK_LSHIFT)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- for(i=0;i<objects.numobjects;i++){
- distance=findDistancefast(&objects.position[i],&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- if(closestdist>0&&closest>=0)objects.DeleteObject(closest);
- drawmodetogglekeydown=1;
- }
-
-
- if(!Input::isKeyDown(SDLK_m)&&!Input::isKeyDown(SDLK_LEFT)&&!Input::isKeyDown(SDLK_COMMA)&&!Input::isKeyDown(SDLK_PERIOD)&&!Input::isKeyDown(SDLK_RIGHT)&&!Input::isKeyDown(SDLK_DELETE)&&!Input::isKeyDown(SDLK_p)){
- drawmodetogglekeydown=0;
- }
-
- if(Input::isKeyDown(SDLK_n)&&!Input::isKeyDown(SDLK_LCTRL)&&!texturesizetogglekeydown&&debugmode){
- //if(!player[0].skeleton.free)player[0].damage+=500;
- player[0].RagDoll(0);
- //player[0].spurt=1;
- //player[0].DoDamage(1000);
-
- float gLoc[3];
- float vel[3];
- gLoc[0]=player[0].coords.x;
- gLoc[1]=player[0].coords.y;
- gLoc[2]=player[0].coords.z;
- vel[0]=player[0].velocity.x;
- vel[1]=player[0].velocity.y;
- vel[2]=player[0].velocity.z;
- PlaySoundEx( whooshsound, samp[whooshsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[whooshsound], gLoc, vel);
- OPENAL_SetVolume(channels[whooshsound], 128);
- OPENAL_SetPaused(channels[whooshsound], false);
- //OPENAL_SetPaused(channels[whooshsound], true);
-
- texturesizetogglekeydown=1;
- }
-
- if(Input::isKeyDown(SDLK_n)&&Input::isKeyDown(SDLK_LCTRL)&&!texturesizetogglekeydown&&debugmode){
-
- int closest=-1;
- float closestdist=-1;
- float distance;
- for(i=0;i<objects.numobjects;i++){
- if(objects.type[i]==treeleavestype){
- objects.scale[i]*=.9;
- }
- }
- texturesizetogglekeydown=1;