extern float usermousesensitivity;
extern bool osx;
extern float camerashake;
-extern Weapons weapons;
-extern Person player[maxplayers];
extern int slomo;
extern float slomodelay;
extern bool ismotionblur;
extern float blackout;
extern bool damageeffects;
extern float volume;
-extern int numplayers;
extern bool texttoggle;
extern float blurness;
extern float targetblurness;
//extern int texdetail;
extern float texdetail;
extern bool musictoggle;
-extern int bonus;
-extern float bonusvalue;
-extern float bonustotal;
-extern float bonustime;
-extern int oldbonus;
-extern float startbonustotal;
-extern float bonusnum[100];
extern int tutoriallevel;
extern float smoketex;
extern float tutorialstagetime;
extern int tutorialstage;
extern bool againbonus;
extern float damagedealt;
-extern float damagetaken;
extern bool invertmouse;
extern int numhotspots;
extern char hotspottext[40][256];
extern int currenthotspot;;
-extern int numfalls;
-extern int numflipfail;
-extern int numseen;
-extern int numstaffattack;
-extern int numswordattack;
-extern int numknifeattack;
-extern int numunarmedattack;
-extern int numescaped;
-extern int numflipped;
-extern int numwallflipped;
-extern int numthrowkill;
-extern int numafterkill;
-extern int numreversals;
-extern int numattacks;
-extern int maxalarmed;
-extern int numresponded;
-
extern bool campaign;
extern bool winfreeze;
extern bool showdamagebar;
extern int channels[100];
-extern "C" void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused);
void Game::flash() { // shouldn't be that way, these should be attributes and Person class should not change rendering.
flashr=1;
if(!tutoriallevel)
if(bonus>0&&bonustime<1&&!winfreeze&&indialogue==-1/*bonustime<4*/){
- if(bonus==tracheotomy)sprintf (string, "Tracheotomy!");
- else if(bonus==backstab)sprintf (string, "Backstabber!");
- else if(bonus==spinecrusher)sprintf (string, "Spinecrusher!");
- else if(bonus==ninja)sprintf (string, "Ninja Bonus!");
- else if(bonus==style)sprintf (string, "Style Bonus!");
- else if(bonus==cannon)sprintf (string, "Leg Cannon!");
- else if(bonus==aimbonus)sprintf (string, "Nice Aim!");
- else if(bonus==deepimpact)sprintf (string, "Heavy Impact!");
- else if(bonus==touchofdeath)sprintf (string, "Touch of Death!");
- else if(bonus==swordreversebonus)sprintf (string, "Sword Disarm!");
- else if(bonus==staffreversebonus)sprintf (string, "Staff Disarm!");
- else if(bonus==reverseko)sprintf (string, "Reversal KO!");
- else if(bonus==solidhit)sprintf (string, "Solid Hit!");
- else if(bonus==twoxcombo)sprintf (string, "2X Combo!");
- else if(bonus==threexcombo)sprintf (string, "3X Combo!");
- else if(bonus==fourxcombo)sprintf (string, "4X COMBO!");
- else if(bonus==megacombo)sprintf (string, "MEGA COMBO!");
- else if(bonus==Reversal)sprintf (string, "Reversal!");
- else if(bonus==Stabbonus)sprintf (string, "Punctured!");
- else if(bonus==Slicebonus)sprintf (string, "Sliced!");
- else if(bonus==Bullseyebonus)sprintf (string, "Bullseye!");
- else if(bonus==Slashbonus)sprintf (string, "Slashed!");
- else if(bonus==Wolfbonus)sprintf (string, "WOLF SLAYER!");
- else if(bonus==FinishedBonus)sprintf (string, "SLAIN!");
- else if(bonus==TackleBonus)sprintf (string, "Tackle!");
- else if(bonus==AboveBonus)sprintf (string, "Death from Above!");
- else sprintf (string, "Excellent!");
+ const char *bonus_name;
+ if (bonus < bonus_count)
+ bonus_name = bonus_names[bonus];
+ else
+ bonus_name = "Excellent!"; // When does this happen?
glColor4f(0,0,0,1-bonustime);
- text.glPrintOutline(1024/2-10*strlen(string)-4,768/16-4+768*4/5,string,1,2.5,1024,768);
+ text.glPrintOutline(1024/2-10*strlen(bonus_name)-4,768/16-4+768*4/5,bonus_name,1,2.5,1024,768);
glColor4f(1,0,0,1-bonustime);
- text.glPrint(1024/2-10*strlen(string),768/16+768*4/5,string,1,2,1024,768);
+ text.glPrint(1024/2-10*strlen(bonus_name),768/16+768*4/5,bonus_name,1,2,1024,768);
sprintf (string, "%d",(int)bonusvalue);
glColor4f(0,0,0,1-bonustime);
indialogue=0;
dialoguegonethrough[whichdialogue]++;
if(dialogueboxsound[whichdialogue][indialogue]!=0){
- static float gLoc[3];
- static float vel[3];
- gLoc[0]=player[participantfocus[whichdialogue][indialogue]].coords.x;
- gLoc[1]=player[participantfocus[whichdialogue][indialogue]].coords.y;
- gLoc[2]=player[participantfocus[whichdialogue][indialogue]].coords.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]==-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);
+ emit_sound_at(whichsoundplay, player[participantfocus[whichdialogue][indialogue]].coords);
}
}
}
glEnable(GL_TEXTURE_2D);
- //Awards
- int numawards = 0;
- int awards[30];
-
- if(damagetaken==0&&player[0].bloodloss==0){
- awards[numawards]=awardflawless;
- numawards++;
- }
- bool alldead = true;
- for(i=1;i<numplayers;i++){
- if(player[i].dead!=2)alldead=0;
- }
- if(alldead){
- awards[numawards]=awardalldead;
- numawards++;
- }
- alldead=1;
- for(i=1;i<numplayers;i++){
- if(player[i].dead!=1)alldead=0;
- }
- if(alldead){
- awards[numawards]=awardnodead;
- numawards++;
- }
- if(numresponded==0&&!numthrowkill){
- awards[numawards]=awardstealth;
- numawards++;
- }
- if(numattacks==numstaffattack&&numattacks>0){
- awards[numawards]=awardbojutsu;
- numawards++;
- }
- if(numattacks==numswordattack&&numattacks>0){
- awards[numawards]=awardswordsman;
- numawards++;
- }
- if(numattacks==numknifeattack&&numattacks>0){
- awards[numawards]=awardknifefighter;
- numawards++;
- }
- if(numattacks==numunarmedattack&&numthrowkill==0&&weapons.numweapons>0){
- awards[numawards]=awardkungfu;
- numawards++;
- }
- if(numescaped>0){
- awards[numawards]=awardevasion;
- numawards++;
- }
- if(numflipfail==0&&numflipped+numwallflipped*2>20){
- awards[numawards]=awardacrobat;
- numawards++;
- }
- if(numthrowkill==numplayers-1){
- awards[numawards]=awardlongrange;
- numawards++;
- }
- alldead=1;
- for(i=1;i<numplayers;i++){
- if(player[i].dead!=2)alldead=0;
- }
- if(numafterkill>0&&alldead){
- awards[numawards]=awardbrutal;
- numawards++;
- }
- if(numreversals>((float)numattacks)*.8&&numreversals>3){
- awards[numawards]=awardaikido;
- numawards++;
- }
- if(maxalarmed==1&&numplayers>2){
- awards[numawards]=awardstrategy;
- numawards++;
- }
- if(numflipfail>3){
- awards[numawards]=awardklutz;
- numawards++;
- }
-
//Win Screen Won Victory
glEnable(GL_TEXTURE_2D);
strcat(string,temp);
text.glPrintOutlined(1024/30,768*6/8-40,string,1,2,1024,768);
+ //Awards
+ int awards[award_count];
+ int numawards = award_awards(awards);
+
for (i = 0; i < numawards && i < 6; i++)
text.glPrintOutlined(1024/30,768*6/8-90-40*i,award_names[awards[i]],1,2,1024,768);
}