- entername=0;
- }
-
- displayblinkdelay-=multiplier;
- if(displayblinkdelay<=0){
- displayblinkdelay=.3;
- displayblink=1-displayblink;
- }
- }
- }
-
- if(!mainmenu){
- if(hostile==1)hostiletime+=multiplier;
- else hostiletime=0;
- if(!winfreeze)leveltime+=multiplier;
- if(Input::isKeyDown(SDLK_ESCAPE)){
- chatting=0;
- console=0;
- freeze=0;
- displaychars[0]=0;
- }
-
- if(Input::isKeyDown(chatkey)&&!chattogglekeydown&&!console&&!chatting&&debugmode){
- chatting=1;
- chattogglekeydown=1;
- }
-
- if(!Input::isKeyDown(chatkey)){
- chattogglekeydown=0;
- }
-
- if(chatting){
- inputText(displaytext[0],&displayselected,&displaychars[0]);
- if(!waiting) {
- if(displaychars[0]){
- for(int j=0;j<255;j++){
- displaytext[0][j]=' ';
- }
- displaychars[0]=0;
- displayselected=0;
- }
- chatting=0;
- }
-
- displayblinkdelay-=multiplier;
- if(displayblinkdelay<=0){
- displayblinkdelay=.3;
- displayblink=1-displayblink;
- }
- }
-
- if(chatting)keyboardfrozen=1;
-
- if(Input::isKeyDown(SDLK_v)&&!freezetogglekeydown&&debugmode){
- freeze=1-freeze;
- if(freeze){
- OPENAL_SetFrequency(OPENAL_ALL, 0.001);
- }
- freezetogglekeydown=1;
- }
-
- if(!Input::isKeyDown(SDLK_v)&&!Input::isKeyDown(SDLK_F1)){
- freezetogglekeydown=0;
- }
-
- if(Input::isKeyDown(SDLK_BACKQUOTE)&&!consoletogglekeydown&&debugmode){
- console=1-console;
- if(console){
- OPENAL_SetFrequency(OPENAL_ALL, 0.001);
- } else {
- freeze=0;
- waiting=false;
- }
- consoletogglekeydown=1;
- }
-
- if(!Input::isKeyDown(SDLK_BACKQUOTE)){
- consoletogglekeydown=0;
- }
-
- if(console)freeze=1;
-
- if(console&&!Input::isKeyDown(SDLK_LMETA)){
- inputText(consoletext[0],&consoleselected,&consolechars[0]);
- if(!waiting) {
- archiveselected=0;
- cmd_dispatch(this, consoletext[0]);
- if(consolechars[0]>0){
-
- for(k=14;k>=1;k--){
- for(j=0;j<255;j++){
- consoletext[k][j]=consoletext[k-1][j];
- }
- consolechars[k]=consolechars[k-1];
- }
- for(j=0;j<255;j++){
- consoletext[0][j]=' ';
- }
- consolechars[0]=0;
- consoleselected=0;
- }
- }
-
- consoleblinkdelay-=multiplier;
- if(consoleblinkdelay<=0){
- consoleblinkdelay=.3;
- consoleblink=1-consoleblink;
- }
- }
-
- if(Input::isKeyDown(SDLK_q)&&Input::isKeyDown(SDLK_LMETA)){
- tryquit=1;
- if(mainmenu==3){
- if(newdetail>2)newdetail=detail;
- if(newdetail<0)newdetail=detail;
- if(newscreenwidth<0)newscreenwidth=screenwidth;
- if(newscreenheight<0)newscreenheight=screenheight;
-
- SaveSettings(*this);
- }
- }
-
- static int oldwinfreeze;
- if(winfreeze&&!oldwinfreeze){
- OPENAL_SetFrequency(OPENAL_ALL, 0.001);
- PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, true);
- OPENAL_SetVolume(channels[consolesuccesssound], 256);
- OPENAL_SetPaused(channels[consolesuccesssound], false);
- }
- if(winfreeze==0)oldwinfreeze=winfreeze;
- else oldwinfreeze++;
-
- if((Input::isKeyDown(jumpkey)||Input::isKeyDown(SDLK_SPACE))&&!oldjumpkeydown&&!campaign){
- if(winfreeze)winfreeze=0;
- oldjumpkeydown=1;
- }
- if((Input::isKeyDown(SDLK_ESCAPE))&&!campaign&&gameon){
- if(winfreeze){
- mainmenu=9;
- gameon=0;
- }
- }
- if((Input::isKeyDown(jumpkey)||Input::isKeyDown(SDLK_SPACE))){
- oldjumpkeydown=1;
- }
- if(!Input::isKeyDown(jumpkey)&&!Input::isKeyDown(SDLK_SPACE))oldjumpkeydown=0;
-
- if(!freeze&&!winfreeze&&!(mainmenu&&gameon)&&(gameon||!gamestarted)){
-
- static bool oldbuttondialogue;
-
- if(indialogue!=-1)talkdelay=1;
- talkdelay-=multiplier;
-
- if(talkdelay<=0)
- if(indialogue==-1&&(animation[player[0].targetanimation].height!=highheight)/*&&!hostile*/)
- for(i=0;i<numdialogues;i++){
- int realdialoguetype;
- bool special;
- if(dialoguetype[i]>49){
- realdialoguetype=dialoguetype[i]-50;
- special=1;
- }
- else if(dialoguetype[i]>39){
- realdialoguetype=dialoguetype[i]-40;
- special=1;
- }
- else if(dialoguetype[i]>29){
- realdialoguetype=dialoguetype[i]-30;
- special=1;
- }
- else if(dialoguetype[i]>19){
- realdialoguetype=dialoguetype[i]-20;
- special=1;
- }
- else if(dialoguetype[i]>9){
- realdialoguetype=dialoguetype[i]-10;
- special=1;
- }
- else {
- realdialoguetype=dialoguetype[i];
- special=0;
- }
- if((!hostile||(dialoguetype[i]>40&&dialoguetype[i]<50))&&realdialoguetype<numplayers&&realdialoguetype>0&&(dialoguegonethrough[i]==0||!special)&&(special||(Input::isKeyDown(attackkey)&&!oldbuttondialogue))){
- if(findDistancefast(&player[0].coords,&player[realdialoguetype].coords)<6||player[realdialoguetype].howactive>=typedead1||(dialoguetype[i]>40&&dialoguetype[i]<50)){
- whichdialogue=i;
- for(j=0;j<numdialogueboxes[whichdialogue];j++){
- player[participantfocus[whichdialogue][j]].coords=participantlocation[whichdialogue][participantfocus[whichdialogue][j]];
- player[participantfocus[whichdialogue][j]].rotation=participantrotation[whichdialogue][participantfocus[whichdialogue][j]];
- player[participantfocus[whichdialogue][j]].targetrotation=participantrotation[whichdialogue][participantfocus[whichdialogue][j]];
- player[participantfocus[whichdialogue][j]].velocity=0;
- player[participantfocus[whichdialogue][j]].targetanimation=player[participantfocus[whichdialogue][j]].getIdle();
- player[participantfocus[whichdialogue][j]].targetframe=0;
- }
- directing=0;
- indialogue=0;
- dialoguetime=0;
- dialoguegonethrough[i]++;
- 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);
- }
- if(Input::isKeyDown(attackkey))oldbuttondialogue=1;
- }
- }
- }
-
- windvar+=multiplier;
- smoketex+=multiplier;
- tutorialstagetime+=multiplier;
-
- static float hotspotvisual[40];
- if(numhotspots){
- XYZ hotspotsprite;
- if(editorenabled)
- for(i=0;i<numhotspots;i++)
- hotspotvisual[i]-=multiplier/320;
-
- for(i=0;i<numhotspots;i++){
- //if(hotspottype[i]<=10)
- while(hotspotvisual[i]<0){
- hotspotsprite=0;
- hotspotsprite.x=float(abs(Random()%100000))/100000*hotspotsize[i];
- hotspotsprite=DoRotation(hotspotsprite,0,0,Random()%360);
- hotspotsprite=DoRotation(hotspotsprite,0,Random()%360,0);
- hotspotsprite+=hotspot[i];
- Sprite::MakeSprite(breathsprite, hotspotsprite, hotspotsprite*0, 1,0.5,0, 7, 0.4);
- hotspotvisual[i]+=0.1/hotspotsize[i]/hotspotsize[i]/hotspotsize[i];
- }
- }
-
- for(i=0;i<numhotspots;i++){
- if(hotspottype[i]<=10&&hotspottype[i]>0){
- hotspot[i]=player[hotspottype[i]].coords;
- }
- }
- }
-
- //Tutorial
- if(tutoriallevel&&tutorialstagetime>tutorialmaxtime){
- tutorialstage++;
- tutorialsuccess=0;
- if(tutorialstage<=1){
- canattack=0;
- cananger=0;
- reversaltrain=0;
- }
- if(tutorialstage==1){
- tutorialmaxtime=5;
- } else if(tutorialstage==2){
- tutorialmaxtime=2;
- } else if(tutorialstage==3){
- tutorialmaxtime=600;
- } else if(tutorialstage==4){
- tutorialmaxtime=1000;
- } else if(tutorialstage==5){
- tutorialmaxtime=600;
- } else if(tutorialstage==6){
- tutorialmaxtime=600;
- } else if(tutorialstage==7){
- tutorialmaxtime=600;
- } else if(tutorialstage==8){
- tutorialmaxtime=600;
- } else if(tutorialstage==9){
- tutorialmaxtime=600;
- } else if(tutorialstage==10){
- tutorialmaxtime=2;
- } else if(tutorialstage==11){
- tutorialmaxtime=1000;
- } else if(tutorialstage==12){
- tutorialmaxtime=1000;
- } else if(tutorialstage==13){
- tutorialmaxtime=2;
- } else if(tutorialstage==14){
- tutorialmaxtime=3;
-
- XYZ temp,temp2;
-
- temp.x=1011;
- temp.y=84;
- temp.z=491;
- temp2.x=1025;
- temp2.y=75;
- temp2.z=447;
-
- player[1].coords=(temp+temp2)/2;
-
- float gLoc[3];
- float vel[3];
- gLoc[0]=player[1].coords.x;
- gLoc[1]=player[1].coords.y;
- gLoc[2]=player[1].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);
-
- for(i=0;i<player[1].skeleton.num_joints;i++){
- if(Random()%2==0){
- if(!player[1].skeleton.free)temp2=(player[1].coords-player[1].oldcoords)/multiplier/2;//velocity/2;
- if(player[1].skeleton.free)temp2=player[1].skeleton.joints[i].velocity*player[1].scale/2;
- if(!player[1].skeleton.free)temp=DoRotation(DoRotation(DoRotation(player[1].skeleton.joints[i].position,0,0,player[1].tilt),player[1].tilt2,0,0),0,player[1].rotation,0)*player[1].scale+player[1].coords;
- if(player[1].skeleton.free)temp=player[1].skeleton.joints[i].position*player[1].scale+player[1].coords;
- Sprite::MakeSprite(breathsprite, temp,temp2, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
- }
- }
-
- } else if(tutorialstage==15){
- tutorialmaxtime=500;
- } else if(tutorialstage==16){
- tutorialmaxtime=500;
- } else if(tutorialstage==17){
- tutorialmaxtime=500;
- } else if(tutorialstage==18){
- tutorialmaxtime=500;
- } else if(tutorialstage==19){
- tutorialstage=20;
- //tutorialmaxtime=500;
- } else if(tutorialstage==20){
- tutorialmaxtime=500;
- } else if(tutorialstage==21){
- tutorialmaxtime=500;
- if(bonus==cannon){
- bonus=Slicebonus;
- againbonus=1;
- }
- else againbonus=0;
- } else if(tutorialstage==22){
- tutorialmaxtime=500;
- } else if(tutorialstage==23){
- tutorialmaxtime=500;
- } else if(tutorialstage==24){
- tutorialmaxtime=500;
- } else if(tutorialstage==25){
- tutorialmaxtime=500;
- } else if(tutorialstage==26){
- tutorialmaxtime=2;
- } else if(tutorialstage==27){
- tutorialmaxtime=4;
- reversaltrain=1;
- cananger=1;
- player[1].aitype=attacktypecutoff;
- } else if(tutorialstage==28){
- tutorialmaxtime=400;
- } else if(tutorialstage==29){
- tutorialmaxtime=400;
- player[0].escapednum=0;
- } else if(tutorialstage==30){
- tutorialmaxtime=4;
- reversaltrain=0;
- cananger=0;
- player[1].aitype=passivetype;
- } else if(tutorialstage==31){
- tutorialmaxtime=13;
- } else if(tutorialstage==32){
- tutorialmaxtime=8;
- } else if(tutorialstage==33){
- tutorialmaxtime=400;
- cananger=1;
- canattack=1;
- player[1].aitype=attacktypecutoff;
- } else if(tutorialstage==34){
- tutorialmaxtime=400;
- } else if(tutorialstage==35){
- tutorialmaxtime=400;
- } else if(tutorialstage==36){
- tutorialmaxtime=2;
- reversaltrain=0;
- cananger=0;
- player[1].aitype=passivetype;
- } else if(tutorialstage==37){
- damagedealt=0;
- damagetaken=0;
- tutorialmaxtime=50;
- cananger=1;
- canattack=1;
- player[1].aitype=attacktypecutoff;
- } else if(tutorialstage==38){
- tutorialmaxtime=4;
- canattack=0;
- cananger=0;
- player[1].aitype=passivetype;
- } else if(tutorialstage==39){
- XYZ temp,temp2;
-
- temp.x=1011;
- temp.y=84;
- temp.z=491;
- temp2.x=1025;
- temp2.y=75;
- temp2.z=447;
-
-
- weapons.owner[weapons.numweapons]=-1;
- weapons.type[weapons.numweapons]=knife;
- weapons.damage[weapons.numweapons]=0;
- weapons.mass[weapons.numweapons]=1;
- weapons.tipmass[weapons.numweapons]=1.2;
- weapons.length[weapons.numweapons]=.25;
- weapons.position[weapons.numweapons]=(temp+temp2)/2;
- weapons.tippoint[weapons.numweapons]=(temp+temp2)/2;
-
- weapons.velocity[weapons.numweapons]=0.1;
- weapons.tipvelocity[weapons.numweapons]=0.1;
- weapons.missed[weapons.numweapons]=1;
- weapons.hitsomething[weapons.numweapons]=0;
- weapons.freetime[weapons.numweapons]=0;
- weapons.firstfree[weapons.numweapons]=1;
- weapons.physics[weapons.numweapons]=1;
-
- weapons.numweapons++;
- } else if(tutorialstage==40){
- tutorialmaxtime=300;
- } else if(tutorialstage==41){
- tutorialmaxtime=300;
- } else if(tutorialstage==42){
- tutorialmaxtime=8;
- } else if(tutorialstage==43){
- tutorialmaxtime=300;
- } else if(tutorialstage==44){
- weapons.owner[0]=1;
- player[0].weaponactive=-1;
- player[0].num_weapons=0;
- player[1].weaponactive=0;
- player[1].num_weapons=1;
- player[1].weaponids[0]=0;
-
- cananger=1;
- canattack=1;
- player[1].aitype=attacktypecutoff;
-
- tutorialmaxtime=300;
- } else if(tutorialstage==45){
- weapons.owner[0]=1;
- player[0].weaponactive=-1;
- player[0].num_weapons=0;
- player[1].weaponactive=0;
- player[1].num_weapons=1;
- player[1].weaponids[0]=0;
-
- tutorialmaxtime=300;
- } else if(tutorialstage==46){
- weapons.owner[0]=1;
- player[0].weaponactive=-1;
- player[0].num_weapons=0;
- player[1].weaponactive=0;
- player[1].num_weapons=1;
- player[1].weaponids[0]=0;
-
- weapons.type[0]=sword;
-
- tutorialmaxtime=300;
- } else if(tutorialstage==47){
- tutorialmaxtime=10;
-
- XYZ temp,temp2;
-
- temp.x=1011;
- temp.y=84;
- temp.z=491;
- temp2.x=1025;
- temp2.y=75;
- temp2.z=447;
-
- weapons.owner[weapons.numweapons]=-1;
- weapons.type[weapons.numweapons]=sword;
- weapons.damage[weapons.numweapons]=0;
- weapons.mass[weapons.numweapons]=1;
- weapons.tipmass[weapons.numweapons]=1.2;
- weapons.length[weapons.numweapons]=.25;
- weapons.position[weapons.numweapons]=(temp+temp2)/2;
- weapons.tippoint[weapons.numweapons]=(temp+temp2)/2;
-
- weapons.velocity[weapons.numweapons]=0.1;
- weapons.tipvelocity[weapons.numweapons]=0.1;
- weapons.missed[weapons.numweapons]=1;
- weapons.hitsomething[weapons.numweapons]=0;
- weapons.freetime[weapons.numweapons]=0;
- weapons.firstfree[weapons.numweapons]=1;
- weapons.physics[weapons.numweapons]=1;
-
- weapons.owner[0]=1;
- weapons.owner[1]=0;
- player[0].weaponactive=0;
- player[0].num_weapons=1;
- player[0].weaponids[0]=1;
- player[1].weaponactive=0;
- player[1].num_weapons=1;
- player[1].weaponids[0]=0;
-
- weapons.numweapons++;
- } else if(tutorialstage==48){
- canattack=0;
- cananger=0;
- player[1].aitype=passivetype;
-
- tutorialmaxtime=15;
-
- weapons.owner[0]=1;
- weapons.owner[1]=0;
- player[0].weaponactive=0;
- player[0].num_weapons=1;
- player[0].weaponids[0]=1;
- player[1].weaponactive=0;
- player[1].num_weapons=1;
- player[1].weaponids[0]=0;
-
- if(player[0].weaponactive!=-1)weapons.type[player[0].weaponids[player[0].weaponactive]]=staff;
- else weapons.type[0]=staff;
-
- weapons.numweapons++;
- } else if(tutorialstage==49){
- canattack=0;
- cananger=0;
- player[1].aitype=passivetype;
-
- tutorialmaxtime=200;
-
- weapons.position[1]=1000;
- weapons.tippoint[1]=1000;
-
- weapons.numweapons=1;
- weapons.owner[0]=0;
- player[1].weaponactive=-1;
- player[1].num_weapons=0;
- player[0].weaponactive=0;
- player[0].num_weapons=1;
- player[0].weaponids[0]=0;
-
- weapons.type[0]=knife;
-
- weapons.numweapons++;
- } else if(tutorialstage==50){
- tutorialmaxtime=8;
-
- XYZ temp,temp2;
- float gLoc[3];
- float vel[3];
- gLoc[0]=player[1].coords.x;
- gLoc[1]=player[1].coords.y;
- gLoc[2]=player[1].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);
-
- for(i=0;i<player[1].skeleton.num_joints;i++){
- if(Random()%2==0){
- if(!player[1].skeleton.free)temp2=(player[1].coords-player[1].oldcoords)/multiplier/2;//velocity/2;
- if(player[1].skeleton.free)temp2=player[1].skeleton.joints[i].velocity*player[1].scale/2;
- if(!player[1].skeleton.free)temp=DoRotation(DoRotation(DoRotation(player[1].skeleton.joints[i].position,0,0,player[1].tilt),player[1].tilt2,0,0),0,player[1].rotation,0)*player[1].scale+player[1].coords;
- if(player[1].skeleton.free)temp=player[1].skeleton.joints[i].position*player[1].scale+player[1].coords;
- Sprite::MakeSprite(breathsprite, temp,temp2, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
- }
- }
-
- player[1].num_weapons=0;
- player[1].weaponstuck=-1;
- player[1].weaponactive=-1;
-
- weapons.numweapons=0;
-
- weapons.owner[0]=-1;
- weapons.velocity[0]=0.1;
- weapons.tipvelocity[0]=-0.1;
- weapons.missed[0]=1;
- weapons.hitsomething[0]=0;
- weapons.freetime[0]=0;
- weapons.firstfree[0]=1;
- weapons.physics[0]=1;
- } else if(tutorialstage==51){
- tutorialmaxtime=80000;
- }
- if(tutorialstage<=51)tutorialstagetime=0;
- }
-
- //Tutorial success
- if(tutoriallevel&&tutorialstagetime<tutorialmaxtime-3){
- if(tutorialstage==3){
- if(deltah||deltav)tutorialsuccess+=multiplier;
- }
- if(tutorialstage==4){
- if(player[0].forwardkeydown||player[0].backkeydown||player[0].leftkeydown||player[0].rightkeydown)tutorialsuccess+=multiplier;
- }
- if(tutorialstage==5){
- if(player[0].jumpkeydown)tutorialsuccess=1;
- }
- if(tutorialstage==6){
- if(player[0].isCrouch())tutorialsuccess=1;
- }
- if(tutorialstage==7){
- if(player[0].targetanimation==rollanim)tutorialsuccess=1;
- }
- if(tutorialstage==8){
- if(player[0].targetanimation==sneakanim)tutorialsuccess+=multiplier;
- }
- if(tutorialstage==9){
- if(player[0].targetanimation==rabbitrunninganim||player[0].targetanimation==wolfrunninganim)tutorialsuccess+=multiplier;
- }
- if(tutorialstage==11){
- if(player[0].isWallJump())tutorialsuccess=1;
- }
- if(tutorialstage==12){
- if(player[0].targetanimation==flipanim)tutorialsuccess=1;
- }
- if(tutorialstage==15){
- if(player[0].targetanimation==upunchanim||player[0].targetanimation==winduppunchanim)tutorialsuccess=1;
- }
- if(tutorialstage==16){
- if(player[0].targetanimation==winduppunchanim)tutorialsuccess=1;
- }
- if(tutorialstage==17){
- if(player[0].targetanimation==spinkickanim)tutorialsuccess=1;
- }
- if(tutorialstage==18){
- if(player[0].targetanimation==sweepanim)tutorialsuccess=1;
- }
- if(tutorialstage==19){
- if(player[0].targetanimation==dropkickanim)tutorialsuccess=1;
- }
- if(tutorialstage==20){
- if(player[0].targetanimation==rabbitkickanim)tutorialsuccess=1;
- }
- if(tutorialstage==21){
- if(bonus==cannon)tutorialsuccess=1;
- }
- if(tutorialstage==22){
- if(bonus==spinecrusher)tutorialsuccess=1;
- }
- if(tutorialstage==23){
- if(player[0].targetanimation==walljumprightkickanim||player[0].targetanimation==walljumpleftkickanim)tutorialsuccess=1;
- }
- if(tutorialstage==24){
- if(player[0].targetanimation==rabbittacklinganim)tutorialsuccess=1;
- }
- if(tutorialstage==25){
- if(player[0].targetanimation==backhandspringanim)tutorialsuccess=1;
- }
- if(tutorialstage==28){
- if(animation[player[0].targetanimation].attack==reversed&&player[0].feint)tutorialsuccess=1;
- }
- if(tutorialstage==29){
- if(player[0].escapednum==2){
- tutorialsuccess=1;
- reversaltrain=0;
- cananger=0;
- player[1].aitype=passivetype;
- }
- }
- if(tutorialstage==33){
- if(animation[player[0].targetanimation].attack==reversal)tutorialsuccess=1;
- }
- if(tutorialstage==34){
- if(animation[player[0].targetanimation].attack==reversal)tutorialsuccess=1;
- }
- if(tutorialstage==35){
- if(animation[player[0].targetanimation].attack==reversal){
- tutorialsuccess=1;
- reversaltrain=0;
- cananger=0;
- player[1].aitype=passivetype;
- }
- }
- if(tutorialstage==40){
- if(player[0].num_weapons>0)tutorialsuccess=1;
- }
- if(tutorialstage==41){
- if(player[0].weaponactive==-1&&player[0].num_weapons>0)tutorialsuccess=1;
- }
- if(tutorialstage==43){
- if(player[0].targetanimation==knifeslashstartanim)tutorialsuccess=1;
- }
- if(tutorialstage==44){
- if(animation[player[0].targetanimation].attack==reversal)tutorialsuccess=1;
- }
- if(tutorialstage==45){
- if(animation[player[0].targetanimation].attack==reversal)tutorialsuccess=1;
- }
- if(tutorialstage==46){
- if(animation[player[0].targetanimation].attack==reversal)tutorialsuccess=1;
- }
- if(tutorialstage==49){
- if(player[1].weaponstuck!=-1)tutorialsuccess=1;
- }
- if(tutorialsuccess>=1)tutorialstagetime=tutorialmaxtime-3;
-
-
- if(tutorialstagetime==tutorialmaxtime-3){
- PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, true);
- OPENAL_SetVolume(channels[consolesuccesssound], 256);
- OPENAL_SetPaused(channels[consolesuccesssound], false);
- }
-
- if(tutorialsuccess>=1){
- if(tutorialstage==34||tutorialstage==35)
- tutorialstagetime=tutorialmaxtime-1;
- }
- }
-
- if(tutoriallevel){
- if(tutorialstage<14||tutorialstage>=50){
- player[1].coords.y=300;
- player[1].velocity=0;
- }
- }
-
- if(tutoriallevel!=1){
- if(bonustime==0&&bonus!=solidhit&&bonus!=spinecrusher&&bonus!=tracheotomy&&bonus!=backstab&&bonusvalue>10){
- PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, true);
- OPENAL_SetVolume(channels[consolesuccesssound], 256);
- OPENAL_SetPaused(channels[consolesuccesssound], false);
- }
- }
- else
- 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;
- }
-
- static XYZ relative;
- static int randattack;
- //Attack
- static bool playerrealattackkeydown=0;
-
- if(!Input::isKeyDown(MOUSEBUTTON1)&&!Input::isKeyDown(MOUSEBUTTON2))oldbutton=0;
- if(!Input::isKeyDown(attackkey))oldattackkey=0;
- if(oldattackkey)player[0].attackkeydown=0;
- if(oldattackkey)playerrealattackkeydown=0;
- if(!oldattackkey)playerrealattackkeydown=Input::isKeyDown(attackkey);
- if((player[0].parriedrecently<=0||player[0].weaponactive==-1)&&(!oldattackkey||(realthreat&&player[0].lastattack!=swordslashanim&&player[0].lastattack!=knifeslashstartanim&&player[0].lastattack!=staffhitanim&&player[0].lastattack!=staffspinhitanim)))player[0].attackkeydown=Input::isKeyDown(attackkey);
- if(Input::isKeyDown(attackkey)&&!oldattackkey&&!player[0].backkeydown){
- for(k=0;k<numplayers;k++){
- if((player[k].targetanimation==swordslashanim||player[k].targetanimation==staffhitanim||player[k].targetanimation==staffspinhitanim)&&player[0].currentanimation!=dodgebackanim&&!player[k].skeleton.free)
- player[k].Reverse();
- }