File: main.c - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

0001: #pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
0002: 
0003: #include <stdio.h>
0004: #include <allegro5/allegro.h>
0005: #include <allegro5/allegro_font.h>
0006: #include <allegro5/allegro_ttf.h>
0007: #include <allegro5/allegro_image.h>
0008: #include <allegro5/allegro_audio.h>
0009: #include <allegro5/allegro_acodec.h>
0010: #include <allegro5/allegro_primitives.h>
0011: #include <math.h>
0012: 
0013: #define _RGB al_map_rgb
0014: #define _RGBA al_map_rgba
0015: #define oslSwapBuffers al_flip_display
0016: #define oslWaitVSync al_wait_for_vsync
0017: #define oslDeleteSound al_destroy_sample
0018: #define oslDrawFillRect al_draw_filled_rectangle
0019: 
0020: #define STALLMAN Stupid_Toe_Cheese_Eater_Hippie
0021: #define GPL Shitty_Confusing_License
0022: #define BSD3CLAUSE Actual_License_Of_This_Program
0023: 
0024: #define ESPAC_HORIZ 64
0025: #define HAUT_FIELD 138
0026: #define GRAVIT -0.05
0027: 
0028: 
0029: 
0030: typedef struct {
0031:   int rx;
0032:   int ry;
0033: } RESOLUTION;
0034: 
0035: typedef struct {
0036:   ALLEGRO_SAMPLE *ref;
0037:   ALLEGRO_SAMPLE_INSTANCE *instance;
0038: } OSL_SOUND;
0039: 
0040: typedef struct {
0041:   ALLEGRO_AUDIO_STREAM *stream;
0042: } OSL_MOD;
0043: 
0044: typedef struct {
0045:   ALLEGRO_BITMAP *asset;
0046:   float sizeX;
0047:   float sizeY;
0048:   float x;
0049:   float y;
0050:   float stretchX;
0051:   float stretchY;
0052:   float centerX;
0053:   float centerY;
0054:   float angle;
0055: 
0056:   int R;
0057:   int G;
0058:   int B;
0059: 
0060:   int trans;
0061: } OSL_IMAGE;
0062: 
0063: struct ball {
0064:   float speed_h;
0065:   float speed_v;
0066:   float speed_z;
0067:   int angle;
0068:   int x2d;
0069:   int y2d;
0070:   int z3d;
0071:   short poisoned;
0072: };
0073: 
0074: struct pie_entity {
0075:   int pie_hp;
0076:   int pie_facemode; //mode sarko-JLM-autre?
0077:   int pie_direction;
0078:   int pie_x;
0079:   int pie_y;
0080: };
0081: 
0082: OSL_IMAGE court, benj;
0083: ALLEGRO_FONT *freesans = NULL;
0084: ALLEGRO_COLOR current_col;
0085: ALLEGRO_EVENT_QUEUE *event_queue;
0086: ALLEGRO_DISPLAY *display = NULL;
0087: ALLEGRO_SAMPLE_ID *id[16];
0088: ALLEGRO_KEYBOARD_STATE kbdstate;
0089: ALLEGRO_BITMAP *psp_screen = NULL;
0090: ALLEGRO_VOICE *voice;
0091: ALLEGRO_MIXER *mixer;
0092: ALLEGRO_TIMER *timer = NULL;
0093: ALLEGRO_EVENT_QUEUE *event_queue = NULL;
0094: short redraw = 1;
0095: 
0096: unsigned long int counter=0;
0097: unsigned int ratio=0;
0098: 
0099: const float FPS = 60;
0100: 
0101: OSL_IMAGE oslSetImageRotCenter(OSL_IMAGE osl_img)
0102: {
0103:   OSL_IMAGE dis = osl_img;
0104:   dis.centerX = dis.sizeX/2;
0105:   dis.centerY = dis.sizeY/2;
0106:   return dis;
0107: }
0108: 
0109: OSL_IMAGE oslSetImageTileSize(OSL_IMAGE img_param, int sx, int sy, int w, int h)
0110: {
0111:   OSL_IMAGE dis;
0112:   dis = img_param;
0113: 
0114:   dis.asset = al_create_sub_bitmap(dis.asset, sx, sy, w, h);
0115:   dis.sizeX = w;
0116:   dis.sizeY = h;
0117:   dis.stretchX = w;
0118:   dis.stretchY = h;
0119: 
0120:   return dis;
0121: }
0122: 
0123: OSL_IMAGE LoadImg(const char *filename)
0124: {
0125:   OSL_IMAGE dis;
0126: 
0127:   dis.asset = al_load_bitmap(filename);
0128:   dis.sizeX = al_get_bitmap_width(dis.asset);
0129:   dis.sizeY = al_get_bitmap_height(dis.asset);
0130:   dis.x = 0;
0131:   dis.y = 0;
0132:   dis.stretchX = dis.sizeX;
0133:   dis.stretchY = dis.sizeY;
0134:   dis.centerX = 0;
0135:   dis.centerY = 0;
0136:   dis.angle = 0;
0137: 
0138:   dis.R=255;
0139:   dis.G=255;
0140:   dis.B=255;
0141: 
0142:   dis.trans=255;
0143: 
0144:   return dis;
0145: }
0146: 
0147: OSL_IMAGE oslCreateImage(int w, int h)
0148: {
0149:   OSL_IMAGE dis;
0150: 
0151:   dis.asset = al_create_bitmap(w, h);
0152:   dis.sizeX = al_get_bitmap_width(dis.asset);
0153:   dis.sizeY = al_get_bitmap_height(dis.asset);
0154:   dis.x = 0;
0155:   dis.y = 0;
0156:   dis.stretchX = dis.sizeX;
0157:   dis.stretchY = dis.sizeY;
0158:   dis.centerX = 0;
0159:   dis.centerY = 0;
0160:   dis.angle = 0;
0161: 
0162:   dis.R=255;
0163:   dis.G=255;
0164:   dis.B=255;
0165: 
0166:   dis.trans=255;
0167: 
0168:   return dis;
0169: }
0170: 
0171: int random(int k)
0172: {
0173:   return rand()%k;
0174: }
0175: 
0176: int swirl_collide(int px, int py, int gudule, int mgsy)
0177: {
0178:   if ((px-(gudule))*(px-(gudule))+(py-(mgsy))*(py-(mgsy)) <= 512) return 1; else return 0;
0179: }
0180: 
0181: struct ball initball()
0182: {
0183:   struct ball abadgh;
0184: 
0185:    abadgh.x2d=random(320)+80; //x
0186:    abadgh.y2d=170;     //y
0187:    abadgh.speed_v=-1;  //vy
0188:    abadgh.speed_h=0;   //vx
0189:    abadgh.speed_z=2;  //vz
0190:    abadgh.angle=0;  //
0191:    abadgh.z3d=2;    //z
0192:    abadgh.poisoned=0;
0193: 
0194:    return abadgh;
0195: }
0196: 
0197: struct pie_entity initpie()
0198: {
0199:   struct pie_entity abadgh;
0200:     abadgh.pie_facemode=0;
0201:     abadgh.pie_direction=0;
0202:     abadgh.pie_x=128;
0203:     abadgh.pie_y=136;
0204:   return abadgh;
0205: }
0206: 
0207: struct ball apply_impulse(struct ball ball_arg, float v, float v2, float angle)
0208: {
0209:   struct ball dis = ball_arg;
0210: 
0211:   dis.speed_h = v;
0212:   dis.speed_v = -v2;
0213: 
0214:   return dis;
0215: }
0216: 
0217: int getScreenRatio()
0218: {
0219:   ALLEGRO_MONITOR_INFO proutzob;
0220:   RESOLUTION res;
0221:   int a,b;
0222: 
0223:   al_get_monitor_info(0, &proutzob);
0224:   a=(proutzob).x2 - (proutzob).x1 + 1;
0225:   b=(proutzob).y2 - (proutzob).y1 + 1;
0226: 
0227:   res.rx = a;
0228:   res.ry = b;
0229: 
0230:   return (a*100)/b;
0231: }
0232: 
0233: OSL_IMAGE oslDeleteImage(OSL_IMAGE image)
0234: {
0235:   OSL_IMAGE dis = image;
0236:   al_destroy_bitmap(dis.asset);
0237:   return dis;
0238: }
0239: 
0240: void oslSetTextColor(ALLEGRO_COLOR col)
0241: {
0242:   current_col = col;
0243: }
0244: 
0245: void oslDrawString(float x, float y, const char *text)
0246: {
0247:   al_draw_text(freesans, current_col, x, y, 0, text);
0248: }
0249: 
0250: void spr_draw(OSL_IMAGE image, float x, float y)
0251: {
0252:   al_draw_tinted_scaled_rotated_bitmap(image.asset, al_map_rgba(image.R, image.G, image.B, image.trans), image.centerX, image.centerY, x, y, (image.stretchX)/(image.sizeX), (image.stretchY)/(image.sizeY), (image.angle)/60, 0);
0253:   image.x = x;
0254:   image.y = y;
0255: }
0256: 
0257: OSL_MOD oslLoadSoundFileMOD(const char *filename)
0258: {
0259:   OSL_MOD dis;
0260:   dis.stream = al_load_audio_stream(filename, 10, 1024);
0261:   al_attach_audio_stream_to_mixer(dis.stream, mixer);
0262:   return dis;
0263: }
0264: 
0265: void oslSetSoundLoopMOD(OSL_MOD sound, short yesno)
0266: {
0267:   if (yesno == 1) al_set_audio_stream_playmode(sound.stream,ALLEGRO_PLAYMODE_LOOP); else al_set_audio_stream_playmode(sound.stream, ALLEGRO_PLAYMODE_ONCE);
0268: }
0269: 
0270: void oslPlaySoundMOD(OSL_MOD sound)
0271: {
0272:   al_set_audio_stream_playmode(sound.stream, ALLEGRO_PLAYMODE_LOOP);
0273:   al_set_audio_stream_playing(sound.stream, true);
0274: }
0275: 
0276: void oslStopSoundMOD(OSL_MOD sound)
0277: {
0278:   al_set_audio_stream_playing(sound.stream, false);
0279: }
0280: 
0281: void oslDeleteSoundMOD(OSL_MOD sound)
0282: {
0283:   oslStopSoundMOD(sound);
0284:   al_destroy_audio_stream(sound.stream);
0285: }
0286: 
0287: OSL_SOUND oslLoadSoundFile(const char *filename)
0288: {
0289:   OSL_SOUND dis;
0290:   dis.ref = al_load_sample(filename);
0291:   dis.instance = al_create_sample_instance(dis.ref);
0292:   al_set_sample_instance_playmode(dis.instance, ALLEGRO_PLAYMODE_ONCE);
0293:   al_attach_sample_instance_to_mixer(dis.instance, mixer);
0294:   return dis;
0295: }
0296: 
0297: void oslSetSoundLoop(OSL_SOUND sound, short yesno)
0298: {
0299:   if (yesno == 1) al_set_sample_instance_playmode(sound.instance,ALLEGRO_PLAYMODE_LOOP); else al_set_sample_instance_playmode(sound.instance,ALLEGRO_PLAYMODE_ONCE);
0300: }
0301: 
0302: void oslPlaySound(OSL_SOUND sound)
0303: {
0304:   if (!al_play_sample_instance(sound.instance)) oslDrawString(0, 0, "could not play sound!");
0305: }
0306: 
0307: void oslStopSound(OSL_SOUND sound)
0308: {
0309:   al_stop_sample_instance(sound.instance);
0310: }
0311: 
0312: void oslDeleteSound(OSL_SOUND sound)
0313: {
0314:   oslStopSound(sound);
0315:   al_destroy_sample_instance(sound.instance);
0316: }
0317: 
0318: void oslStartDrawing()
0319: {
0320:   al_set_target_bitmap(psp_screen);
0321: }
0322: 
0323: void oslEndDrawing()
0324: {
0325:   al_set_target_bitmap(al_get_backbuffer(display));
0326:   al_draw_scaled_bitmap(psp_screen, 0, 0, 480, 272, 0, (al_get_display_height(display)-al_get_display_width(display)*9/16)/2, al_get_display_width(display), al_get_display_width(display)*9/16, 0);
0327: }
0328: 
0329: OSL_IMAGE oslSetAlpha(OSL_IMAGE gfx, int trans_p)
0330: {
0331:   OSL_IMAGE dis = gfx;
0332:   dis.trans = trans_p;
0333:   return dis;
0334: }
0335: 
0336: OSL_IMAGE oslSetTint(OSL_IMAGE img_param, int pR, int pG, int pB)
0337: {
0338:   OSL_IMAGE dis;
0339:   dis = img_param;
0340: 
0341:   dis.R = pR;
0342:   dis.G = pG;
0343:   dis.B = pB;
0344: 
0345:   return dis;
0346: }
0347: 
0348: int oslGetStringWidth(const char *text)
0349: {
0350:   int j;
0351:   j=al_get_text_width(freesans, text);
0352:   return j;
0353: }
0354: 
0355: void cls()
0356: {
0357:   al_set_target_bitmap(al_get_backbuffer(display));
0358:   oslDrawFillRect(0,0, al_get_display_width(display), al_get_display_height(display), _RGB(0, 0, 0));
0359:   oslSwapBuffers();
0360:   al_set_target_bitmap(psp_screen);
0361: }
0362: 
0363: void fadeout()
0364: {
0365:   int i;
0366:   al_set_target_bitmap(al_get_backbuffer(display));
0367:   for (i=0; i<80; i++)
0368:   {
0369:     oslDrawFillRect(0,0, al_get_display_width(display), al_get_display_height(display), _RGBA(0, 0, 0, i));
0370:     oslSwapBuffers();
0371:     oslWaitVSync();
0372:   }
0373:   al_set_target_bitmap(psp_screen);
0374: }
0375: 
0376: void draw_benj(OSL_IMAGE benj, int px, int py, short shielded, OSL_IMAGE shield)
0377: {
0378: 
0379:   float court_zoom = 0.00192*(py+32) + 0.562;
0380:   shield.stretchX = (int)(48*(float)court_zoom);
0381:   shield.stretchY = (int)(48*(float)court_zoom);
0382: 
0383:   if ((benj.angle) == -90)
0384:   {
0385:     spr_draw(benj, px-16, py+88);
0386:   }
0387:   else if ((benj.angle) == 90)
0388:   {
0389:     spr_draw(benj, px+64, py+32);
0390:   }
0391:   else if ((benj.angle) == 0) spr_draw(benj, px, py);
0392: 
0393:   if (shielded)
0394:   {
0395:     shield.trans=128;
0396:     spr_draw(shield, px+4, py+16);
0397:   }
0398: }
0399: 
0400: void amigatext(const char *arg, int x, int y, OSL_IMAGE amigafont, int width, int height)
0401: {
0402:   int i, l=strlen(arg), tx=x, placex=(amigafont.sizeX)/width;
0403:   OSL_IMAGE singlechar;
0404: 
0405: 
0406:   for(i=0; i<l; i++)
0407:   {
0408:     if (arg[i] <= 'Z')
0409:     {
0410:       singlechar=oslSetImageTileSize(amigafont, ((arg[i]-32)%placex)*width, ((arg[i]-32)/placex)*height, width, height);
0411:       spr_draw(singlechar, tx, y);
0412:     }
0413: 
0414:     tx += width;
0415:   }
0416: }
0417: 
0418: void credz()
0419: {
0420:   int frame=0, a=0, b=480, c=0, d=32, e=136, trans=0, skipframe=0, f=7, i, benj_frame=0;
0421:   short quit=0;
0422:   char buffer[39];
0423: 
0424:   const char *texts[23] = {"v2.00", "Released on 11/19/2014 for", "","", "(C) 2014 by",
0425:               "Code, some GFX and .XM music by", "Ball physics and OSLib by",
0426:               "Inspired by", "THE NONE", "Musics ingame ripped from", "EARTHBOUND",
0427:               "PC Version powered by", "ALLEGRO V5", "Coding started on", "JULY 2013", "Hours of work", "COUNTLESS",
0428:               "Most pictures were found on", "GOOGLE PICS", "Number of defeat animations", "25", " ", " "};
0429: 
0430:   const char *greeted[25] = {"ICEMAN", "PRINCEPS-BONUS", "ODIE_ONE", "MAGEDRAXGONVAMPIRE", "XELTEKSEN", "FEI", "SHYKOOPA77", "XIRIUS_THIR", "GOBOLZ",
0431:                "MEZ", "ORION_", "ZEROSQUARE", "BRUNNI", "MATMOOK", "JEFFR3Y", "DR.DEIMOS", "GODZIL", "ARETHIUS", "TENDERNESS", "KEYDEE GAMER BOY",
0432:                "OBO", "BARONLESTAT666", "ISOBEL", "LUNA240681", "...AND MANY OTHERS"};
0433: 
0434:   OSL_MOD theme;
0435:   OSL_IMAGE aipc;
0436:   OSL_IMAGE twt;
0437:   OSL_IMAGE gml;
0438:   OSL_IMAGE amiga;
0439:   OSL_IMAGE giygas;
0440:   OSL_IMAGE sonicexe;
0441:   OSL_IMAGE flappy_redhill;
0442:   OSL_IMAGE _1in24, aa, bb;
0443:   OSL_IMAGE temp_gfx, temp_benj;
0444:   OSL_IMAGE iamgod[4];
0445: 
0446:   theme = oslLoadSoundFileMOD("./muzaxx/credz.xm");
0447:   aipc = LoadImg("./gfx/credz/aipc.png");
0448:   twt = LoadImg("./gfx/credz/twitter.png");
0449:   gml = LoadImg("./gfx/credz/gmail.png");
0450:   amiga = LoadImg("./gfx/credz/amiga.png");
0451:   giygas = LoadImg("./gfx/credz/giygas.png");
0452:   sonicexe = LoadImg("./gfx/sonicexe.png");
0453:   flappy_redhill = LoadImg("./gfx/flappy_redhill.png");
0454:   aa = LoadImg("./gfx/pookey1.png");
0455:   bb = LoadImg("./gfx/pona08.png");
0456:   temp_gfx.asset = al_create_bitmap(480, 272);
0457: 
0458:   for (i=1; i<=4; i++)
0459:   {
0460:     sprintf(buffer,"./gfx/iamgod%d.png",i);
0461:     iamgod[i-1] = LoadImg(buffer);
0462:   }
0463: 
0464:   sprintf(buffer,"./gfx/pasta%d.png",random(42)+1);
0465:   _1in24 = LoadImg(buffer);
0466: 
0467:  
0468:   oslStartDrawing();
0469:   oslDrawFillRect(0, 0, 480, 272, _RGB(0,0,0));
0470:   oslEndDrawing();
0471:   oslSwapBuffers();
0472: 
0473:   giygas = oslSetImageRotCenter(giygas);
0474: 
0475:   oslPlaySoundMOD(theme);
0476: 
0477:   while ((frame < 10600) && (!quit))
0478:   {
0479:     if (!skipframe)
0480:     {
0481:       oslStartDrawing();
0482:       oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
0483:       if (frame < 684)
0484:       {
0485:         oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 64));
0486:         for(a=0; a<16; a++)
0487:         {
0488:           oslDrawFillRect(a*32+c, 0, a*32+c+4, 272, _RGB(94, 126, 255));
0489:           if (a<11) oslDrawFillRect(0, a*32+c, 480, a*32+c+4, _RGB(94, 126, 255));
0490:         }
0491: 
0492:         temp_benj = oslSetImageTileSize(benj, (benj_frame%8)*32, 48, 32,48);
0493:         temp_benj.stretchX = 96;
0494:         temp_benj.stretchY = 144;
0495:         if (frame < 492) benj.trans=192; else benj.trans=684-frame;
0496:         spr_draw(temp_benj, 78, 90);
0497:         if (frame < 428) benj.trans=255; else benj.trans=684-frame;
0498: 
0499:         oslSetImageTileSize(aipc, 0, 0, (frame<76)?frame*4:304, 34);
0500:         spr_draw(aipc, 10, 10);
0501:         if (c > -32) c--; else c=0;
0502: 
0503:         if (frame > 180)
0504:         {
0505:           /*if (frame < 428)
0506:           {
0507:             if (d > 255) oslSetAlpha(OSL_FX_DEFAULT, 0); else oslSetAlpha(OSL_FX_ALPHA, d);
0508:           }
0509:           else
0510:           {
0511:             oslSetAlpha(OSL_FX_ALPHA, 684-frame);
0512:           }*/
0513:           oslSetTextColor(_RGB(255, 255, 255));
0514:           for (a=0; a<5; a++) oslDrawString(b, 100+a*20, texts[a]);
0515:           amigatext("A.C. 2014", b, 132, amiga, 16, 22);
0516:           amigatext("240-185", b, 192, amiga, 16, 22);
0517:           if (b > 264) b -= 4;
0518:           if (d < 255) d += 2;
0519:         }
0520: 
0521:       }
0522: 
0523:       if ((frame >= 684) && (frame < 1368))
0524:       {
0525:         if ((frame==684) || (frame == 1032))
0526:         {
0527:           d=-12;
0528:           trans=0;
0529:         }
0530: 
0531:         oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 64));
0532:         for(a=0; a<16; a++)
0533:         {
0534:           oslDrawFillRect(a*32+c, 0, a*32+c+4, 272, _RGB(94, 126, 255));
0535:           if (a<11) oslDrawFillRect(0, a*32+c, 480, a*32+c+4, _RGB(94, 126, 255));
0536:         }
0537:         if (c > -32) c--; else c=0;
0538: 
0539:         //oslSetAlpha(OSL_FX_ALPHA, trans);
0540: 
0541:         if (trans < 252) trans+=4;
0542: 
0543:         if (frame < 1032)
0544:         {
0545:           b=oslGetStringWidth(texts[5]);
0546:           oslDrawString((480-b)/2, d, texts[5]);
0547:           amigatext("240-185", 184, d+32, amiga, 16, 22);
0548:         }
0549:         else
0550:         {
0551:           b=oslGetStringWidth(texts[6]);
0552:           oslDrawString((480-b)/2, d, texts[6]);
0553:           amigatext("BRUNNI", 192, d+32, amiga, 16, 22);
0554:         }
0555: 
0556:         if (d < 66) d += 2;
0557:       }
0558: 
0559: 
0560:       if ((frame >= 1368) && (frame <= 2735))
0561:       {
0562:         temp_gfx.stretchX = 480;
0563:         temp_gfx.centerX = 0;
0564:         temp_gfx.centerY = 0;
0565: 
0566:         oslStartDrawing();
0567:         oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
0568: 
0569:        
0570: 
0571: 
0572:         if (f < 21)
0573:         {
0574:           b=oslGetStringWidth(texts[f]);
0575:           oslDrawString(240+(240-b)/2, 120, texts[f]);
0576: 
0577:           b=strlen(texts[f+1])*16;
0578:           amigatext(texts[f+1], 240+(240-b)/2, 144, amiga, 16, 22);
0579:           spr_draw(giygas, 120, 136);
0580:         }
0581: 
0582: 
0583:         temp_gfx=oslSetImageRotCenter(temp_gfx);
0584:         temp_gfx.stretchX = d;
0585:         temp_gfx.stretchY = (int)((float)(0.57)*d);
0586: 
0587:         if (frame == 1368)
0588:         {
0589:           d=0;
0590:           e=136;
0591:         }
0592: 
0593:         spr_draw(temp_gfx, 240, e);
0594: 
0595:         if (temp_gfx.stretchX > 1280) e += 8; else e=136;
0596:         if (temp_gfx.stretchX < 1536) d += 8; else
0597:         {
0598:           f += 2;
0599:           d=0;
0600:         }
0601:         oslEndDrawing();
0602:       }
0603: 
0604:       if ((frame >= 2736) && (frame < 3422))
0605:       {
0606:         if (frame == 2736)
0607:         {
0608:           a=0;
0609:           b=1;
0610:           c=0;
0611:         }
0612: 
0613:         spr_draw(sonicexe, 204, 20+16*sin(0.0625*frame));
0614: 
0615:         switch(c)
0616:         {
0617:         case 0:
0618:           oslDrawString(198, 136, "SONIC.EXE by");
0619:           amigatext("CRIMSON THE BAT", (480-strlen("CRIMSON THE BAT")*16)/2, 150, amiga, 16, 22);
0620:           break;
0621: 
0622:         case 1:
0623:           amigatext("SYMBIOTICFEDORAGEEK", (480-strlen("SYMBIOTICFEDORAGEEK")*16)/2, 150, amiga, 16, 22);
0624:           break;
0625: 
0626:         case 2:
0627:           amigatext("SHADOWNINJA976", (480-strlen("SHADOWNINJA976")*16)/2, 150, amiga, 16, 22);
0628:           break;
0629: 
0630:         case 3:
0631:           amigatext("HICHIGO1989", (480-strlen("HICHIGO1989")*16)/2, 150, amiga, 16, 22);
0632:           break;
0633: 
0634:         default:
0635:           break;
0636:         }
0637: 
0638:         if (c>0) oslDrawString((480-strlen("SONIC.EXE DeviantArts by:")*6)/2, 136, "SONIC.EXE DeviantArts by:");
0639: 
0640:         for(i=0; i<32; i++)
0641:         {
0642:           spr_draw(flappy_redhill, a+i*16, 224);
0643:         }
0644: 
0645:         a--;
0646: 
0647:         if (a == -16) a=0;
0648: 
0649:         b++;
0650:         if ((!(b%172)) && (c<3)) c++;
0651:       }
0652: 
0653:       if ((frame >= 3422) && (frame < 3764))
0654:       {
0655:         _1in24=oslSetImageRotCenter(_1in24);
0656:         _1in24.angle = 16*sin(0.0625*frame);
0657:         spr_draw(_1in24, 240, 136);
0658: 
0659:         oslDrawString(0, 0, "Weird movies stills taken from:");
0660:         amigatext("STUART <ASHENS> ASHEN", 0, 30, amiga, 16, 22);
0661:         amigatext("1IN24.TUMBLR.COM", 0, 60, amiga, 16, 22);
0662:       }
0663: 
0664:       if ((frame >= 3764) && (frame < 4105))
0665:       {
0666:         if (frame == 3764)
0667:         {
0668:           aa=oslSetImageRotCenter(aa);
0669:         }
0670: 
0671:         aa.angle = 16*sin(0.0625*frame);
0672:         spr_draw(aa, 240, 136);
0673: 
0674:         oslDrawString(0, 0, "High-pitched Pookeymon Theme by");
0675:         amigatext("DAN <LOUSY PANDAH> TOMLINSON", 0, 24, amiga, 16, 22);
0676:         oslDrawString(0, 60, "Taken from animation 'POKEMON SHOWDOWN'");
0677:       }
0678: 
0679:       if ((frame >= 4105) && (frame < 4447))
0680:       {
0681:         if (frame == 4105)
0682:         {
0683:           bb=oslSetImageRotCenter(bb);
0684:         }
0685: 
0686:         bb.angle = 16*sin(0.0625*frame);
0687:         spr_draw(bb, 240, 136);
0688: 
0689:         oslDrawString(0, 0, "Scene from 'Pikachu on Acid' taken from:");
0690:         amigatext("HIGH5TOONS", 0, 24, amiga, 16, 22);
0691:       }
0692: 
0693:       if ((frame >= 4447) && (frame < 5473))
0694:       {
0695:         if (frame == 4447)
0696:         {
0697:           c=0;
0698:         }
0699: 
0700:         oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 64));
0701:         for(a=0; a<16; a++)
0702:         {
0703:           oslDrawFillRect(a*32+c, 0, a*32+c+4, 272, _RGB(94, 126, 255));
0704:           if (a<11) oslDrawFillRect(0, a*32+c, 480, a*32+c+4, _RGB(94, 126, 255));
0705:         }
0706: 
0707:         temp_benj=oslSetImageTileSize(benj, (benj_frame%8)*32, 48, 32, 48);
0708:         temp_benj.stretchX = 96;
0709:         temp_benj.stretchY = 144;
0710:         temp_benj.trans=16;
0711:         spr_draw(temp_benj, 192, 90);
0712: 
0713:         if (c > -32) c--; else c=0;
0714: 
0715:         if (frame <= 5090)
0716:         {
0717:         amigatext("SO, THERE WE ARE. I HAD TO", 0, 20, amiga, 16, 22);
0718:         amigatext("TRAVEL FOR 700 KMS IN ORDER TO", 0, 42, amiga, 16, 22);
0719:         amigatext("PRESENT MY SECOND HOMEBREW ON", 0, 64, amiga, 16, 22);
0720:         amigatext("PSP.", 0, 86, amiga, 16, 22);
0721:         amigatext("LITTLE DID I KNOW I HAD TO", 0, 130, amiga, 16, 22);
0722:         amigatext("DEAL WITH A 2 PLAYER MODE ON A", 0, 152, amiga, 16, 22);
0723:         amigatext("PORTABLE CONSOLE! LUCKILY, I", 0, 174, amiga, 16, 22);
0724:         amigatext("WAS ADDICTED TO A MOBA GAME", 0, 196, amiga, 16, 22);
0725:         amigatext("CALLED <SMITE>...", 0, 218, amiga, 16, 22);
0726:         }
0727:         else
0728:         {
0729:         amigatext("...AND THE IMPLEMENTATION OF", 0, 24, amiga, 16, 22);
0730:         amigatext("A MOBA UI WAS A BREEZE. ", 0, 46, amiga, 16, 22);
0731:         amigatext("THE MORAL OF THE STORY IS TO", 0, 90, amiga, 16, 22);
0732:         amigatext("NEVER PREPARE YOUR PRODUCTION", 0, 112, amiga, 16, 22);
0733:         amigatext("WAAAAAAAAAAY BEFORE THE CON", 0, 134, amiga, 16, 22);
0734:         amigatext("BEGINS!", 0, 156, amiga, 16, 22);
0735:         }
0736:       }
0737: 
0738:       if ((frame >= 5473) && (frame < 8894))
0739:       {
0740:         if (frame == 5473)
0741:         {
0742:           d=480;
0743:           i=0;
0744:         }
0745: 
0746:         oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 64));
0747:         for(a=0; a<16; a++)
0748:         {
0749:           oslDrawFillRect(a*32+c, 0, a*32+c+4, 272, _RGB(94, 126, 255));
0750:           if (a<11) oslDrawFillRect(0, a*32+c, 480, a*32+c+4, _RGB(94, 126, 255));
0751:         }
0752: 
0753:         temp_benj = oslSetImageTileSize(benj, (benj_frame%8)*32, 48, 32, 48);
0754:         temp_benj.stretchX = 96;
0755:         temp_benj.stretchY = 144;
0756:         temp_benj.trans=192;
0757:         spr_draw(temp_benj, 192, 90);
0758: 
0759: 
0760:         if (c > -32) c--; else c=0;
0761: 
0762:         oslDrawString(201, 4, "Greetings to:");
0763:         amigatext(greeted[i], d, 136+32*sin(0.0625*frame), amiga, 16, 22);
0764: 
0765:         d=(int)(d-5.5);
0766: 
0767:         if ((d <= -288) && (i<23))
0768:         {
0769:           d=480;
0770:           i++;
0771:         }
0772: 
0773:       }
0774: 
0775:       if (frame >= 8894)
0776:       {
0777:         //if (frame < 10260) oslSetAlpha(OSL_FX_DEFAULT, 0); else oslSetAlpha(OSL_FX_ALPHA, trans);
0778:         a = 54+32*sin(0.0625*frame);
0779:         b = 296+32*cos(0.0625*frame);
0780: 
0781:         spr_draw(gml, a, 32);
0782:         spr_draw(twt, b, 32);
0783: 
0784:         amigatext("@240185", 304+32*cos(0.0625*frame), 187, amiga, 16, 22);
0785:         amigatext("ROUNDSOFTSTUDIO", 0, 172, amiga, 16, 22);
0786:         amigatext("@ GMAIL.COM", 32+32*sin(0.0625*frame), 202, amiga, 16, 22);
0787: 
0788:         if (frame >= 9582)
0789:         {
0790:           if (frame == 9582)
0791:           {
0792:             c=480;
0793:             trans=255;
0794:           }
0795:           oslDrawString(c, 256, "See you @ A.C. 2015 for my next project for PSP: THE FIFTH AXIS! Discover a twisted theory about time travel!");
0796: 
0797:           c -= 2;
0798:         }
0799: 
0800:         if ((frame >= 10260) && (trans > 0)) trans--;
0801:       }
0802: 
0803:       oslEndDrawing();
0804:       //frame_debug(frame);
0805:     }
0806:     oslSwapBuffers();
0807:     oslWaitVSync();
0808:     frame++;
0809:     if (!(frame%4)) benj_frame++;
0810:   }
0811: 
0812:   oslStopSoundMOD(theme);
0813: 
0814:   oslDeleteSoundMOD(theme);
0815:   oslDeleteImage(aipc);
0816:   oslDeleteImage(amiga);
0817:   oslDeleteImage(gml);
0818:   oslDeleteImage(twt);
0819:   oslDeleteImage(temp_gfx);
0820:   oslDeleteImage(giygas);
0821:   oslDeleteImage(sonicexe);
0822:   oslDeleteImage(flappy_redhill);
0823:   oslDeleteImage(_1in24);
0824:   oslDeleteImage(aa);
0825:   oslDeleteImage(bb);
0826: 
0827:   for (i=0; i<4; i++)
0828:   {
0829:     oslDeleteImage(iamgod[i]);
0830:   }
0831: 
0832:   fadeout();
0833: }
0834: 
0835: short sonicexe2(int diff)
0836: {
0837:   int i, rects=1, sc=0, bx=240, frame=0, bouss=0;
0838: 
0839:   short reussi=0;
0840:   OSL_IMAGE bg, pass, buttons, sexe2, slyexe;
0841:   OSL_IMAGE temp_benj;
0842:   OSL_SOUND oof = oslLoadSoundFile("./sfx/sfx-0009.wav");
0843:   OSL_SOUND passs = oslLoadSoundFile("./sfx/sfx-0053.wav");
0844:   OSL_SOUND kte = oslLoadSoundFile("./sfx/kte.wav");
0845:   OSL_SOUND sallyexe = oslLoadSoundFile("./sfx/sallyexe.wav");
0846: 
0847:   sexe2 = LoadImg("./gfx/sonicexe2.png");
0848:   bg = LoadImg("./gfx/gfx-0776.png");
0849:   pass = LoadImg("./gfx/gfx-0718.png");
0850:   buttons = LoadImg("./gfx/arrows.png");
0851:   slyexe = LoadImg("./gfx/sallyexe.png");
0852: 
0853: 
0854: 
0855:   sexe2=oslSetImageRotCenter(sexe2);
0856:   buttons=oslSetImageRotCenter(buttons);
0857:   pass=oslSetImageRotCenter(pass);
0858: 
0859: 
0860: 
0861:   oslSetSoundLoop(kte, 1);
0862:   oslPlaySound(kte);
0863: 
0864:   while ((sc < 90*diff) && (rects < 240))
0865:   {
0866:     oslStartDrawing();
0867:     oslDrawFillRect(0,0,480,272, _RGB(0, 0, 0));
0868:     bg.trans=160;
0869:     bg.G=0;
0870:     bg.B=0;
0871:     spr_draw(bg, 0, 0);
0872: 
0873:     al_get_keyboard_state(&kbdstate);
0874: 
0875:     if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (bx > rects))
0876:     {
0877:       temp_benj=oslSetImageTileSize(benj,(abs(frame%32)/4)*32,144,32,48);
0878:       temp_benj.stretchX = 64;
0879:       temp_benj.stretchY = 96;
0880:       bx -= 4;
0881:       if (bouss==0)
0882:       {
0883:         bouss=1;
0884:         sc++;
0885:       }
0886:     }
0887:     else if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (bx < (448-(rects+1))))
0888:     {
0889:       temp_benj=oslSetImageTileSize(benj,(abs(frame%32)/4)*32,48,32,48);
0890:       bx += 4;
0891:       if (bouss==1)
0892:       {
0893:         bouss=0;
0894:         sc++;
0895:       }
0896:     }
0897:     else
0898:     {
0899:       temp_benj=oslSetImageTileSize(benj,0,192,32,48);
0900:     }
0901: 
0902:     spr_draw(sexe2, 240+4*sin(0.0625*frame), 64);
0903:     spr_draw(buttons, 240, 136);
0904: 
0905:     temp_benj.stretchX = 64;
0906:     temp_benj.stretchY = 96;
0907:     temp_benj.R = temp_benj.G = temp_benj.B = 0;
0908:     spr_draw(temp_benj, bx, 176);
0909: 
0910:     oslDrawFillRect(0, 0, rects+1, 272, _RGB(0,0,0));
0911:     oslDrawFillRect(480, 0, 480-(rects+1), 272, _RGB(0,0,0));
0912:     oslDrawFillRect(0, 0, 480, rects+1, _RGB(0,0,0));
0913: 
0914:     oslEndDrawing();
0915:     oslSwapBuffers();
0916:     oslWaitVSync();
0917:     frame++;
0918:     if (!(frame%(20-((diff-1)*5)))) rects++;
0919:     if (bx < rects) bx=rects+4;
0920:     if (bx > (448-(rects+1))) bx=443-rects;
0921:   }
0922: 
0923: 
0924:   if (sc >= 90*diff)
0925:   {
0926:     for (i=0; i<4; i++)
0927:     {
0928:       oslStartDrawing();
0929:       oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
0930:       oslEndDrawing();
0931:       oslSwapBuffers();
0932:       oslWaitVSync();
0933:     }
0934:     oslPlaySound(passs);
0935:     for (i=135; i<=272; i+=24)
0936:     {
0937:       oslStartDrawing();
0938:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
0939:       spr_draw(pass,240,136);
0940:       pass.stretchX = pass.stretchY = i;
0941:       oslEndDrawing();
0942:       oslSwapBuffers();
0943:       oslWaitVSync();
0944:     }
0945:     reussi=1;
0946:   }
0947:   else
0948:   {
0949:     al_set_sample_instance_position(sallyexe.instance, 16);
0950:     oslPlaySound(sallyexe);
0951:     while (al_get_sample_instance_position(sallyexe.instance))
0952:     {
0953:       oslStartDrawing();
0954:       spr_draw(slyexe, 0, 0);
0955:       oslEndDrawing();
0956:       oslSwapBuffers();
0957:       oslWaitVSync();
0958:     }
0959:   }
0960: 
0961:  
0962:   oslStartDrawing();
0963:   oslEndDrawing();
0964:   oslSwapBuffers();
0965:   oslWaitVSync();
0966: 
0967: 
0968:   oslDeleteSound(kte);
0969:   oslDeleteImage(sexe2);
0970:   oslDeleteImage(bg);
0971:   oslDeleteImage(pass);
0972:   oslDeleteSound(oof);
0973:   oslDeleteSound(passs);
0974:   oslDeleteSound(sallyexe);
0975:   oslDeleteImage(slyexe);
0976:   return reussi;
0977: }
0978: 
0979: short sonicexe(int diff)
0980: {
0981:   short reussi=0, rebound=0;
0982:   int i, j=0, k=0, l=20, benj_frame=0, bgx=0, flx=0, bb, by, sedx=80, sedy=16;
0983:   OSL_IMAGE iamgod, sonicexebg, sonicexefloor, sonicexe_d, buttons, pass;
0984:   OSL_IMAGE temp_benj, temp_butt;
0985:   OSL_SOUND drowning;
0986:   OSL_SOUND oof;
0987:   OSL_SOUND passs;
0988: 
0989:   char buffer[20];
0990: 
0991:   i=random(4)+1;
0992:   bb=random(4);
0993:   sprintf(buffer,"./gfx/iamgod%d.png",i);
0994:   iamgod = LoadImg(buffer);
0995:   iamgod = oslSetImageRotCenter(iamgod);
0996:   sonicexebg = LoadImg("./gfx/gfx-0973.png");
0997:   sonicexefloor = LoadImg("./gfx/gfx-0974.png");
0998:   buttons = LoadImg("./gfx/buttons_pc.png");
0999:   sonicexe_d = LoadImg("./gfx/sonicexe.png");
1000:   pass = LoadImg("./gfx/gfx-0718.png");
1001:   pass = oslSetImageRotCenter(pass);
1002:   drowning = oslLoadSoundFile("./sfx/sfx-0146.wav");
1003:   oof = oslLoadSoundFile("./sfx/sfx-0009.wav");
1004:   passs = oslLoadSoundFile("./sfx/sfx-0053.wav");
1005: 
1006:   al_set_sample_instance_position(drowning.instance, 2);
1007:   oslPlaySound(drowning);
1008: 
1009:   while ((al_get_sample_instance_position(drowning.instance)) && (j < 95*diff))
1010:   {
1011:     if (k > 96) l = 18;
1012:     if (k > 188) l = 16;
1013:     if (k > 262) l = 14;
1014:     if (k > 342) l = 12;
1015:     if (k > 390) l = 10;
1016:     if (k > 462) l = 8;
1017:     if (k > 516) l = 6;
1018:     if (k > 600) l = 4;
1019: 
1020:     if (k%l < (l/2)) by=0; else by=32;
1021: 
1022:     if (!(k%10))
1023:     {
1024:       sedx++;
1025:       sedy++;
1026:     }
1027: 
1028:     oslStartDrawing();
1029:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
1030: 
1031:     spr_draw(sonicexebg, bgx, 8);
1032:     spr_draw(sonicexefloor, flx, 248);
1033:     spr_draw(sonicexebg, bgx+480, 8);
1034:     spr_draw(sonicexefloor, flx+480, 248);
1035:     spr_draw(sonicexe_d, sedx, sedy);
1036: 
1037:     temp_benj = oslSetImageTileSize(benj,(benj_frame%8)*32,48,32,48);
1038:     temp_butt = oslSetImageTileSize(buttons,bb*32,by,32,32);
1039:     temp_benj.stretchX = 64;
1040:     temp_benj.stretchY = 96;
1041:     temp_butt.stretchX = temp_butt.stretchY = 64;
1042: 
1043:     spr_draw(temp_benj, 360, 152);
1044:     spr_draw(temp_butt, 368, 82);
1045: 
1046:     /*sprintf(buffer,"%d %d", l, (int)oslGetRamStatus().maxAvailable);
1047:     oslDrawString(0,8,buffer);*/
1048:     oslEndDrawing();
1049:     oslSwapBuffers();
1050: 
1051:     al_get_keyboard_state(&kbdstate);
1052: 
1053:     if ((!al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) &&
1054:       (!al_key_down(&kbdstate, ALLEGRO_KEY_SPACE)) &&
1055:       (!al_key_down(&kbdstate, ALLEGRO_KEY_C)) &&
1056:       (!al_key_down(&kbdstate, ALLEGRO_KEY_X))) rebound=0;
1057: 
1058:     if ((!rebound) && ((bb==0) && (al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL))) || ((bb==1) && (al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) || ((bb==2) && (al_key_down(&kbdstate, ALLEGRO_KEY_C))) || ((bb==3) && (al_key_down(&kbdstate, ALLEGRO_KEY_X))))
1059:     {
1060:       j++;
1061:       rebound=1;
1062:     }
1063: 
1064:     if (!(k%4)) benj_frame++;
1065:     bgx -= 4;
1066:     flx -= 8;
1067:     if (bgx == -480) bgx=0;
1068:     if (flx == -480) flx=0;
1069:     k++;
1070: 
1071:     oslWaitVSync();
1072:   }
1073: 
1074:   if (j >= 95*diff)
1075:   {
1076:     for (i=0; i<4; i++)
1077:     {
1078:       oslStartDrawing();
1079:       oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
1080:       oslEndDrawing();
1081:       oslSwapBuffers();
1082:       oslWaitVSync();
1083:     }
1084: 
1085:     oslPlaySound(passs);
1086:     for (i=135; i<=272; i+=24)
1087:     {
1088:       oslStartDrawing();
1089:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
1090:       spr_draw(pass,240,136);
1091:       pass.stretchX = pass.stretchY = i;
1092:       oslEndDrawing();
1093:       oslSwapBuffers();
1094:       oslWaitVSync();
1095:     }
1096:     reussi=1;
1097:   }
1098:   else
1099:   {
1100: 
1101:     k=255;
1102:     for (i=sedx; i<360; i+=5)
1103:     {
1104:       oslStartDrawing();
1105:       bgx--;
1106:       flx -= 2;
1107:       spr_draw(sonicexebg, bgx, 8);
1108:       spr_draw(sonicexefloor, flx, 248);
1109:       spr_draw(sonicexebg, bgx+480, 8);
1110:       spr_draw(sonicexefloor, flx+480, 248);
1111:       spr_draw(temp_benj, 360, 152);
1112:       sonicexe_d.trans = k;
1113:       spr_draw(sonicexe_d, i, sedy);
1114:       oslEndDrawing();
1115:       oslSwapBuffers();
1116:       oslWaitVSync();
1117:       k -= 8;
1118:       if (k<0) k=0;
1119:       if (sedy < 168) sedy++;
1120:     }
1121: 
1122:     for (i=0; i<4; i++)
1123:     {
1124:       oslStartDrawing();
1125:       oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
1126:       oslEndDrawing();
1127:       oslSwapBuffers();
1128:       oslWaitVSync();
1129:     }
1130: 
1131:     oslPlaySound(oof);
1132:     oslStartDrawing();
1133:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
1134:     spr_draw(iamgod,240,136);
1135:     oslEndDrawing();
1136:     oslSwapBuffers();
1137:     fadeout();
1138:   }
1139: 
1140:   oslStartDrawing();
1141:   oslEndDrawing();
1142:   oslSwapBuffers();
1143:   oslWaitVSync();
1144: 
1145:   oslDeleteImage(iamgod);
1146:   oslDeleteImage(sonicexebg);
1147:   oslDeleteImage(sonicexefloor);
1148:   oslDeleteImage(sonicexe_d);
1149:   oslDeleteImage(buttons);
1150:   oslDeleteImage(pass);
1151:   oslDeleteSound(oof);
1152:   oslDeleteSound(drowning);
1153:   oslDeleteSound(passs);
1154: 
1155:   return reussi;
1156: }
1157: 
1158: short mincer(int diff)
1159: {
1160:   short reussi=0, floor=-1, score=0, rebound=0;
1161:   int i, skipframe=0, by=-36, bgy=0, my=404, minced=0, bb=random(4);
1162:   OSL_IMAGE mincer[3];
1163:   OSL_IMAGE benj_mincer;
1164:   OSL_IMAGE buttons;
1165:   OSL_IMAGE pass;
1166:   OSL_IMAGE temp_mincer, temp_butt, temp_m;
1167: 
1168:   OSL_SOUND passs;
1169:   OSL_SOUND mincing;
1170:   OSL_SOUND rightwrong[2];
1171: 
1172:   buttons = LoadImg("./gfx/buttons_pc.png");
1173:   pass = LoadImg("./gfx/gfx-0718.png");
1174:   mincer[0] = LoadImg("./gfx/mincer_bg.png");
1175:   mincer[1] = LoadImg("./gfx/mincer.png");
1176:   mincer[2] = LoadImg("./gfx/mincer_fg.png");
1177:   passs = oslLoadSoundFile("./sfx/sfx-0053.wav");
1178:   mincing = oslLoadSoundFile("./sfx/sfx-0081.wav");
1179: 
1180:   rightwrong[0] = oslLoadSoundFile("./sfx/right.wav");
1181:   rightwrong[1] = oslLoadSoundFile("./sfx/wrong.wav");
1182: 
1183:   benj_mincer = LoadImg("./gfx/benj_mincer.png");
1184: 
1185:   pass=oslSetImageRotCenter(pass);
1186: 
1187:   temp_mincer=oslSetImageTileSize(benj_mincer,0,0,29,34);
1188:   temp_mincer.stretchX = temp_mincer.stretchY = 58;
1189: 
1190:   while ((floor <= (-2*diff+12)) && (score < (2*diff+3)))
1191:   {
1192:     if (!skipframe)
1193:     {
1194:       oslStartDrawing();
1195:       temp_butt=oslSetImageTileSize(buttons,bb*32,0,32,32);
1196:       temp_butt.stretchX = temp_butt.stretchY = 64;
1197: 
1198:       if (floor == -1)
1199:       {
1200:         oslDrawFillRect(0,0,480,272, _RGB(0,0,32));
1201:         spr_draw(mincer[0], 80, 0);
1202:         spr_draw(mincer[0], 80, 240);
1203:         spr_draw(temp_mincer, 215, by);
1204:         by += 4;
1205: 
1206:         if (by==136) floor=0;
1207:       }
1208:       else if (floor >= 0)
1209:       {
1210:         oslDrawFillRect(0,0,480,272, _RGB(0,0,32));
1211:         spr_draw(mincer[0], 80, bgy);
1212:         spr_draw(mincer[0], 80, bgy+240);
1213: 
1214: 
1215:         if (floor >= (-2*diff+9))
1216:         {
1217:           spr_draw(mincer[1], 182, my);
1218:         }
1219: 
1220:         spr_draw(mincer[0], 80, bgy+480);
1221: 
1222: 
1223:         if (my < -108)
1224:         {
1225:           temp_mincer=oslSetImageTileSize(benj_mincer,29,0,29,34);
1226:           temp_mincer.stretchX = temp_mincer.stretchY = 58;
1227:         }
1228: 
1229:         spr_draw(temp_mincer, 215, 136);
1230: 
1231:         if (bgy<=-240)
1232:           {
1233:             floor++;
1234:             bgy=0;
1235:           }
1236: 
1237:         if ((my <= 48) && (my >= -180))
1238:         {
1239:           if ((!minced) && (my==48))
1240:             {
1241:               if (!(al_get_sample_instance_position(mincing.instance))) oslPlaySound(mincing);
1242:               score=0;
1243:             }
1244: 
1245:           switch(minced)
1246:           {
1247:             case 0:
1248:             case 2:
1249:             {
1250:               bgy -= 2;
1251:               if (floor >= (-2*diff+9))
1252:                 {
1253:                   temp_m=oslSetImageTileSize(mincer[0],0,0,101,240);
1254:                   spr_draw(temp_m, 80, my-164);
1255:                   temp_m=oslSetImageTileSize(mincer[0],226,0,94,240);
1256:                   spr_draw(temp_m, 306, my-164);
1257:                   spr_draw(mincer[2], 182, my+158);
1258:                   temp_m=oslSetImageTileSize(mincer[0],0,0,320,240);
1259:                   /*oslDrawFillRect(0,0,480,my-163, _RGB(0,0,32));
1260:                  
1261:                   spr_draw(temp_m, 80, my-164);*/
1262:                   oslDrawFillRect(400,0,480,272, _RGB(0,0,32));
1263:                   my -= 2;
1264:                 }
1265: 
1266:               if ((my == -96) && (!minced)) minced=1;
1267:               break;
1268:             }
1269: 
1270:             case 1:
1271:             {
1272:               bgy += 2;
1273:               if (floor >= (-2*diff+9))
1274:                 {
1275:                   temp_m=oslSetImageTileSize(mincer[0],0,0,101,240);
1276:                   spr_draw(temp_m, 80, my-164);
1277:                   oslSetImageTileSize(mincer[0],226,0,94,240);
1278:                   spr_draw(temp_m, 306, my-164);
1279:                   spr_draw(mincer[2], 182, my+158);
1280:                   my += 2;
1281:                   temp_m=oslSetImageTileSize(mincer[0],0,0,320,240);
1282:                   oslDrawFillRect(400,0,480,272, _RGB(0,0,32));
1283:                   /*oslDrawFillRect(0,0,480,my-163, _RGB(0,0,32));
1284: 
1285:                   spr_draw(temp_m, 80, my-164);*/
1286:                 }
1287:               if (my == -12) minced=2;
1288:               break;
1289:             }
1290:           }
1291: 
1292:         }
1293:         else
1294:         {
1295:           bgy -= 4;
1296:           if (floor >= (-2*diff+9))
1297:           {
1298:             spr_draw(mincer[2], 182, my+158);
1299:             my -= 4;
1300:           }
1301: 
1302:           al_get_keyboard_state(&kbdstate);
1303: 
1304:           if ((!al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) &&
1305:             (!al_key_down(&kbdstate, ALLEGRO_KEY_SPACE)) &&
1306:             (!al_key_down(&kbdstate, ALLEGRO_KEY_C)) &&
1307:             (!al_key_down(&kbdstate, ALLEGRO_KEY_X))) rebound=0;
1308: 
1309:           if (my > 48)
1310:           {
1311:             spr_draw(temp_butt, 326, 136);
1312: 
1313:             if (!rebound)
1314:             {
1315: 
1316: 
1317:             if (((bb==0) && (al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL))) || ((bb==1) && (al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) || ((bb==2) && (al_key_down(&kbdstate, ALLEGRO_KEY_C))) || ((bb==3) && (al_key_down(&kbdstate, ALLEGRO_KEY_X))))
1318:               {
1319:                 score++;
1320:                 bb=random(4);
1321:                 oslStopSound(rightwrong[0]);
1322:                 oslStopSound(rightwrong[1]);
1323:                 oslPlaySound(rightwrong[0]);
1324:                 rebound=1;
1325:               }
1326: 
1327: 
1328:             else if (((bb!=0) && (al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL))) || ((bb!=1) && (al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) || ((bb!=2) && (al_key_down(&kbdstate, ALLEGRO_KEY_C))) || ((bb!=3) && (al_key_down(&kbdstate, ALLEGRO_KEY_X))))
1329:               {
1330:                 bb=random(4);
1331:                 oslStopSound(rightwrong[0]);
1332:                 oslStopSound(rightwrong[1]);
1333:                
1334:                 oslPlaySound(rightwrong[1]);
1335:                 score--;
1336:                 rebound=1;
1337:               }
1338:             }
1339:           }
1340:         }
1341:       }
1342: 
1343:       oslEndDrawing();
1344:       oslSwapBuffers();
1345:       oslWaitVSync();
1346:     }
1347:   }
1348: 
1349:   if (score == (2*diff+3))
1350:   {
1351:     for (i=0; i<4; i++)
1352:     {
1353:       oslStartDrawing();
1354:       oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
1355:       oslEndDrawing();
1356:       oslSwapBuffers();
1357:       oslWaitVSync();
1358:     }
1359:     oslPlaySound(passs);
1360:     for (i=135; i<=272; i+=24)
1361:     {
1362:       oslStartDrawing();
1363:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
1364:       spr_draw(pass,240,136);
1365:       pass.stretchX = pass.stretchY = i;
1366:       oslEndDrawing();
1367:       oslSwapBuffers();
1368:       oslWaitVSync();
1369:     }
1370:     reussi=1;
1371:   }
1372: 
1373:   oslStartDrawing();
1374:   oslEndDrawing();
1375:   oslSwapBuffers();
1376:   oslWaitVSync();
1377: 
1378:   for (i=0; i<3; i++) oslDeleteImage(mincer[i]);
1379:   oslDeleteImage(benj_mincer);
1380:   oslDeleteSound(mincing);
1381:   oslDeleteSound(rightwrong[0]);
1382:   oslDeleteSound(rightwrong[1]);
1383:   oslDeleteImage(buttons);
1384:   oslDeleteImage(pass);
1385:   oslDeleteSound(passs);
1386: 
1387: 
1388: 
1389:   return reussi;
1390: }
1391: 
1392: short shoot_teevees(int diff, int *health, int round)
1393: {
1394:   short reussi=1, enemyx=random(2), enemyy=random(3), fired=13, hasdied=0, rebound=0;
1395:   int i, j, u, frame=0, skipframe=0, hgx=208;
1396: 
1397:   int teevees[3][4]; //angle-ecran-y-fallspeed
1398: 
1399:   OSL_SOUND passs = oslLoadSoundFile("./sfx/sfx-0053.wav");
1400:   OSL_SOUND dead = oslLoadSoundFile("./sfx/sfx-0025.wav");
1401:   OSL_SOUND pew = oslLoadSoundFile("./sfx/sfx-0100.wav");
1402:   OSL_SOUND oof = oslLoadSoundFile("./sfx/sfx-0101.wav");
1403:   OSL_SOUND ambient = oslLoadSoundFile("./sfx/sfx-0017.wav");
1404:   OSL_IMAGE pass = LoadImg("./gfx/gfx-0718.png");
1405:   OSL_IMAGE bg = LoadImg("./gfx/gfx-0776.png");
1406:   OSL_IMAGE teevee = LoadImg("./gfx/teevee.png");
1407:   OSL_IMAGE teevee_targets = LoadImg("./gfx/teevee_targets.png");
1408:   OSL_IMAGE numberz = LoadImg("./gfx/numberz.png");
1409:   OSL_IMAGE handgun = LoadImg("./gfx/handgun.png");
1410:   OSL_IMAGE explode = LoadImg("./gfx/explode.png");
1411: 
1412:   OSL_IMAGE temp_h, temp, temp_tv, temp_no;
1413:  
1414:   temp = oslCreateImage(128, 96);
1415: 
1416:   pass=oslSetImageRotCenter(pass);
1417:   temp=oslSetImageRotCenter(temp);
1418:  
1419:   oslSetSoundLoop(ambient, 1);
1420: 
1421:   oslDrawFillRect(0,0, 480,272, _RGB(0,0,0));
1422: 
1423:   for (i=0; i<3; i++)
1424:   {
1425:       teevees[i][0]=random(180)-90;
1426:       teevees[i][1]=random(2);
1427:       teevees[i][2]=-1*random(128)-128;
1428:       teevees[i][3]=diff+1+random(3);
1429:   }
1430: 
1431:   temp_h=oslSetImageTileSize(handgun, 0, 0, 64, 64);
1432:   oslPlaySound(ambient);
1433: 
1434:   while (frame < 900*diff)
1435:   {
1436:     if (!skipframe)
1437:     {
1438:       oslStartDrawing();
1439:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
1440: 
1441:       spr_draw(bg, 0, 0);
1442: 
1443:       oslSetTextColor(_RGB(255, 255, 255));
1444:       oslDrawString(160, 2, "Shoot the TVs with that screen:");
1445:       temp_tv=oslSetImageTileSize(teevee_targets, 99*enemyx, 71*enemyy, 99, 71);
1446:      
1447:       temp_tv.stretchX = 50;
1448:       temp_tv.stretchY = 35;
1449:       spr_draw(temp_tv, 215, 14);
1450: 
1451:       teevee_targets.stretchX = 99;
1452:       teevee_targets.stretchY = 71;
1453: 
1454: 
1455:       explode.stretchX = 128;
1456:       explode.stretchY = 96;
1457: 
1458: 
1459:       temp_no=oslSetImageTileSize(numberz,160,0,16,16);
1460:       spr_draw(temp_no, 2, 2);
1461: 
1462: 
1463:       for (i=0; i<3; i++)
1464:       {
1465:           al_set_target_bitmap(temp.asset);
1466:           temp_tv=oslSetImageTileSize(teevee_targets, teevees[i][1]*99, 71*enemyy, 99, 71);
1467:           spr_draw(teevee, 0, 0);
1468:           spr_draw(temp_tv, 14, 10);
1469: 
1470:           al_set_target_bitmap(psp_screen);
1471:           temp.angle = teevees[i][0];
1472: 
1473:           spr_draw(temp, 160*i+80, teevees[i][2]);
1474:           teevees[i][2] += teevees[i][3];
1475: 
1476:           if (teevees[i][2] > (336+((int)128*(sin(teevee.stretchX)*3.14/180))))
1477:           {
1478:             if (teevees[i][1]==enemyx)
1479:               {
1480:                 *health -= 12*diff;
1481:                 if ((*health <= 0) && (!hasdied))
1482:                 {
1483:                   oslPlaySound(dead);
1484:                   hasdied=1;
1485:                   frame=900*diff-131;
1486:                 }
1487:               }
1488:             teevees[i][0]=random(180)-90;
1489:             teevees[i][1]=random(2);
1490:             teevees[i][2]=-1*random(128)-128;
1491:             teevees[i][3]=diff+1+random(3);
1492:           }
1493:       }
1494: 
1495:       if (*health > 0) spr_draw(temp_h, hgx, 211+((int)3*sin(0.0625*frame))); else spr_draw(temp_h, hgx, 211+((int)3*sin(frame)));
1496: 
1497:       al_get_keyboard_state(&kbdstate);
1498: 
1499:       if  ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (hgx > 8) && (*health > 0)) hgx-=8;
1500:       if  ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (hgx < 408) && (*health > 0)) hgx+=8;
1501: 
1502:       if (fired < 13)
1503:       {
1504:         fired--;
1505: 
1506:         if ((teevees[hgx/160][1]==enemyx)  && (teevees[hgx/160][2] > 140))
1507:         {
1508:           spr_draw(explode, 160*i+80, teevees[hgx/160][2]);
1509:         }
1510: 
1511:         if (fired > 9)
1512:         {
1513:           temp_h=oslSetImageTileSize(handgun, 64, 0, 64, 64);
1514:           spr_draw(temp_h, hgx, 211+((int)3*sin(0.0625*frame)));
1515:         }
1516:         else
1517:         {
1518:           temp_h=oslSetImageTileSize(handgun, 0, 0, 64, 64);
1519: 
1520:             if (fired==8)
1521:             {
1522:               if ((teevees[hgx/160][1]==enemyx)  && (teevees[hgx/160][2] > 140))
1523:               {
1524:                 teevees[hgx/160][0]=random(180)-90;
1525:                 teevees[hgx/160][1]=random(2);
1526:                 teevees[hgx/160][2]=-1*random(128)-128;
1527:                 teevees[hgx/160][3]=diff+1+random(3);
1528:                 *health += 2*(4-diff);
1529:                 if (*health >= 100) *health=100;
1530:               }
1531:             }
1532:         }
1533: 
1534:       }
1535: 
1536:       if (!fired)
1537:       {
1538:         fired=13;
1539:         temp_h=oslSetImageTileSize(handgun, 0, 0, 64, 64);
1540: 
1541:       }
1542: 
1543:       if ((!al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) && (!al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) rebound=0;
1544: 
1545:       if (((al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) || (al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) && (fired==13) && (*health > 0) && (!rebound))
1546:       {
1547:         fired--;
1548:         oslStopSound(pew);
1549:         oslPlaySound(pew);
1550:         rebound=1;
1551: 
1552:         if ((teevees[hgx/160][1]!=enemyx) && (teevees[hgx/160][2] > 140))
1553:         {
1554:           *health -= 6*diff;
1555:           oslPlaySound(oof);
1556:         }
1557:       }
1558: 
1559:       i=random(15);
1560:       u=18;
1561: 
1562:       if (*health <= 0)
1563:       {
1564:         *health=0;
1565:       }
1566: 
1567:       if (*health < 25) j=16; else j=0;
1568: 
1569:         if (*health / 100)
1570:         {
1571:           temp_no=oslSetImageTileSize(numberz,((round==2)?((i<12)?16:random(144)):16),0,16,16);
1572:           spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
1573:           u += 16;
1574:         }
1575: 
1576:         if (*health > 9)
1577:         {
1578:           if (round==2)
1579:             {
1580:               if (i<12)
1581:                 {
1582:                   temp_no=oslSetImageTileSize(numberz,((*health%100)/10)*16,j,16,16);
1583:                 }
1584:               else
1585:                 {
1586:                   temp_no=oslSetImageTileSize(numberz,random(128),j,16,16);
1587:                 }
1588:             }
1589:           else temp_no=oslSetImageTileSize(numberz,((*health%100)/10)*16,j,16,16);
1590:         spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
1591:         u += 16;
1592:         }
1593: 
1594:         if (round==2)
1595:           {
1596:             if (i<12)
1597:               {
1598:                 temp_no=oslSetImageTileSize(numberz,(*health%10)*16,j,16,16);
1599:               }
1600:             else
1601:               {
1602:                 temp_no=oslSetImageTileSize(numberz,random(128),j,16,16);
1603:               }
1604:           }
1605:         else temp_no=oslSetImageTileSize(numberz,(*health%10)*16,j,16,16);
1606:         spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
1607: 
1608:       frame++;
1609:       oslEndDrawing();
1610:       oslSwapBuffers();
1611:       oslWaitVSync();
1612:     }
1613:   }
1614: 
1615: 
1616:     if (*health > 0)
1617:     {
1618:       oslStopSound(ambient);
1619:       for (i=0; i<4; i++)
1620:       {
1621:         oslStartDrawing();
1622:         oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
1623:         oslEndDrawing();
1624:         oslSwapBuffers();
1625:         oslWaitVSync();
1626:       }
1627:       oslPlaySound(passs);
1628:       for (i=135; i<=272; i+=24)
1629:       {
1630:         oslStartDrawing();
1631:         oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
1632:         spr_draw(pass,240,136);
1633:         pass.stretchX = pass.stretchY = i;
1634:         oslEndDrawing();
1635:         oslSwapBuffers();
1636:         oslWaitVSync();
1637:       }
1638:     }
1639:     else reussi=0;
1640: 
1641:     oslStartDrawing();
1642:     oslEndDrawing();
1643:     oslSwapBuffers();
1644:     oslWaitVSync();
1645: 
1646:     oslDeleteImage(bg);
1647:     oslDeleteImage(pass);
1648:     oslDeleteImage(teevee);
1649:     oslDeleteImage(teevee_targets);
1650:     oslDeleteImage(handgun);
1651:     oslDeleteImage(temp);
1652:     oslDeleteImage(numberz);
1653:     oslDeleteImage(explode);
1654:     oslDeleteSound(passs);
1655:     oslDeleteSound(dead);
1656:     oslDeleteSound(pew);
1657:     oslDeleteSound(ambient);
1658:     oslDeleteSound(oof);
1659: 
1660:   return reussi;
1661: }
1662: 
1663: short flappy_cacodemon(int diff)
1664: {
1665:   short reussi=1, bunk=0, bgx=0, ghgx=0, dead=0, cacoy=32, pressed=26, mess=0, rebound=0;
1666:   int i, frame=0, skipframe=0, growl=random(360)+35, postree=0, gu;
1667: 
1668:   int walls[7]={0,0,0,0,0,0,random(100)};
1669: 
1670:   OSL_IMAGE pass = LoadImg("./gfx/gfx-0718.png");
1671:   OSL_IMAGE cacod = LoadImg("./gfx/cacodemon.png");
1672:   OSL_IMAGE pot = LoadImg("./gfx/pot.png");
1673:   OSL_IMAGE pot_edge = LoadImg("./gfx/pot_edge.png");
1674:   OSL_IMAGE flappy_bg = LoadImg("./gfx/flappy_bg.png");
1675:   OSL_IMAGE flappy_redhill = LoadImg("./gfx/flappy_redhill.png");
1676:   OSL_SOUND passs = oslLoadSoundFile("./sfx/sfx-0053.wav");
1677:   OSL_SOUND ambient = oslLoadSoundFile("./sfx/sfx-0017.wav");
1678:   OSL_SOUND caco_sfx[2];
1679:   OSL_IMAGE temp_cacod;
1680: 
1681:   caco_sfx[0]= oslLoadSoundFile("./sfx/cacogrowl.wav");
1682:   caco_sfx[1]= oslLoadSoundFile("./sfx/cacodie.wav");
1683: 
1684:   temp_cacod=oslSetImageTileSize(cacod, 0, 0, 64, 64);
1685:   temp_cacod=oslSetImageRotCenter(temp_cacod);
1686:   temp_cacod.y=32;
1687:   pass=oslSetImageRotCenter(pass);
1688:  
1689:   oslSetSoundLoop(ambient, 1);
1690:   oslPlaySound(ambient);
1691: 
1692:   oslSetTextColor(_RGB(0,0,0));
1693: 
1694:   while ((frame < 300*diff+300) && (dead < 5))
1695:   {
1696:     if (!(frame%growl))
1697:     {
1698:       growl=random(360)+35;
1699:       oslPlaySound(caco_sfx[0]);
1700:     }
1701:     if (!skipframe)
1702:     {
1703:       oslStartDrawing();
1704:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
1705: 
1706:         for (i=0; i<5; i++) spr_draw(flappy_bg, bgx+i*138, 128);
1707: 
1708:       if (!bunk)
1709:       {
1710:         for (i=6; i>=0; i--)
1711:         {
1712:           if (walls[i])
1713:           {
1714:             pot.stretchY = walls[i];
1715:             spr_draw(pot, i*80-(postree%80), 230-walls[i]);
1716:             spr_draw(pot_edge, i*80-(postree%80), 230-walls[i]);
1717: 
1718:             pot.stretchY = 94-walls[i];
1719:             spr_draw(pot, i*80-(postree%80), 0);
1720:             spr_draw(pot_edge, i*80-(postree%80), 94-walls[i]);
1721: 
1722:           }
1723:         }
1724: 
1725:       }
1726: 
1727:       if ((!bunk) && (!dead))
1728:       {
1729:         if ((postree%80) == (80-((diff==1)?1:((diff==2)?2:4))))
1730:         {
1731:           for (i=0; i<7; i++)
1732:           {
1733:             if (i < 6)
1734:             {
1735:               if (walls[i+1]) walls[i]=walls[i+1];
1736:             }
1737:             else
1738:             {
1739:               walls[6]=walls[5]+(random(2)?1:-1)*random(32);
1740:               if (walls[6] < 32) walls[6]=32;
1741:               if (walls[6] > 110) walls[6]=110;
1742:             }
1743:           }
1744:         }
1745:       }
1746: 
1747:       for(i=0; i<32; i++)
1748:       {
1749:         spr_draw(flappy_redhill, ghgx+i*16, 224);
1750:       }
1751: 
1752:       if (!bunk)
1753:       {
1754:         if (!(frame%2))
1755:         {
1756:           temp_cacod.angle = 8*sin(0.15*frame);
1757:         }
1758:         spr_draw(temp_cacod, 40, temp_cacod.y);
1759:       }
1760:       else
1761:       {
1762:         if ((!(frame%9))) dead++;
1763:         gu=temp_cacod.y;
1764:         temp_cacod=oslSetImageTileSize(temp_cacod, 64*dead, 0, 64, 64);
1765:         temp_cacod=oslSetImageRotCenter(temp_cacod);
1766:         temp_cacod.y=gu;
1767:         spr_draw(temp_cacod, 40, temp_cacod.y);
1768:         if (dead==1)
1769:         {
1770:           oslPlaySound(caco_sfx[1]);
1771:         }
1772:       }
1773: 
1774:       if (!mess) oslDrawString(200, 18, "MAKE HIM FLY!");
1775: 
1776:       al_get_keyboard_state(&kbdstate);
1777: 
1778:       if ((!al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) && (!al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) rebound=0;
1779: 
1780:       if (((al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) || (al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) && (!rebound) && (!dead))
1781:       {
1782:         pressed=0;
1783:         if (!mess) mess=1;
1784:         rebound=1;
1785:       }
1786: 
1787:         pressed++;
1788:         if ((temp_cacod.y > 35) && (pressed < (-4*diff+28))) temp_cacod.y -= diff;
1789:         if ((!dead) && (pressed > (-4*diff+28))) temp_cacod.y += diff;
1790: 
1791: 
1792:       if (!bunk)
1793:       {
1794:         if (!(frame%2)) bgx -= diff+1;
1795:         ghgx -= (diff+1);
1796: 
1797:         if (bgx <= -138) bgx=0;
1798:         if (ghgx <= -16) ghgx=0;
1799: 
1800:       }
1801: 
1802:       if ((temp_cacod.y > 192) && (!bunk))
1803:       {
1804:         bunk=1;
1805:         frame=0;
1806:       }
1807: 
1808:       if ((walls[1]) && ((temp_cacod.y)-24 <= 102-walls[1]) && (!bunk) && (postree%80 < 40))
1809:       {
1810:         bunk=1;
1811:         frame=0;
1812:       }
1813: 
1814:       if ((walls[1]) && ((temp_cacod.y)+24 >= 230-walls[1]) && (!bunk) && (postree%80 < 40))
1815:       {
1816:         bunk=1;
1817:         frame=0;
1818:       }
1819: 
1820:       oslEndDrawing();
1821:       oslSwapBuffers();
1822:       oslWaitVSync();
1823:     }
1824:     frame++;
1825: 
1826:     if (!bunk)
1827:     {
1828:       postree += ((diff==1)?1:((diff==2)?2:4));
1829:     }
1830: 
1831:   }
1832: 
1833:   while (al_get_sample_instance_position(caco_sfx[1].instance))
1834:   {
1835:     al_rest(0.016);
1836:     oslWaitVSync();
1837:   };
1838: 
1839:   if (!bunk)
1840:   {
1841:     oslStopSound(ambient);
1842:       for (i=0; i<4; i++)
1843:       {
1844:         oslStartDrawing();
1845:         oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
1846:         oslEndDrawing();
1847:         oslSwapBuffers();
1848:         oslWaitVSync();
1849:       }
1850:     oslPlaySound(passs);
1851:     for (i=135; i<=272; i+=24)
1852:     {
1853:       oslStartDrawing();
1854:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
1855:       spr_draw(pass,240,136);
1856:       pass.stretchX = pass.stretchY = i;
1857:       oslEndDrawing();
1858:       oslSwapBuffers();
1859:       oslWaitVSync();
1860:     }
1861:   }
1862:   else reussi=0;
1863: 
1864:   oslStartDrawing();
1865:   oslEndDrawing();
1866:   oslSwapBuffers();
1867:   oslWaitVSync();
1868: 
1869:   oslDeleteImage(cacod);
1870:   oslDeleteImage(flappy_bg);
1871:   oslDeleteImage(flappy_redhill);
1872:   oslDeleteImage(pot);
1873:   oslDeleteImage(pot_edge);
1874:   oslDeleteSound(ambient);
1875:   oslDeleteImage(pass);
1876:   oslDeleteSound(passs);
1877:   oslDeleteSound(caco_sfx[0]);
1878:   oslDeleteSound(caco_sfx[1]);
1879:   return reussi;
1880: }
1881: 
1882: short love_boat(int diff)
1883: {
1884:   short reussi=1, alive=1, bx=240, boat_x=random(320)+80, sens;
1885:   int i, frame, a=0;
1886: 
1887:   OSL_IMAGE boat = LoadImg("./gfx/boat.png");
1888:   OSL_IMAGE boat_blood = LoadImg("./gfx/boat_blood.png");
1889:   OSL_SOUND boat_sfx = oslLoadSoundFile("./sfx/boat.wav");
1890:   OSL_SOUND sflartch = oslLoadSoundFile("./sfx/beng-0037.wav");
1891:   OSL_IMAGE pass = LoadImg("./gfx/gfx-0718.png");
1892:   OSL_IMAGE temp_benj;
1893:   OSL_SOUND passs = oslLoadSoundFile("./sfx/sfx-0053.wav");
1894:   OSL_SOUND ambient = oslLoadSoundFile("./sfx/sfx-0061.wav");
1895:   pass=oslSetImageRotCenter(pass);
1896:   boat=oslSetImageRotCenter(boat);
1897:   boat_blood=oslSetImageRotCenter(boat_blood);
1898: 
1899:   oslSetSoundLoop(ambient, 1);
1900:   oslPlaySound(ambient);
1901: 
1902:   frame = -1*random(540)-240;
1903: 
1904:   if (diff == 3)
1905:   {
1906:     if (boat_x%4)
1907:     {
1908:       boat_x += 4-(boat_x%4);
1909:     }
1910:   }
1911: 
1912:   while (frame < 255)
1913:   {
1914:     if (!frame) oslPlaySound(boat_sfx);
1915: 
1916:     oslStartDrawing();
1917:     oslDrawFillRect(0,0,480,272, _RGB(16,0,0));
1918: 
1919:     if (diff==3)
1920:     {
1921:       if (frame == 92)
1922:       {
1923:         a = bx+32;
1924:       }
1925:       else if (frame > 92)
1926:       {
1927:         if (boat_x > a) boat_x -= 4;
1928:         if (boat_x < a) boat_x += 4;
1929:       }
1930:     }
1931:     else if (diff==2)
1932:     {
1933:       sens=random(2);
1934:       if ((sens) && (boat_x < (400-(boat.stretchX)/2))) boat_x += 4;
1935:       if ((!sens) && (boat_x > (boat.stretchX)/2)) boat_x -=4;
1936:     }
1937: 
1938:     if (frame >= 0)
1939:     {
1940:       boat.trans=frame;
1941:       boat.stretchX = frame*2;
1942:       boat.stretchY = (int)((float)1.5*(boat.stretchX));
1943:       spr_draw(boat, boat_x, 96);
1944:     }
1945: 
1946:     al_get_keyboard_state(&kbdstate);
1947: 
1948:     if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (bx > 0))
1949:     {
1950:       temp_benj = oslSetImageTileSize(benj,(abs(frame%32)/4)*32,144,32,48);
1951:       bx -= 4;
1952:     }
1953:     else if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (bx < 448))
1954:     {
1955:       temp_benj = oslSetImageTileSize(benj,(abs(frame%32)/4)*32,48,32,48);
1956:       bx += 4;
1957:     }
1958:     else
1959:     {
1960:       temp_benj = oslSetImageTileSize(benj,0,192,32,48);
1961:     }
1962: 
1963:     temp_benj.stretchX = 64;
1964:     temp_benj.stretchY = 96;
1965: 
1966:     if (alive) spr_draw(temp_benj, bx, 176);
1967: 
1968:     if (((boat.stretchX) >= 200))
1969:     {
1970:       if ((alive) && ((bx+32) >= (boat_x-((boat.stretchX)/4))) && ((bx+32) <= (boat_x+((boat.stretchX)/4))))
1971:       {
1972:         alive=0;
1973:         oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
1974:         oslPlaySound(sflartch);
1975:       }
1976:     }
1977: 
1978:     if (!alive)
1979:     {
1980:       spr_draw(boat_blood, 240, 136);
1981:     }
1982: 
1983:     oslEndDrawing();
1984:     oslSwapBuffers();
1985:     oslWaitVSync();
1986:     frame++;
1987:   }
1988: 
1989:   if (alive)
1990:   {
1991:     for (i=0; i<4; i++)
1992:     {
1993:       oslStartDrawing();
1994:       oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
1995:       oslEndDrawing();
1996:       oslSwapBuffers();
1997:       oslWaitVSync();
1998:     }
1999:     oslPlaySound(passs);
2000:     for (i=135; i<=272; i+=24)
2001:     {
2002:       oslStartDrawing();
2003:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
2004:       spr_draw(pass,240,136);
2005:       pass.stretchX = pass.stretchY = i;
2006:       oslEndDrawing();
2007:       oslSwapBuffers();
2008:       oslWaitVSync();
2009:     }
2010:   }
2011:   else reussi=0;
2012: 
2013:   oslStartDrawing();
2014:   oslEndDrawing();
2015:   oslSwapBuffers();
2016:   oslWaitVSync();
2017: 
2018:   oslDeleteImage(boat);
2019:   oslDeleteImage(boat_blood);
2020:   oslDeleteSound(boat_sfx);
2021:   oslDeleteImage(pass);
2022:   oslDeleteSound(passs);
2023:   oslDeleteSound(sflartch);
2024:   oslDeleteSound(ambient);
2025:   return reussi;
2026: }
2027: 
2028: void draw_ball(struct ball ball_ent, OSL_IMAGE ball_gfx, OSL_IMAGE ball_shad)
2029: {
2030:   float yr = pow((ball_ent.y2d - 160) / HAUT_FIELD, 1.4f) * HAUT_FIELD + 160;
2031:   float x_pr_centre = ball_ent.x2d - 240;
2032:   float x_percent = x_pr_centre / 240;
2033:   float y_percent = (272-yr)/HAUT_FIELD;
2034:   float x_mult = 240 - ESPAC_HORIZ*y_percent;
2035:   float xr = x_percent * x_mult + 240;
2036: 
2037:   ball_gfx.stretchX = ball_gfx.stretchY = 8*(1-0.266f*y_percent);
2038:   ball_shad.stretchX = ball_shad.stretchY = 8*(1-0.266f*y_percent);
2039: 
2040:   spr_draw(ball_gfx, ball_ent.x2d, ball_ent.y2d-ball_ent.z3d);
2041:   spr_draw(ball_shad, ball_ent.x2d, ball_ent.y2d);
2042: }
2043: 
2044: int shoop_da_whoop(int health, int round, int diff)
2045: {
2046:   int i=480, f=0, ta=0, j, u, k=0, sc=0, a=0, b=0;
2047:   short sens=0, by=0;
2048: 
2049:   OSL_IMAGE starsky = LoadImg("./gfx/starsky.png");
2050:   OSL_SOUND firin = oslLoadSoundFile("./sfx/sdw.wav");
2051: 
2052:   OSL_SOUND sdwh = oslLoadSoundFile("./sfx/sdw2.wav");
2053:   OSL_SOUND expl_sound = oslLoadSoundFile("./sfx/sfx-0018.wav");
2054:   OSL_IMAGE buttons = LoadImg("./gfx/arrows.png");
2055:   OSL_IMAGE sdw = LoadImg("./gfx/sdw.png");
2056:   OSL_IMAGE sdw_sh = LoadImg("./gfx/sdw_sh.png");
2057:   OSL_IMAGE planet = LoadImg("./gfx/planet.png");
2058: 
2059:   OSL_IMAGE numberz = LoadImg("./gfx/numberz.png");
2060:   OSL_IMAGE explode = LoadImg("./gfx/explode.png");
2061: 
2062:   OSL_IMAGE temp = oslCreateImage(480, 272);
2063:   OSL_IMAGE shoot = oslCreateImage(160, 60);
2064: 
2065:   OSL_IMAGE temp_no;
2066: 
2067:   temp=oslSetImageRotCenter(temp);
2068:   sdw=oslSetImageRotCenter(sdw);
2069:   sdw_sh=oslSetImageRotCenter(sdw_sh);
2070:   planet=oslSetImageRotCenter(planet);
2071:   buttons=oslSetImageRotCenter(buttons);
2072: 
2073:   oslPlaySound(firin);
2074:   starsky=oslSetImageRotCenter(starsky);
2075: 
2076:   oslStartDrawing();
2077:   oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
2078:   spr_draw(starsky, 240, 136);
2079:   oslEndDrawing();
2080:   oslSwapBuffers();
2081: 
2082:   for (i=480; i>=128; i-=4)
2083:   {
2084:     planet.stretchX = planet.stretchY = i;
2085:     oslStartDrawing();
2086:     oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
2087:     spr_draw(starsky, 240, 136);
2088:     spr_draw(planet, 240, 136);
2089:     oslEndDrawing();
2090:     oslSwapBuffers();
2091:     oslWaitVSync();
2092:   }
2093: 
2094:   for (i=480; i>=360; i-=4)
2095:   {
2096:     oslStartDrawing();
2097:     oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
2098:     spr_draw(starsky, 240, 136);
2099:     spr_draw(planet, 240, 136);
2100:     spr_draw(sdw, i, 136);
2101:     oslEndDrawing();
2102:     oslSwapBuffers();
2103:     oslWaitVSync();
2104:   }
2105: 
2106: 
2107: 
2108:   for (k=0; k<(diff+1); k++)
2109:   {
2110:     f=0;
2111: 
2112:     sc=0;
2113: 
2114:     if (k)
2115:     {
2116:       al_destroy_bitmap(shoot.asset);
2117:       shoot.asset = al_create_bitmap(160, 60);
2118: 
2119:       al_destroy_bitmap(temp.asset);
2120:       temp.asset = al_create_bitmap(480, 272);
2121:     }
2122: 
2123:     while ((f < 270) && (health > 0))
2124:     {
2125:       if ((f%30) >= 15) by=32; else by=0;
2126: 
2127:       oslStartDrawing();
2128:       spr_draw(sdw_sh, 240, 136);
2129: 
2130:       if (f < 120)
2131:       {
2132:         if (!(f%20)) sens=random(2);
2133: 
2134:         al_set_target_bitmap(temp.asset);
2135: 
2136:         spr_draw(sdw, 360, 136);
2137: 
2138:         ta += (sens)?6:-6;
2139: 
2140:         if (ta < 0) ta += 360;
2141:         if (ta > 359) ta = ta%360;
2142: 
2143:         temp.angle = ta;
2144: 
2145:         al_get_keyboard_state(&kbdstate);
2146: 
2147: 
2148:         if (al_key_down(&kbdstate, ALLEGRO_KEY_LEFT))
2149:         {
2150:           sdw_sh.angle -= 12;
2151:         }
2152: 
2153:         if (al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT))
2154:         {
2155:           sdw_sh.angle += 12;
2156:         }
2157: 
2158:         if ((sdw_sh.angle) < 0)
2159:         {
2160:           (sdw_sh.angle) += 360;
2161:         }
2162: 
2163:         if ((sdw_sh.angle) > 359)
2164:         {
2165:           sdw_sh.angle = (float)((int)((sdw_sh.angle))%360);
2166:         }
2167: 
2168: 
2169:         /*if (((bb==0) && (osl_keys . pressed.circle)) || ((bb==1) && (osl_keys . pressed.cross)) || ((bb==2) && (osl_keys . pressed.square)) || ((bb==3) && (osl_keys . pressed.triangle)))
2170:         {
2171:           sc++;
2172:         }*/
2173:       }
2174: 
2175:       if (((sdw_sh.angle - 60) < (temp.angle)) && ((sdw_sh.angle + 60) > (temp.angle)) && (f==119)) sc = 2*diff+2;
2176: 
2177:       if (((sdw_sh.angle - 60) < ((temp.angle)+360)) && ((sdw_sh.angle + 60) > ((temp.angle)+360)) && (f==119)) sc = 2*diff+2;
2178: 
2179: 
2180:           if ((f >= 120) && (f <= 150))
2181:           {
2182:             temp.angle = 0;
2183:             shoot.angle = 0;
2184: 
2185:             al_set_target_bitmap(shoot.asset);
2186:             oslDrawFillRect(160, 0, (-16/3)*f+800, 60, _RGB(0,0,255));
2187:             oslDrawFillRect(160, 10, (-16/3)*f+800, 50, _RGB(0,128,255));
2188:             oslDrawFillRect(160, 20, (-16/3)*f+800, 40, _RGB(0,255,255));
2189:             oslDrawFillRect(160, 23, (-16/3)*f+800, 37, _RGB(128,255,255));
2190:             oslDrawFillRect(160, 26, (-16/3)*f+800, 33, _RGB(255,255,255));
2191: 
2192:             al_set_target_bitmap(temp.asset);
2193:             spr_draw(shoot, 208, 116);
2194: 
2195:             temp.angle = ta;
2196:           }
2197: 
2198:         if (sc == 2*diff+2)
2199:         {
2200:           if (f >= 150)
2201:           {
2202:           al_set_target_bitmap(temp.asset);
2203:           spr_draw(sdw, 360, 136);
2204:           if (f == 150) oslPlaySound(sdwh);
2205: 
2206:             if (!(f%15))
2207:             {
2208:               oslStopSound(expl_sound);
2209:               oslPlaySound(expl_sound);
2210:               a=330+random(35);
2211:               b=72+random(64);
2212:             }
2213: 
2214:             if ((f%10) < 5)
2215:             {
2216:               explode.stretchX = 64;
2217:               explode.stretchY = 96;
2218:               spr_draw(explode, a, b);
2219:             }
2220:             else
2221:             {
2222:               explode.stretchX = 32;
2223:               explode.stretchY = 48;
2224:               spr_draw(explode, a+16, b+24);
2225:             }
2226:           }
2227:           if (f > 180) f=333;
2228:         }
2229: 
2230:       al_set_target_bitmap(psp_screen);
2231:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
2232:       spr_draw(starsky, 240, 136);
2233:       spr_draw(temp, 240, 136);
2234:       spr_draw(planet, ((f > 150) && (sc < 2*diff+1))?(238+random(5)):240, ((f > 150) && (sc < 2*diff+1))?(134+random(5)):136);
2235:       spr_draw(buttons, 240, 136);
2236:       spr_draw(sdw_sh, 240, 136);
2237: 
2238:       //if (f < 120) spr_draw(buttons, 208, 118);
2239:       if ((f >= 180) && (f <= 240) && (sc < 2*diff+1))
2240:       {
2241:         if (f > 180)
2242:         {
2243:           if (!(f%3)) health--;
2244:         }
2245: 
2246:         if (!(f%15))
2247:         {
2248:           oslPlaySound(expl_sound);
2249:           a=180+random(128);
2250:           b=68+random(128);
2251:         }
2252: 
2253:         if ((f%10) < 5)
2254:         {
2255:           explode.stretchX = 64;
2256:           explode.stretchY = 96;
2257:           spr_draw(explode, a, b);
2258:         }
2259:         else
2260:         {
2261:           explode.stretchX = 32;
2262:           explode.stretchY = 48;
2263:           spr_draw(explode, a+16, b+24);
2264:         }
2265: 
2266:       }
2267: 
2268:       i=random(15);
2269:       u=18;
2270: 
2271:       if (health <= 0)
2272:       {
2273:         health=0;
2274:       }
2275: 
2276:       temp_no=oslSetImageTileSize(numberz,160,0,16,16);
2277:       spr_draw(temp_no, 2, 2);
2278: 
2279:       if (health < 25) j=16; else j=0;
2280: 
2281:         if (health / 100)
2282:         {
2283:           temp_no=oslSetImageTileSize(numberz,((round==2)?((i<12)?16:random(144)):16),0,16,16);
2284:           spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
2285:           u += 16;
2286:         }
2287: 
2288:         if (health > 9)
2289:         {
2290:           if (round==2)
2291:             {
2292:               if (i<12)
2293:                 {
2294:                   temp_no=oslSetImageTileSize(numberz,((health%100)/10)*16,j,16,16);
2295:                 }
2296:               else
2297:                 {
2298:                   temp_no=oslSetImageTileSize(numberz,random(128),j,16,16);
2299:                 }
2300:             }
2301:           else temp_no=oslSetImageTileSize(numberz,((health%100)/10)*16,j,16,16);
2302:         spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
2303:         u += 16;
2304:         }
2305: 
2306:         if (round==2)
2307:           {
2308:             if (i<12)
2309:               {
2310:                 temp_no=oslSetImageTileSize(numberz,(health%10)*16,j,16,16);
2311:               }
2312:             else
2313:               {
2314:                 temp_no=oslSetImageTileSize(numberz,random(128),j,16,16);
2315:               }
2316:           }
2317:         else temp_no=oslSetImageTileSize(numberz,(health%10)*16,j,16,16);
2318:         spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
2319: 
2320: 
2321:       oslEndDrawing();
2322:       oslSwapBuffers();
2323:       oslWaitVSync();
2324:       f++;
2325:     }
2326:   }
2327: 
2328:   oslStartDrawing();
2329:   oslEndDrawing();
2330:   oslSwapBuffers();
2331:   oslWaitVSync();
2332: 
2333:   oslDeleteSound(firin);
2334:   oslDeleteSound(sdwh);
2335:   oslDeleteSound(expl_sound);
2336:   oslDeleteImage(buttons);
2337:   oslDeleteImage(sdw);
2338:   oslDeleteImage(planet);
2339:   oslDeleteImage(starsky);
2340:   oslDeleteImage(temp);
2341:   oslDeleteImage(shoot);
2342:   oslDeleteImage(explode);
2343:   oslDeleteImage(sdw_sh);
2344:   return health;
2345: }
2346: 
2347: void sad()
2348: {
2349:   int f=0;
2350:   OSL_IMAGE gr = LoadImg("./gfx/happyface.png");
2351:   OSL_SOUND ss = oslLoadSoundFile("./sfx/sfx-0027.wav");
2352:   OSL_SOUND dummy = oslLoadSoundFile("./sfx/dummy.wav");
2353: 
2354:   gr=oslSetImageRotCenter(gr);
2355:   oslSetSoundLoop(ss, 1);
2356: 
2357:   for (f=0; f<8; f++) oslPlaySound(dummy);
2358:   oslPlaySound(ss);
2359: 
2360:   f=0;
2361: 
2362:   while(f < 120)
2363:   {
2364:     oslStartDrawing();
2365:     oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
2366:     gr.stretchX = random(150)+400;
2367:     gr.stretchY =(int)((float) 0.75*(gr.stretchX));
2368:     spr_draw(gr, 240, 136);
2369:     oslEndDrawing();
2370:     oslSwapBuffers();
2371:     oslWaitVSync();
2372:     f++;
2373:   }
2374: 
2375:   oslStartDrawing();
2376:   oslEndDrawing();
2377:   oslSwapBuffers();
2378:   oslWaitVSync();
2379: 
2380:   oslDeleteImage(gr);
2381:   oslDeleteSound(ss);
2382:   oslDeleteSound(dummy);
2383: }
2384: 
2385: int game(int round, int diff, int nbp)
2386: {
2387:   int i, j, a=0, stun=0, u, global_fr=0, fs=0, quit=0, px=239, py=180, giyg_flag=0, mort=0, health, pbouss=0, benj_frame=0, tvnoise_ev=0, att_ch_timer=80, skipframe=0, gbg=0;
2388:   int cursor2p=0, mgcd=0, ko_frame=0, mgsy=0, ultlvl=0, ultrectshine=4, frappe=-1, frappe_ult=-1, shldlvl=60, racket_devnull=0, stary=0, suppo=0, suppox, suppoy, whineface=0, kx=0, ky=0;
2389: 
2390:   short lightsoff=0, paused=0, bulbfell=0, bulbfs=0, shielded=0, darkness=0, chair=0, attf=0, putin=0, ulted=0, rckchscr=0, nbult=0, returned=0, rebound=0;
2391:   short swinging=0, ulting=0;
2392: 
2393:   int giyg_bg_angles[3] = {0, 0, 0};
2394:   float court_zoom=1, reddv=0;
2395:   char buffer[20];
2396: 
2397:   int pie_attacks[8][5]; //numeroattaque-duree(frames)-x-y?
2398:   int att_cooldowns[15];
2399:   int stars_ult[5];
2400: 
2401:   int meteors[3][3];
2402: 
2403:   struct pie_entity pie_ent = initpie();
2404:   struct ball ball_ent = initball();
2405: 
2406:   ALLEGRO_EVENT ev;
2407: 
2408:   OSL_IMAGE pie, tvnoise[20], numberz, ulting_gfx;
2409:   OSL_SOUND minigametime = oslLoadSoundFile("./sfx/sfx-0080.wav");
2410:   OSL_SOUND tvnoisesound;
2411:   OSL_SOUND giygas[3];
2412:   OSL_SOUND quitter = oslLoadSoundFile("./sfx/quitter.wav");
2413:   OSL_SOUND ko_sfx = oslLoadSoundFile("./sfx/sfx-0045.wav");
2414:   OSL_SOUND expl_sound = oslLoadSoundFile("./sfx/sfx-0018.wav");
2415:   OSL_SOUND pew = oslLoadSoundFile("./sfx/sfx-0100.wav");
2416:   OSL_SOUND paf = oslLoadSoundFile("./sfx/beng-0011.wav");
2417:   OSL_SOUND meteor_fall = oslLoadSoundFile("./sfx/sfx-0040.wav");
2418:   OSL_SOUND expl_sound2 = oslLoadSoundFile("./sfx/sfx-0036.wav");
2419:   OSL_SOUND bulbsfx[7];
2420:   OSL_SOUND stun_sound =  oslLoadSoundFile("./sfx/sfx-0038.wav");
2421:   OSL_SOUND elec =  oslLoadSoundFile("./sfx/elec.wav");
2422:   OSL_SOUND thunder =  oslLoadSoundFile("./sfx/thunder.wav");
2423:   OSL_SOUND psis_sfx = oslLoadSoundFile("./sfx/sfx-0043.wav");
2424:   OSL_SOUND dictators_sfx[4];
2425: 
2426:   OSL_SOUND mouth_sfx[2];
2427:  
2428:   OSL_SOUND whine = oslLoadSoundFile("./sfx/sfx-0097.wav");
2429:   OSL_SOUND bounce = oslLoadSoundFile("./sfx/racketbounce.wav");
2430: 
2431: 
2432:   OSL_IMAGE lightning =  LoadImg("./gfx/lightning.png");
2433:   OSL_IMAGE premess =  LoadImg("./gfx/premess.png");
2434:     OSL_IMAGE giyg_bg[33], starsky = LoadImg("./gfx/starsky.png");
2435:     OSL_IMAGE sleepwell = LoadImg("./gfx/sleepwell.png");
2436:     OSL_IMAGE ball_gfx = LoadImg("./gfx/ball.png");
2437:     OSL_IMAGE ball_shad = LoadImg("./gfx/ball_shadow.png");
2438:     OSL_IMAGE ko = LoadImg("./gfx/ko.png");
2439:     OSL_IMAGE mgswirl = LoadImg("./gfx/mgswirl.png");
2440:     OSL_IMAGE explode = LoadImg("./gfx/explode.png");
2441:     OSL_IMAGE rckch[2];
2442:     OSL_IMAGE psycho = LoadImg("./gfx/gfx-0672.png");
2443:     OSL_IMAGE paused_gfx = LoadImg("./gfx/paused.png");
2444:     OSL_IMAGE ultgauge = LoadImg("./gfx/ultgauge.png");
2445:     OSL_IMAGE shlgauge = LoadImg("./gfx/shlgauge.png");
2446:     OSL_IMAGE visor = LoadImg("./gfx/visor.png");
2447:     OSL_IMAGE bulbasaur = LoadImg("./gfx/bulbasaur.png");
2448:     OSL_IMAGE recipe = LoadImg("./gfx/darkness.png");
2449:     OSL_IMAGE shield = LoadImg("./gfx/shield.png");
2450:     OSL_IMAGE meteor = LoadImg("./gfx/gfx-0471.png");
2451:     OSL_IMAGE stunning = LoadImg("./gfx/creepycircle.png");
2452:     OSL_IMAGE psis = LoadImg("./gfx/psis.png");
2453:     OSL_IMAGE dictators = LoadImg("./gfx/dictators.png");
2454:     OSL_IMAGE mouth = LoadImg("./gfx/gfx-0102.png");
2455:     OSL_IMAGE powerball = LoadImg("./gfx/powerball.png");
2456:     OSL_IMAGE star = LoadImg("./gfx/star.png");
2457:     OSL_IMAGE juche = LoadImg("./gfx/juche.png");
2458:     OSL_IMAGE suppo_gfx = LoadImg("./gfx/suppo.png");
2459:     OSL_IMAGE attch = LoadImg("./gfx/attchoice.png");
2460:     OSL_IMAGE cp2 = LoadImg("./gfx/cursor2p.png");
2461: 
2462:   OSL_SOUND benj_sfx[11];
2463: 
2464: 
2465:   OSL_IMAGE shadow, temp_ulting, temp_ultg, temp_psis, temp_recipe, temp_bulb, temp_prem, temp_benj, temp_pb, temp_dics, temp_lghtn, temp_suppo, temp_met, temp_no, temp_ko;
2466: 
2467:   numberz = LoadImg("./gfx/numberz.png");
2468: 
2469:   ulting_gfx = LoadImg("./gfx/ulting.png");
2470: 
2471:   benj_sfx[0] = oslLoadSoundFile("./sfx/beng-0000.wav");
2472:   benj_sfx[1] = oslLoadSoundFile("./sfx/beng-0001.wav");
2473:   benj_sfx[2] = oslLoadSoundFile("./sfx/beng-0002.wav");
2474:   benj_sfx[3] = oslLoadSoundFile("./sfx/beng-0003.wav");
2475:   benj_sfx[4] = oslLoadSoundFile("./sfx/beng-0004.wav"); //hurt
2476:   benj_sfx[5] = oslLoadSoundFile("./sfx/beng-0013.wav");
2477:   benj_sfx[6] = oslLoadSoundFile("./sfx/beng-0016.wav");
2478:   benj_sfx[7] = oslLoadSoundFile("./sfx/beng-0020.wav"); //pass
2479:   benj_sfx[8] = oslLoadSoundFile("./sfx/beng-0009.wav");
2480:   benj_sfx[9] = oslLoadSoundFile("./sfx/beng-0015.wav"); //ult
2481:   benj_sfx[10] = oslLoadSoundFile("./sfx/beng-0006.wav"); //shield
2482: 
2483:   dictators_sfx[0] = oslLoadSoundFile("./sfx/putin.wav"),
2484:   dictators_sfx[1] = oslLoadSoundFile("./sfx/kjun.wav"),
2485:   dictators_sfx[2] = oslLoadSoundFile("./sfx/hitler.wav"),
2486:   dictators_sfx[3] = oslLoadSoundFile("./sfx/skeletor.wav"),
2487:  
2488:   mouth_sfx[0] =  oslLoadSoundFile("./sfx/sfx-0021.wav");
2489:   mouth_sfx[1] = oslLoadSoundFile("./sfx/sfx-0022.wav"),
2490:  
2491:     rckch[0] = LoadImg("./gfx/rocking_chair.png");
2492:     rckch[1] = LoadImg("./gfx/rocking_chair2.png");
2493: 
2494:     pie_ent.pie_hp=100*round*diff;
2495: 
2496:   pie=LoadImg("./gfx/pie.png");
2497:   pie=oslSetImageRotCenter(pie);
2498:   starsky=oslSetImageRotCenter(starsky);
2499:   sleepwell=oslSetImageRotCenter(sleepwell);
2500:   rckch[0].centerX = 32;
2501:   rckch[0].centerY = 47;
2502:   rckch[1]=oslSetImageRotCenter(rckch[1]);
2503:   recipe=oslSetImageRotCenter(recipe);
2504:   paused_gfx=oslSetImageRotCenter(paused_gfx);
2505:   visor=oslSetImageRotCenter(visor);
2506:   mouth=oslSetImageRotCenter(mouth);
2507:   stunning=oslSetImageRotCenter(stunning);
2508:   powerball=oslSetImageRotCenter(powerball);
2509:   star=oslSetImageRotCenter(star);
2510:   ball_gfx.centerX = 3;
2511:   ball_gfx.centerY = 7;
2512: 
2513:   al_register_event_source(event_queue, al_get_display_event_source(display));
2514:     al_register_event_source(event_queue, al_get_timer_event_source(timer));
2515:     al_start_timer(timer);
2516: 
2517:   temp_pb=oslSetImageTileSize(powerball, 0, 0, 32, 32);
2518:   tvnoisesound = oslLoadSoundFile("./sfx/dummy.wav");
2519: 
2520:   mouth.stretchX = 10;
2521:   mouth.stretchY = 16;
2522: 
2523: 
2524:   for (i=0; i<8; i++)
2525:   {
2526:     for (j=0; j<5; j++)
2527:     {
2528:       pie_attacks[i][j]=0;
2529:       stars_ult[j]=-32;
2530:     }
2531:   }
2532: 
2533: 
2534: 
2535:   for (i=0; i<7; i++)
2536:   {
2537:     sprintf(buffer,"./sfx/sfx-0%d.wav",i+114);
2538:     bulbsfx[i]=oslLoadSoundFile(buffer);
2539:   }
2540: 
2541:   for (i=0; i<15; i++)
2542:   {
2543:     att_cooldowns[i]=(random((8-(diff*2)))*100+random(3*diff)*100+800);
2544:     att_cooldowns[i] += (((i==0) || (i==3) || (i==4))?9*att_cooldowns[i]:0) + 2*random((int)(((i!=0)?1.5:3.5)*att_cooldowns[i]));
2545:     if ((i!=0) && (i!=3) && (i!=4)) att_cooldowns[i]=att_cooldowns[i]/(0.5*round+0.5);
2546:   }
2547: 
2548:   oslSetSoundLoop(psis_sfx, 1);
2549: 
2550:   if (round == 2)
2551:   {
2552:     giygas[0] = oslLoadSoundFile("./sfx/sfx-0006.wav");
2553:     giygas[1] = oslLoadSoundFile("./sfx/sfx-0007.wav");
2554:     giygas[2] = oslLoadSoundFile("./sfx/sfx-0008.wav");
2555: 
2556:     for (i=0; i<20; i++)
2557:     {
2558:       sprintf(buffer,"./gfx/gfx-0%d.png",i+642);
2559:       tvnoise[i]= LoadImg(buffer);
2560:       tvnoise[i].stretchX = 480;
2561:       tvnoise[i].stretchY = 272;
2562:     }
2563: 
2564:     oslDeleteSound(tvnoisesound);
2565: 
2566:     tvnoisesound = oslLoadSoundFile("./sfx/sfx-0028.wav");
2567:     //tvnoisesound . volumeLeft = tvnoisesound . volumeRight = 0x2000;
2568:     oslSetSoundLoop(tvnoisesound, 1);
2569: 
2570:     if (round==2)
2571:     {
2572:       for (i=0; i<33; i++)
2573:       {
2574:         sprintf(buffer,"./gfx/gfx-0%d.png",i+103);
2575:         giyg_bg[i]=LoadImg(buffer);
2576:         giyg_bg[i]=oslSetImageRotCenter(giyg_bg[i]);
2577:         giyg_bg[i].stretchX = giyg_bg[i].stretchY = 512;
2578:       }
2579:     }
2580:   }
2581:   else
2582:   {
2583:     giygas[0] = oslLoadSoundFile("./sfx/sfx-0155.wav");
2584:     giygas[1] = oslLoadSoundFile("./sfx/sfx-0153.wav");
2585:     giygas[2] = oslLoadSoundFile("./sfx/dummy.wav");
2586: 
2587:     for (i=0; i<5; i++)
2588:     {
2589:       tvnoise[i]=LoadImg("./gfx/dummy.png");
2590:     }
2591:   }
2592: 
2593: 
2594: 
2595: 
2596:     //oslSetTransparentColor(RGB(255,0,255));
2597: 
2598: 
2599:   for (i=0; i<3; i++)
2600:   {
2601:     oslSetSoundLoop(giygas[i], 1);
2602:   }
2603: 
2604:     oslPlaySound(giygas[0]);
2605:     health=100;
2606:    
2607:     while(!quit)
2608:     {
2609:     al_wait_for_event(event_queue, &ev);
2610: 
2611:      if(ev.type == ALLEGRO_EVENT_TIMER) skipframe=1; else skipframe=0;
2612: 
2613:      if ((skipframe) && al_event_queue_is_empty(event_queue))
2614:      {
2615:       oslStartDrawing();
2616:       skipframe=0;
2617:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
2618: 
2619:       if (pie_ent.pie_hp < 1)
2620:       {
2621:         pie_ent.pie_y = 136+5*sin(0.5*global_fr);
2622:       }
2623: 
2624:       spr_draw(starsky,239,136);
2625: 
2626:       if ((whineface) && (health > 0) && (pie_ent.pie_hp > 0))
2627:       {
2628:         //oslSetAlpha(OSL_FX_DEFAULT, 0);
2629:         pie.R=255;
2630:         pie.G=pie.B=(32-whineface)*8;
2631:         spr_draw(pie, pie_ent.pie_x, pie_ent.pie_y);
2632:         temp_dics=oslSetImageTileSize(dictators, 160, 80, 80, 80);
2633:         temp_dics=oslSetImageRotCenter(temp_dics);
2634:         temp_dics.trans=whineface*8;
2635:         spr_draw(temp_dics, pie_ent.pie_x, pie_ent.pie_y-22);
2636:         whineface--;
2637:         pie.R=pie.G=pie.B=255;
2638:       }
2639:       else
2640:       {
2641:         pie.R=pie.G=pie.B=255;
2642:         spr_draw(pie,pie_ent.pie_x, pie_ent.pie_y);
2643:       }
2644: 
2645: 
2646: 
2647: 
2648:       //oslSetAlpha(OSL_FX_DEFAULT, 0);
2649: 
2650:       for (i=0; i<((2*diff)+2); i++)
2651:       {
2652:         if ((pie_attacks[i][0]==12) && (health > 0))
2653:         {
2654:           temp_dics=oslSetImageTileSize(dictators, 80*(pie_ent.pie_facemode%2), 80*(pie_ent.pie_facemode/2),80 ,80);
2655:           temp_dics=oslSetImageRotCenter(temp_dics);
2656: 
2657:           if (pie_attacks[i][1] > (240*diff-255))
2658:           {
2659:             temp_dics.trans=240*diff - pie_attacks[i][1];
2660:           }
2661:           else
2662:           {
2663:             temp_dics.trans=255;
2664:           }
2665: 
2666:           if (pie_attacks[i][1] < 0)
2667:           {
2668:             temp_dics.trans=255+pie_attacks[i][1];
2669:           }
2670: 
2671:           if (!whineface) spr_draw(temp_dics, pie_ent.pie_x, pie_ent.pie_y-22);
2672: 
2673:           if (!paused) pie_attacks[i][1]--;
2674: 
2675:           if (pie_attacks[i][1] == -255)
2676:           {
2677:             pie_attacks[i][0]=0;
2678:             pie_ent.pie_facemode=0;
2679:             putin=0;
2680:           }
2681: 
2682:           temp_dics.trans=255;
2683: 
2684:           if ((pie_ent.pie_facemode == 2) && (pie_attacks[i][1]==90))
2685:           {
2686:             for (i=0; i<15; i++)
2687:             {
2688:               if ((i!=0) && (i!=3) && (i!=4) && (i != 11) && (i!=6)) att_cooldowns[i]=random(250);
2689:             }
2690:           }
2691: 
2692:           if (pie_ent.pie_facemode == 0)
2693:           {
2694:             if (pie_attacks[i][1] > -255) putin=1; else putin=0;
2695:           }
2696:           if (pie_ent.pie_facemode == 1)
2697:           {
2698:             spr_draw(juche, pie_attacks[i][2], 40+30*sin(0.0625*pie_attacks[i][2]));
2699:             pie_attacks[i][2] -= 3;
2700:           }
2701:         }
2702:       }
2703: 
2704:       if (health <= 0)
2705:       {
2706:         temp_dics=oslSetImageTileSize(dictators, 160, 0, 80, 80);
2707:         temp_dics=oslSetImageRotCenter(temp_dics);
2708:         temp_dics.trans=255;
2709:         spr_draw(temp_dics, pie_ent.pie_x, pie_ent.pie_y-22);
2710:       }
2711:       else if (pie_ent.pie_hp < 1)
2712:       {
2713:         temp_dics=oslSetImageTileSize(dictators, 160, 80, 80, 80);
2714:         temp_dics=oslSetImageRotCenter(temp_dics);
2715:         temp_dics.trans=255;
2716:         spr_draw(temp_dics, pie_ent.pie_x, pie_ent.pie_y-22);
2717:       }
2718: 
2719:       spr_draw(court,0,0);
2720: 
2721: 
2722:       if (!paused)
2723:       {
2724:         if (pie_ent.pie_hp > 0)
2725:         {
2726:           if (!(pie_ent.pie_direction))
2727:           {
2728:               pie_ent.pie_x++;
2729:               pie.angle+=((round==2)?(giyg_flag+1):1)*4;
2730: 
2731:             if (pie_ent.pie_x>=351) pie_ent.pie_direction=1;
2732: 
2733:           }
2734:           else
2735:           {
2736:               pie_ent.pie_x--;
2737:               pie.angle-=((round==2)?(giyg_flag+1):1)*4;
2738: 
2739: 
2740:             if (pie_ent.pie_x<=128) pie_ent.pie_direction=0;
2741:           }
2742:         }
2743: 
2744: 
2745:         if (round==2) starsky.angle=starsky.angle-(giyg_flag+1)*((random(10))-1);
2746: 
2747:         if (counter >= 240)
2748:         {
2749: 
2750:           if (diff != 3) a=diff; else a=2;
2751: 
2752:           if (counter == 240) ball_ent=apply_impulse(ball_ent, -1*a, -1*a, 30*3.14/180);
2753: 
2754:           if (ultlvl > 239) ultlvl=239;
2755: 
2756:           if ((!mgcd) && (!lightsoff) && (!rckchscr) && (mouth.stretchX == 10))
2757:           {
2758:             ball_ent.x2d += ball_ent.speed_h;
2759:             ball_ent.y2d += ball_ent.speed_v;
2760: 
2761:             /*ball_ent.speed_z += GRAVITY;
2762:             ball_ent.z3d += ball_ent.speed_z;
2763: 
2764:             if (ball_ent.z3d < 0)
2765:             {
2766:               ball_ent.speed_z = -1*(ball_ent.speed_z);
2767:               ball_ent.z3d=0;
2768:             }*/
2769: 
2770:             ball_ent.z3d = abs(16*sin(0.0625*global_fr));
2771:           }
2772: 
2773:           if (ball_ent.y2d < 138)
2774:             {
2775:                 ball_ent.speed_v = -1*(ball_ent.speed_v);
2776:                 ball_ent.y2d = 140;
2777: 
2778:                 returned=0;
2779: 
2780:                 if ((ball_ent.x2d >= pie_ent.pie_x-128) && (ball_ent.x2d <= pie_ent.pie_x+128))
2781:                 {
2782:                   pie_ent.pie_hp -= (4-diff);
2783:                   ultlvl += 5-diff;
2784:                   oslPlaySound(whine);
2785:                   whineface=31;
2786:                 }
2787:                 else
2788:                 {
2789:                   if ((!suppo) && ((health) || (pie_ent.pie_hp)))
2790:                   {
2791:                     suppo = 150;
2792:                     suppox = px - 32;
2793:                     suppoy = py + 48;
2794:                   }
2795:                 }
2796: 
2797: 
2798:                 if (ball_ent.speed_v > 0)
2799:                 {
2800:                   a=random(100);
2801:                   //if (a > 85) ball_ent.poisoned=1; else ball_ent.poisoned=0;
2802:                 }
2803: 
2804:             }
2805: 
2806:           if (ball_ent.y2d > 288)
2807:             {
2808:                 ball_ent.speed_v = -1*(ball_ent.speed_v);
2809:                 ball_ent.y2d = 286;
2810: 
2811:                 ball_ent.poisoned=0;
2812: 
2813:                 if (!shielded)
2814:                 {
2815:                   stun=616;
2816:                   health -= diff+1;
2817:                   oslPlaySound(thunder);
2818:                 }
2819: 
2820: 
2821:                 returned=1;
2822:             }
2823: 
2824:           if ((ball_ent.x2d >= 480 - 16/2) || (ball_ent.x2d < 4))
2825:           {
2826:             ball_ent.speed_h = -1*(ball_ent.speed_h);
2827:             if (ball_ent.x2d < 4) ball_ent.x2d = 6; else ball_ent.x2d = 478 - 16/2;
2828:           }
2829: 
2830: 
2831:         }
2832: 
2833:       }
2834: 
2835:     al_get_keyboard_state(&kbdstate);
2836: 
2837:     if (!al_key_down(&kbdstate, ALLEGRO_KEY_I) && !al_key_down(&kbdstate, ALLEGRO_KEY_O) && !al_key_down(&kbdstate, ALLEGRO_KEY_C) && !al_key_down(&kbdstate, ALLEGRO_KEY_P) && !al_key_down(&kbdstate, ALLEGRO_KEY_SPACE) && !al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL))
2838:     {
2839:       rebound=0;
2840:       swinging=0;
2841:       ulting=0;
2842:       frappe=-1;
2843:       frappe_ult=-1;
2844:     }
2845: 
2846:       if (((al_key_down(&kbdstate, ALLEGRO_KEY_I)) || (al_key_down(&kbdstate, ALLEGRO_KEY_O))) && (nbp==2) && (!rebound))
2847:       {
2848:         att_ch_timer=0;
2849:         if ((al_key_down(&kbdstate, ALLEGRO_KEY_I)) && (cursor2p > 0)) cursor2p--;
2850:         if ((al_key_down(&kbdstate, ALLEGRO_KEY_O)) && (cursor2p < 13)) cursor2p++;
2851:         rebound=1;
2852:       }
2853: 
2854:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_P)) && (pie_ent.pie_hp) && (health) && (!mgcd) && (counter > 256) && (!rebound))
2855:         {
2856:           rebound=1;
2857:           if (!paused)
2858:           {
2859:             if (!lightsoff) oslStopSound(giygas[giyg_flag%3]);
2860:             paused=1;
2861:             if (al_get_sample_instance_position(quitter.instance))
2862:             {
2863:               health -= 5;
2864:               if (putin) health -=2;
2865:               oslStopSound(quitter);
2866:             }
2867:             if (al_get_sample_instance_position(tvnoisesound.instance)) oslStopSound(tvnoisesound);
2868:             if (al_get_sample_instance_position(psis_sfx.instance)) oslStopSound(psis_sfx);
2869:           }
2870:           else
2871:           {
2872:             paused=0;
2873:             oslPlaySound(giygas[giyg_flag%3]);
2874:           }
2875: 
2876:          
2877:         }
2878: 
2879: 
2880:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_L)) && (paused))
2881:       {
2882:         if ((al_key_down(&kbdstate, ALLEGRO_KEY_R)) && (al_key_down(&kbdstate, ALLEGRO_KEY_L)))
2883:           {
2884:             if ((al_key_down(&kbdstate, ALLEGRO_KEY_X)) && (al_key_down(&kbdstate, ALLEGRO_KEY_R)) && (al_key_down(&kbdstate, ALLEGRO_KEY_L)))
2885:               {
2886:                 paused=0;
2887:                 health=0;
2888:                 mort=2;
2889:               }
2890: 
2891:             if ((al_key_down(&kbdstate, ALLEGRO_KEY_N)) && (al_key_down(&kbdstate, ALLEGRO_KEY_R)) && (al_key_down(&kbdstate, ALLEGRO_KEY_L)))
2892:               {
2893:                 paused=0;
2894:                 pie_ent.pie_hp=0;
2895:                 pie_ent.pie_facemode=0;
2896:               }
2897:           }
2898:       }
2899: 
2900: 
2901:       counter++;
2902:       global_fr++;
2903:       if (nbp==2) att_ch_timer++; else att_ch_timer=4;
2904: 
2905:       if ((att_ch_timer >= 81) && (att_cooldowns[cursor2p] == 1) && (nbp==2))
2906:       {
2907:         att_cooldowns[cursor2p]=0;
2908:       }
2909: 
2910: 
2911:       benj.stretchX = 32;
2912:       benj.stretchY = 48;
2913:       benj.angle = 0;
2914: 
2915:       if (stun > 600)
2916:       {
2917:         lightning.trans=(stun%600)*16;
2918:         temp_lghtn=oslSetImageTileSize(lightning,0,0,32,py+64);
2919:         spr_draw(temp_lghtn, px, 0);
2920:       }
2921: 
2922: 
2923:       if (health > 0)
2924:       {
2925:         shadow=oslSetImageTileSize(benj,32,192,32,48);
2926:         shadow.trans=128;
2927:         spr_draw(shadow, px+8, py+26);
2928:       }
2929: 
2930:       temp_benj=oslSetImageTileSize(benj,0,192,32,48);
2931: 
2932:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_C)) && (pie_ent.pie_hp > 0) && (health>0) && (!mgcd) && (!paused) && (frappe_ult<7) && (!stun) && (counter > 300) && (stary <= 0) && (!ulting) && (!rebound))
2933:       {
2934:         frappe_ult=1;
2935:         ulting=1;
2936:         rebound=1;
2937:         oslPlaySound(benj_sfx[(random(2)+8)]);
2938:         racket_devnull++;
2939: 
2940:         stary=py+48;
2941: 
2942:         if ((ultlvl > 59) && (ultlvl < 120))
2943:         {
2944:           stars_ult[0]=px+32;
2945:           nbult=1;
2946:         }
2947: 
2948:         else if ((ultlvl > 119) && (ultlvl < 239))
2949:         {
2950:             stars_ult[0]=px-48;
2951:             stars_ult[1]=px+32;
2952:             stars_ult[2]=px+112;
2953:             nbult=3;
2954:         }
2955: 
2956:         else if (ultlvl==239)
2957:         {
2958:           stars_ult[0]=px-48;
2959:           stars_ult[1]=px-8;
2960:           stars_ult[2]=px+32;
2961:           stars_ult[3]=px+72;
2962:           stars_ult[4]=px+112;
2963:           nbult=5;
2964:         }
2965: 
2966: 
2967:       if (ultlvl > 59) ultlvl -= ((diff==1)?60:((diff==2)?(ultlvl%60+60):ultlvl));
2968: 
2969:       }
2970: 
2971:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_X)) && (health>0) && (!mgcd) && (!paused) && (shldlvl > 2) && (!stun))
2972:       {
2973:         racket_devnull++;
2974:       }
2975: 
2976:       if (((al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) || (al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) && (health>0) && (!mgcd) && (!paused) && (frappe<7) && (!stun) && (!rebound) && (!swinging))
2977:       {
2978:         if (!(racket_devnull%2)) oslPlaySound(benj_sfx[random(3)+5]);
2979:         racket_devnull++;
2980:         frappe=1;
2981:         rebound=1;
2982:         swinging=1;
2983:       }
2984: 
2985:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_UP)) && (py >= 102) && (health>0) && (!mgcd) && (!paused) && (frappe == -1) && (!stun) && (mouth.stretchX == 10))
2986:       {
2987:         if (pie_ent.pie_facemode != 1)
2988:         {
2989:           pbouss=0;
2990:           temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,0,32,48);
2991:           if (al_key_down(&kbdstate, ALLEGRO_KEY_UP))
2992:             {
2993:               if (pie_ent.pie_facemode != 3) py-=4; else py-=2;
2994:               fs=3;
2995:             }
2996:         }
2997:         else
2998:         {
2999:           pbouss=2;
3000:           temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,96,32,48);
3001:           if (al_key_down(&kbdstate, ALLEGRO_KEY_UP))
3002:           {
3003:             if (pie_ent.pie_facemode != 3) py+=4; else py+=2;
3004:             fs=3;
3005:           }
3006:           if (py > 224) py=216;
3007:         }
3008: 
3009:         temp_pb=oslSetImageTileSize(powerball, 32, 0, 32, 32);
3010:         if (!(counter%fs)) benj_frame++;
3011:       }
3012:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (!ulting) && (px >= (-0.492*py+94.184)) && (px <= (0.492*py+321.792)) && (health>0) && (!mgcd) && (!paused) && (frappe < 4) && (!stun) && (mouth.stretchX == 10))
3013:       {
3014:         if (pie_ent.pie_facemode != 1)
3015:         {
3016:           pbouss=3;
3017:           temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,pbouss*48,32,48);
3018:           if (al_key_down(&kbdstate, ALLEGRO_KEY_LEFT))
3019:           {
3020:             if (frappe < 4)
3021:             {
3022:               if (pie_ent.pie_facemode != 3) px-=4; else px-=2;
3023:             }
3024:             fs=3;
3025:           }
3026:         }
3027:         else
3028:         {
3029:           pbouss=1;
3030:           temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,48,32,48);
3031:           if (al_key_down(&kbdstate, ALLEGRO_KEY_LEFT))
3032:           {
3033:             if (frappe < 4)
3034:             {
3035:               if (pie_ent.pie_facemode != 3) px+=4; else px+=2;
3036:             }
3037:               fs=3;
3038:           }
3039:           if (px > (0.492*py+321.792)) px = (0.492*py+321.792);
3040:         }
3041: 
3042:           temp_pb=oslSetImageTileSize(powerball, 32, 0, 32, 32);
3043:           if (!(counter%fs)) benj_frame++;
3044:       }
3045:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (!ulting) && (px >= (-0.492*py+94.184)) && (px <= (0.492*py+321.792)) && (health>0) && (!mgcd) && (!paused) && (frappe < 4) && (!stun) && (mouth.stretchX == 10))
3046:       {
3047:         if (pie_ent.pie_facemode != 1)
3048:         {
3049:           pbouss=1;
3050:           temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,48,32,48);
3051:           if (al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT))
3052:           {
3053:             if (frappe < 4)
3054:             {
3055:               if (pie_ent.pie_facemode != 3) px+=4; else px+=2;
3056:             }
3057:               fs=3;
3058:           }
3059:         }
3060:         else
3061:         {
3062:           pbouss=3;
3063:           temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,pbouss*48,32,48);
3064:           if (al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT))
3065:           {
3066:             if (frappe < 4)
3067:             {
3068:               if (pie_ent.pie_facemode != 3) px-=4; else px-=2;
3069:             }
3070:             fs=3;
3071:           }
3072: 
3073:           if (px < (-0.492*py+94.184)) px = (-0.492*py+94.184);
3074:         }
3075:           temp_pb=oslSetImageTileSize(powerball, 0, 0, 32, 32);
3076:           if (!(counter%fs)) benj_frame++;
3077:       }
3078:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_DOWN)) && (py <= 224) && (health>0) && (!mgcd) && (!paused) && (frappe == -1) && (!stun) && (mouth.stretchX == 10))
3079:       {
3080:         if (pie_ent.pie_facemode != 1)
3081:         {
3082:           pbouss=2;
3083:           temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,96,32,48);
3084:           if (al_key_down(&kbdstate, ALLEGRO_KEY_DOWN))
3085:           {
3086:             if (pie_ent.pie_facemode != 3) py+=4; else py+=2;
3087:             fs=3;
3088:           }
3089:         }
3090:         else
3091:         {
3092:           pbouss=0;
3093:           temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,0,32,48);
3094:           if (al_key_down(&kbdstate, ALLEGRO_KEY_DOWN))
3095:             {
3096:               if (pie_ent.pie_facemode != 3) py-=4; else py-=2;
3097:               fs=3;
3098:             }
3099:           if (py < 102) py=110;
3100:         }
3101: 
3102:           temp_pb=oslSetImageTileSize(powerball, 0, 0, 32, 32);
3103:           if (!(counter%fs)) benj_frame++;
3104:       }
3105: 
3106:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) && (health>0) && (!mgcd) && (!paused) && (frappe<7) && (!stun) && (swinging))
3107:       {
3108:         if ((!(counter%3))) frappe++;
3109:         temp_benj=oslSetImageTileSize(benj,(frappe)*32,240,32,48);
3110: 
3111: 
3112:         if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (frappe > -1))
3113:           {
3114:             if (frappe>3) temp_benj.angle = 90;
3115:             temp_benj=oslSetImageTileSize(benj,(frappe)*32,432,32,48);
3116: 
3117:           }
3118:         else if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (frappe > -1))
3119:           {
3120:             if (frappe>3) temp_benj.angle = -90;
3121:             temp_benj=oslSetImageTileSize(benj,(frappe)*32,384,32,48);
3122:           }
3123: 
3124:         if (((px+24-(ball_ent.x2d))*(px+24-(ball_ent.x2d))+(py+24-(ball_ent.y2d))*(py+24-(ball_ent.y2d)) <= 404) && (!returned) && (py >= 142))
3125:         {
3126:           if (diff != 3) a=diff; else a=2;
3127:           ball_ent = apply_impulse(ball_ent, a, a, (180-15*frappe)*3.14/180);
3128:           oslPlaySound(bounce);
3129:           frappe=-1;
3130:           returned=1;
3131:           //swinging=0;
3132:         }
3133:       }
3134: 
3135: 
3136:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_SPACE)) && (health>0) && (!mgcd) && (!paused) && (frappe<7) && (!stun) && (swinging))
3137:       {
3138:         if ((!(counter%3))) frappe++;
3139:         temp_benj=oslSetImageTileSize(benj,(frappe)*32,288,32,48);
3140: 
3141: 
3142:         if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (frappe > -1))
3143:           {
3144:             if (frappe>3) temp_benj.angle = 90;
3145:             temp_benj=oslSetImageTileSize(benj,(frappe)*32,432,32,48);
3146:           }
3147:         else if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (frappe > -1))
3148:           {
3149:             if (frappe>3) temp_benj.angle = -90;
3150:             temp_benj=oslSetImageTileSize(benj,(frappe)*32,384,32,48);
3151:           }
3152: 
3153:         if (((px+36-(ball_ent.x2d))*(px+36-(ball_ent.x2d))+(py+36-(ball_ent.y2d))*(py+36-(ball_ent.y2d)) <= 404) && (!returned) && (py >= 142))
3154:         {
3155:           if (diff != 3) a=diff; else a=2;
3156:           ball_ent = apply_impulse(ball_ent, -1*a, a, (15*frappe)*3.14/180);
3157:           oslPlaySound(bounce);
3158:           frappe=-1;
3159:           returned=1;
3160:           //swinging=0;
3161:         }
3162:       }
3163: 
3164:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_X)) && (health>0) && (!mgcd) && (!paused) && (shldlvl > 0) && (!stun))
3165:       {
3166:         if ((!shielded) && (shldlvl > 2)) oslPlaySound(benj_sfx[10]);
3167:         if ((!(counter%(4-diff)))) shldlvl--;
3168:         shielded=1;
3169:       }
3170: 
3171:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_C)) && (health>0) && (!mgcd) && (!paused) && (frappe_ult<7) && (!stun) && (counter > 300) && (!rebound) && (ulting))
3172:       {
3173:         if (!(counter%3)) frappe_ult++;
3174:       }
3175: 
3176:       /*if ((frappe==7) && (swinging) && (!al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL))  ||  (!al_key_down(&kbdstate, ALLEGRO_KEY_X)) ||  (!al_key_down(&kbdstate, ALLEGRO_KEY_SPACE)))
3177:       {
3178:        
3179:       }*/
3180: 
3181:       if ((!al_key_down(&kbdstate, ALLEGRO_KEY_X)) || (!shldlvl))
3182:       {
3183:         shielded=0;
3184:       }
3185: 
3186:       if (stun)
3187:       {
3188:         frappe=-1;
3189:         temp_benj=oslSetImageTileSize(benj,64,192,32,48);
3190:         stun--;
3191:         if (!(stun%200)) stun=0;
3192:       }
3193: 
3194:       if (px < (-0.492*py+94.184)) px = (-0.492*py+94.184);
3195:       if (px > (0.492*py+321.792)) px = (0.492*py+321.792);
3196: 
3197:       if ((!al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) && (!al_key_down(&kbdstate, ALLEGRO_KEY_SPACE)) && (!al_key_down(&kbdstate, ALLEGRO_KEY_X)) && (!al_key_down(&kbdstate, ALLEGRO_KEY_C)) &&
3198:         (!al_key_down(&kbdstate, ALLEGRO_KEY_UP)) && (!al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (!al_key_down(&kbdstate, ALLEGRO_KEY_DOWN)) && (!al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)))
3199:       {
3200:         benj_frame=0;
3201:       }
3202: 
3203: 
3204:       if ((frappe >= 7) && (swinging))
3205:       {
3206:         frappe=7;
3207:         rebound=1;
3208:       }
3209: 
3210:       if ((frappe_ult >= 7) && (ulting))
3211:       {
3212:         frappe_ult=7;
3213:         rebound=1;
3214:       }
3215: 
3216:       if (ulting) temp_benj=oslSetImageTileSize(ulting_gfx,(frappe_ult)*32,0,32,48);
3217: 
3218:       court_zoom = 0.00192*py + 0.562;
3219: 
3220:       temp_benj.stretchX = (int)(64*(float)court_zoom);
3221:       temp_benj.stretchY = (int)(96*(float)court_zoom);
3222: 
3223:       shield.stretchX = (int)(48*(float)court_zoom);
3224:       shield.stretchY = (int)(48*(float)court_zoom);
3225: 
3226: 
3227: 
3228:       ball_gfx.stretchX = (int)(8*(float)court_zoom);
3229:       ball_gfx.stretchY = ball_gfx . stretchX;
3230: 
3231:       temp_pb.stretchX = temp_pb.stretchY = (int)(32*(float)(court_zoom));
3232: 
3233: 
3234:       if (health > 0)
3235:       {
3236:         if (stary > 0)
3237:         {
3238:           for(u=0; u<nbult; u++)
3239:           {
3240:             spr_draw(star, stars_ult[u], stary);
3241: 
3242:             if (stary <= 136)
3243:             {
3244:               if ((stars_ult[u] >= (pie_ent.pie_x-128)) && (stars_ult[u] <= (pie_ent.pie_x+128))) pie_ent.pie_hp -= 10;
3245:               stary=-64;
3246:               stars_ult[u]=-32;
3247:               nbult=0;
3248:             }
3249: 
3250:           }
3251:           star.angle -= 5;
3252:           stary -= 4;
3253: 
3254:         }
3255: 
3256:         if (ball_ent.poisoned) ball_gfx.R=ball_gfx.G=0;
3257:         if (pie_ent.pie_hp > 0) draw_ball(ball_ent, ball_gfx, ball_shad);
3258:         draw_benj(temp_benj, px, py, shielded, shield);
3259:         if (((pbouss == 3) || (pbouss == 0)) && (pie_ent.pie_facemode == 3)) spr_draw(temp_pb, px+64, py+48);
3260:         if (((pbouss == 1) || (pbouss == 2)) && (pie_ent.pie_facemode == 3)) spr_draw(temp_pb, px, py+48);
3261:         if (ball_ent.poisoned) ball_gfx.R=ball_gfx.G=0;
3262: 
3263: 
3264:       }
3265: 
3266: 
3267: 
3268:       if (suppo)
3269:       {
3270:         if (!paused) suppo--;
3271:         if (suppo<40)
3272:         {
3273:           temp_suppo=oslSetImageTileSize(suppo_gfx, suppo/10*32, 0, 32, 32);
3274:         }
3275: 
3276:         if (suppo>110)
3277:         {
3278:           temp_suppo=oslSetImageTileSize(suppo_gfx, (150-suppo)/10*32, 0, 32, 32);
3279:         }
3280: 
3281:         court_zoom = 0.00192*suppoy + 0.562;
3282:         temp_suppo.stretchX = (int)(32*(float)court_zoom);
3283:         temp_suppo.stretchY = (int)(32*(float)court_zoom);
3284: 
3285:         spr_draw(temp_suppo, suppox, suppoy);
3286:         spr_draw(temp_suppo, suppox+64, suppoy);
3287: 
3288:         if ((suppo>65) && (suppo<85))
3289:         {
3290:           if ((px>=suppox) && (px<=suppox+64) && (py>=suppoy-64) && (py <= suppoy))
3291:           {
3292:             temp_benj.R=0;
3293:             temp_benj.G=128;
3294:             temp_benj.B=128;
3295: 
3296:             if ((suppo%4) < 2)
3297:             {
3298:               draw_benj(temp_benj, px, py, shielded, shield);
3299:             }
3300: 
3301:             if ((suppo == 67) && (!mgcd) && (!rckchscr))
3302:             {
3303:               health -= diff;
3304:               oslPlaySound(elec);
3305:             }
3306:             temp_benj.R=temp_benj.G=temp_benj.B=255;
3307:           }
3308:         }
3309:       }
3310: 
3311:       if ((pie_ent.pie_hp > 25*round*diff) && (!giyg_flag) && (pie_ent.pie_hp <= 50*round*diff))
3312:       {
3313:         giyg_flag=1;
3314:         oslStopSound(giygas[0]);
3315:         oslPlaySound(giygas[1]);
3316:       }
3317: 
3318: 
3319: 
3320:       if (round==2)
3321:       {
3322:         giyg_bg[gbg].trans=random(64);
3323:         spr_draw(giyg_bg[gbg], 240, 138);
3324: 
3325:         giyg_bg_angles[0] = random(10)-5;
3326: 
3327:         giyg_bg[gbg].angle += giyg_bg_angles[0];
3328: 
3329:         if (pie_ent.pie_hp <= 50*round*diff)
3330:         {
3331:           giyg_bg_angles[1] = 2*(random(10)-5);
3332:           giyg_bg[gbg].angle += giyg_bg_angles[1];
3333:           giyg_bg[gbg].trans=random(64)+64;
3334:           spr_draw(giyg_bg[gbg], 240, 138);
3335: 
3336:         }
3337: 
3338:         if (pie_ent.pie_hp <= 25*round*diff)
3339:         {
3340:           giyg_bg_angles[2] = 4*(random(10)-5);
3341:           giyg_bg[gbg].angle += giyg_bg_angles[2];
3342:           giyg_bg[gbg].trans=random(64)+128;
3343:           spr_draw(giyg_bg[gbg], 240, 138);
3344: 
3345:           if ((giyg_flag < 2))
3346:           {
3347:             giyg_flag=2;
3348:             oslStopSound(giygas[1]);
3349:             oslPlaySound(giygas[2]);
3350:           }
3351: 
3352:         }
3353:       }
3354: 
3355:       if (!(global_fr%5))
3356:       {
3357:         gbg++;
3358:         gbg=gbg%33;
3359:       }
3360: 
3361:       if ((counter >= 640))
3362:       {
3363: 
3364:         //initializing attacks
3365:         for (i=0; i<14; i++)
3366:         {
3367:           if ((nbp==1) && (!paused)) att_cooldowns[i]--;
3368:           if ((nbp==2) && (!paused) && (att_cooldowns[i]>1)) att_cooldowns[i]--;
3369: 
3370:           if ((i==7) && (bulbfell > 0)) att_cooldowns[7]++;
3371: 
3372:           if ((att_cooldowns[i] <= 0) && (pie_ent.pie_hp > 0))
3373:           {
3374: 
3375:             attf=0;
3376:             for (j=0; j<((2*diff)+2); j++)
3377:             {
3378:               if (pie_attacks[j][0] == (i+1)) attf=1;
3379:             }
3380: 
3381:               for (j=0; j<((2*diff)+2); j++)
3382:               {
3383:                 if ((!(pie_attacks[j][0])) && (!attf))
3384:                 {
3385:                   pie_attacks[j][0]=i+1;
3386: 
3387:                   switch(i+1)
3388:                   {
3389:                     case 1:
3390:                       pie_attacks[j][1]=140;
3391:                     break;
3392: 
3393:                     case 2:
3394:                       pie_attacks[j][1]=(py-(pie_ent.pie_y))/(px-pie_ent.pie_x);
3395:                       pie_attacks[j][2]=(pie_ent.pie_y)-pie_attacks[j][1]*pie_ent.pie_x;
3396:                       pie_attacks[j][3]=pie_ent.pie_x;
3397:                       pie_attacks[j][4]=px;
3398:                       mgsy=pie_attacks[i][1]*pie_attacks[i][3]+pie_attacks[i][2];
3399:                     break;
3400: 
3401:                     case 3:
3402:                       darkness=0;
3403:                       for (u=0; u<((2*diff)+2); u++)
3404:                       {
3405:                         if (pie_attacks[u][0]==7) darkness=1;
3406:                       }
3407: 
3408:                       if (!darkness)
3409:                       {
3410:                         pie_attacks[j][1]=360-(15*diff);
3411:                         pie_attacks[j][2]=random(160)+80;
3412:                         pie_attacks[j][3]=random(112)+160;
3413:                         pie_attacks[j][4]=2*diff+3;
3414:                       }
3415:                       else pie_attacks[j][0]=0;
3416:                     break;
3417: 
3418:                     case 4:
3419:                       pie_attacks[j][1]=diff*166;
3420:                       lightsoff=1;
3421:                     break;
3422: 
3423:                     case 5:
3424:                       pie_attacks[j][1]=-218;
3425:                       pie_attacks[j][2]=255;
3426:                     break;
3427: 
3428:                     case 6:
3429:                       pie_attacks[j][1]=225*diff;
3430:                       pie_attacks[j][2]=random(416);
3431:                       pie_attacks[j][3]=random(100)+108;
3432: 
3433:                       if ((diff > 1) && (pie_attacks[j][2]%diff))
3434:                       {
3435:                         pie_attacks[j][2] += (diff)-(pie_attacks[j][2]%diff);
3436:                       }
3437: 
3438:                       if ((diff > 1) && (pie_attacks[j][3]%diff))
3439:                       {
3440:                         pie_attacks[j][3] += (diff)-(pie_attacks[j][3]%diff);
3441:                       }
3442:                     break;
3443: 
3444:                     case 7:
3445:                       chair=0;
3446:                       for (u=0; u<((2*diff)+2); u++)
3447:                       {
3448:                         if (pie_attacks[u][0]==3) chair=1;
3449:                       }
3450: 
3451:                       if (!chair)
3452:                       {
3453: 
3454:                       if (px+16 < 240) pie_attacks[j][1]=0; else pie_attacks[j][1]=1;
3455:                       pie_attacks[j][2]=random(400)+600;
3456:                       if (pie_attacks[j][1]) pie_attacks[j][3]=400-random(160); else  pie_attacks[j][3]=random(160)+80;
3457:                       if (pie_attacks[j][1]) pie_attacks[j][4]=480; else  pie_attacks[j][4]=0;
3458: 
3459:                       mouth.stretchX = 10;
3460:                       mouth.stretchY = 16;
3461:                       }
3462:                       else  pie_attacks[j][0]=0;
3463: 
3464:                     break;
3465: 
3466:                     case 8:
3467:                       pie_attacks[j][1]=diff+2;
3468:                       pie_attacks[j][2]=random(4); //sens bulbasaur
3469:                       pie_attacks[j][3]=random(320)+80; //bulb_x
3470:                       pie_attacks[j][4]=-64; //bulb_y
3471:                       bulbfell=1;
3472:                       if (!lightsoff) oslPlaySound(bulbsfx[(random(2)?1:6)]);
3473:                     break;
3474: 
3475:                     case 9:
3476:                       pie_attacks[j][1]=120*diff+120;
3477:                       if (px < 240) pie_attacks[j][2]=1; else pie_attacks[j][2]=0;
3478:                       pie_attacks[j][3]=py;
3479: 
3480:                       for (u=0; u<3; u++)
3481:                       {
3482:                         meteors[u][0]=0;
3483:                         meteors[u][1]=0;
3484:                         meteors[u][2]=0;
3485:                       }
3486:                     break;
3487: 
3488:                     case 10:
3489:                       pie_attacks[j][1]=96;
3490:                       if ((!shielded) && (!stun)) stun=96;
3491:                       break;
3492: 
3493:                     case 11:
3494:                       pie_attacks[j][1]=1;
3495:                       pie_attacks[j][2]=30;
3496:                       if (!lightsoff) oslPlaySound(psis_sfx);
3497:                       break;
3498: 
3499:                     case 12:
3500:                       pie_attacks[j][1]=240*diff;
3501:                       pie_ent.pie_facemode=random(4);
3502:                       if ((!lightsoff) && (health > 0)) oslPlaySound(dictators_sfx[pie_ent.pie_facemode]);
3503:                       if (pie_ent.pie_facemode==1)
3504:                       {
3505:                         pie_attacks[j][2]=560;
3506:                       }
3507:                       break;
3508: 
3509:                     case 13:
3510:                       if ((round==2) && (pie_ent.pie_hp < 20*round*diff) && (!ulted) && (!lightsoff))
3511:                       {
3512:                         oslStopSound(giygas[giyg_flag]);
3513:                         oslStopSound(psis_sfx);
3514:                         oslEndDrawing();
3515:                         health=shoop_da_whoop(health, round, diff);
3516:                         oslStartDrawing();
3517:                         ulted=1;
3518:                         oslPlaySound(giygas[giyg_flag]);
3519:                         oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
3520:                       }
3521:                       pie_attacks[j][0]=0;
3522:                       break;
3523: 
3524:                     case 14:
3525:                       if ((round==2) && (pie_ent.pie_hp < 10*round*diff) && (ulted==1) && (!lightsoff))
3526:                       {
3527:                         oslStopSound(giygas[giyg_flag]);
3528:                         oslStopSound(psis_sfx);
3529:                         oslEndDrawing();
3530:                         sad();
3531:                         oslStartDrawing();
3532:                         ulted=2;
3533:                         oslPlaySound(giygas[giyg_flag]);
3534:                         oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
3535:                       }
3536:                       pie_attacks[j][0]=0;
3537:                       break;
3538: 
3539: 
3540:                     default:
3541:                       break;
3542:                   }
3543: 
3544:                   j=2*diff+3; //break;
3545:                 }
3546:               }
3547: 
3548: 
3549:               //att_cooldowns[i]=(random((8-(diff*2)))*100+random(3*diff)*100+800)*(2*i+11);
3550:                 att_cooldowns[i]=(random((8-(diff*2)))*100+random(3*diff)*100+800);
3551:                 att_cooldowns[i] += (((i==0) || (i==3) || (i==4))?9*att_cooldowns[i]:0) + 2*random((int)(((i!=0)?1.5:3.5)*att_cooldowns[i]));
3552:                 if ((i!=0) && (i!=3) && (i!=4)) att_cooldowns[i]=att_cooldowns[i]/(0.5*round+0.5);
3553:                 if (i == 11) att_cooldowns[i] += 1792;
3554: 
3555:           }
3556:         }
3557: 
3558: 
3559:         //programming attacks
3560: 
3561: 
3562:         if (!paused) {
3563: 
3564:           for (i=0; i<((2*diff)+2); i++)
3565:           {
3566:             switch(pie_attacks[i][0])
3567:             {
3568:               case 1:
3569:               {
3570:                 if ((mgcd < 1) && (health > 0) && (!lightsoff))
3571:                 {
3572:                   ko.R=0;
3573:                   ko.B=ko.G=128;
3574:                   ko.trans=255;
3575:                   if (pie_attacks[i][1] > 115)
3576:                   {
3577:                     temp_ko=oslSetImageTileSize(ko,0,0,120,96);
3578:                     spr_draw(temp_ko, (int)(9.6*(140-pie_attacks[i][1])-120), 88);
3579:                   }
3580: 
3581:                   if ((pie_attacks[i][1] <= 115) && (pie_attacks[i][1] >= 90))
3582:                   {
3583:                     temp_ko=oslSetImageTileSize(ko,0,0,120,96);
3584:                     spr_draw(temp_ko, 120, 88);
3585:                     temp_ko=oslSetImageTileSize(ko,120,0,120,96);
3586:                     spr_draw(temp_ko, (int)(-9.6*(140-pie_attacks[i][1])+720), 88);
3587:                   }
3588: 
3589:                   if ((pie_attacks[i][1] > 0) && (pie_attacks[i][1] < 90))
3590:                   {
3591:                     temp_ko=oslSetImageTileSize(ko,0,0,240,96);
3592:                     spr_draw(temp_ko, 120, 88);
3593:                   }
3594: 
3595:                   if ((pie_attacks[i][1] <= 0))
3596:                   {
3597:                     pie_attacks[i][0]=0;
3598:                   }
3599: 
3600:                   if (pie_attacks[i][1] > 80)
3601:                   {
3602:                     if ((pie_attacks[i][1]%6) < 3)
3603:                     {
3604:                       explode.stretchX = 64;
3605:                       explode.stretchY = 96;
3606:                       spr_draw(explode, px, py);
3607:                     }
3608:                     else
3609:                     {
3610:                       explode.stretchX = 32;
3611:                       explode.stretchY = 48;
3612:                       spr_draw(explode, px+16, py+24);
3613:                     }
3614:                   }
3615: 
3616:                   pie_attacks[i][1]--;
3617:                   //oslSetAlpha(OSL_FX_DEFAULT, 0);
3618:                 }
3619:                 break;
3620:               }
3621: 
3622:               case 2:
3623:               {
3624:                 //frame_debug(j);
3625: 
3626:                 if ((!mgcd) && (!lightsoff))
3627:                 {
3628:                   mgswirl.trans=128;
3629: 
3630:                   if (pie_attacks[i][4] < pie_attacks[i][3])
3631:                     {
3632:                       pie_attacks[i][4]-=3;
3633:                       pie_attacks[i][3]-=3;
3634:                     }
3635:                   else
3636:                     {
3637:                       pie_attacks[i][4]+=3;
3638:                       pie_attacks[i][3]+=3;
3639:                     }
3640: 
3641:                   if (mgsy < py)  mgsy += random(8)+2;  else mgsy -= random(8)+2;
3642: 
3643:                   court_zoom = 0.00192*(mgsy) + 0.562;
3644: 
3645:                   mgswirl.stretchX = (int)(128*(float)court_zoom);
3646:                   mgswirl.stretchY = (int)(128*(float)court_zoom);
3647: 
3648:                   spr_draw(mgswirl, pie_attacks[i][3], mgsy);
3649:                 }
3650: 
3651:                 if ((swirl_collide(px, py, pie_attacks[i][3], mgsy)) && (health>0))
3652:                 {
3653: 
3654:                     if (!mgcd)
3655:                     {
3656:                       al_set_sample_instance_position(minigametime.instance,16);
3657:                       oslStopSound(giygas[giyg_flag%3]);
3658:                       oslPlaySound(minigametime);
3659:                       if (al_get_sample_instance_position(tvnoisesound.instance)) oslStopSound(tvnoisesound);
3660:                       if  (al_get_sample_instance_position(meteor_fall.instance)) oslStopSound(meteor_fall);
3661:                       oslStopSound(psis_sfx);
3662:                       sleepwell.stretchX = sleepwell. stretchY = 272;
3663:                     }
3664: 
3665:                     mgcd++;
3666: 
3667:                     if (mgcd >= 1)
3668:                     {
3669: 
3670:                         oslStopSound(psis_sfx);
3671:                         if (mgcd < 9) oslDrawFillRect(0,0,480,272, _RGB(255,255,255)); else
3672:                         {
3673:                           oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
3674:                           sleepwell.trans=255-((int)(mgcd*2.55));
3675:                           sleepwell.stretchX+=18;
3676:                           sleepwell.stretchY+=36;
3677:                           spr_draw(sleepwell,240,138);
3678:                           sleepwell.trans=255;
3679:                         }
3680: 
3681: 
3682:                     }
3683: 
3684:                 }
3685: 
3686:                 if ((pie_attacks[i][3] <= -128) || (pie_attacks[i][3] >= 544))
3687:                 {
3688:                   pie_attacks[i][0]=0;
3689:                   mgcd=0;
3690:                 }
3691: 
3692: 
3693:                 break;
3694:               }
3695: 
3696:               case 3:
3697:               {
3698:                 if ((mgcd < 1) && (health > 0) && (!lightsoff))
3699:                     {
3700: 
3701:                     if (pie_attacks[i][4] > 0)
3702:                     {
3703:                         pie_attacks[i][1]--;
3704: 
3705:                         if (pie_attacks[i][1] > 90)
3706:                         {
3707: 
3708:                           if (pie_attacks[i][1] < 180) rckch[0].angle = (int)(6*sin(0.5*counter));
3709:                           else rckch[0].angle = 0;
3710: 
3711:                           court_zoom = 0.00192*(pie_attacks[i][3]+15) + 0.562;
3712:                           rckch[0].stretchX = (int)(64*(float)court_zoom);
3713:                           rckch[0].stretchY = (int)(64*(float)court_zoom);
3714: 
3715:                           spr_draw(rckch[0], pie_attacks[i][2], pie_attacks[i][3]+15);
3716: 
3717:                           if ((((px-pie_attacks[i][2])*(px-pie_attacks[i][2])+(py-pie_attacks[i][3])*(py-pie_attacks[i][3])) <= 3000) & (frappe >= 1))
3718:                           {
3719:                             if (swinging)
3720:                             {
3721:                             rckch[0].B=0;
3722:                             spr_draw(rckch[0], pie_attacks[i][2], pie_attacks[i][3]+15);
3723:                             rckch[0].B=255;
3724:                               pie_attacks[i][4]--;
3725:                               //if (osl_keys . held.triangle) pie_attacks[i][4]=0;
3726:                               oslPlaySound(paf);
3727:                               ultlvl += 5-diff;
3728:                               frappe=-1;
3729:                             swinging=0;
3730:                             }
3731:                           }
3732: 
3733:                           if (pie_attacks[i][4] <= 0) pie_attacks[i][1]=20;
3734:                         }
3735:                         else
3736:                         {
3737:                           if (pie_attacks[i][1] > 59)
3738:                           {
3739:                             rckch[1].stretchX = (90-pie_attacks[i][1])*16;
3740:                             rckch[1].stretchY = (int)(0.567 * (rckch[1] . stretchX));
3741:                             rckch[1].angle = ((pie_attacks[i][1]-30)*12);
3742:                           }
3743:                           if (pie_attacks[i][1] == 59)
3744:                           {
3745:                             rckch[1].angle = 0;
3746:                             rckch[1].stretchX = 480;
3747:                             rckch[1].stretchY = 272;
3748:                             rckchscr=1;
3749:                             oslPlaySound(quitter);
3750:                           }
3751:                           spr_draw(rckch[1], 240+random(8)-4, 136+random(8)-4);
3752:                           if (!(pie_attacks[i][1]%36) && (!shielded))
3753:                           {
3754:                             health--;
3755:                             if (putin) health--;
3756:                           }
3757:                         }
3758: 
3759:                         if (pie_attacks[i][1] <= -180)
3760:                         {
3761: 
3762:                           oslStopSound(quitter);
3763:                           pie_attacks[i][0]=0;
3764:                           rckchscr=0;
3765: 
3766:                         }
3767: 
3768:                         if (py > ((pie_attacks[i][3]-62)*court_zoom))
3769:                         {
3770:                           temp_benj.trans=255;
3771:                           draw_benj(temp_benj, px, py, shielded, shield);
3772:                         }
3773: 
3774: 
3775:                       }
3776:                     else
3777:                       {
3778:                         if (pie_attacks[i][1]==20) oslPlaySound(expl_sound2);
3779:                         explode.stretchX = explode.stretchY = 20 - pie_attacks[i][1];
3780:                         spr_draw(explode, pie_attacks[i][2], pie_attacks[i][3]);
3781:                         pie_attacks[i][1]--;
3782:                         if (pie_attacks[i][1]==0)
3783:                         {
3784:                           pie_attacks[i][0]=0;
3785:                         }
3786: 
3787:                       }
3788:                     }
3789: 
3790: 
3791:                 break;
3792:               }
3793: 
3794:               case 4:
3795:               {
3796:                 if ((mgcd < 1) && (health > 0))
3797:                 {
3798:                   if ((pie_attacks[i][1] == diff*166) || (pie_attacks[i][1] == 0))
3799:                   {
3800:                      oslStopSound(giygas[giyg_flag%3]);
3801:                   }
3802:                   if (lightsoff)
3803:                   {
3804:                     oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
3805:                     draw_benj(temp_benj, px, py, shielded, shield);
3806: 
3807: 
3808:                     for (u=0; u<(2*diff+2); u++)
3809:                     {
3810:                       if (pie_attacks[u][0] != 4)
3811:                         {
3812:                           pie_attacks[u][0]=0;
3813:                         }
3814:                     }
3815:                   }
3816:                 }
3817: 
3818:                  if (!pie_attacks[i][1])
3819:                    {
3820:                     lightsoff=0;
3821:                     pie_attacks[i][0]=0;
3822:                     oslPlaySound(giygas[giyg_flag%3]);
3823:                    }
3824: 
3825:                 pie_attacks[i][1]--;
3826:                 break;
3827:               }
3828: 
3829:               case 5:
3830:               {
3831:                 if ((mgcd < 1) && (health > 0))
3832:                 {
3833:                   if (pie_attacks[i][1] < (px-108))
3834:                     {
3835:                       spr_draw(psycho, pie_attacks[i][1], abs(32*sin(0.0125*3.14*pie_attacks[i][1]))+8);
3836:                     }
3837:                   else
3838:                     {
3839: 
3840:                       if (pie_attacks[i][2] > 2) pie_attacks[i][2]-=2; else pie_attacks[i][0]=0;
3841:                       oslDrawFillRect(0,0,480,272, _RGBA(255,255,255,pie_attacks[i][2]));
3842:                     }
3843:                   pie_attacks[i][1]+=4;
3844:                 }
3845:                 break;
3846:               }
3847: 
3848:               case 6:
3849:               {
3850:                 if ((mgcd < 1) && (health > 0))
3851:                 {
3852: 
3853:                   if (pie_attacks[i][1] < 51)
3854:                   {
3855:                     if ((pie_attacks[i][1])%4 < 3)
3856:                       {
3857:                         visor.R=0;
3858:                         visor.G=0;
3859:                         visor.trans=192;
3860:                       }
3861:                     else
3862:                       {
3863:                         visor.R=visor.G=visor.B=visor.trans=255;
3864:                       }
3865:                   }
3866:                   else
3867:                   {
3868:                     visor.R=255;
3869:                     visor.G=255;
3870:                     visor.trans=255;
3871:                   }
3872: 
3873:                   if (pie_attacks[i][1] > 0) spr_draw(visor, pie_attacks[i][2], pie_attacks[i][3]);
3874: 
3875: 
3876: 
3877:                   if (px+32 < pie_attacks[i][2])
3878:                     {
3879:                       pie_attacks[i][2] -= diff;
3880:                     }
3881:                   else if (px+32 > pie_attacks[i][2])
3882:                     {
3883:                       pie_attacks[i][2] += diff;
3884:                     }
3885: 
3886:                   if (py+48 < pie_attacks[i][3])
3887:                     {
3888:                       pie_attacks[i][3] -= diff;
3889:                     }
3890:                   else if (py+48 > pie_attacks[i][3])
3891:                     {
3892:                       pie_attacks[i][3] += diff;
3893:                     }
3894: 
3895: 
3896:                   pie_attacks[i][1]--;
3897: 
3898:                   if (!pie_attacks[i][1])
3899:                   {
3900:                     oslPlaySound(pew);
3901:                     if ((pie_attacks[i][2] >= px-16) && (pie_attacks[i][2] <= px+80) && (pie_attacks[i][3] >= py+24) && (pie_attacks[i][3] <= py+72) && (!shielded))
3902:                     {
3903:                       health -= 2*diff+6;
3904:                       if (putin) health -= 3;
3905:                       oslPlaySound(benj_sfx[random(5)]);
3906:                     }
3907:                   }
3908: 
3909:                   if (pie_attacks[i][1] < 0)
3910:                   {
3911:                     explode.stretchX = explode.stretchY = 20 + 2*pie_attacks[i][1];
3912:                     spr_draw(explode, pie_attacks[i][2], pie_attacks[i][3]);
3913: 
3914:                     if (pie_attacks[i][1] == -10) pie_attacks[i][0]=0;
3915:                   }
3916:                 }
3917:                 break;
3918:               }
3919: 
3920: 
3921: 
3922:               case 8:
3923:               {
3924:                 if ((mgcd < 1) && (health > 0))
3925:                 {
3926:                   if (bulbfell==1)
3927:                   {
3928:                     temp_bulb=oslSetImageTileSize(bulbasaur, 0, 128, 64, 64);
3929:                     court_zoom = 0.00192*pie_attacks[i][4] + 0.562;
3930:                     temp_bulb.stretchX = (int)(64*(float)court_zoom);
3931:                     temp_bulb.stretchY = (int)(64*(float)court_zoom);
3932: 
3933:                     spr_draw(temp_bulb, pie_attacks[i][3], pie_attacks[i][4]);
3934:                     pie_attacks[i][4] += 8;
3935:                     if (pie_attacks[i][4] >= 136)
3936:                     {
3937:                       pie_attacks[i][4]=136;
3938:                       bulbfell=2;
3939:                     }
3940: 
3941:                     if (py > ((pie_attacks[i][4])*court_zoom))
3942:                     {
3943:                       draw_benj(temp_benj, px, py, shielded, shield);
3944:                     }
3945:                   }
3946: 
3947:                   else if (bulbfell==2)
3948:                   {
3949:                     if (pie_attacks[i][2] != 4)
3950:                     {
3951:                       temp_bulb=oslSetImageTileSize(bulbasaur, bulbfs*64, pie_attacks[i][2]*64, 64, 64);
3952:                     }
3953:                     else
3954:                     {
3955: 
3956:                       if (abs(pie_attacks[i][3]-px) > abs(pie_attacks[i][4]-py))
3957:                       {
3958:                         if (pie_attacks[i][3] > px)
3959:                         {
3960:                           temp_bulb=oslSetImageTileSize(bulbasaur, 0, 192, 64, 64);
3961:                         }
3962:                         else
3963:                         {
3964:                           temp_bulb=oslSetImageTileSize(bulbasaur, 0, 64, 64, 64);
3965:                         }
3966:                       }
3967:                       else
3968:                       {
3969:                         if (pie_attacks[i][4] > py)
3970:                         {
3971:                           temp_bulb=oslSetImageTileSize(bulbasaur, 0, 0, 64, 64);
3972:                         }
3973:                         else
3974:                         {
3975:                           temp_bulb=oslSetImageTileSize(bulbasaur, 0, 128, 64, 64);
3976:                         }
3977:                       }
3978:                     }
3979: 
3980:                     court_zoom = 0.00192*pie_attacks[i][4] + 0.562;
3981:                     temp_bulb.stretchX = (int)(64*(float)court_zoom);
3982:                     temp_bulb.stretchY = (int)(64*(float)court_zoom);
3983: 
3984:                     spr_draw(temp_bulb, pie_attacks[i][3], pie_attacks[i][4]);
3985: 
3986:                     if (!(counter%52) && ((counter%416) < 364))
3987:                     {
3988:                       pie_attacks[i][2]=random(4);
3989:                     }
3990:                     else
3991:                     {
3992:                       switch(pie_attacks[i][2])
3993:                       {
3994:                         case 0:
3995:                         if (pie_attacks[i][4] > 128) pie_attacks[i][4] -= 2; else pie_attacks[i][2]=2;
3996:                         break;
3997: 
3998:                         case 1:
3999:                         if (pie_attacks[i][3] < 400) pie_attacks[i][3] += 2; else pie_attacks[i][2]=3;
4000:                         break;
4001: 
4002:                         case 2:
4003:                         if (pie_attacks[i][4] < 240) pie_attacks[i][4] += 2; else pie_attacks[i][2]=0;
4004:                         break;
4005: 
4006:                         case 3:
4007:                         if (pie_attacks[i][3] > 80) pie_attacks[i][3] -= 2; else pie_attacks[i][2]=1;
4008:                         break;
4009:                       }
4010:                     }
4011: 
4012: 
4013: 
4014:                     if ((counter%416) >= 364)
4015:                     {
4016:                       pie_attacks[i][2]=4;
4017: 
4018:                       if ((counter%416) == 364) oslPlaySound(bulbsfx[random(3)+3]);
4019: 
4020:                       if (pie_attacks[i][3] > px) pie_attacks[i][3] -= 4; else pie_attacks[i][3] += 4;
4021:                       if (pie_attacks[i][4] > py) pie_attacks[i][4] -= 2; else if (pie_attacks[i][4] < 238) pie_attacks[i][4] += 2;
4022: 
4023:                     }
4024: 
4025: 
4026: 
4027:                     if ((((px-pie_attacks[i][3])*(px-pie_attacks[i][3])+(py-pie_attacks[i][4])*(py-pie_attacks[i][4])) <= 64) && (pie_attacks[i][2]==4) && (!shielded))
4028:                     {
4029:                       if (!stun) stun=200+3*diff;
4030:                       pie_attacks[i][2]=random(4);
4031:                       health -= diff+1;
4032:                       if (putin) health -= diff;
4033:                       oslPlaySound(benj_sfx[random(5)]);
4034:                       counter += (counter%417)+1;
4035:                       oslPlaySound(bulbsfx[0]);
4036:                     }
4037: 
4038:                     if ((((px-pie_attacks[i][3])*(px-pie_attacks[i][3])+(py-pie_attacks[i][4])*(py-pie_attacks[i][4])) <= 1500) && (frappe >= 1))
4039:                     {
4040:                       if (swinging)
4041:                       {
4042:                       temp_bulb.B=0;
4043:                       spr_draw(temp_bulb, pie_attacks[i][3], pie_attacks[i][4]);
4044:                       ultlvl += 5-diff;
4045:                       temp_bulb.B=255;
4046:                         pie_attacks[i][1]--;
4047:                         //if (osl_keys . held.triangle) pie_attacks[i][4]=0;
4048:                         oslPlaySound(paf);
4049:                         frappe=-1;
4050:                         swinging=0;
4051:                       }
4052: 
4053:                     }
4054: 
4055:                     bulbfs=(counter%20)/5;
4056: 
4057:                     if (py > ((pie_attacks[i][4])*court_zoom))
4058:                     {
4059:                       //oslSetAlpha(OSL_FX_DEFAULT, 0);
4060:                       draw_benj(temp_benj, px, py, shielded, shield);
4061:                     }
4062:                   }
4063: 
4064:                   if (pie_attacks[i][1] <= 0)
4065:                   {
4066:                     bulbfell=0;
4067:                     if (!pie_attacks[i][1]) oslPlaySound(bulbsfx[2]);
4068:                     pie_attacks[i][2]=4;
4069:                     pie_attacks[i][1]--;
4070: 
4071:                     if (pie_attacks[i][1] == -35)
4072:                     {
4073:                       pie_attacks[i][0]=0;
4074:                     }
4075: 
4076:                     bulbfs=(abs(pie_attacks[i][1]))/9;
4077:                     temp_bulb=oslSetImageTileSize(temp_bulb, bulbfs*64, pie_attacks[i][2]*64, 64, 64);
4078:                     spr_draw(temp_bulb, pie_attacks[i][3], pie_attacks[i][4]);
4079: 
4080:                   }
4081: 
4082:                 }
4083:                 break;
4084: 
4085:               case 9:
4086:               {
4087: 
4088:                 if ((mgcd <1) && (!lightsoff))
4089:                 {
4090:                   if (pie_attacks[i][1] == 120*diff+120)
4091:                   {
4092: 
4093: 
4094:                     for(u=0; u<3; u++)
4095:                     {
4096:                       meteors[u][1] = random(176);
4097:                       if (pie_attacks[i][2]) meteors[u][0]=-48; else meteors[u][0]=480;
4098:                       meteors[u][2] = random(3)+1;
4099:                     }
4100: 
4101:                     oslPlaySound(meteor_fall);
4102:                   }
4103:                   else
4104:                   {
4105:                     if (!al_get_sample_instance_position(meteor_fall.instance)) oslPlaySound(meteor_fall);
4106: 
4107:                     for(u=0; u<3; u++)
4108:                     {
4109: 
4110:                       temp_met=oslSetImageTileSize(meteor, u*48, 0, 48, 48);
4111:                       temp_met.stretchX = temp_met.stretchY = 12*meteors[u][2];
4112:                       spr_draw(temp_met, meteors[u][0], meteors[u][1]);
4113: 
4114:                       if (pie_attacks[i][2]) meteors[u][0]+=random(9)+1; else meteors[u][0]-=random(9)+1;
4115: 
4116:                       meteors[u][1]+=4;
4117: 
4118:                       if ((meteors[u][1] < pie_attacks[i][3]+32) && (meteors[u][1] >= pie_attacks[i][3]))
4119:                       {
4120:                         explode . stretchX = explode . stretchY = 48;
4121:                         spr_draw(explode, meteors[u][0], meteors[u][1]);
4122:                         oslPlaySound(expl_sound2);
4123:                       }
4124: 
4125:                       if (meteors[u][1] >= pie_attacks[i][3]+32)
4126:                       {
4127:                         if (((px-meteors[u][0])*(px-meteors[u][0])+(py+32-meteors[u][1])*(py+32-meteors[u][1]) <= 196) && (!shielded))
4128:                         {
4129:                           oslPlaySound(expl_sound2);
4130:                           health -= round;
4131:                           if (putin) health -= round;
4132:                           oslPlaySound(benj_sfx[random(5)]);
4133:                         }
4134: 
4135:                         if (pie_attacks[i][1] <= 0) meteors[u][2]=0; else meteors[u][2] = random(3)+1;
4136:                         meteors[u][1]=random(176);
4137:                         if (pie_attacks[i][2]) meteors[u][0]=-48; else meteors[u][0]=480;
4138: 
4139:                       }
4140:                     }
4141:                   }
4142: 
4143:                   pie_attacks[i][1]--;
4144: 
4145:                   if (pie_attacks[i][1] == 0)
4146:                     {
4147:                       oslStopSound(meteor_fall);
4148:                     }
4149: 
4150:                   if (meteors[0][2]+meteors[1][2]+meteors[2][2] == 0) pie_attacks[i][0]=0;
4151:                   }
4152:                 }
4153:                 break;
4154: 
4155:               case 10:
4156:               {
4157:                 if ((mgcd <1) && (!lightsoff))
4158:                 {
4159:                   if (!shielded)
4160:                   {
4161: 
4162:                     if (pie_attacks[i][1] == 96)
4163:                     {
4164:                       stunning.stretchX = stunning.stretchY = 24;
4165:                       oslPlaySound(stun_sound);
4166:                     }
4167: 
4168: 
4169:                     for (u=0; u<135; u++)
4170:                     {
4171:                       stunning.R=0;
4172:                       stunning.trans=192;
4173:                       if (stunning.stretchX > 4) spr_draw(stunning, (u%15)*32+12, ((int)(u/15))*32+12);
4174:                       stunning.R = stunning.trans = 255;
4175:                     }
4176:                   }
4177: 
4178:                   pie_attacks[i][1]--;
4179: 
4180:                   if (!((pie_attacks[i][1])%8))
4181:                   {
4182:                     if (stunning.stretchX > 4)
4183:                     {
4184:                       stunning.stretchX -= 4;
4185:                       stunning.stretchY -= 4;
4186:                     }
4187:                   }
4188: 
4189:                   if (!(pie_attacks[i][1]))
4190:                   {
4191:                     pie_attacks[i][0]=0;
4192:                   }
4193:                 }
4194:                 break;
4195:               }
4196: 
4197:               case 11:
4198:               {
4199:                 if ((mgcd <1) && (!lightsoff) && (health > 0))
4200:                 {
4201:                   if (pie_attacks[i][2] > 0)
4202:                   {
4203:                     temp_psis=oslSetImageTileSize(psis, ((int)(counter%18)/6)*16, 0, 16, 32);
4204:                     temp_psis=oslSetImageRotCenter(temp_psis);
4205: 
4206:                     temp_psis.angle = pie_attacks[i][1];
4207: 
4208:                     court_zoom = 0.00192*(py+24) + 0.562;
4209:                     psis.stretchX = (int)(16*(float)court_zoom);
4210:                     psis.stretchY = (int)(32*(float)court_zoom);
4211: 
4212:                     spr_draw(temp_psis, px+32+pie_attacks[i][2]*cos(pie_attacks[i][1]*3.14/180), py+48+pie_attacks[i][2]*sin(pie_attacks[i][1]*3.14/180));
4213:                     spr_draw(temp_psis, px+32+pie_attacks[i][2]*cos((pie_attacks[i][1]+180)*3.14/180), py+48+pie_attacks[i][2]*sin((pie_attacks[i][1]+180)*3.14/180));
4214: 
4215:                     pie_attacks[i][1] += 16;
4216: 
4217:                     if (pie_attacks[i][1] > 360)
4218:                     {
4219:                       pie_attacks[i][1] = pie_attacks[i][1]%360;
4220:                       pie_attacks[i][2]-=2;
4221:                     }
4222:                   }
4223:                   else if (pie_attacks[i][2] <= 0)
4224:                   {
4225:                       explode.stretchX = explode.stretchY = 40 + 4*pie_attacks[i][2];
4226:                       spr_draw(explode, px, py);
4227: 
4228:                       if (!(pie_attacks[i][2])) oslPlaySound(expl_sound);
4229: 
4230:                       if ((!shielded) && (counter%2))
4231:                       {
4232:                         health -= diff;
4233:                         if (putin) health -= diff;
4234:                         oslPlaySound(benj_sfx[random(5)]);
4235:                       }
4236:                       pie_attacks[i][2]--;
4237: 
4238:                       if (pie_attacks[i][2] == -10)
4239:                       {
4240:                         oslStopSound(psis_sfx);
4241:                         pie_attacks[i][0]=0;
4242:                       }
4243:                   }
4244:                 }
4245:                 break;
4246:               }
4247: 
4248:               case 7:
4249:               {
4250:                 if ((mgcd < 1) && (health > 0) && (!lightsoff))
4251:                 {
4252:                   if (!(pie_attacks[i][1]))
4253:                   {
4254:                     temp_recipe=oslSetImageTileSize(recipe,0, 0, 32, 136);
4255:                   }
4256:                   else
4257:                   {
4258:                     temp_recipe=oslSetImageTileSize(recipe, 32, 0, 32, 136);
4259:                   }
4260:                   temp_recipe.trans=128;
4261: 
4262:                   if (pie_attacks[i][2] > 0)
4263:                   {
4264:                     oslDrawFillRect(pie_attacks[i][4], 0, (pie_attacks[i][1])?480:0, 272, _RGBA(0, 0, 0, 128));
4265: 
4266:                     for(u=0; u<4; u++)
4267:                     {
4268:                       spr_draw(temp_recipe, pie_attacks[i][4]+((pie_attacks[i][1])?0:32), u*136-(global_fr%137));
4269:                     }
4270: 
4271:                     //oslSetAlpha(OSL_FX_DEFAULT, 0);
4272: 
4273:                     if (((pie_attacks[i][1]) && (pie_attacks[i][2] <= (480-pie_attacks[i][3]))) ||
4274:                         ((!(pie_attacks[i][1])) && (pie_attacks[i][2] <= pie_attacks[i][3])))
4275:                     {
4276: 
4277: 
4278:                       if (((pie_attacks[i][1]) && (px+32 >= pie_attacks[i][4])) || (!(pie_attacks[i][1]) && (px+32 <= pie_attacks[i][4])))
4279:                       {
4280:                         if (!al_get_sample_instance_position(mouth_sfx[0].instance)) oslPlaySound(mouth_sfx[0]);
4281:                         oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
4282:                         spr_draw(mouth, 240, 136);
4283: 
4284:                         pie_attacks[i][2]++;
4285:                         mouth.stretchX += 6;
4286:                         mouth.stretchY = 1.63*mouth.stretchX;
4287: 
4288:                         if (mouth . stretchY >= 420)
4289:                         {
4290:                           if (!al_get_sample_instance_position(mouth_sfx[1].instance)) oslPlaySound(mouth_sfx[1]);
4291:                           oslDrawFillRect(0, 0, 480, 272, _RGB(255, 0, 0));
4292:                         }
4293: 
4294:                         if (mouth . stretchY >= 450)
4295:                         {
4296:                           health -= 2*diff+4;
4297:                           if (putin) health -= 2;
4298:                           pie_attacks[i][0]=0;
4299:                           mouth . stretchX = 10;
4300:                           mouth . stretchY = 16;
4301:                         }
4302: 
4303:                       }
4304:                     else
4305:                       {
4306:                         if (!(pie_attacks[i][1]))
4307:                         {
4308:                           pie_attacks[i][4]--;
4309: 
4310:                         }
4311:                         else
4312:                         {
4313:                           pie_attacks[i][4]++;
4314: 
4315:                         }
4316:                       }
4317:                     }
4318:                     else
4319:                     {
4320:                       if (!(pie_attacks[i][1]))
4321:                       {
4322:                         if (pie_attacks[i][4] < pie_attacks[i][3]) pie_attacks[i][4]++;
4323:                         if (pie_attacks[i][4] > 512)
4324:                         {
4325:                           darkness=0;
4326:                           pie_attacks[i][0]=0;
4327:                         }
4328:                       }
4329:                       else
4330:                       {
4331:                         if (pie_attacks[i][4] > pie_attacks[i][3]) pie_attacks[i][4]--;
4332:                         if (pie_attacks[i][4] < -64)
4333:                         {
4334:                           darkness=0;
4335:                           pie_attacks[i][0]=0;
4336:                         }
4337:                       }
4338:                     }
4339:                     pie_attacks[i][2]--;
4340: 
4341: 
4342:                   }
4343:                   else
4344:                   {
4345:                     darkness=0;
4346:                     pie_attacks[i][0]=0;
4347:                   }
4348: 
4349:                   if (pie_attacks[i][2] <= 0)
4350:                   {
4351:                     pie_attacks[i][0]=0;
4352:                   }
4353:                 }
4354:                 break;
4355:               }
4356: 
4357: 
4358:               }
4359:             }
4360:           }
4361:         }
4362: 
4363:         if ((!al_get_sample_instance_position(minigametime.instance)) && (!al_get_sample_instance_position(tvnoisesound.instance)) && (!paused))
4364:           {
4365:             tvnoise_ev=random((3800/(100*round*diff))*pie_ent.pie_hp+4200);
4366:           }
4367: 
4368:         if ((tvnoise_ev <= 4000) && (tvnoise_ev > 3940) && (round==2)  && (health>0) && (!lightsoff) && (!paused))
4369:         {
4370:           i=random(20);
4371:           spr_draw(tvnoise[i], 0, 0);
4372:           if (!al_get_sample_instance_position(tvnoisesound.instance)) oslPlaySound(tvnoisesound);
4373:           tvnoise_ev--;
4374:         }
4375:         else
4376:         {
4377:           oslStopSound(tvnoisesound);
4378:         }
4379:       }
4380: 
4381:       if ((pie_ent.pie_hp) && (!mgcd))
4382:       {
4383:         reddv = (-0.64/(round*diff))*pie_ent.pie_hp+64;
4384: 
4385:         oslDrawFillRect(0, 0, 480, 272, _RGBA(255, 0, 0, (int)(reddv*1.5)));
4386:       }
4387: 
4388: 
4389: 
4390:       if ((health < 1) || (pie_ent.pie_hp < 1))
4391:       {
4392:         oslStopSound(psis_sfx);
4393:         ball_ent.speed_v=0;
4394:         if (pie_ent.pie_hp < 1)
4395:         {
4396:           if (!ko_frame)
4397:           {
4398:             a=pie_ent.pie_x-128+random(256);
4399: 
4400:             for (i=0; i<8; i++)
4401:               {
4402:                 for (j=0; j<5; j++)
4403:                 {
4404:                   pie_attacks[i][j]=0;
4405:                 }
4406:                 bulbfell=0;
4407:               }
4408:           }
4409: 
4410:           mort=1;
4411: 
4412: 
4413:           if (round==2)
4414:           {
4415:             if (!(ko_frame%9))
4416:             {
4417:               oslPlaySound(expl_sound);
4418:               kx=pie_ent.pie_x-128+random(256);
4419:               ky=random(136);
4420:             }
4421: 
4422:             if ((ko_frame%6) < 3)
4423:             {
4424:               explode.stretchX = 64;
4425:               explode.stretchY = 96;
4426:               spr_draw(explode, kx, ky);
4427:             }
4428:             else
4429:             {
4430:               explode.stretchX = 32;
4431:               explode.stretchY = 48;
4432:               spr_draw(explode, kx+16, ky+24);
4433:             }
4434:           }
4435:         }
4436: 
4437:         if (ko_frame == 0)
4438:         {
4439:           oslPlaySound(ko_sfx);
4440:           oslPlaySound(expl_sound);
4441:           u=0;
4442:         }
4443: 
4444:         if (health < 1)
4445:         {
4446:           if (ko_frame < 60)
4447:           {
4448:             if ((ko_frame%6) < 3)
4449:             {
4450:               explode.stretchX = 64;
4451:               explode.stretchY = 96;
4452:               spr_draw(explode, px, py);
4453:             }
4454:             else
4455:             {
4456:               explode.stretchX = 32;
4457:               explode.stretchY = 48;
4458:               spr_draw(explode, px+16, py+24);
4459:             }
4460:           }
4461:         }
4462: 
4463: 
4464:         if (ko_frame < 25)
4465:         {
4466:           temp_ko=oslSetImageTileSize(ko,0,0,120,96);
4467:           spr_draw(temp_ko, (int)(9.6*ko_frame-120), 88);
4468:         }
4469: 
4470:         if ((ko_frame >= 25) && (ko_frame <= 50))
4471:         {
4472:           temp_ko=oslSetImageTileSize(ko,0,0,120,96);
4473:           spr_draw(temp_ko, 120, 88);
4474:           temp_ko=oslSetImageTileSize(ko,120,0,120,96);
4475:           spr_draw(temp_ko, (int)(-9.6*ko_frame+720), 88);
4476:         }
4477: 
4478:         if (ko_frame > 50)
4479:         {
4480:           temp_ko=oslSetImageTileSize(ko,0,0,240,96);
4481:           spr_draw(temp_ko, 120, 88);
4482:         }
4483: 
4484:         if (ko_frame >= 140) quit=1;
4485: 
4486: 
4487:         ko_frame++;
4488:       }
4489: 
4490:       if (health < 0) health=0;
4491: 
4492:       if (!mgcd)
4493:       {
4494:           temp_no=oslSetImageTileSize(numberz,160,0,16,16);
4495:           spr_draw(temp_no, 2, 2);
4496: 
4497:           u=random(5);
4498: 
4499:           temp_ultg=oslSetImageTileSize(ultgauge,0,0,64,8);
4500:           spr_draw(temp_ultg, 2+((round==2)?u:0), (round==2)?20+u:21);
4501:           temp_ultg=oslSetImageTileSize(ultgauge,(int)((ultlvl/60)*6),9,6,6);
4502:           spr_draw(temp_ultg, 69+((round==2)?u:0), (round==2)?21+u:22);
4503:           spr_draw(shlgauge, 2+((round==2)?u:0), (round==2)?28+u:30);
4504: 
4505:           if (ultlvl > 1) oslDrawFillRect(4+((round==2)?u:0), (round==2)?22+u:23, ultlvl%60+4+((round==2)?u:0), (round==2)?25+u:26, _RGB(0,0,255));
4506:           if (shldlvl > 1) oslDrawFillRect(4+((round==2)?u:0), (round==2)?31+u:32, shldlvl+4+((round==2)?u:0), (round==2)?34+u:35, _RGB(255,150,255));
4507: 
4508:           if ((ultlvl%60) > 15)
4509:           {
4510:             if ((ultrectshine+16) <= ultlvl%60)
4511:             {
4512:               oslDrawFillRect(ultrectshine+((round==2)?u:0), (round==2)?22+u:23, ultrectshine+13+((round==2)?u:0), (round==2)?25+u:26, _RGB(0,255,255));
4513:             }
4514:             else
4515:             {
4516:               oslDrawFillRect(ultrectshine+((round==2)?u:0), (round==2)?22+u:23, ultlvl%60+3+((round==2)?u:0), (round==2)?25+u:26, _RGB(0,255,255));
4517:             }
4518: 
4519:             if ((ultrectshine+8) <= ultlvl%60)
4520:             {
4521:               oslDrawFillRect(ultrectshine+4+((round==2)?u:0), (round==2)?22+u:23, ultrectshine+9+((round==2)?u:0), (round==2)?25+u:26, _RGB(255,255,255));
4522:             }
4523:             else
4524:             {
4525:               oslDrawFillRect(ultrectshine+4+((round==2)?u:0), (round==2)?22+u:23, ultlvl%60+3+((round==2)?u:0), (round==2)?25+u:26, _RGB(255,255,255));
4526:             }
4527: 
4528:             ultrectshine++;
4529: 
4530:             if (ultrectshine > ultlvl%60)
4531:             {
4532:               ultrectshine=0;
4533:             }
4534:           }
4535: 
4536:           i=random(15);
4537: 
4538:           u=18;
4539: 
4540:           if (health < 25) j=16; else j=0;
4541: 
4542:             if (health / 100)
4543:             {
4544:               temp_no=oslSetImageTileSize(numberz,((round==2)?((i<12)?16:random(144)):16),0,16,16);
4545:               spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
4546:               u += 16;
4547:             }
4548: 
4549:             if (health > 9)
4550:             {
4551:               if (round==2)
4552:                 {
4553:                   if (i<12)
4554:                     {
4555:                       temp_no=oslSetImageTileSize(numberz,((health%100)/10)*16,j,16,16);
4556:                     }
4557:                   else
4558:                     {
4559:                       temp_no=oslSetImageTileSize(numberz,random(128),j,16,16);
4560:                     }
4561:                 }
4562:               else temp_no=oslSetImageTileSize(numberz,((health%100)/10)*16,j,16,16);
4563:             spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
4564:             u += 16;
4565:             }
4566: 
4567:             if (round==2)
4568:               {
4569:                 if (i<12)
4570:                   {
4571:                     temp_no=oslSetImageTileSize(numberz,(health%10)*16,j,16,16);
4572:                   }
4573:                 else
4574:                   {
4575:                     temp_no=oslSetImageTileSize(numberz,random(128),j,16,16);
4576:                   }
4577:               }
4578:             else temp_no=oslSetImageTileSize(numberz,(health%10)*16,j,16,16);
4579:             spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
4580:         }
4581: 
4582: 
4583: 
4584:       if ((paused) && (health))
4585:       {
4586:         oslDrawFillRect(0,0,480,272, _RGBA(0,8,0,224));
4587:         spr_draw(paused_gfx, 240, 136);
4588:       }
4589: 
4590:       if ((!(counter%6)) && (shldlvl<60) && (!shielded) && (!paused)) shldlvl++;
4591: 
4592: 
4593:       if (counter < 256)
4594:       {
4595:         if (counter < 128)
4596:         {
4597:           temp_prem=oslSetImageTileSize(premess,0,0,256,64);
4598: 
4599:           if (counter < 32) temp_prem.stretchY = counter*2;
4600:           else if (counter > 96) temp_prem.stretchY = 128-counter*2;
4601:           else temp_prem.stretchY = 64;
4602: 
4603:           spr_draw(temp_prem, 112, 136-(premess.stretchY)/2);
4604:         }
4605: 
4606:         else if (counter >= 128)
4607:         {
4608:           temp_prem=oslSetImageTileSize(premess,0,64,256,64);
4609:           if (counter < 160) temp_prem.stretchY = (counter-128)*2;
4610:           else if (counter > 224) temp_prem.stretchY = 256-counter*2;
4611:           else temp_prem.stretchY = 64;
4612: 
4613:           spr_draw(temp_prem, 112, 136-(premess.stretchY)/2);
4614:         }
4615: 
4616:         // if (counter==255) oslDeleteImage(premess);
4617:       }
4618: 
4619: 
4620: 
4621:       /*if ((nbp==1) && (DEBUG))
4622:       {
4623:         if (osl_keys.held.R)
4624:         {
4625:           for (i=0; i<16; i++)
4626:           {
4627:             sprintf(buffer,"%d",(i<15)?att_cooldowns[i]:(int)reddv);
4628:             u = oslGetStringWidth(buffer);
4629: 
4630:             oslSetTransparentColor(RGB(255,0,255));
4631:             oslSetBkColor(RGB(255,0,255));
4632:             oslSetTextColor(RGB(255, 255, 255));
4633:             oslDrawString(480-u, i*12, buffer);
4634:           }
4635:         }
4636: 
4637: 
4638:         if (osl_keys.held.L)
4639:         {
4640:           for (i=0; i<10; i++)
4641:           {
4642:             sprintf(buffer,"%d", (i<8)?pie_attacks[i][0]:
4643:                             (i==8)?(pie_ent.pie_hp):
4644:                                 (int)(-2.55/(round*diff)*(pie_ent.pie_hp)+255));
4645:             u = oslGetStringWidth(buffer);
4646: 
4647:             oslSetTransparentColor(RGB(255,0,255));
4648:             oslSetBkColor(RGB(255,0,255));
4649:             oslSetTextColor(RGB(255, 255, 255));
4650:             oslDrawString(480-u, i*12, buffer);
4651:           }
4652:         }
4653:       }*/
4654: 
4655:       if ((att_ch_timer < 80) && (nbp==2) && (health > 0) && (pie_ent.pie_hp > 0) && (!paused))
4656:       {
4657:         spr_draw(attch, 32, 33);
4658:         spr_draw(cp2, 40 + cursor2p*32, 68);
4659:         for (i=0; i<15; i++)
4660:         {
4661:           if (att_cooldowns[i] > 1)
4662:           {
4663:             sprintf(buffer, "%d", att_cooldowns[i]/60);
4664: 
4665:             oslDrawFillRect(32+i*32, 33, 32+(i+1)*32, 67, _RGBA(1, 1, 1, 128));
4666: 
4667:             if (i < 12) oslDrawString(36+i*32, 42, buffer);
4668:             if ((i==12) && (pie_ent.pie_hp > 25*round*diff) && (ulted == 0) && (att_cooldowns[12] > 1))
4669:             {
4670:               al_draw_line(32+i*32, 33, 32+(i+1)*32, 66, _RGB(255, 0, 0), 0);
4671:             }
4672:             if ((i==13) && (pie_ent.pie_hp > 10*round*diff) && (ulted != 1) && (att_cooldowns[13] > 1))
4673:             {
4674:               al_draw_line(32+i*32, 33, 32+(i+1)*32, 66, _RGB(255, 0, 0), 0);
4675:             }
4676:           }
4677:         }
4678:       }
4679: 
4680:       if (nbp == 2)
4681:       {
4682:         oslSetTextColor( _RGBA(255, 255, 255, 255-(global_fr%64)*4));
4683:         oslDrawString(270, 2, "OTHER MORTAL, USE I OR O TO ATTACK!");
4684:         oslSetTextColor( _RGB(255, 255, 255));
4685:       }
4686: 
4687:     oslEndDrawing();
4688:     oslSwapBuffers();
4689:     }
4690:    
4691:     //oslWaitVSync();
4692: 
4693:       /*oslSwapBuffers();
4694:     oslWaitVSync();*/
4695: 
4696:     if (mgcd==100)
4697:       {
4698:         u=random(6);
4699: 
4700:         switch(u)
4701:         {
4702:           case 0:
4703:           i=sonicexe(diff);
4704:           break;
4705: 
4706:           case 1:
4707:           i=mincer(diff);
4708:           break;
4709: 
4710:           case 2:
4711:           i=shoot_teevees(diff, &health, round);
4712:           break;
4713: 
4714:           case 3:
4715:           i=flappy_cacodemon(diff);
4716:           break;
4717: 
4718:           case 4:
4719:           i=love_boat(diff);
4720:           break;
4721: 
4722:           case 5:
4723:           i=sonicexe2(diff);
4724:           break;
4725:         }
4726:         if (i)
4727:           {
4728:            oslPlaySound(giygas[giyg_flag%3]);
4729: 
4730:           } else health=0;
4731: 
4732: 
4733:         for (i=0; i<8; i++)
4734:           {
4735:             for (j=0; j<5; j++)
4736:             {
4737:               pie_attacks[i][j]=0;
4738:             }
4739:             bulbfell=0;
4740:           }
4741: 
4742:         pie_ent.pie_facemode=0;
4743:         mgcd=0;
4744:         mouth.stretchX = 10;
4745:         if (diff != 3) a=diff; else a=2;
4746:         ball_ent = apply_impulse(ball_ent, random(2)?a:-1*a, random(2)?a:-1*a, (180-15*frappe)*3.14/180);
4747:         frappe=-1;
4748:         rckchscr=0;
4749:         if (putin) putin=0;
4750:       }
4751:     }
4752: 
4753: 
4754:     if ((mort==1) && (round==2))
4755:     {
4756:       oslStopSound(tvnoisesound);
4757:       oslDeleteSound(paf);
4758:       paf = oslLoadSoundFile("./sfx/sfx-0029.wav");
4759: 
4760:     oslStopSound(giygas[2]);
4761: 
4762:       oslPlaySound(tvnoisesound);
4763: 
4764: 
4765:       for(i=0; i<420; i++)
4766:       {
4767:         oslStartDrawing();
4768:         oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
4769:         u=random(4);
4770:         //oslSetBilinearFilter(1);
4771:         spr_draw(tvnoise[u], 0, 0);
4772:         spr_draw(tvnoise[u], random(480), random(272));
4773:         spr_draw(tvnoise[u], random(480)-240, random(272)-136);
4774:         spr_draw(tvnoise[u], random(240)-120, random(136)-68);
4775:         //oslSetBilinearFilter(0);
4776:       oslEndDrawing();
4777:       oslWaitVSync();
4778:       oslSwapBuffers();
4779:       }
4780: 
4781:       oslStopSound(tvnoisesound);
4782:       oslPlaySound(paf);
4783: 
4784:       for(i=0; i<=135; i+=2)
4785:       {
4786:         oslStartDrawing();
4787:         oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
4788:         oslDrawFillRect(0, i, 480, 272-i, _RGB(255, 255, 255));
4789:         oslEndDrawing();
4790:         oslWaitVSync();
4791:         oslSwapBuffers();
4792:       }
4793: 
4794:       fadeout();
4795:     }
4796: 
4797: 
4798:     for (i=0; i<3; i++) oslDeleteSound(giygas[i]);
4799: 
4800:   for (i=0; i<4; i++) oslDeleteSound(dictators_sfx[i]);
4801: 
4802:   for (i=0; i<5; i++) oslDeleteImage(tvnoise[i]);
4803: 
4804:   for (i=0; i<7; i++) oslDeleteSound(bulbsfx[i]);
4805: 
4806:   for (i=0; i<11; i++) oslDeleteSound(benj_sfx[i]);
4807: 
4808:   oslDeleteSound(tvnoisesound);
4809:  
4810:   if (round==2)
4811:   {
4812:     for (i=0; i<33; i++) oslDeleteImage(giyg_bg[i]);
4813:   }
4814: 
4815:     oslDeleteSound(ko_sfx);
4816:   oslDeleteSound(quitter);
4817:   oslDeleteSound(pew);
4818:   oslDeleteSound(paf);
4819:   oslDeleteSound(psis_sfx);
4820:   oslDeleteImage(numberz);
4821:   oslDeleteImage(starsky);
4822:   oslDeleteImage(lightning);
4823:   oslDeleteImage(pie);
4824:   oslDeleteImage(sleepwell);
4825:   oslDeleteImage(ko);
4826:   oslDeleteImage(explode);
4827:   oslDeleteImage(ball_gfx);
4828:   oslDeleteImage(ball_shad);
4829:   oslDeleteImage(mgswirl);
4830:   oslDeleteImage(powerball);
4831:   oslDeleteSound(minigametime);
4832:   oslDeleteSound(expl_sound);
4833:   oslDeleteSound(expl_sound2);
4834:   oslDeleteSound(meteor_fall);
4835:   oslDeleteSound(stun_sound);
4836:   oslDeleteSound(elec);
4837:   oslDeleteSound(thunder);
4838:   oslDeleteSound(whine);
4839:   oslDeleteSound(mouth_sfx[0]);
4840:   oslDeleteSound(mouth_sfx[1]);
4841:   oslDeleteSound(bounce);
4842:   oslDeleteImage(rckch[0]);
4843:   oslDeleteImage(rckch[1]);
4844:   oslDeleteImage(psycho);
4845:   oslDeleteImage(paused_gfx);
4846:   oslDeleteImage(ultgauge);
4847:   oslDeleteImage(shlgauge);
4848:   oslDeleteImage(visor);
4849:   oslDeleteImage(bulbasaur);
4850:   oslDeleteImage(recipe);
4851:   oslDeleteImage(shield);
4852:   oslDeleteImage(meteor);
4853:   oslDeleteImage(stunning);
4854:   oslDeleteImage(juche);
4855:   oslDeleteImage(psis);
4856:   oslDeleteImage(dictators);
4857:   oslDeleteImage(mouth);
4858:   oslDeleteImage(star);
4859:   oslDeleteImage(suppo_gfx);
4860:   oslDeleteImage(ulting_gfx);
4861:   oslDeleteImage(attch);
4862:   oslDeleteImage(cp2);
4863: 
4864:     return mort;
4865: }
4866: 
4867: void taunt(int nbt)
4868: {
4869:   int frame=0, k;
4870:   const char *texts[12] = {"YOUR HEAD IS ALREADY OFF", "YOU WON'T SEE THE MOCK TURTLE", "MOTHER", "YOU'RE NOT EVEN TRYING", "AEIOU", "UNHAPPY UNBIRTHDAY", "YOU'RE LATE YOU'RE LATE YOU'RE LATE",
4871:                "NO TIME TO SAY GOODBYE", "PAINTING YOUR BOWELS RED", "HOW DOTH THE LITTLE OF YOU LIVE", "I HAVE A VERY GOOD ADVICE", "THE WALRUS ATE THE CARPENTER"};
4872: 
4873:   OSL_SOUND wind = oslLoadSoundFile("./sfx/sfx-0019.wav");
4874: 
4875:   k = oslGetStringWidth(texts[nbt]);
4876: 
4877:   oslPlaySound(wind);
4878: 
4879:   while(frame<282)
4880:   {
4881:     oslStartDrawing();
4882:     oslDrawFillRect(0,0,480,272, _RGB(0, 0, 0));
4883: 
4884: 
4885:     if (frame < 82)
4886:     {
4887:       oslSetTextColor(_RGB(frame*3, frame*3, frame*3));
4888:       oslDrawString((480 - k)/2, 130, texts[nbt]);
4889:     }
4890:     if ((frame >= 82) && (frame <= 200))
4891:     {
4892:       oslSetTextColor(_RGB(255, 255, 255));
4893:       oslDrawString((480 - k)/2, 130, texts[nbt]);
4894:     }
4895:     else if (frame > 200)
4896:     {
4897:       oslSetTextColor(_RGB((282-frame)*3, (282-frame)*3, (282-frame)*3));
4898:       oslDrawString((480 - k)/2, 130, texts[nbt]);
4899:     }
4900:     oslEndDrawing();
4901:     oslSwapBuffers();
4902:     oslWaitVSync();
4903:     frame++;
4904:   }
4905: 
4906:   oslDeleteSound(wind);
4907: }
4908: 
4909: void creepypasta(int cpn)
4910: {
4911:   int i, j, k, l, frame=0;
4912:   char buffer[20];
4913:   OSL_IMAGE suicidemouse[18];
4914:   OSL_IMAGE temp_gfx;
4915:   OSL_SOUND creepysfx, sfx;
4916:   int bok[4][16];
4917:   const char *text[7]={"y wud u do dis","acually is dolan","fak u","FAGGT","u litl SHIZNIT", "gooby pls", "i wuz ins al a long"};
4918: 
4919:   switch(cpn)
4920:   {
4921: 
4922:   case 0:
4923: 
4924:     for (i=0; i<18; i++)
4925:     {
4926:       sprintf(buffer,"./gfx/gfx-%d.png",i+1160);
4927:       suicidemouse[i]=LoadImg(buffer);
4928: 
4929:       suicidemouse[i].stretchX = 363;
4930:       suicidemouse[i].stretchY = 272;
4931:       suicidemouse[i]=oslSetImageRotCenter(suicidemouse[i]);
4932:     }
4933: 
4934:     creepysfx = oslLoadSoundFile("./sfx/sfx-0065.wav");
4935:     oslSetSoundLoop(creepysfx, 1);
4936:     oslPlaySound(creepysfx);
4937: 
4938:     i=0;
4939: 
4940: 
4941: 
4942:     while (frame < 620)
4943:     {
4944:       if (!(frame%6)) i++;
4945:       oslStartDrawing();
4946:       oslDrawFillRect(0,0,480,272, _RGB(0, 0, 0));
4947:       spr_draw(suicidemouse[i%18],240,138);
4948:         oslEndDrawing();
4949:         oslSwapBuffers();
4950: 
4951:       oslWaitVSync();
4952:         frame++;
4953:     }
4954: 
4955:     for (i=0; i<18; i++)
4956:     {
4957:        oslDeleteImage(suicidemouse[i]);
4958:     }
4959: 
4960:     oslStopSound(creepysfx);
4961:     oslDeleteSound(creepysfx);
4962:    
4963:     break;
4964: 
4965: 
4966: 
4967:   case 1:
4968:     suicidemouse[0]=LoadImg("./gfx/gfx-1038.png");
4969:     suicidemouse[1]=LoadImg("./gfx/gfx-1039.png");
4970: 
4971:     suicidemouse[0]=oslSetImageRotCenter(suicidemouse[0]);
4972: 
4973:     creepysfx = oslLoadSoundFile("./sfx/sfx-0058.wav");
4974: 
4975:     oslSetSoundLoop(creepysfx, 0);
4976:     oslPlaySound(creepysfx);
4977: 
4978:     while (frame < 45)
4979:     {
4980:       oslStartDrawing();
4981:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
4982:       suicidemouse[0]=oslSetAlpha(suicidemouse[0], frame*4);
4983:       spr_draw(suicidemouse[0],240,271);
4984:       oslEndDrawing();
4985:       //frame_debug(frame);
4986:       oslSwapBuffers();
4987: 
4988:       suicidemouse[0].stretchX +=2;
4989:       suicidemouse[0].stretchY +=2;
4990: 
4991:       oslSetImageRotCenter(suicidemouse[0]);
4992:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
4993:       frame++;
4994:       oslWaitVSync();
4995:     }
4996: 
4997:     for (i=0; i<4; i++)
4998:     {
4999:       oslStartDrawing();
5000:       oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
5001:       oslEndDrawing();
5002:       oslSwapBuffers();
5003:       oslWaitVSync();
5004:     }
5005:    
5006:     for (i=0; i<4; i++)
5007:     {
5008:       oslStartDrawing();
5009:       oslDrawFillRect(0,0,480,272, _RGB(0, 0, 0));
5010:       spr_draw(suicidemouse[1],0,0);
5011:       oslEndDrawing();
5012:       oslSwapBuffers();
5013:     }
5014:     fadeout();
5015:     oslDeleteImage(suicidemouse[0]);
5016:     oslDeleteImage(suicidemouse[1]);
5017: 
5018:     /*while (oslGetSoundChannel(creepysfx) == 0);*/
5019: 
5020:     oslDeleteSound(creepysfx);
5021:   break;
5022: 
5023:   case 2:
5024: 
5025:     j = random(2);
5026: 
5027:     if (!j) suicidemouse[0] = LoadImg("./gfx/endisneigh.png");
5028:     else suicidemouse[0] = LoadImg("./gfx/endisneigh2.png");
5029: 
5030:     if (!j) creepysfx = oslLoadSoundFile("./sfx/sfx-0083.wav");
5031:     else creepysfx = oslLoadSoundFile("./sfx/sfx-0109.wav");
5032: 
5033:     oslSetSoundLoop(creepysfx, 0);
5034:     oslPlaySound(creepysfx);
5035: 
5036:     for (i=0; i<10; i++)
5037:     {
5038:       oslStartDrawing();
5039:       spr_draw(suicidemouse[0],0,0);
5040:       oslEndDrawing();
5041:       oslSwapBuffers();
5042:       oslWaitVSync();
5043:     }
5044:     fadeout();
5045:     oslDeleteImage(suicidemouse[0]);
5046:     break;
5047: 
5048: 
5049:   case 3:
5050:     suicidemouse[0] = LoadImg("./gfx/safe.png");
5051:     suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
5052:     creepysfx = oslLoadSoundFile("./sfx/sfx-0026.wav");
5053: 
5054:     oslSetSoundLoop(creepysfx, 0);
5055:     oslPlaySound(creepysfx);
5056: 
5057:     for (i=0; i<3; i++)
5058:     {
5059:       oslStartDrawing();
5060:       oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
5061:       oslEndDrawing();
5062:       oslSwapBuffers();
5063:       oslWaitVSync();
5064:     }
5065: 
5066:     for (i=0; i<200; i++)
5067:       {
5068:       oslStartDrawing();
5069:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5070:       spr_draw(suicidemouse[0],239,135);
5071:       oslEndDrawing();
5072:       oslSwapBuffers();
5073:       oslWaitVSync();
5074:       }
5075: 
5076:     fadeout();
5077:     oslDeleteImage(suicidemouse[0]);
5078:     oslDeleteSound(creepysfx);
5079:     break;
5080: 
5081:   case 4:
5082:     for (i=0; i<4; i++)
5083:     {
5084:       sprintf(buffer,"./gfx/bnours%d.png",i+1);
5085:       suicidemouse[i]=LoadImg(buffer);
5086:     }
5087:     creepysfx = oslLoadSoundFile("./sfx/sfx-0149.wav");
5088: 
5089:     oslSetSoundLoop(creepysfx, 0);
5090:     oslPlaySound(creepysfx);
5091: 
5092:     i=0;
5093: 
5094:     while (frame < 600)
5095:         {
5096:           if (!(frame%4)) i++;
5097:           oslStartDrawing();
5098:           spr_draw(suicidemouse[i%4],0,0);
5099:           oslEndDrawing();
5100:             oslSwapBuffers();
5101:             frame++;
5102:           oslWaitVSync();
5103:         }
5104: 
5105:         fadeout();
5106: 
5107:     for (i=0; i<4; i++)
5108:     {
5109:        oslDeleteImage(suicidemouse[i]);
5110:     }
5111:     oslDeleteSound(creepysfx);
5112:     break;
5113: 
5114:   case 5:
5115:     suicidemouse[0] = LoadImg("./gfx/court_joy.png");
5116:     suicidemouse[1] = LoadImg("./gfx/gfx-0717.png");
5117:     creepysfx = oslLoadSoundFile("./sfx/sfx-0147.wav");
5118:     sfx=oslLoadSoundFile("./sfx/sfx-0011.wav");
5119: 
5120:     oslPlaySound(sfx);
5121: 
5122:     for (j=0; j<256; j+=3)
5123:     {
5124:       oslStartDrawing();
5125:       oslDrawFillRect(0,0,480,272, _RGB(255,255,255));
5126: 
5127:       suicidemouse[0]=oslSetAlpha(suicidemouse[0], j);
5128:       suicidemouse[1]=oslSetAlpha(suicidemouse[1], j);
5129:       spr_draw(suicidemouse[0],0,0);
5130:       spr_draw(suicidemouse[1],177,215);
5131: 
5132:       oslEndDrawing();
5133:       oslSwapBuffers();
5134:       oslWaitVSync();
5135:     }
5136: 
5137:     /*oslSetAlpha(OSL_FX_DEFAULT,0);*/
5138: 
5139:     oslSetSoundLoop(creepysfx, 0);
5140:     oslPlaySound(creepysfx);
5141: 
5142:     while (frame < 292)
5143:     {
5144:       oslStartDrawing();
5145:       spr_draw(suicidemouse[0],0,0);
5146:       spr_draw(suicidemouse[1],177,215);
5147:       oslEndDrawing();
5148: 
5149:       oslSwapBuffers();
5150: 
5151:       frame++;
5152:       oslWaitVSync();
5153:     }
5154: 
5155:     fadeout();
5156:     oslDeleteImage(suicidemouse[0]);
5157:     oslDeleteImage(suicidemouse[1]);
5158:     oslDeleteSound(creepysfx);
5159:     oslDeleteSound(sfx);
5160:     break;
5161: 
5162:   case 6:
5163:     creepysfx = oslLoadSoundFile("./sfx/sfx-0060.wav");
5164:     suicidemouse[0] = LoadImg("./gfx/oag1.png");
5165:     suicidemouse[1] = LoadImg("./gfx/oag2.png");
5166: 
5167:     oslStartDrawing();
5168:     spr_draw(suicidemouse[0],0,0);
5169:     oslEndDrawing();
5170: 
5171:     oslSwapBuffers();
5172: 
5173:     while (frame < 720)
5174:     {
5175:       if (frame==480)
5176:       {
5177:         oslSetSoundLoop(creepysfx, 0);
5178:         oslPlaySound(creepysfx);
5179:       }
5180: 
5181:       if (frame >= 480)
5182:       {
5183: 
5184:         oslStartDrawing();
5185:           oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5186:         spr_draw(suicidemouse[1],173,26);
5187:         oslEndDrawing();
5188:         oslSwapBuffers();
5189: 
5190:       }
5191:       else if (frame < 480)
5192:       {
5193:         oslStartDrawing();
5194:         spr_draw(suicidemouse[0],0,0);
5195:         oslEndDrawing();
5196:         oslSwapBuffers();
5197:       }
5198: 
5199: 
5200:       frame++;
5201:       oslWaitVSync();
5202:     }
5203: 
5204:     fadeout();
5205:     oslDeleteImage(suicidemouse[0]);
5206:     oslDeleteImage(suicidemouse[1]);
5207:     oslDeleteSound(creepysfx);
5208:     break;
5209: 
5210:   case 7:
5211:     creepysfx = oslLoadSoundFile("./sfx/sfx-0148.wav");
5212:     suicidemouse[0] = LoadImg("./gfx/smurf_village.png");
5213:     suicidemouse[1] = LoadImg("./gfx/smurf_sprite.png");
5214:     suicidemouse[2] = LoadImg("./gfx/smurf_papazombie.png");
5215: 
5216:     oslStartDrawing();
5217:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5218:       spr_draw(suicidemouse[0],0,0);
5219:     oslEndDrawing();
5220: 
5221:     i=0;
5222:     j=-32;
5223:     frame=0;
5224: 
5225:     oslSetSoundLoop(creepysfx, 0);
5226:     oslPlaySound(creepysfx);
5227:     suicidemouse[2]=oslSetImageRotCenter(suicidemouse[2]);
5228: 
5229:     //fadein(suicidemouse[0]);
5230: 
5231:     while (frame < 400)
5232:     {
5233: 
5234:       if (!(frame%2))
5235:       {
5236:         if (j < 222) j+=4;
5237:       }
5238:       if (!(frame%3))
5239:       {
5240:         i++;
5241:       }
5242: 
5243:         oslStartDrawing();
5244:         spr_draw(suicidemouse[0],0,0);
5245:         temp_gfx = oslSetImageTileSize(suicidemouse[1],(i%8)*32,0,32,42);
5246:         temp_gfx.stretchX = 64;
5247:         temp_gfx.stretchY = 84;
5248:         spr_draw(temp_gfx, j, 181);
5249:         oslEndDrawing();
5250: 
5251:       if (j >= 222)
5252:       {
5253:         oslStartDrawing();
5254:         spr_draw(suicidemouse[0],0,0);
5255:         temp_gfx = oslSetImageTileSize(suicidemouse[1],256,0,32,42);
5256:         temp_gfx.stretchX = 64;
5257:         temp_gfx.stretchY = 84;
5258:         spr_draw(temp_gfx, j, 181);
5259: 
5260:         oslEndDrawing();
5261: 
5262: 
5263:         if (frame > 248)
5264:         {
5265:           oslStartDrawing();
5266:             oslDrawFillRect(0,0,480,272, _RGBA(255,0,0,155));
5267:           suicidemouse[2]=oslSetAlpha(suicidemouse[2], 250);
5268:             spr_draw(suicidemouse[2],238,136);
5269:           if (!(frame%2))
5270:             {
5271:               suicidemouse[2].stretchX+=16;
5272:               suicidemouse[2].stretchY+=16;
5273:             }
5274:           oslEndDrawing();
5275:         }
5276:       }
5277: 
5278:       //frame_debug(frame);
5279: 
5280:       oslSwapBuffers();
5281:       frame++;
5282:       oslWaitVSync();
5283:     }
5284: 
5285:     oslDeleteImage(suicidemouse[0]);
5286:     oslDeleteImage(suicidemouse[1]);
5287:     oslDeleteImage(suicidemouse[2]);
5288:     oslDeleteSound(creepysfx);
5289: 
5290:     /*oslSetBilinearFilter(1);
5291:    
5292: 
5293:     oslDeleteSound(sfx);*/
5294: 
5295:     break;
5296: 
5297:   case 8:
5298:     creepysfx = oslLoadSoundFile("./sfx/sfx-0151.wav");
5299:     suicidemouse[0] = LoadImg("./gfx/squiward_suicide.png");
5300:     suicidemouse[1] = LoadImg("./gfx/bikini_hell.png");
5301: 
5302:     suicidemouse[0]=oslSetImageRotCenter(suicidemouse[0]);
5303:     suicidemouse[1]=oslSetImageRotCenter(suicidemouse[1]);
5304: 
5305:     oslStartDrawing();
5306:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5307:     oslEndDrawing();
5308: 
5309: 
5310:     oslSetSoundLoop(creepysfx, 0);
5311:     oslPlaySound(creepysfx);
5312: 
5313: 
5314: 
5315:     frame=0;
5316: 
5317:     while((suicidemouse[0].stretchX) >= 0)
5318:     {
5319:       if (!(frame%2))
5320:       {
5321:       oslStartDrawing();
5322:       spr_draw(suicidemouse[1],240,136);
5323:       spr_draw(suicidemouse[0],240,136);
5324:       if (!(frame%4) && (frame < 282))
5325:         {
5326:           suicidemouse[0].stretchX++;
5327:           suicidemouse[0].stretchY++;
5328:           suicidemouse[0].angle += 6;
5329:         }
5330:       if (frame >= 282)
5331:         {
5332:           suicidemouse[0].stretchX-=3;
5333:           suicidemouse[0].stretchY-=3;
5334:           suicidemouse[0].angle -= 11;
5335:         }
5336:       oslEndDrawing();
5337:       //frame_debug(frame);
5338:       oslSwapBuffers();
5339:       }
5340:       else
5341:       {
5342:         oslStartDrawing();
5343:         spr_draw(suicidemouse[1],240,136);
5344:         spr_draw(suicidemouse[0],240,136);
5345:         oslEndDrawing();
5346:         oslSwapBuffers();
5347:       }
5348:       oslWaitVSync();
5349:       frame++;
5350:     }
5351: 
5352:     oslStartDrawing();
5353:     spr_draw(suicidemouse[1],240,136);
5354:     oslEndDrawing();
5355:     oslSwapBuffers();
5356: 
5357:     oslDeleteImage(suicidemouse[0]);
5358:     oslDeleteImage(suicidemouse[1]);
5359:    
5360:     oslDeleteSound(creepysfx);
5361:     /*oslSetTransparentColor(RGB(255,0,255));
5362:     oslDeleteSound(sfx);*/
5363:     break;
5364: 
5365:     case 9:
5366:     creepysfx = oslLoadSoundFile("./sfx/sfx-0152.wav");
5367: 
5368:     j=0;
5369:     i=0;
5370: 
5371:     frame=0;
5372: 
5373:     oslStartDrawing();
5374:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5375:     oslEndDrawing();
5376: 
5377:     for (k=0; k<16; k++)
5378:     {
5379:       suicidemouse[k] = LoadImg("./gfx/creepycircle.png");
5380:       suicidemouse[k] = oslSetImageRotCenter(suicidemouse[k]);
5381:     }
5382: 
5383:     while (frame<16*2)
5384:     {
5385:       if (!(frame%2))
5386:       {
5387:       bok[0][i]=(2*(random(24)+1))-24;
5388: 
5389: 
5390:       bok[1][i]= random(128)+127;
5391:       bok[2][i]= random(128)+127;
5392:       bok[3][i]= random(128)+127;
5393: 
5394: 
5395: 
5396: 
5397:       oslStartDrawing();
5398:       if (bok[0][i] > 0) suicidemouse[i].stretchX = bok[0][i]; else suicidemouse[i].stretchX = 1;
5399:       if (bok[0][i] > 0) suicidemouse[i].stretchY = bok[0][i]; else suicidemouse[i].stretchY = 1;
5400: 
5401:       spr_draw(suicidemouse[i],(i%4)*40+172, (i/4)*40+64);
5402: 
5403:       oslEndDrawing();
5404:       i++;
5405:       }
5406:       else
5407:       {
5408:         oslWaitVSync();
5409:       }
5410:       frame++;
5411:     }
5412: 
5413:     oslSwapBuffers();
5414:     //oslWaitKey();
5415: 
5416: 
5417:     i=0;
5418:     j=0;
5419:     k=0;
5420:     frame=0;
5421: 
5422:     while(k < 100)
5423:     {
5424: 
5425:       if (!(frame%4))
5426:       {
5427:           oslStartDrawing();
5428:           oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5429: 
5430:           for (j=0; j<16; j++)
5431:           {
5432: 
5433:             if (bok[0][j] > -24) bok[0][j]--;
5434: 
5435:             if (bok[0][j] <= -24)
5436:               {
5437:                 k++;
5438:                 bok[0][j]=24;
5439:                 i=0;
5440:    
5441:                 oslPlaySound(creepysfx);
5442: 
5443:                 bok[1][j]= random(128)+127;
5444:                 bok[2][j]= random(128)+127;
5445:                 bok[3][j]= random(128)+127;
5446:               }
5447: 
5448:             if (bok[0][j] > 1) suicidemouse[j].stretchX = suicidemouse[j].stretchY = bok[0][j];
5449: 
5450:               suicidemouse[j].R=bok[2][j];
5451:             suicidemouse[j].G=bok[3][j];
5452:             suicidemouse[j].B=bok[1][j];
5453: 
5454:             if (bok[0][j] > 21)  suicidemouse[j].R=suicidemouse[j].G=suicidemouse[j].B=255;
5455: 
5456:             spr_draw(suicidemouse[j],(j%4)*40+172, (j/4)*40+64);
5457:           }
5458:           oslEndDrawing();
5459:           //frame_debug(frame);
5460:           oslSwapBuffers();
5461:           //oslWaitKey();
5462: 
5463: 
5464: 
5465:       }
5466:       else
5467:       {
5468:         oslWaitVSync();
5469:       }
5470: 
5471:       frame++;
5472:     }
5473: 
5474:     for(i=0; i<16; i++) oslDeleteImage(suicidemouse[i]);
5475:     oslDeleteSound(creepysfx);
5476:     break;
5477: 
5478:   case 10:
5479:   case 15:
5480:     creepysfx = oslLoadSoundFile("./sfx/sfx-0057.wav");
5481:     sfx = oslLoadSoundFile("./sfx/bark.wav");
5482: 
5483:     suicidemouse[0] = LoadImg("./gfx/gfx-0253.png");
5484:       suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
5485: 
5486: 
5487: 
5488:     for (i=1; i<9; i++)
5489:     {
5490:       sprintf(buffer,"./gfx/gfx-0%d.png",i+661);
5491:       suicidemouse[i]=LoadImg(buffer);
5492:       suicidemouse[i].stretchX = 480;
5493:       suicidemouse[i].stretchY = 272;
5494:     }
5495: 
5496:     frame=0;
5497:     j=0;
5498:     /*oslStopSound(w4c);*/
5499: 
5500:     oslSetSoundLoop(creepysfx, 1);
5501:     oslPlaySound(creepysfx);
5502: 
5503:     while (frame < 750)
5504:     {
5505: 
5506:       if (!(frame%16))
5507:       {
5508:         suicidemouse[0].stretchX++;
5509:         suicidemouse[0].stretchY = (int)(1.27*(suicidemouse[0].stretchX));
5510:       }
5511: 
5512:       if (!(frame%4))
5513:       {
5514:         oslStartDrawing();
5515:           oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5516:           spr_draw(suicidemouse[(j%8)+1],0,0);
5517:           suicidemouse[0]=oslSetAlpha(suicidemouse[0],75);
5518:           spr_draw(suicidemouse[0],240,136);
5519:           oslEndDrawing();
5520:           oslSwapBuffers();
5521:       }
5522:       else
5523:       {    
5524:         j++;
5525:         al_rest(0.016);
5526:       }
5527: 
5528:       frame++;
5529:       oslWaitVSync();
5530:     }
5531: 
5532:     if (cpn == 15)
5533:     {
5534:       suicidemouse[0].stretchX = 480;
5535:       suicidemouse[0].stretchY = 610;
5536:       oslStartDrawing();
5537:         suicidemouse[0]=oslSetAlpha(suicidemouse[0],255);
5538:         spr_draw(suicidemouse[0],240,136);
5539:         oslEndDrawing();
5540:         oslSwapBuffers();
5541:       oslWaitVSync();
5542:       al_set_sample_instance_position(sfx.instance, 16);
5543:         oslPlaySound(sfx);
5544:         while (al_get_sample_instance_position(sfx.instance));
5545:     }
5546: 
5547:     for (i=0; i<9; i++)
5548:     {
5549:       oslDeleteImage(suicidemouse[i]);
5550:     }
5551: 
5552:     oslDeleteSound(creepysfx);
5553:     oslDeleteSound(sfx);
5554:     fadeout();
5555:     break;
5556: 
5557:   case 11:
5558:   case 16:
5559:     suicidemouse[0] = LoadImg("./gfx/dolan.png");
5560:     creepysfx = oslLoadSoundFile("./sfx/dolan.wav");
5561: 
5562:     oslSetSoundLoop(creepysfx, 0);
5563:     i=272;
5564:     frame=0;
5565:     j=random(7);
5566: 
5567:     while(frame < 1200)
5568:     {
5569:       if (!(frame%2))
5570:       {
5571:         if (i>72)
5572:         {
5573:         oslStartDrawing();
5574:           oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5575:           spr_draw(suicidemouse[0], 332, i);
5576:         oslEndDrawing();
5577:         oslSwapBuffers();
5578:         oslWaitVSync();
5579:         i--;
5580:         }
5581:         if ((frame > 800) && (i<73))
5582:         {
5583:           if (cpn == 16)
5584:           {
5585:             suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
5586:             suicidemouse[0].stretchX = 480;
5587:             suicidemouse[0].stretchY = 648;
5588:             oslStartDrawing();
5589:               oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5590:               spr_draw(suicidemouse[0],240,136);
5591:               oslEndDrawing();
5592:               oslSwapBuffers();
5593:               if (frame == 812) oslPlaySound(creepysfx);
5594:             oslWaitVSync();
5595:           }
5596:           else
5597:           {
5598:             oslStartDrawing();
5599:             oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5600:             spr_draw(suicidemouse[0], 332, i+1);
5601:             oslSetTextColor(_RGB(255, 255, 255));
5602:             k = oslGetStringWidth(text[j]);
5603:             oslDrawString((480 - k)/2, 32, text[j]);
5604:             oslEndDrawing();
5605:             oslSwapBuffers();
5606:             oslWaitVSync();
5607:           }
5608:         }
5609:         oslWaitVSync();
5610:       }
5611:       else
5612:       {
5613:         al_rest(0.008);
5614:       }
5615:       frame++;
5616:       oslWaitVSync();
5617:     }
5618: 
5619:     oslDeleteImage(suicidemouse[0]);
5620:     oslDeleteSound(creepysfx);
5621: 
5622:      /* while (oslGetSoundChannel(creepysfx) == 1);
5623:    
5624:     oslDeleteSound(sfx);*/
5625: 
5626:     break;
5627: 
5628:     case 12:
5629:     k=random(42);
5630:     j=random(25);
5631: 
5632:     sprintf(buffer,"./sfx/sfx-0%d.wav",j+121);
5633:     creepysfx = oslLoadSoundFile(buffer);
5634: 
5635:     j=random(25);
5636:     sprintf(buffer,"./sfx/sfx-0%d.wav",j+121);
5637:     sfx = oslLoadSoundFile(buffer);
5638: 
5639:     sprintf(buffer,"./gfx/pasta%d.png",k+1);
5640:     suicidemouse[0] =  LoadImg(buffer);
5641: 
5642:     oslSetSoundLoop(creepysfx, 0);
5643:     al_set_sample_instance_position(creepysfx.instance, 16);
5644:     oslPlaySound(creepysfx);
5645:     suicidemouse[0]=oslSetImageRotCenter(suicidemouse[0]);
5646: 
5647:     frame=0;
5648: 
5649:     //oslSetBilinearFilter(1);
5650: 
5651:     while (al_get_sample_instance_position(creepysfx.instance))
5652:     {
5653:       oslStartDrawing();
5654:         oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5655:         spr_draw(suicidemouse[0], 240, 136);
5656:       oslEndDrawing();
5657:       oslSwapBuffers();
5658:       oslWaitVSync();
5659:       if (!(frame%4)) suicidemouse[0].stretchX++;
5660:       suicidemouse[0].stretchY = (int)((float)(suicidemouse[0].sizeY)/(suicidemouse[0].sizeX)*suicidemouse[0].stretchX);
5661:       frame++;
5662:     }
5663: 
5664:     oslSetSoundLoop(sfx, 0);
5665:     al_set_sample_instance_position(sfx.instance, 16);
5666:     oslPlaySound(sfx);
5667: 
5668:     while (al_get_sample_instance_position(sfx.instance))
5669:     {
5670:         oslStartDrawing();
5671:           oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5672:           spr_draw(suicidemouse[0], 240, 136);
5673:         oslEndDrawing();
5674:         oslSwapBuffers();
5675:         oslWaitVSync();
5676:         if (!(frame%4)) suicidemouse[0].stretchX++;
5677:         suicidemouse[0].stretchY = (int)((float)(suicidemouse[0].sizeY)/(suicidemouse[0].sizeX)*suicidemouse[0].stretchX);
5678:         frame++;
5679:     }
5680: 
5681:     //oslSetBilinearFilter(0);
5682: 
5683:     oslDeleteSound(creepysfx);
5684:     oslDeleteImage(suicidemouse[0]);
5685:     oslDeleteSound(sfx);
5686: 
5687:     break;
5688: 
5689: case 13:
5690:    
5691:     creepysfx = oslLoadSoundFile("./sfx/sfx-0150.wav");
5692: 
5693:     oslSetSoundLoop(creepysfx, 0);
5694:     al_set_sample_instance_position(creepysfx.instance, 16);
5695:     oslPlaySound(creepysfx);
5696:    
5697:     oslStartDrawing();
5698:     oslDrawFillRect(0,0,480,272, _RGB(0,0,255));
5699:     oslSetTextColor(_RGB(255, 255, 255));
5700: 
5701:     al_draw_text(freesans, current_col, 8, 0, 0, "FATAL ERROR OCURRED IN THREAD");
5702:     al_draw_text(freesans, current_col, 8, 12, 0, "Shit happens... :-(");
5703:     al_draw_text(freesans, current_col, 8, 36, 0, "Exception Details:");
5704:     al_draw_text(freesans, current_col, 8, 48, 0, "Exception - Bus error (death)");
5705:     al_draw_text(freesans, current_col, 8, 60, 0, "EPC       - 08A1C208");
5706:     al_draw_text(freesans, current_col, 8, 72, 0, "Cause     - 07H30P13");
5707:     al_draw_text(freesans, current_col, 8, 84, 0, "Status    - D34D0L0L");
5708:     al_draw_text(freesans, current_col, 8, 96, 0, "BadVAddr  - 0012AC40");
5709:     al_draw_text(freesans, current_col, 8, 108, 0, "zr:000Y0000 at:0008OF00 v0:000U0000 v1:00000012");
5710:     al_draw_text(freesans, current_col, 8, 120, 0, "a0:0000A001 a1:000R002E a2:09FFE768 a3:09FF06BC");
5711:     al_draw_text(freesans, current_col, 8, 132, 0, "t0:00D0E6BC t1:000E07D4 t2:0000A032 t3:8804D000");
5712:     al_draw_text(freesans, current_col, 8, 144, 0, "t4:09FFY5F8 t5:000O0E00 t6:08A2U658 t7:00008600");
5713:     al_draw_text(freesans, current_col, 8, 156, 0, "t8:000S0000 t9:000U8368 s0:08AC0000 s1:08AFK53C");
5714:     al_draw_text(freesans, current_col, 8, 168, 0, "s2:08BA0C20 s3:08BT453C s4:08A30000 s5:08A30000");
5715:     al_draw_text(freesans, current_col, 8, 180, 0, "s6:000T00EC s7:0000H0F9 k0:09FFIF00 k1:0000S000");
5716:     al_draw_text(freesans, current_col, 8, 192, 0, "gp:08AGD390 sp:000AFF00 fp:08A3M000 ra:0896E4BC");
5717:     al_draw_text(freesans, current_col, 8, 216, 0, "Will exit to Windows desktop in 10 seconds");
5718:     oslEndDrawing();
5719:     oslSwapBuffers();
5720: 
5721:     while (al_get_sample_instance_position(creepysfx.instance));
5722:     oslDeleteSound(creepysfx);
5723:     fadeout();
5724:     break;
5725: 
5726: 
5727:   case 14:
5728:     if (random(2)) suicidemouse[0] =  LoadImg("./gfx/smilechu.png"); else suicidemouse[0] =  LoadImg("./gfx/smilechu2.png");
5729:     suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
5730: 
5731:     i=0;
5732:     j=0;
5733:     frame=0;
5734: 
5735:       while (i < 12)
5736:       {
5737:         if (!(frame%3))
5738:         {
5739:           if (!j)
5740:           {
5741:             k=random(70);
5742:             suicidemouse[0].stretchX = 10+random(150);
5743:             l=82+random(36);
5744:           }
5745:           else k++;
5746:           oslStartDrawing();
5747:           oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5748:           if (k>44)
5749:           {
5750:             j=1;
5751: 
5752:             if (k < 74)
5753:             {
5754:               suicidemouse[0].stretchX += 13;
5755:               suicidemouse[0].stretchY = (int)(1.18 * (suicidemouse[0].stretchX));
5756: 
5757:               spr_draw(suicidemouse[0],240,138);
5758:             }
5759: 
5760:             if (k==l)
5761:             {
5762:               i++;
5763:               j=0;
5764:             }
5765:           }
5766:           //frame_debug(k);
5767:           oslEndDrawing();
5768:           oslSwapBuffers();
5769:           oslWaitVSync();
5770:         }
5771:         else
5772:         {
5773:           al_rest(0.008);
5774:           oslWaitVSync();
5775:         }
5776:         frame++;
5777:         oslWaitVSync();
5778:       }
5779: 
5780:     oslDeleteImage(suicidemouse[0]);
5781:     //oslDeleteSound(sfx);
5782:   break;
5783: 
5784:     case 17:
5785:     suicidemouse[0] =  LoadImg("./gfx/nigel.png");
5786:     suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
5787: 
5788:     creepysfx = oslLoadSoundFile("./sfx/smashing.wav");
5789: 
5790:     frame=0;
5791: 
5792:     oslPlaySound(creepysfx);
5793: 
5794:     while (frame<512)
5795:     {
5796:         oslStartDrawing();
5797:           oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5798: 
5799:           for(i=0; i<8; i++)
5800:           {
5801:               j=random(10)-20;
5802:               oslDrawFillRect(i*60,120+j,(i*60)+60,152+(-1*j), _RGB(96,96,0));
5803:               oslDrawFillRect(i*60,128+j,(i*60)+60,144+(-1*j), _RGB(128,128,0));
5804:               oslDrawFillRect(i*60,136+j,(i*60)+60,136+(-1*j), _RGB(160,160,0));
5805:           }
5806: 
5807:           if (frame >= 480)
5808:           {
5809: 
5810:             spr_draw(suicidemouse[0],240,138);
5811: 
5812:               suicidemouse[0].stretchX += 16;
5813:               suicidemouse[0].stretchY = (int)(1.33*(suicidemouse[0].stretchX));
5814:           }
5815:         oslEndDrawing();
5816:         oslSwapBuffers();
5817:         oslWaitVSync();
5818:         frame++;
5819:     }
5820: 
5821:     oslDeleteSound(creepysfx);
5822:     oslDeleteImage(suicidemouse[0]);
5823: 
5824:   break;
5825: 
5826:   case 18:
5827:     suicidemouse[0] =  LoadImg("./gfx/caaat.png");
5828:     suicidemouse[1] =  LoadImg("./gfx/caaat_ns.png");
5829:     creepysfx = oslLoadSoundFile("./sfx/caaat.wav");
5830:     suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
5831:     suicidemouse[1] = oslSetImageRotCenter(suicidemouse[1]);
5832: 
5833:     al_set_sample_instance_position(creepysfx.instance, 16);
5834:     oslPlaySound(creepysfx);
5835: 
5836:     frame=0;
5837: 
5838:     while (al_get_sample_instance_position(creepysfx.instance))
5839:     {
5840:       oslStartDrawing();
5841:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5842: 
5843:       if (frame<150)
5844:       {
5845:         spr_draw(suicidemouse[1],240,138);
5846:       }
5847:       else
5848:       {
5849:         spr_draw(suicidemouse[0],240,138);
5850:       }
5851: 
5852:       oslEndDrawing();
5853:       oslSwapBuffers();
5854:       oslWaitVSync();
5855:       frame++;
5856:     }
5857:     oslDeleteSound(creepysfx);
5858:     oslDeleteImage(suicidemouse[0]);
5859:     oslDeleteImage(suicidemouse[1]);
5860:   break;
5861: 
5862:   case 19:
5863:     for (i=0; i<9; i++)
5864:         {
5865:           sprintf(buffer,"./gfx/pona0%d.png",i);
5866:           suicidemouse[i]=LoadImg(buffer);
5867: 
5868:           suicidemouse[i].stretchX = 480;
5869:           suicidemouse[i].stretchY = 272;
5870:           suicidemouse[i]=oslSetImageRotCenter(suicidemouse[i]);
5871:         }
5872: 
5873:     frame=0;
5874: 
5875:     creepysfx = oslLoadSoundFile("./sfx/pona.wav");
5876:     oslPlaySound(creepysfx);
5877: 
5878:     i=0;
5879: 
5880:     while (frame < 333)
5881:     {
5882: 
5883:       oslStartDrawing();
5884:         oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5885: 
5886:       if (frame < 110)
5887:         {
5888:           spr_draw(suicidemouse[frame/14],240,138);
5889:         }
5890: 
5891:         if ((frame >= 110) && (frame <= 140))
5892:         {
5893:           spr_draw(suicidemouse[8],240,138);
5894:         }
5895: 
5896:         oslEndDrawing();
5897:       //frame_debug((int)oslGetRamStatus().maxAvailable);
5898:         oslSwapBuffers();
5899: 
5900:       oslWaitVSync();
5901:         frame++;
5902:     }
5903: 
5904:     oslDeleteSound(creepysfx);
5905:     for (i=0; i<9; i++)
5906:     {
5907:       oslDeleteImage(suicidemouse[i]);
5908:     }
5909:     break;
5910: 
5911:   case 20:
5912:     suicidemouse[0] =  LoadImg("./gfx/pookey1.png");
5913:     suicidemouse[1] =  LoadImg("./gfx/pookey2.png");
5914:     creepysfx = oslLoadSoundFile("./sfx/pookeymon.wav");
5915:     suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
5916:     suicidemouse[1] = oslSetImageRotCenter(suicidemouse[1]);
5917: 
5918:     oslPlaySound(creepysfx);
5919: 
5920:     frame=0;
5921: 
5922:     while(frame < 550)
5923:     {
5924:       oslStartDrawing();
5925:         oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5926: 
5927:         if ((frame >= 375) && (frame < 389)) spr_draw(suicidemouse[0], 240, 136);
5928:         if ((frame >= 389) && (frame < 401)) spr_draw(suicidemouse[1], 240, 136);
5929: 
5930:         oslEndDrawing();
5931:         oslSwapBuffers();
5932: 
5933:       oslWaitVSync();
5934: 
5935:       frame++;
5936:     }
5937: 
5938:     oslDeleteImage(suicidemouse[0]);
5939:     oslDeleteImage(suicidemouse[1]);
5940:     oslDeleteSound(creepysfx);
5941:     break;
5942: 
5943:   case 21:
5944:     suicidemouse[0] =  LoadImg("./gfx/gfx-0825.png");
5945:     creepysfx = oslLoadSoundFile("./sfx/sfx-0030.wav");
5946:     suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
5947: 
5948:     oslPlaySound(creepysfx);
5949: 
5950:     frame=0;
5951: 
5952:     suicidemouse[0].stretchX = i = 396;
5953:     suicidemouse[0].stretchY = (int)(1.68*suicidemouse[0].stretchX);
5954: 
5955:     while(frame < 480)
5956:     {
5957:       oslStartDrawing();
5958:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
5959: 
5960: 
5961:       i=suicidemouse[0].stretchX;
5962: 
5963:       if ((suicidemouse[0].stretchX) > -72)
5964:       {
5965: 
5966:         if (suicidemouse[0].stretchX >= 0)
5967:         {
5968:           suicidemouse[0].trans=255;
5969:           spr_draw(suicidemouse[0], 240, 136);
5970:         }
5971: 
5972:         if (suicidemouse[0].stretchX >= -36)
5973:         {
5974:           suicidemouse[0].stretchX += 36;
5975:           suicidemouse[0].stretchY = (int)(1.68* (suicidemouse[0].stretchX));
5976: 
5977: 
5978:           suicidemouse[0].trans=128;
5979:           spr_draw(suicidemouse[0], 240, 136);
5980:         }
5981: 
5982: 
5983:         suicidemouse[0].stretchX += ((suicidemouse[0].stretchX < -36)?72:36);
5984:         suicidemouse[0].stretchY = (int)(1.68* (suicidemouse[0].stretchX));
5985: 
5986:         suicidemouse[0].trans=64;
5987:         spr_draw(suicidemouse[0], 240, 136);
5988:       }
5989: 
5990:       suicidemouse[0].stretchX = i;
5991: 
5992:       if (!(frame%5))
5993:       {
5994:         suicidemouse[0].stretchX = i - 18;
5995:       }
5996: 
5997:       suicidemouse[0].stretchY = (int)(1.68*suicidemouse[0].stretchX);
5998: 
5999:       oslEndDrawing();
6000:       oslSwapBuffers();
6001:       oslWaitVSync();
6002:       frame++;
6003:     }
6004: 
6005:     oslDeleteImage(suicidemouse[0]);
6006:     oslDeleteSound(creepysfx);
6007:     break;
6008: 
6009:   case 22:
6010:     suicidemouse[0] =  LoadImg("./gfx/lavender.png");
6011:     creepysfx = oslLoadSoundFile("./sfx/lavender.wav");
6012: 
6013:     temp_gfx = oslSetImageTileSize(suicidemouse[0],0,0,48,48);
6014:     temp_gfx = oslSetImageRotCenter(temp_gfx);
6015:     oslPlaySound(creepysfx);
6016: 
6017:     frame=0;
6018: 
6019:     while(frame < 420)
6020:     {
6021:       oslStartDrawing();
6022:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
6023: 
6024:       if (frame <= 341)
6025:       {
6026:         temp_gfx.trans=random(128);
6027:         temp_gfx.stretchX = temp_gfx.stretchY = 96;
6028:       }
6029:       else
6030:       {
6031:         temp_gfx.trans=255;
6032:         temp_gfx = oslSetImageTileSize(suicidemouse[0],48,0,48,48);
6033:         temp_gfx = oslSetImageRotCenter(temp_gfx);
6034:         temp_gfx.stretchX = temp_gfx.stretchY = 640;
6035:       }
6036: 
6037:       if (frame < 395) spr_draw(temp_gfx, 240+((frame>341)?0:random(4)), 136+((frame>341)?104:random(4)));
6038: 
6039:       oslEndDrawing();
6040:       oslSwapBuffers();
6041:       oslWaitVSync();
6042:       frame++;
6043:     }
6044: 
6045: 
6046:     oslDeleteImage(suicidemouse[0]);
6047:     oslDeleteSound(creepysfx);
6048:     break;
6049: 
6050:   case 23:
6051:     frame=0;
6052:     suicidemouse[0] =  LoadImg("./gfx/c64.png");
6053:     suicidemouse[1] =  LoadImg("./gfx/c64-ar.png");
6054: 
6055:     while (frame < 360)
6056:     {
6057:       oslStartDrawing();
6058:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
6059:       oslDrawFillRect(60, 0, 420, 272, _RGB(165,165,255));
6060:       oslDrawFillRect(80, 46, 400, 226, _RGB(66,66,231));
6061: 
6062:       if (frame < 150)
6063:       {
6064:         for(i=0; i<1000; i++)
6065:         {
6066:            spr_draw(suicidemouse[1], (i%40)*8+80, ((int)(i/40))*8+38);
6067:         }
6068:       }
6069:       else
6070:       {
6071:          spr_draw(suicidemouse[0], 80, 46);
6072:          if ((frame%60) < 30)
6073:          {
6074:            oslDrawFillRect(80, 94, 88, 102, _RGB(165,165,255));
6075:          }
6076:       }
6077:       oslEndDrawing();
6078:       oslSwapBuffers();
6079:       oslWaitVSync();
6080:       frame++;
6081:     }
6082:     oslDeleteImage(suicidemouse[0]);
6083:     oslDeleteImage(suicidemouse[1]);
6084:     break;
6085: 
6086:   case 24:
6087:     suicidemouse[0] =  LoadImg("./gfx/sncell.png");
6088:     suicidemouse[1] =  LoadImg("./gfx/sncpnt.png");
6089:     suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
6090:     creepysfx = oslLoadSoundFile("./sfx/nuls.wav");
6091: 
6092:     al_set_sample_instance_position(creepysfx.instance, 16);
6093:     oslPlaySound(creepysfx);
6094: 
6095:     frame=0;
6096: 
6097:     while (al_get_sample_instance_position(creepysfx.instance))
6098:     {
6099:       oslStartDrawing();
6100:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
6101:       spr_draw(suicidemouse[0], 236+random(7), 132+random(7));
6102:       spr_draw(suicidemouse[1], 224+random(7), 132+random(7));
6103:       spr_draw(suicidemouse[1], 246+random(7), 132+random(7));
6104:       oslEndDrawing();
6105:       oslSwapBuffers();
6106:       oslWaitVSync();
6107:     }
6108: 
6109:     oslStartDrawing();
6110:     oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
6111:     oslEndDrawing();
6112:     oslSwapBuffers();
6113:     fadeout();
6114: 
6115:     oslDeleteImage(suicidemouse[0]);
6116:     oslDeleteImage(suicidemouse[1]);
6117:     oslDeleteSound(creepysfx);
6118: 
6119:     cls();
6120:     break;
6121:   }
6122: 
6123: 
6124:   fadeout();
6125: }
6126: 
6127: void ben()
6128: {
6129:   OSL_IMAGE noise[9];
6130:   ALLEGRO_BITMAP *ben_sub;
6131:   OSL_SOUND ben_mzx =  oslLoadSoundFile("./sfx/ben.wav");
6132:   char buffer[20];
6133:   int i, j, frame=0, trans;
6134: 
6135:   noise[0]=LoadImg("./gfx/ben.png");
6136: 
6137:   for (i=1; i<9; i++)
6138:   {
6139:     sprintf(buffer,"./gfx/gfx-0%d.png",i+661);
6140:     noise[i]=LoadImg(buffer);
6141:     noise[i].stretchX = 480;
6142:     noise[i].stretchY = 272;
6143:   }
6144: 
6145:   oslPlaySound(ben_mzx);
6146: 
6147:   while(frame<704)
6148:   {
6149:     oslStartDrawing();
6150:     oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
6151:     spr_draw(noise[(frame%8)+1],0,0);
6152: 
6153:     if (frame<192)
6154:     {
6155:       trans=frame;
6156:     }
6157:     else if (frame>512) trans=704-frame;
6158:     else trans=192;
6159: 
6160:     i=0;
6161:     while(i<272)
6162:     {
6163:       j=random(27)+13;
6164:       ben_sub=al_create_sub_bitmap(noise[0].asset,0,i,425,i+j);
6165:       al_draw_tinted_bitmap(ben_sub, al_map_rgba(255, 255, 255, trans), random(55), i, 0);
6166:       i += j;
6167:     }
6168: 
6169:     oslEndDrawing();
6170:     oslSwapBuffers();
6171:     oslWaitVSync();
6172:     frame++;
6173:   }
6174: 
6175:   for(i=0; i<9; i++)
6176:   {
6177:       oslDeleteImage(noise[i]);
6178:   }
6179:    
6180:   oslDeleteSound(ben_mzx);
6181: 
6182:   fadeout();
6183: }
6184: 
6185: void rndsft()
6186: {
6187:   int frame=-3, i=0, j=0, k=0, l=0, m=0, n=0;
6188:   OSL_IMAGE rndsft, px;
6189:   ALLEGRO_BITMAP *rndsft_sub;
6190:   OSL_MOD rndtheme;
6191: 
6192:   rndsft = LoadImg("./gfx/rndsft.png");
6193:   px = LoadImg("./gfx/pixel.png");
6194:   rndtheme = oslLoadSoundFileMOD("./muzaxx/rndsft.xm");
6195: 
6196: 
6197:   rndsft=oslSetImageRotCenter(rndsft);
6198: 
6199:   oslSetSoundLoopMOD(rndtheme, 0);
6200:   oslPlaySoundMOD(rndtheme);  
6201: 
6202:   while(frame<470)
6203:   {
6204: 
6205: 
6206:     oslStartDrawing();
6207:     al_clear_to_color(_RGB(0, 0, 0));
6208: 
6209:     if (frame >= 161)
6210:     {
6211:       if (frame-160 < 35) rndsft_sub=al_create_sub_bitmap(rndsft.asset, 0, 0, 282, frame-160); else rndsft_sub=al_create_sub_bitmap(rndsft.asset, 0, 0, 282, frame-160);
6212:       al_draw_bitmap(rndsft_sub, (480-rndsft.sizeX)/2, (272-rndsft.sizeY)/2, 0);
6213:     }
6214: 
6215:     if ((frame >= 200) && (frame <= 220))
6216:     {
6217:       if (frame==200) i=random(360);
6218: 
6219:       if (!(frame%2))
6220:       {
6221:         oslDrawFillRect(0, 0, 480, 272, _RGB(0,0,0));
6222: 
6223:         for (j=0; j<13; j++)
6224:         {
6225:           oslDrawFillRect(i+j*16, 60, i+j*16+8, 272, _RGB(255,127,0));
6226:         }
6227:       }
6228:     }
6229: 
6230:     if ((frame >= 259) && (frame <= 295))
6231:     {
6232: 
6233:       if (frame == 259)
6234:       {
6235:         i=random(32)+24;
6236:         k=random(9)+6;
6237:         oslSetTextColor(_RGB(0, 224, 0));
6238:         m=random(127);
6239:         n=random(44);
6240:       }
6241: 
6242:       for(j=0; j<k; j++)
6243:       {
6244:         for (l=0; l<i; l++)
6245:         {
6246:           oslDrawString(m+l*6, n+j*12, "@");
6247:         }
6248:       }
6249:     }
6250: 
6251:     if ((frame >= 336) && (frame <= 345))
6252:     {
6253:       oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
6254:       spr_draw(rndsft,random(480),random(272));
6255:     }
6256: 
6257:     if (frame >= 369)
6258:     {
6259: 
6260:         for(i=0; i<48; i++)
6261:         {
6262:           for (j=0; j<17;  j++)
6263:           {
6264:             al_draw_pixel(i*10, j*16, _RGB(random(256), random(256), random(256)));
6265:           }
6266:         }
6267: 
6268:       if ((frame == 369) || (!(frame%4))) k=random(360);
6269:       oslDrawFillRect(k,0,k+32,272, _RGB(0,254,255));
6270: 
6271: 
6272:     }
6273: 
6274:     oslEndDrawing();
6275:       oslSwapBuffers();
6276:     frame++;
6277:       oslWaitVSync();
6278: 
6279:   }
6280: 
6281:     oslDeleteImage(rndsft);
6282:     oslDeleteImage(px);
6283:   oslStopSoundMOD(rndtheme);
6284:   fadeout();
6285: }
6286: 
6287: int warning_onepilepsy()
6288: {
6289:   OSL_IMAGE warning = LoadImg("./gfx/warning.png");
6290:   OSL_MOD theme = oslLoadSoundFileMOD("./muzaxx/giygas.xm");
6291: 
6292:   int i, w, frame=0, quit=0, red=0, accept=0;
6293:   const char *text[8] = {"This game contains flashing patterns that may cause","epileptic seizures when players attempt to see them.","It also contains strange pictures that may cause some players","to have brief but intense adrenaline surges in their body."," ","Consult a doctor if you experience","unusual symptoms while playing games!","Press SPACE to play or ESC to quit"};
6294: 
6295:   warning.stretchX = 360;
6296: 
6297:   warning=oslSetImageRotCenter(warning);
6298:  
6299:   oslPlaySoundMOD(theme);
6300: 
6301:   while (!quit)
6302:   {
6303:     oslStartDrawing();
6304:       al_clear_to_color(_RGB(0, 0, 0));
6305: 
6306: 
6307:   for (i=0; i<7; i++)
6308:   {
6309:     if (i<5) oslSetTextColor(_RGB(255, 255, 255));
6310:     if (i>4) oslSetTextColor(_RGB(255, 255, 0));
6311:     w = oslGetStringWidth(text[i]);
6312:     oslDrawString((480 - w)/2, 92+i*20, text[i]);
6313:   }
6314: 
6315:   warning.angle = 7*sin((0.25*frame)/3.14);
6316: 
6317:   spr_draw(warning, 240, 32);
6318: 
6319:   oslSetTextColor(_RGB(red, 0, 0));
6320:   w = oslGetStringWidth(text[7]);
6321:   oslDrawString((480 - w)/2, 256, text[7]);
6322:   red -= 3;
6323:   if (red < 0) red=255;
6324: 
6325:   al_get_keyboard_state(&kbdstate);
6326:   if (al_key_down(&kbdstate, ALLEGRO_KEY_SPACE) || al_key_down(&kbdstate, ALLEGRO_KEY_ENTER))
6327:       {
6328:         accept=1;
6329:         quit=1;
6330:       }
6331:     else if (al_key_down(&kbdstate, ALLEGRO_KEY_ESCAPE))
6332:       {
6333:         accept=0;
6334:         quit=1;
6335:       }
6336: 
6337:   oslEndDrawing();
6338:   oslSwapBuffers();
6339:     oslWaitVSync();
6340:     frame++;
6341:   }
6342: 
6343:   //oslFlushKey();
6344: 
6345:   //oslSetBilinearFilter(0);
6346:     fadeout();
6347:     oslStopSoundMOD(theme);
6348:     oslDeleteSoundMOD(theme);
6349: 
6350:     return accept;
6351: }
6352: 
6353: int main()
6354: {
6355:     short i, a, tx=0, ty=0, gt=0, ch=0, chd=1, mort=0, vies=2, round=1, f=0, nbp=1, fs=0, quit=0, rebound=0;
6356:     int q=strlen("v2.00"), scrw, scrh, h=100;
6357:   const char *items[4] = {"CHALLENGE THE PIE", "DIFFICULTY:", "WHO DID THIS MESS?", "FLEE TO WINDOWS LIKE A COWARD"};
6358:   const char *diffs[3] = {"WUSS", "MANLY", "HELL"};
6359:   OSL_IMAGE hand;
6360:     OSL_IMAGE title;
6361:     OSL_IMAGE alice;
6362:   OSL_SOUND crack;
6363:   OSL_SOUND theme;
6364:  
6365:    srand(time(NULL));
6366: 
6367:    if(!al_init()) {
6368:       fprintf(stderr, "failed to initialize allegro!\n");
6369:     exit(-1);
6370:    }
6371:  
6372:    al_set_new_display_option(ALLEGRO_VSYNC, 1, ALLEGRO_REQUIRE);
6373:    al_set_new_display_option(ALLEGRO_SINGLE_BUFFER, 1, ALLEGRO_REQUIRE);
6374:    al_set_new_display_option(ALLEGRO_RENDER_METHOD, 0, ALLEGRO_REQUIRE);
6375:    al_set_new_display_flags(ALLEGRO_FULLSCREEN);
6376: 
6377:    al_init_image_addon();
6378:    al_init_primitives_addon();
6379:    al_init_ttf_addon();
6380:    al_install_audio();
6381:    al_init_acodec_addon();
6382:    al_install_keyboard();
6383: 
6384:    timer=al_create_timer(1.0 / 60);
6385:    event_queue = al_create_event_queue();
6386: 
6387:    //al_reserve_samples(16);
6388:    voice = al_create_voice(44100, ALLEGRO_AUDIO_DEPTH_INT16, ALLEGRO_CHANNEL_CONF_2);
6389:    mixer = al_create_mixer(44100, ALLEGRO_AUDIO_DEPTH_FLOAT32, ALLEGRO_CHANNEL_CONF_2);
6390:  
6391:     al_attach_mixer_to_voice(mixer, voice);
6392: 
6393:   al_set_new_bitmap_flags(ALLEGRO_NO_PREMULTIPLIED_ALPHA);
6394:   al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA);
6395:   al_set_new_display_refresh_rate(60);
6396: 
6397:    freesans = al_load_ttf_font("./fonts/Nouveau_IBM.ttf", 11, 0); //ALLEGRO_TTF_MONOCHROME);
6398: 
6399:    court=LoadImg("./gfx/court_hell.png");
6400:    benj=LoadImg("./gfx/boktai.png");
6401: 
6402:    crack = oslLoadSoundFile("./sfx/sfx-0026.wav");
6403:    theme = oslLoadSoundFile("./sfx/theme.wav");
6404: 
6405:    ratio=getScreenRatio();
6406: 
6407:    if (ratio < 160)
6408:    {
6409:      scrw=800;
6410:      scrh=600;
6411:    }
6412:    else if (ratio > 160)
6413:    {
6414:      scrw=1280;
6415:      scrh=720;
6416:    }
6417:    else if (ratio == 160)
6418:    {
6419:      scrw=1280;
6420:      scrh=800;
6421:    }
6422: 
6423:    display = al_create_display(scrw, scrh);
6424:    al_hide_mouse_cursor(display);
6425: 
6426:    psp_screen = al_create_bitmap(480, 272);
6427: 
6428:  
6429:   hand = LoadImg("./gfx/hand.png");
6430:   title = LoadImg("./gfx/title.png");
6431:   alice = LoadImg("./gfx/alice.png");
6432: 
6433:   for (a=0; a<90; a++)
6434:   {
6435:     oslStartDrawing();
6436:     oslDrawFillRect(0,0,480,272, _RGB(0, 0, 0));
6437:     oslEndDrawing();
6438:     oslSwapBuffers();
6439:     oslWaitVSync();
6440:   }
6441:    
6442:    a=warning_onepilepsy();
6443: 
6444:    
6445: 
6446:    if (a)
6447:    {
6448: 
6449:      rndsft();
6450: 
6451:       while ((ch != 137) && (!quit))
6452:     {
6453:       oslStartDrawing();
6454:       if (!f) oslPlaySound(theme);
6455: 
6456:       if (!(f%6))
6457:       {
6458:         tx=random(16);
6459:         ty=random(32);
6460:       }
6461: 
6462:       chd=chd%3;
6463: 
6464:       oslSetTextColor(_RGBA(255, 255, 255, gt));
6465:       oslDrawFillRect(0,0,480,272, _RGB(0, 0, 0));
6466: 
6467:       title=oslSetAlpha(title, gt);
6468:       spr_draw(title, tx, ty);
6469: 
6470:       title=oslSetAlpha(title, gt/2);
6471:       spr_draw(title, random(16), random(32));
6472: 
6473:       title=oslSetAlpha(title, gt/4);
6474:       spr_draw(title, random(16), random(32));
6475: 
6476:       alice=oslSetAlpha(alice, gt);
6477:       spr_draw(alice, 299, 0);
6478: 
6479:       oslDrawString(480-(q*6), 260, "v2.00");
6480: 
6481:       for (i=0; i<4; i++)
6482:       {
6483:         oslDrawString(48, 182+i*20, items[i]);
6484:         if ((!i) && (nbp==2))  oslDrawString(162, 182, "(AGAINST A MORTAL)");
6485:       }
6486: 
6487:       hand=oslSetAlpha(hand,gt);
6488:       spr_draw(hand, 8+4*sin(0.0625*f), 186+ch*20);
6489: 
6490:       oslSetTextColor(_RGBA(255, ((chd<2)?(255/(chd+1)):0), 0, gt));
6491:       oslDrawString(120, 202, diffs[chd]);
6492: 
6493: 
6494: 
6495:       if (gt < 255) gt++;
6496: 
6497:       al_get_keyboard_state(&kbdstate);
6498: 
6499:       if ((!al_key_down(&kbdstate, ALLEGRO_KEY_UP) && !al_key_down(&kbdstate, ALLEGRO_KEY_DOWN) &&
6500:         !al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT) && !al_key_down(&kbdstate, ALLEGRO_KEY_LEFT) &&
6501:         !al_key_down(&kbdstate, ALLEGRO_KEY_ENTER))) rebound=0;
6502: 
6503:       if (!rebound)
6504:       {
6505:         if (al_key_down(&kbdstate, ALLEGRO_KEY_UP)) ch--;
6506:         if (al_key_down(&kbdstate, ALLEGRO_KEY_DOWN)) ch++;
6507:         if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (ch==1)) chd++;
6508: 
6509:         if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (ch==0) && (nbp==1)) nbp++;
6510:         if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (ch==0) && (nbp==2)) nbp--;
6511: 
6512:         if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (ch==1))
6513:           {
6514:             chd--;
6515:             if (chd < 0) chd=2;
6516:           }
6517:         if ((al_key_down(&kbdstate, ALLEGRO_KEY_UP) || al_key_down(&kbdstate, ALLEGRO_KEY_DOWN) ||
6518:         al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT) || al_key_down(&kbdstate, ALLEGRO_KEY_LEFT))) rebound=1;
6519: 
6520:       }
6521: 
6522:      
6523:       if (ch < 0) ch += 4;
6524:       else if (ch > 3) ch -= 4;
6525:          
6526:       f++;
6527:      
6528:       if (al_key_down(&kbdstate, ALLEGRO_KEY_ESCAPE))
6529:       {
6530:         ch=137;
6531:         quit=1;
6532:       }
6533: 
6534:       if (al_key_down(&kbdstate, ALLEGRO_KEY_C))
6535:       {
6536:         oslStopSound(theme);
6537:         fadeout();
6538:         for (i=0; i<25; i++) creepypasta(i);
6539:         oslPlaySound(theme);
6540:       }
6541: 
6542:       if ((al_key_down(&kbdstate, ALLEGRO_KEY_ENTER)) && (!rebound) && (!quit))
6543:       {
6544:         rebound=1;
6545:        
6546:         if (!(ch%2)) fadeout();
6547:          
6548:           switch(ch)
6549:           {
6550: 
6551:             case 0:
6552:             {
6553:               vies=2;
6554:               mort=0;
6555:               round=1;
6556:               f=-1;
6557: 
6558:               oslStopSound(theme);
6559: 
6560:               while ((vies > 0) && (round < 3))
6561:               {
6562:                 mort=game(round, chd+1, nbp);
6563: 
6564:                 counter=0;
6565:                 if ((!mort) || (mort==2))
6566:                 {
6567:                   i=random(25);
6568: 
6569:                   if (!mort)
6570:                   {
6571:                     oslPlaySound(crack);
6572: 
6573:                       for (a=0; a<15; a++)
6574:                       {
6575:                         oslStartDrawing();
6576:                         oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
6577:                         oslEndDrawing();
6578:                         oslSwapBuffers();
6579:                         oslWaitVSync();
6580:                       }
6581:                     creepypasta(i);
6582:                     vies--;
6583:                   }
6584:                   else
6585:                   {
6586:                     vies=-1;
6587:                   }
6588:                 }
6589:                 else
6590:                 {
6591:                   fadeout();
6592:                   if (round==1) ben();
6593:                   round++;
6594:                 }
6595:                 if ((vies > 0) && (round < 3))
6596:                 {
6597:                   taunt(random(12));
6598:                 }
6599:               }
6600: 
6601:               break;
6602:             }
6603: 
6604:             case 1:
6605:             {
6606:               chd++;
6607:               break;
6608:             }
6609: 
6610:             case 2:
6611:             {
6612:               f=-1;
6613:               oslStopSound(theme);
6614: 
6615: 
6616:               h=100;
6617:              
6618:               credz();
6619: 
6620:               /*if (DEBUG)
6621:               {
6622:                 sonicexe(chd+1);
6623:               }
6624:               else
6625:               {
6626:                 credz();
6627:               }*/
6628:               break;
6629:             }
6630: 
6631:             case 3:
6632:             {
6633:               ch=137;
6634:               quit=1;
6635:               break;
6636:             }
6637:           }
6638:       }
6639:       oslEndDrawing();
6640:       oslSwapBuffers();
6641:       oslWaitVSync();
6642:     }
6643:    }
6644: 
6645:    fadeout();
6646:    al_show_mouse_cursor(display);
6647:    al_destroy_display(display);
6648:  
6649:    return 0;
6650: }