+++ /dev/null
-// WL_INTER.C\r
-\r
-#include "WL_DEF.H"\r
-#pragma hdrstop\r
-\r
-\r
-//==========================================================================\r
-\r
-/*\r
-==================\r
-=\r
-= CLearSplitVWB\r
-=\r
-==================\r
-*/\r
-\r
-void ClearSplitVWB (void)\r
-{\r
- memset (update,0,sizeof(update));\r
- WindowX = 0;\r
- WindowY = 0;\r
- WindowW = 320;\r
- WindowH = 160;\r
-}\r
-\r
-\r
-//==========================================================================\r
-\r
-#ifdef SPEAR\r
-#ifndef SPEARDEMO\r
-////////////////////////////////////////////////////////\r
-//\r
-// End of Spear of Destiny\r
-//\r
-////////////////////////////////////////////////////////\r
-\r
-void EndScreen (int palette, int screen)\r
-{\r
- CA_CacheScreen (screen);\r
- VW_UpdateScreen ();\r
- CA_CacheGrChunk (palette);\r
- VL_FadeIn(0,255,grsegs[palette],30);\r
- UNCACHEGRCHUNK (palette);\r
- IN_ClearKeysDown ();\r
- IN_Ack ();\r
- VW_FadeOut ();\r
-}\r
-\r
-\r
-void EndSpear(void)\r
-{\r
- EndScreen (END1PALETTE, ENDSCREEN11PIC);\r
-\r
- CA_CacheScreen (ENDSCREEN3PIC);\r
- VW_UpdateScreen ();\r
- CA_CacheGrChunk (END3PALETTE);\r
- VL_FadeIn(0,255,grsegs[END3PALETTE],30);\r
- UNCACHEGRCHUNK (END3PALETTE);\r
- fontnumber = 0;\r
- fontcolor = 0xd0;\r
- WindowX = 0;\r
- WindowW = 320;\r
- PrintX = 0;\r
- PrintY = 180;\r
- US_CPrint (STR_ENDGAME1"\n");\r
- US_CPrint (STR_ENDGAME2);\r
- VW_UpdateScreen ();\r
- IN_StartAck ();\r
- TimeCount = 0;\r
- while (!IN_CheckAck () && TimeCount < 700);\r
-\r
- PrintX = 0;\r
- PrintY = 180;\r
- VWB_Bar(0,180,320,20,0);\r
- US_CPrint (STR_ENDGAME3"\n");\r
- US_CPrint (STR_ENDGAME4);\r
- VW_UpdateScreen ();\r
- IN_StartAck ();\r
- TimeCount = 0;\r
- while (!IN_CheckAck () && TimeCount < 700);\r
-\r
- VW_FadeOut ();\r
-\r
- EndScreen (END4PALETTE, ENDSCREEN4PIC);\r
- EndScreen (END5PALETTE, ENDSCREEN5PIC);\r
- EndScreen (END6PALETTE, ENDSCREEN6PIC);\r
- EndScreen (END7PALETTE, ENDSCREEN7PIC);\r
- EndScreen (END8PALETTE, ENDSCREEN8PIC);\r
- EndScreen (END9PALETTE, ENDSCREEN9PIC);\r
-\r
- EndScreen (END2PALETTE, ENDSCREEN12PIC);\r
-\r
- MainMenu[savegame].active = 0;\r
-}\r
-#endif\r
-#endif\r
-\r
-//==========================================================================\r
-\r
-/*\r
-==================\r
-=\r
-= Victory\r
-=\r
-==================\r
-*/\r
-\r
-void Victory (void)\r
-{\r
-#ifndef SPEARDEMO\r
- long sec;\r
- int i,min,kr,sr,tr,x;\r
- char tempstr[8];\r
-\r
-#define RATIOX 6\r
-#define RATIOY 14\r
-#define TIMEX 14\r
-#define TIMEY 8\r
-\r
-\r
-#ifdef SPEAR\r
- StartCPMusic (XTHEEND_MUS);\r
-\r
- CA_CacheGrChunk(BJCOLLAPSE1PIC);\r
- CA_CacheGrChunk(BJCOLLAPSE2PIC);\r
- CA_CacheGrChunk(BJCOLLAPSE3PIC);\r
- CA_CacheGrChunk(BJCOLLAPSE4PIC);\r
-\r
- VWB_Bar(0,0,320,200,VIEWCOLOR);\r
- VWB_DrawPic (124,44,BJCOLLAPSE1PIC);\r
- VW_UpdateScreen ();\r
- VW_FadeIn ();\r
- VW_WaitVBL(2*70);\r
- VWB_DrawPic (124,44,BJCOLLAPSE2PIC);\r
- VW_UpdateScreen ();\r
- VW_WaitVBL(105);\r
- VWB_DrawPic (124,44,BJCOLLAPSE3PIC);\r
- VW_UpdateScreen ();\r
- VW_WaitVBL(105);\r
- VWB_DrawPic (124,44,BJCOLLAPSE4PIC);\r
- VW_UpdateScreen ();\r
- VW_WaitVBL(3*70);\r
-\r
- UNCACHEGRCHUNK(BJCOLLAPSE1PIC);\r
- UNCACHEGRCHUNK(BJCOLLAPSE2PIC);\r
- UNCACHEGRCHUNK(BJCOLLAPSE3PIC);\r
- UNCACHEGRCHUNK(BJCOLLAPSE4PIC);\r
- VL_FadeOut (0,255,0,17,17,5);\r
-#endif\r
-\r
- StartCPMusic (URAHERO_MUS);\r
- ClearSplitVWB ();\r
- CacheLump(LEVELEND_LUMP_START,LEVELEND_LUMP_END);\r
- CA_CacheGrChunk(STARTFONT);\r
-\r
-#ifndef SPEAR\r
- CA_CacheGrChunk(C_TIMECODEPIC);\r
-#endif\r
-\r
-\r
- VWB_Bar (0,0,320,200-STATUSLINES,127);\r
-#ifdef JAPAN\r
-#ifndef JAPDEMO\r
- CA_CacheGrChunk(C_ENDRATIOSPIC);\r
- VWB_DrawPic(0,0,C_ENDRATIOSPIC);\r
- UNCACHEGRCHUNK(C_ENDRATIOSPIC);\r
-#endif\r
-#else\r
- Write(18,2,STR_YOUWIN);\r
-\r
- Write(TIMEX,TIMEY-2,STR_TOTALTIME);\r
-\r
- Write(12,RATIOY-2,"averages");\r
-\r
- #ifdef SPANISH\r
- Write(RATIOX+2, RATIOY, STR_RATKILL);\r
- Write(RATIOX+2, RATIOY+2, STR_RATSECRET);\r
- Write(RATIOX+2, RATIOY+4,STR_RATTREASURE);\r
- #else\r
- Write(RATIOX+8,RATIOY, STR_RATKILL);\r
- Write(RATIOX+4,RATIOY+2, STR_RATSECRET);\r
- Write(RATIOX, RATIOY+4,STR_RATTREASURE);\r
- #endif\r
-\r
-#endif\r
-\r
-#ifndef JAPDEMO\r
- VWB_DrawPic (8,4,L_BJWINSPIC);\r
-#endif\r
-\r
-\r
-#ifndef SPEAR\r
- for (kr = sr = tr = sec = i = 0;i < 8;i++)\r
-#else\r
- for (kr = sr = tr = sec = i = 0;i < 20;i++)\r
-#endif\r
- {\r
- sec += LevelRatios[i].time;\r
- kr += LevelRatios[i].kill;\r
- sr += LevelRatios[i].secret;\r
- tr += LevelRatios[i].treasure;\r
- }\r
-\r
-#ifndef SPEAR\r
- kr /= 8;\r
- sr /= 8;\r
- tr /= 8;\r
-#else\r
- kr /= 14;\r
- sr /= 14;\r
- tr /= 14;\r
-#endif\r
-\r
- min = sec/60;\r
- sec %= 60;\r
-\r
- if (min > 99)\r
- min = sec = 99;\r
-\r
- i = TIMEX*8+1;\r
- VWB_DrawPic(i,TIMEY*8,L_NUM0PIC+(min/10));\r
- i += 2*8;\r
- VWB_DrawPic(i,TIMEY*8,L_NUM0PIC+(min%10));\r
- i += 2*8;\r
- Write(i/8,TIMEY,":");\r
- i += 1*8;\r
- VWB_DrawPic(i,TIMEY*8,L_NUM0PIC+(sec/10));\r
- i += 2*8;\r
- VWB_DrawPic(i,TIMEY*8,L_NUM0PIC+(sec%10));\r
- VW_UpdateScreen ();\r
-\r
- itoa(kr,tempstr,10);\r
- x=RATIOX+24-strlen(tempstr)*2;\r
- Write(x,RATIOY,tempstr);\r
-\r
- itoa(sr,tempstr,10);\r
- x=RATIOX+24-strlen(tempstr)*2;\r
- Write(x,RATIOY+2,tempstr);\r
-\r
- itoa(tr,tempstr,10);\r
- x=RATIOX+24-strlen(tempstr)*2;\r
- Write(x,RATIOY+4,tempstr);\r
-\r
-\r
-#ifndef SPANISH\r
-#ifndef UPLOAD\r
-#ifndef SPEAR\r
- //\r
- // TOTAL TIME VERIFICATION CODE\r
- //\r
- if (gamestate.difficulty>=gd_medium)\r
- {\r
- VWB_DrawPic (30*8,TIMEY*8,C_TIMECODEPIC);\r
- fontnumber = 0;\r
- fontcolor = READHCOLOR;\r
- PrintX = 30*8-3;\r
- PrintY = TIMEY*8+8;\r
- PrintX+=4;\r
- tempstr[0] = (((min/10)^(min%10))^0xa)+'A';\r
- tempstr[1] = (((sec/10)^(sec%10))^0xa)+'A';\r
- tempstr[2] = (tempstr[0]^tempstr[1])+'A';\r
- tempstr[3] = 0;\r
- US_Print(tempstr);\r
- }\r
-#endif\r
-#endif\r
-#endif\r
-\r
-\r
- fontnumber = 1;\r
-\r
- VW_UpdateScreen ();\r
- VW_FadeIn ();\r
-\r
- IN_Ack();\r
-\r
- #ifndef SPEAR\r
- if (Keyboard[sc_P] && MS_CheckParm("goobers"))\r
- PicturePause();\r
- #endif\r
-\r
- VW_FadeOut ();\r
-\r
-#ifndef SPEAR\r
- UNCACHEGRCHUNK(C_TIMECODEPIC);\r
-#endif\r
- UnCacheLump(LEVELEND_LUMP_START,LEVELEND_LUMP_END);\r
-\r
-#ifndef SPEAR\r
- EndText();\r
-#else\r
- EndSpear();\r
-#endif\r
-\r
-#endif // SPEARDEMO\r
-}\r
-\r
-\r
-//==========================================================================\r
-\r
-#ifndef JAPAN\r
-/*\r
-==================\r
-=\r
-= PG13\r
-=\r
-==================\r
-*/\r
-\r
-void PG13 (void)\r
-{\r
- VW_FadeOut();\r
- VWB_Bar(0,0,320,200,0x82); // background\r
-\r
- CA_CacheGrChunk (PG13PIC);\r
- VWB_DrawPic (216,110,PG13PIC);\r
- VW_UpdateScreen ();\r
-\r
- UNCACHEGRCHUNK (PG13PIC);\r
-\r
- VW_FadeIn();\r
- IN_UserInput(TickBase*7);\r
-\r
- VW_FadeOut ();\r
-}\r
-#endif\r
-\r
-\r
-//==========================================================================\r
-\r
-void Write(int x,int y,char *string)\r
-{\r
- int alpha[]={L_NUM0PIC,L_NUM1PIC,L_NUM2PIC,L_NUM3PIC,L_NUM4PIC,L_NUM5PIC,\r
- L_NUM6PIC,L_NUM7PIC,L_NUM8PIC,L_NUM9PIC,L_COLONPIC,0,0,0,0,0,0,L_APIC,L_BPIC,\r
- L_CPIC,L_DPIC,L_EPIC,L_FPIC,L_GPIC,L_HPIC,L_IPIC,L_JPIC,L_KPIC,\r
- L_LPIC,L_MPIC,L_NPIC,L_OPIC,L_PPIC,L_QPIC,L_RPIC,L_SPIC,L_TPIC,\r
- L_UPIC,L_VPIC,L_WPIC,L_XPIC,L_YPIC,L_ZPIC};\r
-\r
- int i,ox,nx,ny;\r
- char ch;\r
-\r
-\r
- ox=nx=x*8;\r
- ny=y*8;\r
- for (i=0;i<strlen(string);i++)\r
- if (string[i]=='\n')\r
- {\r
- nx=ox;\r
- ny+=16;\r
- }\r
- else\r
- {\r
- ch=string[i];\r
- if (ch>='a')\r
- ch-=('a'-'A');\r
- ch-='0';\r
-\r
- switch(string[i])\r
- {\r
- case '!':\r
- VWB_DrawPic(nx,ny,L_EXPOINTPIC);\r
- nx+=8;\r
- continue;\r
-\r
- case '\'':\r
- VWB_DrawPic(nx,ny,L_APOSTROPHEPIC);\r
- nx+=8;\r
- continue;\r
-\r
- case ' ': break;\r
- case 0x3a: // ':'\r
-\r
- VWB_DrawPic(nx,ny,L_COLONPIC);\r
- nx+=8;\r
- continue;\r
-\r
- case '%':\r
- VWB_DrawPic(nx,ny,L_PERCENTPIC);\r
- break;\r
-\r
- default:\r
- VWB_DrawPic(nx,ny,alpha[ch]);\r
- }\r
- nx+=16;\r
- }\r
-}\r
-\r
-\r
-//\r
-// Breathe Mr. BJ!!!\r
-//\r
-void BJ_Breathe(void)\r
-{\r
- static int which=0,max=10;\r
- int pics[2]={L_GUYPIC,L_GUY2PIC};\r
-\r
-\r
- if (TimeCount>max)\r
- {\r
- which^=1;\r
- VWB_DrawPic(0,16,pics[which]);\r
- VW_UpdateScreen();\r
- TimeCount=0;\r
- max=35;\r
- }\r
-}\r
-\r
-\r
-\r
-/*\r
-==================\r
-=\r
-= LevelCompleted\r
-=\r
-= Entered with the screen faded out\r
-= Still in split screen mode with the status bar\r
-=\r
-= Exit with the screen faded out\r
-=\r
-==================\r
-*/\r
-\r
-#ifndef SPEAR\r
-LRstruct LevelRatios[8];\r
-#else\r
-LRstruct LevelRatios[20];\r
-#endif\r
-\r
-void LevelCompleted (void)\r
-{\r
- #define VBLWAIT 30\r
- #define PAR_AMOUNT 500\r
- #define PERCENT100AMT 10000\r
- typedef struct {\r
- float time;\r
- char timestr[6];\r
- } times;\r
-\r
- int x,i,min,sec,ratio,kr,sr,tr;\r
- unsigned temp;\r
- char tempstr[10];\r
- long bonus,timeleft=0;\r
- times parTimes[]=\r
- {\r
-#ifndef SPEAR\r
- //\r
- // Episode One Par Times\r
- //\r
- {1.5, "01:30"},\r
- {2, "02:00"},\r
- {2, "02:00"},\r
- {3.5, "03:30"},\r
- {3, "03:00"},\r
- {3, "03:00"},\r
- {2.5, "02:30"},\r
- {2.5, "02:30"},\r
- {0, "??:??"}, // Boss level\r
- {0, "??:??"}, // Secret level\r
-\r
- //\r
- // Episode Two Par Times\r
- //\r
- {1.5, "01:30"},\r
- {3.5, "03:30"},\r
- {3, "03:00"},\r
- {2, "02:00"},\r
- {4, "04:00"},\r
- {6, "06:00"},\r
- {1, "01:00"},\r
- {3, "03:00"},\r
- {0, "??:??"},\r
- {0, "??:??"},\r
-\r
- //\r
- // Episode Three Par Times\r
- //\r
- {1.5, "01:30"},\r
- {1.5, "01:30"},\r
- {2.5, "02:30"},\r
- {2.5, "02:30"},\r
- {3.5, "03:30"},\r
- {2.5, "02:30"},\r
- {2, "02:00"},\r
- {6, "06:00"},\r
- {0, "??:??"},\r
- {0, "??:??"},\r
-\r
- //\r
- // Episode Four Par Times\r
- //\r
- {2, "02:00"},\r
- {2, "02:00"},\r
- {1.5, "01:30"},\r
- {1, "01:00"},\r
- {4.5, "04:30"},\r
- {3.5, "03:30"},\r
- {2, "02:00"},\r
- {4.5, "04:30"},\r
- {0, "??:??"},\r
- {0, "??:??"},\r
-\r
- //\r
- // Episode Five Par Times\r
- //\r
- {2.5, "02:30"},\r
- {1.5, "01:30"},\r
- {2.5, "02:30"},\r
- {2.5, "02:30"},\r
- {4, "04:00"},\r
- {3, "03:00"},\r
- {4.5, "04:30"},\r
- {3.5, "03:30"},\r
- {0, "??:??"},\r
- {0, "??:??"},\r
-\r
- //\r
- // Episode Six Par Times\r
- //\r
- {6.5, "06:30"},\r
- {4, "04:00"},\r
- {4.5, "04:30"},\r
- {6, "06:00"},\r
- {5, "05:00"},\r
- {5.5, "05:30"},\r
- {5.5, "05:30"},\r
- {8.5, "08:30"},\r
- {0, "??:??"},\r
- {0, "??:??"}\r
-#else\r
- //\r
- // SPEAR OF DESTINY TIMES\r
- //\r
- {1.5, "01:30"},\r
- {3.5, "03:30"},\r
- {2.75, "02:45"},\r
- {3.5, "03:30"},\r
- {0, "??:??"}, // Boss 1\r
- {4.5, "04:30"},\r
- {3.25, "03:15"},\r
- {2.75, "02:45"},\r
- {4.75, "04:45"},\r
- {0, "??:??"}, // Boss 2\r
- {6.5, "06:30"},\r
- {4.5, "04:30"},\r
- {2.75, "02:45"},\r
- {4.5, "04:30"},\r
- {6, "06:00"},\r
- {0, "??:??"}, // Boss 3\r
- {6, "06:00"},\r
- {0, "??:??"}, // Boss 4\r
- {0, "??:??"}, // Secret level 1\r
- {0, "??:??"}, // Secret level 2\r
-#endif\r
- };\r
-\r
-\r
-\r
- CacheLump(LEVELEND_LUMP_START,LEVELEND_LUMP_END);\r
- ClearSplitVWB (); // set up for double buffering in split screen\r
- VWB_Bar (0,0,320,200-STATUSLINES,127);\r
- StartCPMusic(ENDLEVEL_MUS);\r
-\r
-//\r
-// do the intermission\r
-//\r
- IN_ClearKeysDown();\r
- IN_StartAck();\r
-\r
-#ifdef JAPAN\r
- CA_CacheGrChunk(C_INTERMISSIONPIC);\r
- VWB_DrawPic(0,0,C_INTERMISSIONPIC);\r
- UNCACHEGRCHUNK(C_INTERMISSIONPIC);\r
-#endif\r
- VWB_DrawPic(0,16,L_GUYPIC);\r
-\r
-#ifndef SPEAR\r
- if (mapon<8)\r
-#else\r
- if (mapon != 4 &&\r
- mapon != 9 &&\r
- mapon != 15 &&\r
- mapon < 17)\r
-#endif\r
- {\r
-#ifndef JAPAN\r
- #ifdef SPANISH\r
- Write(14,2,"piso\ncompletado");\r
- #else\r
- Write(14,2,"floor\ncompleted");\r
- #endif\r
-\r
- Write(14,7,STR_BONUS" 0");\r
- Write(16,10,STR_TIME);\r
- Write(16,12,STR_PAR);\r
-\r
- #ifdef SPANISH\r
- Write(11,14, STR_RAT2KILL);\r
- Write(11,16, STR_RAT2SECRET);\r
- Write(11,18,STR_RAT2TREASURE);\r
- #else\r
- Write(9,14, STR_RAT2KILL);\r
- Write(5,16, STR_RAT2SECRET);\r
- Write(1,18,STR_RAT2TREASURE);\r
- #endif\r
-\r
- Write(26,2,itoa(gamestate.mapon+1,tempstr,10));\r
-#endif\r
-\r
- #ifdef SPANISH\r
- Write(30,12,parTimes[gamestate.episode*10+mapon].timestr);\r
- #else\r
- Write(26,12,parTimes[gamestate.episode*10+mapon].timestr);\r
- #endif\r
-\r
- //\r
- // PRINT TIME\r
- //\r
- sec=gamestate.TimeCount/70;\r
-\r
- if (sec > 99*60) // 99 minutes max\r
- sec = 99*60;\r
-\r
- if (gamestate.TimeCount<parTimes[gamestate.episode*10+mapon].time*4200)\r
- timeleft=(parTimes[gamestate.episode*10+mapon].time*4200)/70-sec;\r
-\r
- min=sec/60;\r
- sec%=60;\r
-\r
- #ifdef SPANISH\r
- i=30*8;\r
- #else\r
- i=26*8;\r
- #endif\r
- VWB_DrawPic(i,10*8,L_NUM0PIC+(min/10));\r
- i+=2*8;\r
- VWB_DrawPic(i,10*8,L_NUM0PIC+(min%10));\r
- i+=2*8;\r
- Write(i/8,10,":");\r
- i+=1*8;\r
- VWB_DrawPic(i,10*8,L_NUM0PIC+(sec/10));\r
- i+=2*8;\r
- VWB_DrawPic(i,10*8,L_NUM0PIC+(sec%10));\r
-\r
- VW_UpdateScreen ();\r
- VW_FadeIn ();\r
-\r
-\r
- //\r
- // FIGURE RATIOS OUT BEFOREHAND\r
- //\r
- kr = sr = tr = 0;\r
- if (gamestate.killtotal)\r
- kr=(gamestate.killcount*100)/gamestate.killtotal;\r
- if (gamestate.secrettotal)\r
- sr=(gamestate.secretcount*100)/gamestate.secrettotal;\r
- if (gamestate.treasuretotal)\r
- tr=(gamestate.treasurecount*100)/gamestate.treasuretotal;\r
-\r
-\r
- //\r
- // PRINT TIME BONUS\r
- //\r
- bonus=timeleft*PAR_AMOUNT;\r
- if (bonus)\r
- {\r
- for (i=0;i<=timeleft;i++)\r
- {\r
- ltoa((long)i*PAR_AMOUNT,tempstr,10);\r
- x=36-strlen(tempstr)*2;\r
- Write(x,7,tempstr);\r
- if (!(i%(PAR_AMOUNT/10)))\r
- SD_PlaySound(ENDBONUS1SND);\r
- VW_UpdateScreen();\r
- while(SD_SoundPlaying())\r
- BJ_Breathe();\r
- if (IN_CheckAck())\r
- goto done;\r
- }\r
-\r
- VW_UpdateScreen();\r
- SD_PlaySound(ENDBONUS2SND);\r
- while(SD_SoundPlaying())\r
- BJ_Breathe();\r
- }\r
-\r
-\r
- #ifdef SPANISH\r
- #define RATIOXX 33\r
- #else\r
- #define RATIOXX 37\r
- #endif\r
- //\r
- // KILL RATIO\r
- //\r
- ratio=kr;\r
- for (i=0;i<=ratio;i++)\r
- {\r
- itoa(i,tempstr,10);\r
- x=RATIOXX-strlen(tempstr)*2;\r
- Write(x,14,tempstr);\r
- if (!(i%10))\r
- SD_PlaySound(ENDBONUS1SND);\r
- VW_UpdateScreen ();\r
- while(SD_SoundPlaying())\r
- BJ_Breathe();\r
-\r
- if (IN_CheckAck())\r
- goto done;\r
- }\r
- if (ratio==100)\r
- {\r
- VW_WaitVBL(VBLWAIT);\r
- SD_StopSound();\r
- bonus+=PERCENT100AMT;\r
- ltoa(bonus,tempstr,10);\r
- x=(RATIOXX-1)-strlen(tempstr)*2;\r
- Write(x,7,tempstr);\r
- VW_UpdateScreen();\r
- SD_PlaySound(PERCENT100SND);\r
- }\r
- else\r
- if (!ratio)\r
- {\r
- VW_WaitVBL(VBLWAIT);\r
- SD_StopSound();\r
- SD_PlaySound(NOBONUSSND);\r
- }\r
- else\r
- SD_PlaySound(ENDBONUS2SND);\r
-\r
- VW_UpdateScreen();\r
- while(SD_SoundPlaying())\r
- BJ_Breathe();\r
-\r
-\r
- //\r
- // SECRET RATIO\r
- //\r
- ratio=sr;\r
- for (i=0;i<=ratio;i++)\r
- {\r
- itoa(i,tempstr,10);\r
- x=RATIOXX-strlen(tempstr)*2;\r
- Write(x,16,tempstr);\r
- if (!(i%10))\r
- SD_PlaySound(ENDBONUS1SND);\r
- VW_UpdateScreen ();\r
- while(SD_SoundPlaying())\r
- BJ_Breathe();\r
- BJ_Breathe();\r
-\r
- if (IN_CheckAck())\r
- goto done;\r
- }\r
- if (ratio==100)\r
- {\r
- VW_WaitVBL(VBLWAIT);\r
- SD_StopSound();\r
- bonus+=PERCENT100AMT;\r
- ltoa(bonus,tempstr,10);\r
- x=(RATIOXX-1)-strlen(tempstr)*2;\r
- Write(x,7,tempstr);\r
- VW_UpdateScreen();\r
- SD_PlaySound(PERCENT100SND);\r
- }\r
- else\r
- if (!ratio)\r
- {\r
- VW_WaitVBL(VBLWAIT);\r
- SD_StopSound();\r
- SD_PlaySound(NOBONUSSND);\r
- }\r
- else\r
- SD_PlaySound(ENDBONUS2SND);\r
- VW_UpdateScreen();\r
- while(SD_SoundPlaying())\r
- BJ_Breathe();\r
-\r
-\r
- //\r
- // TREASURE RATIO\r
- //\r
- ratio=tr;\r
- for (i=0;i<=ratio;i++)\r
- {\r
- itoa(i,tempstr,10);\r
- x=RATIOXX-strlen(tempstr)*2;\r
- Write(x,18,tempstr);\r
- if (!(i%10))\r
- SD_PlaySound(ENDBONUS1SND);\r
- VW_UpdateScreen ();\r
- while(SD_SoundPlaying())\r
- BJ_Breathe();\r
- if (IN_CheckAck())\r
- goto done;\r
- }\r
- if (ratio==100)\r
- {\r
- VW_WaitVBL(VBLWAIT);\r
- SD_StopSound();\r
- bonus+=PERCENT100AMT;\r
- ltoa(bonus,tempstr,10);\r
- x=(RATIOXX-1)-strlen(tempstr)*2;\r
- Write(x,7,tempstr);\r
- VW_UpdateScreen();\r
- SD_PlaySound(PERCENT100SND);\r
- }\r
- else\r
- if (!ratio)\r
- {\r
- VW_WaitVBL(VBLWAIT);\r
- SD_StopSound();\r
- SD_PlaySound(NOBONUSSND);\r
- }\r
- else\r
- SD_PlaySound(ENDBONUS2SND);\r
- VW_UpdateScreen();\r
- while(SD_SoundPlaying())\r
- BJ_Breathe();\r
-\r
-\r
- //\r
- // JUMP STRAIGHT HERE IF KEY PRESSED\r
- //\r
- done:\r
-\r
- itoa(kr,tempstr,10);\r
- x=RATIOXX-strlen(tempstr)*2;\r
- Write(x,14,tempstr);\r
-\r
- itoa(sr,tempstr,10);\r
- x=RATIOXX-strlen(tempstr)*2;\r
- Write(x,16,tempstr);\r
-\r
- itoa(tr,tempstr,10);\r
- x=RATIOXX-strlen(tempstr)*2;\r
- Write(x,18,tempstr);\r
-\r
- bonus=(long)timeleft*PAR_AMOUNT+\r
- (PERCENT100AMT*(kr==100))+\r
- (PERCENT100AMT*(sr==100))+\r
- (PERCENT100AMT*(tr==100));\r
-\r
- GivePoints(bonus);\r
- ltoa(bonus,tempstr,10);\r
- x=36-strlen(tempstr)*2;\r
- Write(x,7,tempstr);\r
-\r
- //\r
- // SAVE RATIO INFORMATION FOR ENDGAME\r
- //\r
- LevelRatios[mapon].kill=kr;\r
- LevelRatios[mapon].secret=sr;\r
- LevelRatios[mapon].treasure=tr;\r
- LevelRatios[mapon].time=min*60+sec;\r
- }\r
- else\r
- {\r
-#ifdef SPEAR\r
-#ifndef SPEARDEMO\r
- switch(mapon)\r
- {\r
- case 4: Write(14,4," trans\n"\r
- " grosse\n"\r
- STR_DEFEATED); break;\r
- case 9: Write(14,4,"barnacle\n"\r
- "wilhelm\n"\r
- STR_DEFEATED); break;\r
- case 15: Write(14,4,"ubermutant\n"\r
- STR_DEFEATED); break;\r
- case 17: Write(14,4," death\n"\r
- " knight\n"\r
- STR_DEFEATED); break;\r
- case 18: Write(13,4,"secret tunnel\n"\r
- " area\n"\r
- " completed!"); break;\r
- case 19: Write(13,4,"secret castle\n"\r
- " area\n"\r
- " completed!"); break;\r
- }\r
-#endif\r
-#else\r
- Write(14,4,"secret floor\n completed!");\r
-#endif\r
-\r
- Write(10,16,"15000 bonus!");\r
-\r
- VW_UpdateScreen();\r
- VW_FadeIn();\r
-\r
- GivePoints(15000);\r
- }\r
-\r
-\r
- DrawScore();\r
- VW_UpdateScreen();\r
-\r
- TimeCount=0;\r
- IN_StartAck();\r
- while(!IN_CheckAck())\r
- BJ_Breathe();\r
-\r
-//\r
-// done\r
-//\r
-#ifdef SPEARDEMO\r
- if (gamestate.mapon == 1)\r
- {\r
- SD_PlaySound (BONUS1UPSND);\r
-\r
- CA_CacheGrChunk (STARTFONT+1);\r
- Message ("This concludes your demo\n"\r
- "of Spear of Destiny! Now,\n"\r
- "go to your local software\n"\r
- "store and buy it!");\r
- UNCACHEGRCHUNK (STARTFONT+1);\r
-\r
- IN_ClearKeysDown();\r
- IN_Ack();\r
- }\r
-#endif\r
-\r
-#ifdef JAPDEMO\r
- if (gamestate.mapon == 3)\r
- {\r
- SD_PlaySound (BONUS1UPSND);\r
-\r
- CA_CacheGrChunk (STARTFONT+1);\r
- Message ("This concludes your demo\n"\r
- "of Wolfenstein 3-D! Now,\n"\r
- "go to your local software\n"\r
- "store and buy it!");\r
- UNCACHEGRCHUNK (STARTFONT+1);\r
-\r
- IN_ClearKeysDown();\r
- IN_Ack();\r
- }\r
-#endif\r
-\r
- #ifndef SPEAR\r
- if (Keyboard[sc_P] && MS_CheckParm("goobers"))\r
- PicturePause();\r
- #endif\r
-\r
- VW_FadeOut ();\r
- temp = bufferofs;\r
- for (i=0;i<3;i++)\r
- {\r
- bufferofs = screenloc[i];\r
- DrawPlayBorder ();\r
- }\r
- bufferofs = temp;\r
-\r
- UnCacheLump(LEVELEND_LUMP_START,LEVELEND_LUMP_END);\r
-}\r
-\r
-\r
-\r
-//==========================================================================\r
-\r
-\r
-/*\r
-=================\r
-=\r
-= PreloadGraphics\r
-=\r
-= Fill the cache up\r
-=\r
-=================\r
-*/\r
-\r
-boolean PreloadUpdate(unsigned current, unsigned total)\r
-{\r
- unsigned w = WindowW - 10;\r
-\r
-\r
- VWB_Bar(WindowX + 5,WindowY + WindowH - 3,w,2,BLACK);\r
- w = ((long)w * current) / total;\r
- if (w)\r
- {\r
- VWB_Bar(WindowX + 5,WindowY + WindowH - 3,w,2,0x37); //SECONDCOLOR);\r
- VWB_Bar(WindowX + 5,WindowY + WindowH - 3,w-1,1,0x32);\r
-\r
- }\r
- VW_UpdateScreen();\r
-// if (LastScan == sc_Escape)\r
-// {\r
-// IN_ClearKeysDown();\r
-// return(true);\r
-// }\r
-// else\r
- return(false);\r
-}\r
-\r
-void PreloadGraphics(void)\r
-{\r
- DrawLevel ();\r
- ClearSplitVWB (); // set up for double buffering in split screen\r
-\r
- VWB_Bar (0,0,320,200-STATUSLINES,127);\r
-\r
- LatchDrawPic (20-14,80-3*8,GETPSYCHEDPIC);\r
-\r
- WindowX = 160-14*8;\r
- WindowY = 80-3*8;\r
- WindowW = 28*8;\r
- WindowH = 48;\r
- VW_UpdateScreen();\r
- VW_FadeIn ();\r
-\r
- PM_Preload (PreloadUpdate);\r
- IN_UserInput (70);\r
- VW_FadeOut ();\r
-\r
- DrawPlayBorder ();\r
- VW_UpdateScreen ();\r
-}\r
-\r
-\r
-//==========================================================================\r
-\r
-/*\r
-==================\r
-=\r
-= DrawHighScores\r
-=\r
-==================\r
-*/\r
-\r
-void DrawHighScores(void)\r
-{\r
- char buffer[16],*str,buffer1[5];\r
- byte temp,temp1,temp2,temp3;\r
- word i,j,\r
- w,h,\r
- x,y;\r
- HighScore *s;\r
-\r
-\r
- MM_SortMem ();\r
-\r
-#ifndef SPEAR\r
-// CA_CacheGrChunk (C_CODEPIC);\r
- CA_CacheGrChunk (HIGHSCORESPIC);\r
- CA_CacheGrChunk (STARTFONT);\r
- CA_CacheGrChunk (C_LEVELPIC);\r
- CA_CacheGrChunk (C_SCOREPIC);\r
- CA_CacheGrChunk (C_NAMEPIC);\r
-\r
- ClearMScreen();\r
- DrawStripes(10);\r
-\r
- VWB_DrawPic(48,0,HIGHSCORESPIC);\r
- UNCACHEGRCHUNK (HIGHSCORESPIC);\r
-\r
- VWB_DrawPic(4*8,68,C_NAMEPIC);\r
- VWB_DrawPic(20*8,68,C_LEVELPIC);\r
- VWB_DrawPic(28*8,68,C_SCOREPIC);\r
-#ifndef UPLOAD\r
-// VWB_DrawPic(35*8,68,C_CODEPIC);\r
-#endif\r
- fontnumber=0;\r
-\r
-#else\r
- CacheLump (BACKDROP_LUMP_START,BACKDROP_LUMP_END);\r
- ClearMScreen();\r
- DrawStripes(10);\r
- UnCacheLump (BACKDROP_LUMP_START,BACKDROP_LUMP_END);\r
-\r
- CacheLump (HIGHSCORES_LUMP_START,HIGHSCORES_LUMP_END);\r
- CA_CacheGrChunk (STARTFONT+1);\r
- VWB_DrawPic (0,0,HIGHSCORESPIC);\r
-\r
- fontnumber = 1;\r
-#endif\r
-\r
-\r
-#ifndef SPEAR\r
- SETFONTCOLOR(15,0x29);\r
-#else\r
- SETFONTCOLOR(HIGHLIGHT,0x29);\r
-#endif\r
-\r
- for (i = 0,s = Scores;i < MaxScores;i++,s++)\r
- {\r
- PrintY = 76 + (16 * i);\r
-\r
- //\r
- // name\r
- //\r
-#ifndef SPEAR\r
- PrintX = 4*8;\r
-#else\r
- PrintX = 16;\r
-#endif\r
- US_Print(s->name);\r
-\r
- //\r
- // level\r
- //\r
- ultoa(s->completed,buffer,10);\r
-#ifndef SPEAR\r
- for (str = buffer;*str;str++)\r
- *str = *str + (129 - '0'); // Used fixed-width numbers (129...)\r
- USL_MeasureString(buffer,&w,&h);\r
- PrintX = (22 * 8)-w;\r
-#else\r
- USL_MeasureString(buffer,&w,&h);\r
- PrintX = 194 - w;\r
-#endif\r
-\r
-#ifndef UPLOAD\r
-#ifndef SPEAR\r
- PrintX -= 6;\r
- itoa(s->episode+1,buffer1,10);\r
- US_Print("E");\r
- US_Print(buffer1);\r
- US_Print("/L");\r
-#endif\r
-#endif\r
-\r
-#ifdef SPEAR\r
- if (s->completed == 21)\r
- VWB_DrawPic (PrintX+8,PrintY-1,C_WONSPEARPIC);\r
- else\r
-#endif\r
- US_Print(buffer);\r
-\r
- //\r
- // score\r
- //\r
- ultoa(s->score,buffer,10);\r
-#ifndef SPEAR\r
- for (str = buffer;*str;str++)\r
- *str = *str + (129 - '0'); // Used fixed-width numbers (129...)\r
- USL_MeasureString(buffer,&w,&h);\r
- PrintX = (34 * 8) - 8 - w;\r
-#else\r
- USL_MeasureString(buffer,&w,&h);\r
- PrintX = 292 - w;\r
-#endif\r
- US_Print(buffer);\r
-\r
- #if 0\r
-#ifndef UPLOAD\r
-#ifndef SPEAR\r
- //\r
- // verification #\r
- //\r
- if (!i)\r
- {\r
- temp=(((s->score >> 28)& 0xf)^\r
- ((s->score >> 24)& 0xf))+'A';\r
- temp1=(((s->score >> 20)& 0xf)^\r
- ((s->score >> 16)& 0xf))+'A';\r
- temp2=(((s->score >> 12)& 0xf)^\r
- ((s->score >> 8)& 0xf))+'A';\r
- temp3=(((s->score >> 4)& 0xf)^\r
- ((s->score >> 0)& 0xf))+'A';\r
-\r
- SETFONTCOLOR(0x49,0x29);\r
- PrintX = 35*8;\r
- buffer[0]=temp;\r
- buffer[1]=temp1;\r
- buffer[2]=temp2;\r
- buffer[3]=temp3;\r
- buffer[4]=0;\r
- US_Print(buffer);\r
- SETFONTCOLOR(15,0x29);\r
- }\r
-#endif\r
-#endif\r
- #endif\r
- }\r
-\r
- VW_UpdateScreen ();\r
-\r
-#ifdef SPEAR\r
- UnCacheLump (HIGHSCORES_LUMP_START,HIGHSCORES_LUMP_END);\r
- fontnumber = 0;\r
-#endif\r
-}\r
-\r
-//===========================================================================\r
-\r
-\r
-/*\r
-=======================\r
-=\r
-= CheckHighScore\r
-=\r
-=======================\r
-*/\r
-\r
-void CheckHighScore (long score,word other)\r
-{\r
- word i,j;\r
- int n;\r
- HighScore myscore;\r
-\r
- strcpy(myscore.name,"");\r
- myscore.score = score;\r
- myscore.episode = gamestate.episode;\r
- myscore.completed = other;\r
-\r
- for (i = 0,n = -1;i < MaxScores;i++)\r
- {\r
- if\r
- (\r
- (myscore.score > Scores[i].score)\r
- || (\r
- (myscore.score == Scores[i].score)\r
- && (myscore.completed > Scores[i].completed)\r
- )\r
- )\r
- {\r
- for (j = MaxScores;--j > i;)\r
- Scores[j] = Scores[j - 1];\r
- Scores[i] = myscore;\r
- n = i;\r
- break;\r
- }\r
- }\r
-\r
-#ifdef SPEAR\r
- StartCPMusic (XAWARD_MUS);\r
-#else\r
- StartCPMusic (ROSTER_MUS);\r
-#endif\r
- DrawHighScores ();\r
-\r
- VW_FadeIn ();\r
-\r
- if (n != -1)\r
- {\r
- //\r
- // got a high score\r
- //\r
- PrintY = 76 + (16 * n);\r
-#ifndef SPEAR\r
- PrintX = 4*8;\r
- backcolor = BORDCOLOR;\r
- fontcolor = 15;\r
- US_LineInput(PrintX,PrintY,Scores[n].name,nil,true,MaxHighName,100);\r
-#else\r
- PrintX = 16;\r
- fontnumber = 1;\r
- VWB_Bar (PrintX-2,PrintY-2,145,15,0x9c);\r
- VW_UpdateScreen ();\r
- backcolor = 0x9c;\r
- fontcolor = 15;\r
- US_LineInput(PrintX,PrintY,Scores[n].name,nil,true,MaxHighName,130);\r
-#endif\r
- }\r
- else\r
- {\r
- IN_ClearKeysDown ();\r
- IN_UserInput(500);\r
- }\r
-\r
-}\r
-\r
-\r
-#ifndef UPLOAD\r
-#ifndef SPEAR\r
-#ifndef JAPAN\r
-////////////////////////////////////////////////////////\r
-//\r
-// NON-SHAREWARE NOTICE\r
-//\r
-////////////////////////////////////////////////////////\r
-void NonShareware(void)\r
-{\r
- VW_FadeOut();\r
-\r
- ClearMScreen();\r
- DrawStripes(10);\r
-\r
- CA_CacheGrChunk(STARTFONT+1);\r
- fontnumber = 1;\r
-\r
- SETFONTCOLOR(READHCOLOR,BKGDCOLOR);\r
- PrintX=110;\r
- PrintY=15;\r
-\r
- #ifdef SPANISH\r
- US_Print("Atencion");\r
- #else\r
- US_Print("Attention");\r
- #endif\r
-\r
- SETFONTCOLOR(HIGHLIGHT,BKGDCOLOR);\r
- WindowX=PrintX=40;\r
- PrintY=60;\r
- #ifdef SPANISH\r
- US_Print("Este juego NO es gratis y\n");\r
- US_Print("NO es Shareware; favor de\n");\r
- US_Print("no distribuirlo.\n\n");\r
- #else\r
- US_Print("This game is NOT shareware.\n");\r
- US_Print("Please do not distribute it.\n");\r
- US_Print("Thanks.\n\n");\r
- #endif\r
- US_Print(" Id Software\n");\r
-\r
- VW_UpdateScreen ();\r
- VW_FadeIn();\r
- IN_Ack();\r
-}\r
-#endif\r
-#endif\r
-#endif\r
-\r
-#ifdef SPEAR\r
-#ifndef SPEARDEMO\r
-////////////////////////////////////////////////////////\r
-//\r
-// COPY PROTECTION FOR FormGen\r
-//\r
-////////////////////////////////////////////////////////\r
-char far CopyProFailedStrs[][100] = {\r
- STR_COPY1,\r
- STR_COPY2,\r
-\r
- STR_COPY3,\r
- STR_COPY4,\r
-\r
- STR_COPY5,\r
- STR_COPY6,\r
-\r
- STR_COPY7,\r
- STR_COPY8,\r
-\r
- STR_COPY9,\r
- "",\r
-\r
- STR_COPY10,\r
- STR_COPY11,\r
-\r
- STR_COPY12,\r
- "",\r
-\r
- STR_COPY13,\r
- "",\r
-\r
- STR_COPY14,\r
- ""\r
- },\r
-\r
- far BackDoorStrs[5][16] = {\r
- "a spoon?",\r
- "bite me!",\r
- "joshua",\r
- "pelt",\r
-#ifdef BETA\r
- "beta"\r
-#else\r
- "snoops"\r
-#endif\r
- },\r
-\r
- far GoodBoyStrs[10][40] = {\r
- "...is the CORRECT ANSWER!",\r
- "",\r
-\r
- "Consider yourself bitten, sir.",\r
- "",\r
-\r
- "Greetings Professor Falken, would you",\r
- "like to play Spear of Destiny?",\r
-\r
- "Do you have any gold spray paint?",\r
- "",\r
-\r
-#ifdef BETA\r
- "Beta testing approved.",\r
-#else\r
- "I wish I had a 21\" monitor...",\r
-#endif\r
- ""\r
- },\r
-\r
- far bossstrs[4][24] = {\r
- "DEATH KNIGHT",\r
- "BARNACLE WILHELM",\r
- "UBERMUTANTUBER MUTANT",\r
- "TRANS GROSSE"\r
- },\r
-\r
- far WordStr[5][20] = {\r
- "New Game",\r
- "Sound...F4",\r
- "Control...F6",\r
- "Change View...F5",\r
- "Quit...F10"},\r
-\r
- far WordCorrect[5][2] = {"3","4","4","5","5"},\r
-\r
- far MemberStr[10][40] = {\r
- STR_COPY15,\r
- "",\r
-\r
- STR_COPY16,\r
- "",\r
-\r
- STR_COPY17,\r
- STR_COPY18,\r
-\r
- STR_COPY19,\r
- STR_COPY20,\r
-\r
- STR_COPY21,\r
- STR_COPY22},\r
-\r
- far MemberCorrect[5][24] = {\r
- "adrian carmack",\r
- "john carmackjohn romero",\r
- "tom hall",\r
- "jay wilbur",\r
- "kevin cloud"},\r
-\r
- far DosMessages[9][80] = {\r
- STR_NOPE1,\r
- STR_NOPE2,\r
- STR_NOPE3,\r
- STR_NOPE4,\r
- STR_NOPE5,\r
- STR_NOPE6,\r
- STR_NOPE7,\r
- STR_NOPE8,\r
- STR_NOPE9},\r
-\r
- far MiscTitle[4][20] = {\r
- "BLOOD TEST",\r
- "STRAIGHT-LACED",\r
- "QUITE SHAPELY",\r
- "I AM WHAT I AMMO"\r
- },\r
-\r
- far MiscStr[12][40] = {\r
- STR_MISC1,\r
- STR_MISC2,\r
- "",\r
-\r
- STR_MISC3,\r
- STR_MISC4,\r
- "",\r
-\r
- STR_MISC5,\r
- STR_MISC6,\r
- "",\r
-\r
- STR_MISC7,\r
- STR_MISC8,\r
- STR_MISC9\r
- },\r
-\r
- far MiscCorrect[4][5] = {"ss","8",STR_STAR,"45"};\r
-\r
-\r
-int BackDoor(char *s)\r
-{\r
- int i;\r
-\r
-\r
- strlwr(s);\r
-\r
- for (i=0;i<5;i++)\r
- if (!_fstrcmp(s,BackDoorStrs[i]))\r
- {\r
- SETFONTCOLOR(14,15);\r
- fontnumber = 0;\r
- PrintY = 175;\r
- VWB_DrawPic (0,20*8,COPYPROTBOXPIC);\r
- US_CPrint(GoodBoyStrs[i*2]);\r
- US_CPrint(GoodBoyStrs[i*2+1]);\r
- VW_UpdateScreen();\r
- return 1;\r
- }\r
-\r
- return 0;\r
-}\r
-\r
-\r
-void CopyProtection(void)\r
-{\r
-#define TYPEBOX_Y 177\r
-#define TYPEBOX_BKGD 0x9c\r
-#define PRINTCOLOR HIGHLIGHT\r
-\r
- int i,match,whichboss,bossnum,try,whichline,enemypicked[4]={0,0,0,0},\r
- bosses[4] = { BOSSPIC1PIC,BOSSPIC2PIC,BOSSPIC3PIC,BOSSPIC4PIC },\r
- whichone,whichpicked[4]={0,0,0,0},quiztype,whichmem,\r
- memberpicked[5]={0,0,0,0,0},wordpicked[5]={0,0,0,0,0},whichword;\r
-\r
- char inputbuffer[20],\r
- message[80];\r
-\r
- enum\r
- {\r
- debriefing,\r
- checkmanual,\r
- staffquiz,\r
- miscquiz,\r
-\r
- totaltypes\r
- };\r
-\r
-\r
-\r
- try = 0;\r
- VW_FadeOut();\r
- CA_CacheGrChunk(C_BACKDROPPIC);\r
- CacheLump(COPYPROT_LUMP_START,COPYPROT_LUMP_END);\r
- CA_CacheGrChunk(STARTFONT+1);\r
- CA_LoadAllSounds();\r
- StartCPMusic(COPYPRO_MUS);\r
- US_InitRndT(true);\r
-\r
- while (try<3)\r
- {\r
- fontnumber = 1;\r
- SETFONTCOLOR(PRINTCOLOR-2,15);\r
- VWB_DrawPic (0,0,C_BACKDROPPIC);\r
- VWB_DrawPic (0,0,COPYPROTTOPPIC);\r
- VWB_DrawPic (0,20*8,COPYPROTBOXPIC);\r
- WindowX = WindowY = 0;\r
- WindowW = 320;\r
- WindowH = 200;\r
- PrintY = 65;\r
-\r
- quiztype = US_RndT()%totaltypes;\r
- switch(quiztype)\r
- {\r
- //\r
- // BOSSES QUIZ\r
- //\r
- case debriefing:\r
- PrintX = 0;\r
- US_Print(STR_DEBRIEF);\r
- SETFONTCOLOR(PRINTCOLOR,15);\r
-\r
- while (enemypicked[whichboss = US_RndT()&3]);\r
- enemypicked[whichboss] = 1;\r
- bossnum = bosses[whichboss];\r
- VWB_DrawPic(128,60,bossnum);\r
- fontnumber = 0;\r
- PrintY = 130;\r
- US_CPrint(STR_ENEMY1"\n");\r
- US_CPrint(STR_ENEMY2"\n\n");\r
-\r
- VW_UpdateScreen();\r
- VW_FadeIn();\r
-\r
- PrintX = 100;\r
- fontcolor = 15;\r
- backcolor = TYPEBOX_BKGD;\r
- inputbuffer[0] = 0;\r
- PrintY = TYPEBOX_Y;\r
- fontnumber = 1;\r
- US_LineInput(PrintX,PrintY,inputbuffer,nil,true,20,100);\r
-\r
- match = 0;\r
- for (i=0;i<_fstrlen(bossstrs[whichboss]);i++)\r
- if (!_fstrnicmp(inputbuffer,bossstrs[whichboss]+i,strlen(inputbuffer)) &&\r
- strlen(inputbuffer)>3)\r
- match = 1;\r
-\r
- match += BackDoor(inputbuffer);\r
- break;\r
-\r
- //\r
- // MANUAL CHECK\r
- //\r
- case checkmanual:\r
- while (wordpicked[whichword = US_RndT()%5]);\r
- wordpicked[whichword] = 1;\r
- US_CPrint(STR_CHECKMAN);\r
- SETFONTCOLOR(PRINTCOLOR,15);\r
- PrintY += 25;\r
- US_CPrint(STR_MAN1);\r
- US_CPrint(STR_MAN2);\r
- _fstrcpy(message,STR_MAN3" \"");\r
- _fstrcat(message,WordStr[whichword]);\r
- _fstrcat(message,"\" "STR_MAN4);\r
- US_CPrint(message);\r
- VW_UpdateScreen();\r
- VW_FadeIn();\r
-\r
- PrintX = 146;\r
- fontcolor = 15;\r
- backcolor = TYPEBOX_BKGD;\r
- inputbuffer[0] = 0;\r
- PrintY = TYPEBOX_Y;\r
- US_LineInput(PrintX,PrintY,inputbuffer,nil,true,6,100);\r
-\r
- strlwr(inputbuffer);\r
- match = 1-(_fstrcmp(inputbuffer,WordCorrect[whichword])!=0);\r
- match += BackDoor(inputbuffer);\r
- break;\r
-\r
- //\r
- // STAFF QUIZ\r
- //\r
- case staffquiz:\r
- while (memberpicked[whichmem = US_RndT()%5]);\r
- memberpicked[whichmem] = 1;\r
- US_CPrint(STR_ID1);\r
- SETFONTCOLOR(PRINTCOLOR,15);\r
- PrintY += 25;\r
- US_CPrint(MemberStr[whichmem*2]);\r
- US_CPrint(MemberStr[whichmem*2+1]);\r
- VW_UpdateScreen();\r
- VW_FadeIn();\r
-\r
- PrintX = 100;\r
- fontcolor = 15;\r
- backcolor = TYPEBOX_BKGD;\r
- inputbuffer[0] = 0;\r
- PrintY = TYPEBOX_Y;\r
- US_LineInput(PrintX,PrintY,inputbuffer,nil,true,20,120);\r
-\r
- strlwr(inputbuffer);\r
- match = 0;\r
- for (i=0;i<_fstrlen(MemberCorrect[whichmem]);i++)\r
- if (!_fstrnicmp(inputbuffer,MemberCorrect[whichmem]+i,strlen(inputbuffer)) &&\r
- strlen(inputbuffer)>2)\r
- match = 1;\r
- match += BackDoor(inputbuffer);\r
- break;\r
-\r
- //\r
- // MISCELLANEOUS QUESTIONS\r
- //\r
- case miscquiz:\r
- while (whichpicked[whichone = US_RndT()&3]);\r
- whichpicked[whichone] = 1;\r
- US_CPrint(MiscTitle[whichone]);\r
- SETFONTCOLOR(PRINTCOLOR,15);\r
- PrintY += 25;\r
- US_CPrint(MiscStr[whichone*3]);\r
- US_CPrint(MiscStr[whichone*3+1]);\r
- US_CPrint(MiscStr[whichone*3+2]);\r
- VW_UpdateScreen();\r
- VW_FadeIn();\r
-\r
- PrintX = 146;\r
- fontcolor = 15;\r
- backcolor = TYPEBOX_BKGD;\r
- inputbuffer[0] = 0;\r
- PrintY = TYPEBOX_Y;\r
- US_LineInput(PrintX,PrintY,inputbuffer,nil,true,6,100);\r
-\r
- strlwr(inputbuffer);\r
- match = 1-(_fstrcmp(inputbuffer,MiscCorrect[whichone])!=0);\r
- match += BackDoor(inputbuffer);\r
- break;\r
- }\r
-\r
- //\r
- // IF NO MATCH, WE'VE GOT A (MINOR) PROBLEM!\r
- //\r
-\r
- if (!match)\r
- {\r
- whichline = 2*(US_RndT()%9);\r
- SETFONTCOLOR(14,15);\r
- fontnumber = 0;\r
- PrintY = 175;\r
- VWB_DrawPic (0,20*8,COPYPROTBOXPIC);\r
- US_CPrint(CopyProFailedStrs[whichline]);\r
- US_CPrint(CopyProFailedStrs[whichline+1]);\r
-\r
- VW_UpdateScreen();\r
- SD_PlaySound(NOWAYSND);\r
- IN_UserInput(TickBase*3);\r
- VW_FadeOut();\r
- try++;\r
- }\r
- else\r
- {\r
- int start;\r
-\r
-\r
- SD_PlaySound(BONUS1UPSND);\r
- SD_WaitSoundDone();\r
- UNCACHEGRCHUNK (STARTFONT+1);\r
- UNCACHEGRCHUNK (C_BACKDROPPIC);\r
- UnCacheLump (COPYPROT_LUMP_START,COPYPROT_LUMP_END);\r
-\r
- switch(SoundMode)\r
- {\r
- case sdm_Off: return;\r
- case sdm_PC: start = STARTPCSOUNDS; break;\r
- case sdm_AdLib: start = STARTADLIBSOUNDS;\r
- }\r
-\r
- for (i=0;i<NUMSOUNDS;i++,start++)\r
- MM_FreePtr ((memptr *)&audiosegs[start]);\r
- return;\r
- }\r
- }\r
-\r
- ClearMemory();\r
- ShutdownId();\r
-\r
- _fstrcpy(message,DosMessages[US_RndT()%9]);\r
-\r
- _AX = 3;\r
- geninterrupt(0x10);\r
-\r
- printf("%s\n",message);\r
- exit(1);\r
-}\r
-\r
-#endif // SPEARDEMO\r
-#endif // SPEAR\r
-//===========================================================================\r