#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
#include <stdio.h>
#include <allegro5/allegro.h>
#include <allegro5/allegro_font.h>
#include <allegro5/allegro_ttf.h>
#include <allegro5/allegro_image.h>
#include <allegro5/allegro_audio.h>
#include <allegro5/allegro_acodec.h>
#include <allegro5/allegro_primitives.h>
#include <math.h>
#define _RGB al_map_rgb
#define _RGBA al_map_rgba
#define oslSwapBuffers al_flip_display
#define oslWaitVSync al_wait_for_vsync
#define oslDeleteSound al_destroy_sample
#define oslDrawFillRect al_draw_filled_rectangle
#define STALLMAN Stupid_Toe_Cheese_Eater_Hippie
#define GPL Shitty_Confusing_License
#define BSD3CLAUSE Actual_License_Of_This_Program
#define ESPAC_HORIZ 64
#define HAUT_FIELD 138
#define GRAVIT -0.05
typedef struct {
int rx;
int ry;
} RESOLUTION;
typedef struct {
ALLEGRO_SAMPLE *ref;
ALLEGRO_SAMPLE_INSTANCE *instance;
} OSL_SOUND;
typedef struct {
ALLEGRO_AUDIO_STREAM *stream;
} OSL_MOD;
typedef struct {
ALLEGRO_BITMAP *asset;
float sizeX;
float sizeY;
float x;
float y;
float stretchX;
float stretchY;
float centerX;
float centerY;
float angle;
int R;
int G;
int B;
int trans;
} OSL_IMAGE;
struct ball {
float speed_h;
float speed_v;
float speed_z;
int angle;
int x2d;
int y2d;
int z3d;
short poisoned;
};
struct pie_entity {
int pie_hp;
int pie_facemode; //mode sarko-JLM-autre?
int pie_direction;
int pie_x;
int pie_y;
};
OSL_IMAGE court, benj;
ALLEGRO_FONT *freesans = NULL;
ALLEGRO_COLOR current_col;
ALLEGRO_EVENT_QUEUE *event_queue;
ALLEGRO_DISPLAY *display = NULL;
ALLEGRO_SAMPLE_ID *id[16];
ALLEGRO_KEYBOARD_STATE kbdstate;
ALLEGRO_BITMAP *psp_screen = NULL;
ALLEGRO_VOICE *voice;
ALLEGRO_MIXER *mixer;
ALLEGRO_TIMER *timer = NULL;
ALLEGRO_EVENT_QUEUE *event_queue = NULL;
short redraw = 1;
unsigned long int counter=0;
unsigned int ratio=0;
const float FPS = 60;
OSL_IMAGE oslSetImageRotCenter(OSL_IMAGE osl_img)
{
OSL_IMAGE dis = osl_img;
dis.centerX = dis.sizeX/2;
dis.centerY = dis.sizeY/2;
return dis;
}
OSL_IMAGE oslSetImageTileSize(OSL_IMAGE img_param, int sx, int sy, int w, int h)
{
OSL_IMAGE dis;
dis = img_param;
dis.asset = al_create_sub_bitmap(dis.asset, sx, sy, w, h);
dis.sizeX = w;
dis.sizeY = h;
dis.stretchX = w;
dis.stretchY = h;
return dis;
}
OSL_IMAGE LoadImg(const char *filename)
{
OSL_IMAGE dis;
dis.asset = al_load_bitmap(filename);
dis.sizeX = al_get_bitmap_width(dis.asset);
dis.sizeY = al_get_bitmap_height(dis.asset);
dis.x = 0;
dis.y = 0;
dis.stretchX = dis.sizeX;
dis.stretchY = dis.sizeY;
dis.centerX = 0;
dis.centerY = 0;
dis.angle = 0;
dis.R=255;
dis.G=255;
dis.B=255;
dis.trans=255;
return dis;
}
OSL_IMAGE oslCreateImage(int w, int h)
{
OSL_IMAGE dis;
dis.asset = al_create_bitmap(w, h);
dis.sizeX = al_get_bitmap_width(dis.asset);
dis.sizeY = al_get_bitmap_height(dis.asset);
dis.x = 0;
dis.y = 0;
dis.stretchX = dis.sizeX;
dis.stretchY = dis.sizeY;
dis.centerX = 0;
dis.centerY = 0;
dis.angle = 0;
dis.R=255;
dis.G=255;
dis.B=255;
dis.trans=255;
return dis;
}
int random(int k)
{
return rand()%k;
}
int swirl_collide(int px, int py, int gudule, int mgsy)
{
if ((px-(gudule))*(px-(gudule))+(py-(mgsy))*(py-(mgsy)) <= 512) return 1; else return 0;
}
struct ball initball()
{
struct ball abadgh;
abadgh.x2d=random(320)+80; //x
abadgh.y2d=170; //y
abadgh.speed_v=-1; //vy
abadgh.speed_h=0; //vx
abadgh.speed_z=2; //vz
abadgh.angle=0; //
abadgh.z3d=2; //z
abadgh.poisoned=0;
return abadgh;
}
struct pie_entity initpie()
{
struct pie_entity abadgh;
abadgh.pie_facemode=0;
abadgh.pie_direction=0;
abadgh.pie_x=128;
abadgh.pie_y=136;
return abadgh;
}
struct ball apply_impulse(struct ball ball_arg, float v, float v2, float angle)
{
struct ball dis = ball_arg;
dis.speed_h = v;
dis.speed_v = -v2;
return dis;
}
int getScreenRatio()
{
ALLEGRO_MONITOR_INFO proutzob;
RESOLUTION res;
int a,b;
al_get_monitor_info(0, &proutzob);
a=(proutzob).x2 - (proutzob).x1 + 1;
b=(proutzob).y2 - (proutzob).y1 + 1;
res.rx = a;
res.ry = b;
return (a*100)/b;
}
OSL_IMAGE oslDeleteImage(OSL_IMAGE image)
{
OSL_IMAGE dis = image;
al_destroy_bitmap(dis.asset);
return dis;
}
void oslSetTextColor(ALLEGRO_COLOR col)
{
current_col = col;
}
void oslDrawString(float x, float y, const char *text)
{
al_draw_text(freesans, current_col, x, y, 0, text);
}
void spr_draw(OSL_IMAGE image, float x, float y)
{
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);
image.x = x;
image.y = y;
}
OSL_MOD oslLoadSoundFileMOD(const char *filename)
{
OSL_MOD dis;
dis.stream = al_load_audio_stream(filename, 10, 1024);
al_attach_audio_stream_to_mixer(dis.stream, mixer);
return dis;
}
void oslSetSoundLoopMOD(OSL_MOD sound, short yesno)
{
if (yesno == 1) al_set_audio_stream_playmode(sound.stream,ALLEGRO_PLAYMODE_LOOP); else al_set_audio_stream_playmode(sound.stream, ALLEGRO_PLAYMODE_ONCE);
}
void oslPlaySoundMOD(OSL_MOD sound)
{
al_set_audio_stream_playmode(sound.stream, ALLEGRO_PLAYMODE_LOOP);
al_set_audio_stream_playing(sound.stream, true);
}
void oslStopSoundMOD(OSL_MOD sound)
{
al_set_audio_stream_playing(sound.stream, false);
}
void oslDeleteSoundMOD(OSL_MOD sound)
{
oslStopSoundMOD(sound);
al_destroy_audio_stream(sound.stream);
}
OSL_SOUND oslLoadSoundFile(const char *filename)
{
OSL_SOUND dis;
dis.ref = al_load_sample(filename);
dis.instance = al_create_sample_instance(dis.ref);
al_set_sample_instance_playmode(dis.instance, ALLEGRO_PLAYMODE_ONCE);
al_attach_sample_instance_to_mixer(dis.instance, mixer);
return dis;
}
void oslSetSoundLoop(OSL_SOUND sound, short yesno)
{
if (yesno == 1) al_set_sample_instance_playmode(sound.instance,ALLEGRO_PLAYMODE_LOOP); else al_set_sample_instance_playmode(sound.instance,ALLEGRO_PLAYMODE_ONCE);
}
void oslPlaySound(OSL_SOUND sound)
{
if (!al_play_sample_instance(sound.instance)) oslDrawString(0, 0, "could not play sound!");
}
void oslStopSound(OSL_SOUND sound)
{
al_stop_sample_instance(sound.instance);
}
void oslDeleteSound(OSL_SOUND sound)
{
oslStopSound(sound);
al_destroy_sample_instance(sound.instance);
}
void oslStartDrawing()
{
al_set_target_bitmap(psp_screen);
}
void oslEndDrawing()
{
al_set_target_bitmap(al_get_backbuffer(display));
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);
}
OSL_IMAGE oslSetAlpha(OSL_IMAGE gfx, int trans_p)
{
OSL_IMAGE dis = gfx;
dis.trans = trans_p;
return dis;
}
OSL_IMAGE oslSetTint(OSL_IMAGE img_param, int pR, int pG, int pB)
{
OSL_IMAGE dis;
dis = img_param;
dis.R = pR;
dis.G = pG;
dis.B = pB;
return dis;
}
int oslGetStringWidth(const char *text)
{
int j;
j=al_get_text_width(freesans, text);
return j;
}
void cls()
{
al_set_target_bitmap(al_get_backbuffer(display));
oslDrawFillRect(0,0, al_get_display_width(display), al_get_display_height(display), _RGB(0, 0, 0));
oslSwapBuffers();
al_set_target_bitmap(psp_screen);
}
void fadeout()
{
int i;
al_set_target_bitmap(al_get_backbuffer(display));
for (i=0; i<80; i++)
{
oslDrawFillRect(0,0, al_get_display_width(display), al_get_display_height(display), _RGBA(0, 0, 0, i));
oslSwapBuffers();
oslWaitVSync();
}
al_set_target_bitmap(psp_screen);
}
void draw_benj(OSL_IMAGE benj, int px, int py, short shielded, OSL_IMAGE shield)
{
float court_zoom = 0.00192*(py+32) + 0.562;
shield.stretchX = (int)(48*(float)court_zoom);
shield.stretchY = (int)(48*(float)court_zoom);
if ((benj.angle) == -90)
{
spr_draw(benj, px-16, py+88);
}
else if ((benj.angle) == 90)
{
spr_draw(benj, px+64, py+32);
}
else if ((benj.angle) == 0) spr_draw(benj, px, py);
if (shielded)
{
shield.trans=128;
spr_draw(shield, px+4, py+16);
}
}
void amigatext(const char *arg, int x, int y, OSL_IMAGE amigafont, int width, int height)
{
int i, l=strlen(arg), tx=x, placex=(amigafont.sizeX)/width;
OSL_IMAGE singlechar;
for(i=0; i<l; i++)
{
if (arg[i] <= 'Z')
{
singlechar=oslSetImageTileSize(amigafont, ((arg[i]-32)%placex)*width, ((arg[i]-32)/placex)*height, width, height);
spr_draw(singlechar, tx, y);
}
tx += width;
}
}
void credz()
{
int frame=0, a=0, b=480, c=0, d=32, e=136, trans=0, skipframe=0, f=7, i, benj_frame=0;
short quit=0;
char buffer[39];
const char *texts[23] = {"v2.00", "Released on 11/19/2014 for", "","", "(C) 2014 by",
"Code, some GFX and .XM music by", "Ball physics and OSLib by",
"Inspired by", "THE NONE", "Musics ingame ripped from", "EARTHBOUND",
"PC Version powered by", "ALLEGRO V5", "Coding started on", "JULY 2013", "Hours of work", "COUNTLESS",
"Most pictures were found on", "GOOGLE PICS", "Number of defeat animations", "25", " ", " "};
const char *greeted[25] = {"ICEMAN", "PRINCEPS-BONUS", "ODIE_ONE", "MAGEDRAXGONVAMPIRE", "XELTEKSEN", "FEI", "SHYKOOPA77", "XIRIUS_THIR", "GOBOLZ",
"MEZ", "ORION_", "ZEROSQUARE", "BRUNNI", "MATMOOK", "JEFFR3Y", "DR.DEIMOS", "GODZIL", "ARETHIUS", "TENDERNESS", "KEYDEE GAMER BOY",
"OBO", "BARONLESTAT666", "ISOBEL", "LUNA240681", "...AND MANY OTHERS"};
OSL_MOD theme;
OSL_IMAGE aipc;
OSL_IMAGE twt;
OSL_IMAGE gml;
OSL_IMAGE amiga;
OSL_IMAGE giygas;
OSL_IMAGE sonicexe;
OSL_IMAGE flappy_redhill;
OSL_IMAGE _1in24, aa, bb;
OSL_IMAGE temp_gfx, temp_benj;
OSL_IMAGE iamgod[4];
theme = oslLoadSoundFileMOD("./muzaxx/credz.xm");
aipc = LoadImg("./gfx/credz/aipc.png");
twt = LoadImg("./gfx/credz/twitter.png");
gml = LoadImg("./gfx/credz/gmail.png");
amiga = LoadImg("./gfx/credz/amiga.png");
giygas = LoadImg("./gfx/credz/giygas.png");
sonicexe = LoadImg("./gfx/sonicexe.png");
flappy_redhill = LoadImg("./gfx/flappy_redhill.png");
aa = LoadImg("./gfx/pookey1.png");
bb = LoadImg("./gfx/pona08.png");
temp_gfx.asset = al_create_bitmap(480, 272);
for (i=1; i<=4; i++)
{
sprintf(buffer,"./gfx/iamgod%d.png",i);
iamgod[i-1] = LoadImg(buffer);
}
sprintf(buffer,"./gfx/pasta%d.png",random(42)+1);
_1in24 = LoadImg(buffer);
oslStartDrawing();
oslDrawFillRect(0, 0, 480, 272, _RGB(0,0,0));
oslEndDrawing();
oslSwapBuffers();
giygas = oslSetImageRotCenter(giygas);
oslPlaySoundMOD(theme);
while ((frame < 10600) && (!quit))
{
if (!skipframe)
{
oslStartDrawing();
oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
if (frame < 684)
{
oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 64));
for(a=0; a<16; a++)
{
oslDrawFillRect(a*32+c, 0, a*32+c+4, 272, _RGB(94, 126, 255));
if (a<11) oslDrawFillRect(0, a*32+c, 480, a*32+c+4, _RGB(94, 126, 255));
}
temp_benj = oslSetImageTileSize(benj, (benj_frame%8)*32, 48, 32,48);
temp_benj.stretchX = 96;
temp_benj.stretchY = 144;
if (frame < 492) benj.trans=192; else benj.trans=684-frame;
spr_draw(temp_benj, 78, 90);
if (frame < 428) benj.trans=255; else benj.trans=684-frame;
oslSetImageTileSize(aipc, 0, 0, (frame<76)?frame*4:304, 34);
spr_draw(aipc, 10, 10);
if (c > -32) c--; else c=0;
if (frame > 180)
{
/*if (frame < 428)
{
if (d > 255) oslSetAlpha(OSL_FX_DEFAULT, 0); else oslSetAlpha(OSL_FX_ALPHA, d);
}
else
{
oslSetAlpha(OSL_FX_ALPHA, 684-frame);
}*/
oslSetTextColor(_RGB(255, 255, 255));
for (a=0; a<5; a++) oslDrawString(b, 100+a*20, texts[a]);
amigatext("A.C. 2014", b, 132, amiga, 16, 22);
amigatext("240-185", b, 192, amiga, 16, 22);
if (b > 264) b -= 4;
if (d < 255) d += 2;
}
}
if ((frame >= 684) && (frame < 1368))
{
if ((frame==684) || (frame == 1032))
{
d=-12;
trans=0;
}
oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 64));
for(a=0; a<16; a++)
{
oslDrawFillRect(a*32+c, 0, a*32+c+4, 272, _RGB(94, 126, 255));
if (a<11) oslDrawFillRect(0, a*32+c, 480, a*32+c+4, _RGB(94, 126, 255));
}
if (c > -32) c--; else c=0;
//oslSetAlpha(OSL_FX_ALPHA, trans);
if (trans < 252) trans+=4;
if (frame < 1032)
{
b=oslGetStringWidth(texts[5]);
oslDrawString((480-b)/2, d, texts[5]);
amigatext("240-185", 184, d+32, amiga, 16, 22);
}
else
{
b=oslGetStringWidth(texts[6]);
oslDrawString((480-b)/2, d, texts[6]);
amigatext("BRUNNI", 192, d+32, amiga, 16, 22);
}
if (d < 66) d += 2;
}
if ((frame >= 1368) && (frame <= 2735))
{
temp_gfx.stretchX = 480;
temp_gfx.centerX = 0;
temp_gfx.centerY = 0;
oslStartDrawing();
oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
if (f < 21)
{
b=oslGetStringWidth(texts[f]);
oslDrawString(240+(240-b)/2, 120, texts[f]);
b=strlen(texts[f+1])*16;
amigatext(texts[f+1], 240+(240-b)/2, 144, amiga, 16, 22);
spr_draw(giygas, 120, 136);
}
temp_gfx=oslSetImageRotCenter(temp_gfx);
temp_gfx.stretchX = d;
temp_gfx.stretchY = (int)((float)(0.57)*d);
if (frame == 1368)
{
d=0;
e=136;
}
spr_draw(temp_gfx, 240, e);
if (temp_gfx.stretchX > 1280) e += 8; else e=136;
if (temp_gfx.stretchX < 1536) d += 8; else
{
f += 2;
d=0;
}
oslEndDrawing();
}
if ((frame >= 2736) && (frame < 3422))
{
if (frame == 2736)
{
a=0;
b=1;
c=0;
}
spr_draw(sonicexe, 204, 20+16*sin(0.0625*frame));
switch(c)
{
case 0:
oslDrawString(198, 136, "SONIC.EXE by");
amigatext("CRIMSON THE BAT", (480-strlen("CRIMSON THE BAT")*16)/2, 150, amiga, 16, 22);
break;
case 1:
amigatext("SYMBIOTICFEDORAGEEK", (480-strlen("SYMBIOTICFEDORAGEEK")*16)/2, 150, amiga, 16, 22);
break;
case 2:
amigatext("SHADOWNINJA976", (480-strlen("SHADOWNINJA976")*16)/2, 150, amiga, 16, 22);
break;
case 3:
amigatext("HICHIGO1989", (480-strlen("HICHIGO1989")*16)/2, 150, amiga, 16, 22);
break;
default:
break;
}
if (c>0) oslDrawString((480-strlen("SONIC.EXE DeviantArts by:")*6)/2, 136, "SONIC.EXE DeviantArts by:");
for(i=0; i<32; i++)
{
spr_draw(flappy_redhill, a+i*16, 224);
}
a--;
if (a == -16) a=0;
b++;
if ((!(b%172)) && (c<3)) c++;
}
if ((frame >= 3422) && (frame < 3764))
{
_1in24=oslSetImageRotCenter(_1in24);
_1in24.angle = 16*sin(0.0625*frame);
spr_draw(_1in24, 240, 136);
oslDrawString(0, 0, "Weird movies stills taken from:");
amigatext("STUART <ASHENS> ASHEN", 0, 30, amiga, 16, 22);
amigatext("1IN24.TUMBLR.COM", 0, 60, amiga, 16, 22);
}
if ((frame >= 3764) && (frame < 4105))
{
if (frame == 3764)
{
aa=oslSetImageRotCenter(aa);
}
aa.angle = 16*sin(0.0625*frame);
spr_draw(aa, 240, 136);
oslDrawString(0, 0, "High-pitched Pookeymon Theme by");
amigatext("DAN <LOUSY PANDAH> TOMLINSON", 0, 24, amiga, 16, 22);
oslDrawString(0, 60, "Taken from animation 'POKEMON SHOWDOWN'");
}
if ((frame >= 4105) && (frame < 4447))
{
if (frame == 4105)
{
bb=oslSetImageRotCenter(bb);
}
bb.angle = 16*sin(0.0625*frame);
spr_draw(bb, 240, 136);
oslDrawString(0, 0, "Scene from 'Pikachu on Acid' taken from:");
amigatext("HIGH5TOONS", 0, 24, amiga, 16, 22);
}
if ((frame >= 4447) && (frame < 5473))
{
if (frame == 4447)
{
c=0;
}
oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 64));
for(a=0; a<16; a++)
{
oslDrawFillRect(a*32+c, 0, a*32+c+4, 272, _RGB(94, 126, 255));
if (a<11) oslDrawFillRect(0, a*32+c, 480, a*32+c+4, _RGB(94, 126, 255));
}
temp_benj=oslSetImageTileSize(benj, (benj_frame%8)*32, 48, 32, 48);
temp_benj.stretchX = 96;
temp_benj.stretchY = 144;
temp_benj.trans=16;
spr_draw(temp_benj, 192, 90);
if (c > -32) c--; else c=0;
if (frame <= 5090)
{
amigatext("SO, THERE WE ARE. I HAD TO", 0, 20, amiga, 16, 22);
amigatext("TRAVEL FOR 700 KMS IN ORDER TO", 0, 42, amiga, 16, 22);
amigatext("PRESENT MY SECOND HOMEBREW ON", 0, 64, amiga, 16, 22);
amigatext("PSP.", 0, 86, amiga, 16, 22);
amigatext("LITTLE DID I KNOW I HAD TO", 0, 130, amiga, 16, 22);
amigatext("DEAL WITH A 2 PLAYER MODE ON A", 0, 152, amiga, 16, 22);
amigatext("PORTABLE CONSOLE! LUCKILY, I", 0, 174, amiga, 16, 22);
amigatext("WAS ADDICTED TO A MOBA GAME", 0, 196, amiga, 16, 22);
amigatext("CALLED <SMITE>...", 0, 218, amiga, 16, 22);
}
else
{
amigatext("...AND THE IMPLEMENTATION OF", 0, 24, amiga, 16, 22);
amigatext("A MOBA UI WAS A BREEZE. ", 0, 46, amiga, 16, 22);
amigatext("THE MORAL OF THE STORY IS TO", 0, 90, amiga, 16, 22);
amigatext("NEVER PREPARE YOUR PRODUCTION", 0, 112, amiga, 16, 22);
amigatext("WAAAAAAAAAAY BEFORE THE CON", 0, 134, amiga, 16, 22);
amigatext("BEGINS!", 0, 156, amiga, 16, 22);
}
}
if ((frame >= 5473) && (frame < 8894))
{
if (frame == 5473)
{
d=480;
i=0;
}
oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 64));
for(a=0; a<16; a++)
{
oslDrawFillRect(a*32+c, 0, a*32+c+4, 272, _RGB(94, 126, 255));
if (a<11) oslDrawFillRect(0, a*32+c, 480, a*32+c+4, _RGB(94, 126, 255));
}
temp_benj = oslSetImageTileSize(benj, (benj_frame%8)*32, 48, 32, 48);
temp_benj.stretchX = 96;
temp_benj.stretchY = 144;
temp_benj.trans=192;
spr_draw(temp_benj, 192, 90);
if (c > -32) c--; else c=0;
oslDrawString(201, 4, "Greetings to:");
amigatext(greeted[i], d, 136+32*sin(0.0625*frame), amiga, 16, 22);
d=(int)(d-5.5);
if ((d <= -288) && (i<23))
{
d=480;
i++;
}
}
if (frame >= 8894)
{
//if (frame < 10260) oslSetAlpha(OSL_FX_DEFAULT, 0); else oslSetAlpha(OSL_FX_ALPHA, trans);
a = 54+32*sin(0.0625*frame);
b = 296+32*cos(0.0625*frame);
spr_draw(gml, a, 32);
spr_draw(twt, b, 32);
amigatext("@240185", 304+32*cos(0.0625*frame), 187, amiga, 16, 22);
amigatext("ROUNDSOFTSTUDIO", 0, 172, amiga, 16, 22);
amigatext("@ GMAIL.COM", 32+32*sin(0.0625*frame), 202, amiga, 16, 22);
if (frame >= 9582)
{
if (frame == 9582)
{
c=480;
trans=255;
}
oslDrawString(c, 256, "See you @ A.C. 2015 for my next project for PSP: THE FIFTH AXIS! Discover a twisted theory about time travel!");
c -= 2;
}
if ((frame >= 10260) && (trans > 0)) trans--;
}
oslEndDrawing();
//frame_debug(frame);
}
oslSwapBuffers();
oslWaitVSync();
frame++;
if (!(frame%4)) benj_frame++;
}
oslStopSoundMOD(theme);
oslDeleteSoundMOD(theme);
oslDeleteImage(aipc);
oslDeleteImage(amiga);
oslDeleteImage(gml);
oslDeleteImage(twt);
oslDeleteImage(temp_gfx);
oslDeleteImage(giygas);
oslDeleteImage(sonicexe);
oslDeleteImage(flappy_redhill);
oslDeleteImage(_1in24);
oslDeleteImage(aa);
oslDeleteImage(bb);
for (i=0; i<4; i++)
{
oslDeleteImage(iamgod[i]);
}
fadeout();
}
short sonicexe2(int diff)
{
int i, rects=1, sc=0, bx=240, frame=0, bouss=0;
short reussi=0;
OSL_IMAGE bg, pass, buttons, sexe2, slyexe;
OSL_IMAGE temp_benj;
OSL_SOUND oof = oslLoadSoundFile("./sfx/sfx-0009.wav");
OSL_SOUND passs = oslLoadSoundFile("./sfx/sfx-0053.wav");
OSL_SOUND kte = oslLoadSoundFile("./sfx/kte.wav");
OSL_SOUND sallyexe = oslLoadSoundFile("./sfx/sallyexe.wav");
sexe2 = LoadImg("./gfx/sonicexe2.png");
bg = LoadImg("./gfx/gfx-0776.png");
pass = LoadImg("./gfx/gfx-0718.png");
buttons = LoadImg("./gfx/arrows.png");
slyexe = LoadImg("./gfx/sallyexe.png");
sexe2=oslSetImageRotCenter(sexe2);
buttons=oslSetImageRotCenter(buttons);
pass=oslSetImageRotCenter(pass);
oslSetSoundLoop(kte, 1);
oslPlaySound(kte);
while ((sc < 90*diff) && (rects < 240))
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0, 0, 0));
bg.trans=160;
bg.G=0;
bg.B=0;
spr_draw(bg, 0, 0);
al_get_keyboard_state(&kbdstate);
if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (bx > rects))
{
temp_benj=oslSetImageTileSize(benj,(abs(frame%32)/4)*32,144,32,48);
temp_benj.stretchX = 64;
temp_benj.stretchY = 96;
bx -= 4;
if (bouss==0)
{
bouss=1;
sc++;
}
}
else if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (bx < (448-(rects+1))))
{
temp_benj=oslSetImageTileSize(benj,(abs(frame%32)/4)*32,48,32,48);
bx += 4;
if (bouss==1)
{
bouss=0;
sc++;
}
}
else
{
temp_benj=oslSetImageTileSize(benj,0,192,32,48);
}
spr_draw(sexe2, 240+4*sin(0.0625*frame), 64);
spr_draw(buttons, 240, 136);
temp_benj.stretchX = 64;
temp_benj.stretchY = 96;
temp_benj.R = temp_benj.G = temp_benj.B = 0;
spr_draw(temp_benj, bx, 176);
oslDrawFillRect(0, 0, rects+1, 272, _RGB(0,0,0));
oslDrawFillRect(480, 0, 480-(rects+1), 272, _RGB(0,0,0));
oslDrawFillRect(0, 0, 480, rects+1, _RGB(0,0,0));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
frame++;
if (!(frame%(20-((diff-1)*5)))) rects++;
if (bx < rects) bx=rects+4;
if (bx > (448-(rects+1))) bx=443-rects;
}
if (sc >= 90*diff)
{
for (i=0; i<4; i++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
oslPlaySound(passs);
for (i=135; i<=272; i+=24)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(pass,240,136);
pass.stretchX = pass.stretchY = i;
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
reussi=1;
}
else
{
al_set_sample_instance_position(sallyexe.instance, 16);
oslPlaySound(sallyexe);
while (al_get_sample_instance_position(sallyexe.instance))
{
oslStartDrawing();
spr_draw(slyexe, 0, 0);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
}
oslStartDrawing();
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
oslDeleteSound(kte);
oslDeleteImage(sexe2);
oslDeleteImage(bg);
oslDeleteImage(pass);
oslDeleteSound(oof);
oslDeleteSound(passs);
oslDeleteSound(sallyexe);
oslDeleteImage(slyexe);
return reussi;
}
short sonicexe(int diff)
{
short reussi=0, rebound=0;
int i, j=0, k=0, l=20, benj_frame=0, bgx=0, flx=0, bb, by, sedx=80, sedy=16;
OSL_IMAGE iamgod, sonicexebg, sonicexefloor, sonicexe_d, buttons, pass;
OSL_IMAGE temp_benj, temp_butt;
OSL_SOUND drowning;
OSL_SOUND oof;
OSL_SOUND passs;
char buffer[20];
i=random(4)+1;
bb=random(4);
sprintf(buffer,"./gfx/iamgod%d.png",i);
iamgod = LoadImg(buffer);
iamgod = oslSetImageRotCenter(iamgod);
sonicexebg = LoadImg("./gfx/gfx-0973.png");
sonicexefloor = LoadImg("./gfx/gfx-0974.png");
buttons = LoadImg("./gfx/buttons_pc.png");
sonicexe_d = LoadImg("./gfx/sonicexe.png");
pass = LoadImg("./gfx/gfx-0718.png");
pass = oslSetImageRotCenter(pass);
drowning = oslLoadSoundFile("./sfx/sfx-0146.wav");
oof = oslLoadSoundFile("./sfx/sfx-0009.wav");
passs = oslLoadSoundFile("./sfx/sfx-0053.wav");
al_set_sample_instance_position(drowning.instance, 2);
oslPlaySound(drowning);
while ((al_get_sample_instance_position(drowning.instance)) && (j < 95*diff))
{
if (k > 96) l = 18;
if (k > 188) l = 16;
if (k > 262) l = 14;
if (k > 342) l = 12;
if (k > 390) l = 10;
if (k > 462) l = 8;
if (k > 516) l = 6;
if (k > 600) l = 4;
if (k%l < (l/2)) by=0; else by=32;
if (!(k%10))
{
sedx++;
sedy++;
}
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(sonicexebg, bgx, 8);
spr_draw(sonicexefloor, flx, 248);
spr_draw(sonicexebg, bgx+480, 8);
spr_draw(sonicexefloor, flx+480, 248);
spr_draw(sonicexe_d, sedx, sedy);
temp_benj = oslSetImageTileSize(benj,(benj_frame%8)*32,48,32,48);
temp_butt = oslSetImageTileSize(buttons,bb*32,by,32,32);
temp_benj.stretchX = 64;
temp_benj.stretchY = 96;
temp_butt.stretchX = temp_butt.stretchY = 64;
spr_draw(temp_benj, 360, 152);
spr_draw(temp_butt, 368, 82);
/*sprintf(buffer,"%d %d", l, (int)oslGetRamStatus().maxAvailable);
oslDrawString(0,8,buffer);*/
oslEndDrawing();
oslSwapBuffers();
al_get_keyboard_state(&kbdstate);
if ((!al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) &&
(!al_key_down(&kbdstate, ALLEGRO_KEY_SPACE)) &&
(!al_key_down(&kbdstate, ALLEGRO_KEY_C)) &&
(!al_key_down(&kbdstate, ALLEGRO_KEY_X))) rebound=0;
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))))
{
j++;
rebound=1;
}
if (!(k%4)) benj_frame++;
bgx -= 4;
flx -= 8;
if (bgx == -480) bgx=0;
if (flx == -480) flx=0;
k++;
oslWaitVSync();
}
if (j >= 95*diff)
{
for (i=0; i<4; i++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
oslPlaySound(passs);
for (i=135; i<=272; i+=24)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(pass,240,136);
pass.stretchX = pass.stretchY = i;
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
reussi=1;
}
else
{
k=255;
for (i=sedx; i<360; i+=5)
{
oslStartDrawing();
bgx--;
flx -= 2;
spr_draw(sonicexebg, bgx, 8);
spr_draw(sonicexefloor, flx, 248);
spr_draw(sonicexebg, bgx+480, 8);
spr_draw(sonicexefloor, flx+480, 248);
spr_draw(temp_benj, 360, 152);
sonicexe_d.trans = k;
spr_draw(sonicexe_d, i, sedy);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
k -= 8;
if (k<0) k=0;
if (sedy < 168) sedy++;
}
for (i=0; i<4; i++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
oslPlaySound(oof);
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(iamgod,240,136);
oslEndDrawing();
oslSwapBuffers();
fadeout();
}
oslStartDrawing();
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
oslDeleteImage(iamgod);
oslDeleteImage(sonicexebg);
oslDeleteImage(sonicexefloor);
oslDeleteImage(sonicexe_d);
oslDeleteImage(buttons);
oslDeleteImage(pass);
oslDeleteSound(oof);
oslDeleteSound(drowning);
oslDeleteSound(passs);
return reussi;
}
short mincer(int diff)
{
short reussi=0, floor=-1, score=0, rebound=0;
int i, skipframe=0, by=-36, bgy=0, my=404, minced=0, bb=random(4);
OSL_IMAGE mincer[3];
OSL_IMAGE benj_mincer;
OSL_IMAGE buttons;
OSL_IMAGE pass;
OSL_IMAGE temp_mincer, temp_butt, temp_m;
OSL_SOUND passs;
OSL_SOUND mincing;
OSL_SOUND rightwrong[2];
buttons = LoadImg("./gfx/buttons_pc.png");
pass = LoadImg("./gfx/gfx-0718.png");
mincer[0] = LoadImg("./gfx/mincer_bg.png");
mincer[1] = LoadImg("./gfx/mincer.png");
mincer[2] = LoadImg("./gfx/mincer_fg.png");
passs = oslLoadSoundFile("./sfx/sfx-0053.wav");
mincing = oslLoadSoundFile("./sfx/sfx-0081.wav");
rightwrong[0] = oslLoadSoundFile("./sfx/right.wav");
rightwrong[1] = oslLoadSoundFile("./sfx/wrong.wav");
benj_mincer = LoadImg("./gfx/benj_mincer.png");
pass=oslSetImageRotCenter(pass);
temp_mincer=oslSetImageTileSize(benj_mincer,0,0,29,34);
temp_mincer.stretchX = temp_mincer.stretchY = 58;
while ((floor <= (-2*diff+12)) && (score < (2*diff+3)))
{
if (!skipframe)
{
oslStartDrawing();
temp_butt=oslSetImageTileSize(buttons,bb*32,0,32,32);
temp_butt.stretchX = temp_butt.stretchY = 64;
if (floor == -1)
{
oslDrawFillRect(0,0,480,272, _RGB(0,0,32));
spr_draw(mincer[0], 80, 0);
spr_draw(mincer[0], 80, 240);
spr_draw(temp_mincer, 215, by);
by += 4;
if (by==136) floor=0;
}
else if (floor >= 0)
{
oslDrawFillRect(0,0,480,272, _RGB(0,0,32));
spr_draw(mincer[0], 80, bgy);
spr_draw(mincer[0], 80, bgy+240);
if (floor >= (-2*diff+9))
{
spr_draw(mincer[1], 182, my);
}
spr_draw(mincer[0], 80, bgy+480);
if (my < -108)
{
temp_mincer=oslSetImageTileSize(benj_mincer,29,0,29,34);
temp_mincer.stretchX = temp_mincer.stretchY = 58;
}
spr_draw(temp_mincer, 215, 136);
if (bgy<=-240)
{
floor++;
bgy=0;
}
if ((my <= 48) && (my >= -180))
{
if ((!minced) && (my==48))
{
if (!(al_get_sample_instance_position(mincing.instance))) oslPlaySound(mincing);
score=0;
}
switch(minced)
{
case 0:
case 2:
{
bgy -= 2;
if (floor >= (-2*diff+9))
{
temp_m=oslSetImageTileSize(mincer[0],0,0,101,240);
spr_draw(temp_m, 80, my-164);
temp_m=oslSetImageTileSize(mincer[0],226,0,94,240);
spr_draw(temp_m, 306, my-164);
spr_draw(mincer[2], 182, my+158);
temp_m=oslSetImageTileSize(mincer[0],0,0,320,240);
/*oslDrawFillRect(0,0,480,my-163, _RGB(0,0,32));
spr_draw(temp_m, 80, my-164);*/
oslDrawFillRect(400,0,480,272, _RGB(0,0,32));
my -= 2;
}
if ((my == -96) && (!minced)) minced=1;
break;
}
case 1:
{
bgy += 2;
if (floor >= (-2*diff+9))
{
temp_m=oslSetImageTileSize(mincer[0],0,0,101,240);
spr_draw(temp_m, 80, my-164);
oslSetImageTileSize(mincer[0],226,0,94,240);
spr_draw(temp_m, 306, my-164);
spr_draw(mincer[2], 182, my+158);
my += 2;
temp_m=oslSetImageTileSize(mincer[0],0,0,320,240);
oslDrawFillRect(400,0,480,272, _RGB(0,0,32));
/*oslDrawFillRect(0,0,480,my-163, _RGB(0,0,32));
spr_draw(temp_m, 80, my-164);*/
}
if (my == -12) minced=2;
break;
}
}
}
else
{
bgy -= 4;
if (floor >= (-2*diff+9))
{
spr_draw(mincer[2], 182, my+158);
my -= 4;
}
al_get_keyboard_state(&kbdstate);
if ((!al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) &&
(!al_key_down(&kbdstate, ALLEGRO_KEY_SPACE)) &&
(!al_key_down(&kbdstate, ALLEGRO_KEY_C)) &&
(!al_key_down(&kbdstate, ALLEGRO_KEY_X))) rebound=0;
if (my > 48)
{
spr_draw(temp_butt, 326, 136);
if (!rebound)
{
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))))
{
score++;
bb=random(4);
oslStopSound(rightwrong[0]);
oslStopSound(rightwrong[1]);
oslPlaySound(rightwrong[0]);
rebound=1;
}
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))))
{
bb=random(4);
oslStopSound(rightwrong[0]);
oslStopSound(rightwrong[1]);
oslPlaySound(rightwrong[1]);
score--;
rebound=1;
}
}
}
}
}
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
}
if (score == (2*diff+3))
{
for (i=0; i<4; i++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
oslPlaySound(passs);
for (i=135; i<=272; i+=24)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(pass,240,136);
pass.stretchX = pass.stretchY = i;
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
reussi=1;
}
oslStartDrawing();
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
for (i=0; i<3; i++) oslDeleteImage(mincer[i]);
oslDeleteImage(benj_mincer);
oslDeleteSound(mincing);
oslDeleteSound(rightwrong[0]);
oslDeleteSound(rightwrong[1]);
oslDeleteImage(buttons);
oslDeleteImage(pass);
oslDeleteSound(passs);
return reussi;
}
short shoot_teevees(int diff, int *health, int round)
{
short reussi=1, enemyx=random(2), enemyy=random(3), fired=13, hasdied=0, rebound=0;
int i, j, u, frame=0, skipframe=0, hgx=208;
int teevees[3][4]; //angle-ecran-y-fallspeed
OSL_SOUND passs = oslLoadSoundFile("./sfx/sfx-0053.wav");
OSL_SOUND dead = oslLoadSoundFile("./sfx/sfx-0025.wav");
OSL_SOUND pew = oslLoadSoundFile("./sfx/sfx-0100.wav");
OSL_SOUND oof = oslLoadSoundFile("./sfx/sfx-0101.wav");
OSL_SOUND ambient = oslLoadSoundFile("./sfx/sfx-0017.wav");
OSL_IMAGE pass = LoadImg("./gfx/gfx-0718.png");
OSL_IMAGE bg = LoadImg("./gfx/gfx-0776.png");
OSL_IMAGE teevee = LoadImg("./gfx/teevee.png");
OSL_IMAGE teevee_targets = LoadImg("./gfx/teevee_targets.png");
OSL_IMAGE numberz = LoadImg("./gfx/numberz.png");
OSL_IMAGE handgun = LoadImg("./gfx/handgun.png");
OSL_IMAGE explode = LoadImg("./gfx/explode.png");
OSL_IMAGE temp_h, temp, temp_tv, temp_no;
temp = oslCreateImage(128, 96);
pass=oslSetImageRotCenter(pass);
temp=oslSetImageRotCenter(temp);
oslSetSoundLoop(ambient, 1);
oslDrawFillRect(0,0, 480,272, _RGB(0,0,0));
for (i=0; i<3; i++)
{
teevees[i][0]=random(180)-90;
teevees[i][1]=random(2);
teevees[i][2]=-1*random(128)-128;
teevees[i][3]=diff+1+random(3);
}
temp_h=oslSetImageTileSize(handgun, 0, 0, 64, 64);
oslPlaySound(ambient);
while (frame < 900*diff)
{
if (!skipframe)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(bg, 0, 0);
oslSetTextColor(_RGB(255, 255, 255));
oslDrawString(160, 2, "Shoot the TVs with that screen:");
temp_tv=oslSetImageTileSize(teevee_targets, 99*enemyx, 71*enemyy, 99, 71);
temp_tv.stretchX = 50;
temp_tv.stretchY = 35;
spr_draw(temp_tv, 215, 14);
teevee_targets.stretchX = 99;
teevee_targets.stretchY = 71;
explode.stretchX = 128;
explode.stretchY = 96;
temp_no=oslSetImageTileSize(numberz,160,0,16,16);
spr_draw(temp_no, 2, 2);
for (i=0; i<3; i++)
{
al_set_target_bitmap(temp.asset);
temp_tv=oslSetImageTileSize(teevee_targets, teevees[i][1]*99, 71*enemyy, 99, 71);
spr_draw(teevee, 0, 0);
spr_draw(temp_tv, 14, 10);
al_set_target_bitmap(psp_screen);
temp.angle = teevees[i][0];
spr_draw(temp, 160*i+80, teevees[i][2]);
teevees[i][2] += teevees[i][3];
if (teevees[i][2] > (336+((int)128*(sin(teevee.stretchX)*3.14/180))))
{
if (teevees[i][1]==enemyx)
{
*health -= 12*diff;
if ((*health <= 0) && (!hasdied))
{
oslPlaySound(dead);
hasdied=1;
frame=900*diff-131;
}
}
teevees[i][0]=random(180)-90;
teevees[i][1]=random(2);
teevees[i][2]=-1*random(128)-128;
teevees[i][3]=diff+1+random(3);
}
}
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)));
al_get_keyboard_state(&kbdstate);
if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (hgx > 8) && (*health > 0)) hgx-=8;
if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (hgx < 408) && (*health > 0)) hgx+=8;
if (fired < 13)
{
fired--;
if ((teevees[hgx/160][1]==enemyx) && (teevees[hgx/160][2] > 140))
{
spr_draw(explode, 160*i+80, teevees[hgx/160][2]);
}
if (fired > 9)
{
temp_h=oslSetImageTileSize(handgun, 64, 0, 64, 64);
spr_draw(temp_h, hgx, 211+((int)3*sin(0.0625*frame)));
}
else
{
temp_h=oslSetImageTileSize(handgun, 0, 0, 64, 64);
if (fired==8)
{
if ((teevees[hgx/160][1]==enemyx) && (teevees[hgx/160][2] > 140))
{
teevees[hgx/160][0]=random(180)-90;
teevees[hgx/160][1]=random(2);
teevees[hgx/160][2]=-1*random(128)-128;
teevees[hgx/160][3]=diff+1+random(3);
*health += 2*(4-diff);
if (*health >= 100) *health=100;
}
}
}
}
if (!fired)
{
fired=13;
temp_h=oslSetImageTileSize(handgun, 0, 0, 64, 64);
}
if ((!al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) && (!al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) rebound=0;
if (((al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) || (al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) && (fired==13) && (*health > 0) && (!rebound))
{
fired--;
oslStopSound(pew);
oslPlaySound(pew);
rebound=1;
if ((teevees[hgx/160][1]!=enemyx) && (teevees[hgx/160][2] > 140))
{
*health -= 6*diff;
oslPlaySound(oof);
}
}
i=random(15);
u=18;
if (*health <= 0)
{
*health=0;
}
if (*health < 25) j=16; else j=0;
if (*health / 100)
{
temp_no=oslSetImageTileSize(numberz,((round==2)?((i<12)?16:random(144)):16),0,16,16);
spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
u += 16;
}
if (*health > 9)
{
if (round==2)
{
if (i<12)
{
temp_no=oslSetImageTileSize(numberz,((*health%100)/10)*16,j,16,16);
}
else
{
temp_no=oslSetImageTileSize(numberz,random(128),j,16,16);
}
}
else temp_no=oslSetImageTileSize(numberz,((*health%100)/10)*16,j,16,16);
spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
u += 16;
}
if (round==2)
{
if (i<12)
{
temp_no=oslSetImageTileSize(numberz,(*health%10)*16,j,16,16);
}
else
{
temp_no=oslSetImageTileSize(numberz,random(128),j,16,16);
}
}
else temp_no=oslSetImageTileSize(numberz,(*health%10)*16,j,16,16);
spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
frame++;
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
}
if (*health > 0)
{
oslStopSound(ambient);
for (i=0; i<4; i++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
oslPlaySound(passs);
for (i=135; i<=272; i+=24)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(pass,240,136);
pass.stretchX = pass.stretchY = i;
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
}
else reussi=0;
oslStartDrawing();
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
oslDeleteImage(bg);
oslDeleteImage(pass);
oslDeleteImage(teevee);
oslDeleteImage(teevee_targets);
oslDeleteImage(handgun);
oslDeleteImage(temp);
oslDeleteImage(numberz);
oslDeleteImage(explode);
oslDeleteSound(passs);
oslDeleteSound(dead);
oslDeleteSound(pew);
oslDeleteSound(ambient);
oslDeleteSound(oof);
return reussi;
}
short flappy_cacodemon(int diff)
{
short reussi=1, bunk=0, bgx=0, ghgx=0, dead=0, cacoy=32, pressed=26, mess=0, rebound=0;
int i, frame=0, skipframe=0, growl=random(360)+35, postree=0, gu;
int walls[7]={0,0,0,0,0,0,random(100)};
OSL_IMAGE pass = LoadImg("./gfx/gfx-0718.png");
OSL_IMAGE cacod = LoadImg("./gfx/cacodemon.png");
OSL_IMAGE pot = LoadImg("./gfx/pot.png");
OSL_IMAGE pot_edge = LoadImg("./gfx/pot_edge.png");
OSL_IMAGE flappy_bg = LoadImg("./gfx/flappy_bg.png");
OSL_IMAGE flappy_redhill = LoadImg("./gfx/flappy_redhill.png");
OSL_SOUND passs = oslLoadSoundFile("./sfx/sfx-0053.wav");
OSL_SOUND ambient = oslLoadSoundFile("./sfx/sfx-0017.wav");
OSL_SOUND caco_sfx[2];
OSL_IMAGE temp_cacod;
caco_sfx[0]= oslLoadSoundFile("./sfx/cacogrowl.wav");
caco_sfx[1]= oslLoadSoundFile("./sfx/cacodie.wav");
temp_cacod=oslSetImageTileSize(cacod, 0, 0, 64, 64);
temp_cacod=oslSetImageRotCenter(temp_cacod);
temp_cacod.y=32;
pass=oslSetImageRotCenter(pass);
oslSetSoundLoop(ambient, 1);
oslPlaySound(ambient);
oslSetTextColor(_RGB(0,0,0));
while ((frame < 300*diff+300) && (dead < 5))
{
if (!(frame%growl))
{
growl=random(360)+35;
oslPlaySound(caco_sfx[0]);
}
if (!skipframe)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
for (i=0; i<5; i++) spr_draw(flappy_bg, bgx+i*138, 128);
if (!bunk)
{
for (i=6; i>=0; i--)
{
if (walls[i])
{
pot.stretchY = walls[i];
spr_draw(pot, i*80-(postree%80), 230-walls[i]);
spr_draw(pot_edge, i*80-(postree%80), 230-walls[i]);
pot.stretchY = 94-walls[i];
spr_draw(pot, i*80-(postree%80), 0);
spr_draw(pot_edge, i*80-(postree%80), 94-walls[i]);
}
}
}
if ((!bunk) && (!dead))
{
if ((postree%80) == (80-((diff==1)?1:((diff==2)?2:4))))
{
for (i=0; i<7; i++)
{
if (i < 6)
{
if (walls[i+1]) walls[i]=walls[i+1];
}
else
{
walls[6]=walls[5]+(random(2)?1:-1)*random(32);
if (walls[6] < 32) walls[6]=32;
if (walls[6] > 110) walls[6]=110;
}
}
}
}
for(i=0; i<32; i++)
{
spr_draw(flappy_redhill, ghgx+i*16, 224);
}
if (!bunk)
{
if (!(frame%2))
{
temp_cacod.angle = 8*sin(0.15*frame);
}
spr_draw(temp_cacod, 40, temp_cacod.y);
}
else
{
if ((!(frame%9))) dead++;
gu=temp_cacod.y;
temp_cacod=oslSetImageTileSize(temp_cacod, 64*dead, 0, 64, 64);
temp_cacod=oslSetImageRotCenter(temp_cacod);
temp_cacod.y=gu;
spr_draw(temp_cacod, 40, temp_cacod.y);
if (dead==1)
{
oslPlaySound(caco_sfx[1]);
}
}
if (!mess) oslDrawString(200, 18, "MAKE HIM FLY!");
al_get_keyboard_state(&kbdstate);
if ((!al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) && (!al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) rebound=0;
if (((al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) || (al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) && (!rebound) && (!dead))
{
pressed=0;
if (!mess) mess=1;
rebound=1;
}
pressed++;
if ((temp_cacod.y > 35) && (pressed < (-4*diff+28))) temp_cacod.y -= diff;
if ((!dead) && (pressed > (-4*diff+28))) temp_cacod.y += diff;
if (!bunk)
{
if (!(frame%2)) bgx -= diff+1;
ghgx -= (diff+1);
if (bgx <= -138) bgx=0;
if (ghgx <= -16) ghgx=0;
}
if ((temp_cacod.y > 192) && (!bunk))
{
bunk=1;
frame=0;
}
if ((walls[1]) && ((temp_cacod.y)-24 <= 102-walls[1]) && (!bunk) && (postree%80 < 40))
{
bunk=1;
frame=0;
}
if ((walls[1]) && ((temp_cacod.y)+24 >= 230-walls[1]) && (!bunk) && (postree%80 < 40))
{
bunk=1;
frame=0;
}
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
frame++;
if (!bunk)
{
postree += ((diff==1)?1:((diff==2)?2:4));
}
}
while (al_get_sample_instance_position(caco_sfx[1].instance))
{
al_rest(0.016);
oslWaitVSync();
};
if (!bunk)
{
oslStopSound(ambient);
for (i=0; i<4; i++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
oslPlaySound(passs);
for (i=135; i<=272; i+=24)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(pass,240,136);
pass.stretchX = pass.stretchY = i;
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
}
else reussi=0;
oslStartDrawing();
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
oslDeleteImage(cacod);
oslDeleteImage(flappy_bg);
oslDeleteImage(flappy_redhill);
oslDeleteImage(pot);
oslDeleteImage(pot_edge);
oslDeleteSound(ambient);
oslDeleteImage(pass);
oslDeleteSound(passs);
oslDeleteSound(caco_sfx[0]);
oslDeleteSound(caco_sfx[1]);
return reussi;
}
short love_boat(int diff)
{
short reussi=1, alive=1, bx=240, boat_x=random(320)+80, sens;
int i, frame, a=0;
OSL_IMAGE boat = LoadImg("./gfx/boat.png");
OSL_IMAGE boat_blood = LoadImg("./gfx/boat_blood.png");
OSL_SOUND boat_sfx = oslLoadSoundFile("./sfx/boat.wav");
OSL_SOUND sflartch = oslLoadSoundFile("./sfx/beng-0037.wav");
OSL_IMAGE pass = LoadImg("./gfx/gfx-0718.png");
OSL_IMAGE temp_benj;
OSL_SOUND passs = oslLoadSoundFile("./sfx/sfx-0053.wav");
OSL_SOUND ambient = oslLoadSoundFile("./sfx/sfx-0061.wav");
pass=oslSetImageRotCenter(pass);
boat=oslSetImageRotCenter(boat);
boat_blood=oslSetImageRotCenter(boat_blood);
oslSetSoundLoop(ambient, 1);
oslPlaySound(ambient);
frame = -1*random(540)-240;
if (diff == 3)
{
if (boat_x%4)
{
boat_x += 4-(boat_x%4);
}
}
while (frame < 255)
{
if (!frame) oslPlaySound(boat_sfx);
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(16,0,0));
if (diff==3)
{
if (frame == 92)
{
a = bx+32;
}
else if (frame > 92)
{
if (boat_x > a) boat_x -= 4;
if (boat_x < a) boat_x += 4;
}
}
else if (diff==2)
{
sens=random(2);
if ((sens) && (boat_x < (400-(boat.stretchX)/2))) boat_x += 4;
if ((!sens) && (boat_x > (boat.stretchX)/2)) boat_x -=4;
}
if (frame >= 0)
{
boat.trans=frame;
boat.stretchX = frame*2;
boat.stretchY = (int)((float)1.5*(boat.stretchX));
spr_draw(boat, boat_x, 96);
}
al_get_keyboard_state(&kbdstate);
if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (bx > 0))
{
temp_benj = oslSetImageTileSize(benj,(abs(frame%32)/4)*32,144,32,48);
bx -= 4;
}
else if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (bx < 448))
{
temp_benj = oslSetImageTileSize(benj,(abs(frame%32)/4)*32,48,32,48);
bx += 4;
}
else
{
temp_benj = oslSetImageTileSize(benj,0,192,32,48);
}
temp_benj.stretchX = 64;
temp_benj.stretchY = 96;
if (alive) spr_draw(temp_benj, bx, 176);
if (((boat.stretchX) >= 200))
{
if ((alive) && ((bx+32) >= (boat_x-((boat.stretchX)/4))) && ((bx+32) <= (boat_x+((boat.stretchX)/4))))
{
alive=0;
oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
oslPlaySound(sflartch);
}
}
if (!alive)
{
spr_draw(boat_blood, 240, 136);
}
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
frame++;
}
if (alive)
{
for (i=0; i<4; i++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
oslPlaySound(passs);
for (i=135; i<=272; i+=24)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(pass,240,136);
pass.stretchX = pass.stretchY = i;
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
}
else reussi=0;
oslStartDrawing();
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
oslDeleteImage(boat);
oslDeleteImage(boat_blood);
oslDeleteSound(boat_sfx);
oslDeleteImage(pass);
oslDeleteSound(passs);
oslDeleteSound(sflartch);
oslDeleteSound(ambient);
return reussi;
}
void draw_ball(struct ball ball_ent, OSL_IMAGE ball_gfx, OSL_IMAGE ball_shad)
{
float yr = pow((ball_ent.y2d - 160) / HAUT_FIELD, 1.4f) * HAUT_FIELD + 160;
float x_pr_centre = ball_ent.x2d - 240;
float x_percent = x_pr_centre / 240;
float y_percent = (272-yr)/HAUT_FIELD;
float x_mult = 240 - ESPAC_HORIZ*y_percent;
float xr = x_percent * x_mult + 240;
ball_gfx.stretchX = ball_gfx.stretchY = 8*(1-0.266f*y_percent);
ball_shad.stretchX = ball_shad.stretchY = 8*(1-0.266f*y_percent);
spr_draw(ball_gfx, ball_ent.x2d, ball_ent.y2d-ball_ent.z3d);
spr_draw(ball_shad, ball_ent.x2d, ball_ent.y2d);
}
int shoop_da_whoop(int health, int round, int diff)
{
int i=480, f=0, ta=0, j, u, k=0, sc=0, a=0, b=0;
short sens=0, by=0;
OSL_IMAGE starsky = LoadImg("./gfx/starsky.png");
OSL_SOUND firin = oslLoadSoundFile("./sfx/sdw.wav");
OSL_SOUND sdwh = oslLoadSoundFile("./sfx/sdw2.wav");
OSL_SOUND expl_sound = oslLoadSoundFile("./sfx/sfx-0018.wav");
OSL_IMAGE buttons = LoadImg("./gfx/arrows.png");
OSL_IMAGE sdw = LoadImg("./gfx/sdw.png");
OSL_IMAGE sdw_sh = LoadImg("./gfx/sdw_sh.png");
OSL_IMAGE planet = LoadImg("./gfx/planet.png");
OSL_IMAGE numberz = LoadImg("./gfx/numberz.png");
OSL_IMAGE explode = LoadImg("./gfx/explode.png");
OSL_IMAGE temp = oslCreateImage(480, 272);
OSL_IMAGE shoot = oslCreateImage(160, 60);
OSL_IMAGE temp_no;
temp=oslSetImageRotCenter(temp);
sdw=oslSetImageRotCenter(sdw);
sdw_sh=oslSetImageRotCenter(sdw_sh);
planet=oslSetImageRotCenter(planet);
buttons=oslSetImageRotCenter(buttons);
oslPlaySound(firin);
starsky=oslSetImageRotCenter(starsky);
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(starsky, 240, 136);
oslEndDrawing();
oslSwapBuffers();
for (i=480; i>=128; i-=4)
{
planet.stretchX = planet.stretchY = i;
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(starsky, 240, 136);
spr_draw(planet, 240, 136);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
for (i=480; i>=360; i-=4)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(starsky, 240, 136);
spr_draw(planet, 240, 136);
spr_draw(sdw, i, 136);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
for (k=0; k<(diff+1); k++)
{
f=0;
sc=0;
if (k)
{
al_destroy_bitmap(shoot.asset);
shoot.asset = al_create_bitmap(160, 60);
al_destroy_bitmap(temp.asset);
temp.asset = al_create_bitmap(480, 272);
}
while ((f < 270) && (health > 0))
{
if ((f%30) >= 15) by=32; else by=0;
oslStartDrawing();
spr_draw(sdw_sh, 240, 136);
if (f < 120)
{
if (!(f%20)) sens=random(2);
al_set_target_bitmap(temp.asset);
spr_draw(sdw, 360, 136);
ta += (sens)?6:-6;
if (ta < 0) ta += 360;
if (ta > 359) ta = ta%360;
temp.angle = ta;
al_get_keyboard_state(&kbdstate);
if (al_key_down(&kbdstate, ALLEGRO_KEY_LEFT))
{
sdw_sh.angle -= 12;
}
if (al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT))
{
sdw_sh.angle += 12;
}
if ((sdw_sh.angle) < 0)
{
(sdw_sh.angle) += 360;
}
if ((sdw_sh.angle) > 359)
{
sdw_sh.angle = (float)((int)((sdw_sh.angle))%360);
}
/*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)))
{
sc++;
}*/
}
if (((sdw_sh.angle - 60) < (temp.angle)) && ((sdw_sh.angle + 60) > (temp.angle)) && (f==119)) sc = 2*diff+2;
if (((sdw_sh.angle - 60) < ((temp.angle)+360)) && ((sdw_sh.angle + 60) > ((temp.angle)+360)) && (f==119)) sc = 2*diff+2;
if ((f >= 120) && (f <= 150))
{
temp.angle = 0;
shoot.angle = 0;
al_set_target_bitmap(shoot.asset);
oslDrawFillRect(160, 0, (-16/3)*f+800, 60, _RGB(0,0,255));
oslDrawFillRect(160, 10, (-16/3)*f+800, 50, _RGB(0,128,255));
oslDrawFillRect(160, 20, (-16/3)*f+800, 40, _RGB(0,255,255));
oslDrawFillRect(160, 23, (-16/3)*f+800, 37, _RGB(128,255,255));
oslDrawFillRect(160, 26, (-16/3)*f+800, 33, _RGB(255,255,255));
al_set_target_bitmap(temp.asset);
spr_draw(shoot, 208, 116);
temp.angle = ta;
}
if (sc == 2*diff+2)
{
if (f >= 150)
{
al_set_target_bitmap(temp.asset);
spr_draw(sdw, 360, 136);
if (f == 150) oslPlaySound(sdwh);
if (!(f%15))
{
oslStopSound(expl_sound);
oslPlaySound(expl_sound);
a=330+random(35);
b=72+random(64);
}
if ((f%10) < 5)
{
explode.stretchX = 64;
explode.stretchY = 96;
spr_draw(explode, a, b);
}
else
{
explode.stretchX = 32;
explode.stretchY = 48;
spr_draw(explode, a+16, b+24);
}
}
if (f > 180) f=333;
}
al_set_target_bitmap(psp_screen);
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(starsky, 240, 136);
spr_draw(temp, 240, 136);
spr_draw(planet, ((f > 150) && (sc < 2*diff+1))?(238+random(5)):240, ((f > 150) && (sc < 2*diff+1))?(134+random(5)):136);
spr_draw(buttons, 240, 136);
spr_draw(sdw_sh, 240, 136);
//if (f < 120) spr_draw(buttons, 208, 118);
if ((f >= 180) && (f <= 240) && (sc < 2*diff+1))
{
if (f > 180)
{
if (!(f%3)) health--;
}
if (!(f%15))
{
oslPlaySound(expl_sound);
a=180+random(128);
b=68+random(128);
}
if ((f%10) < 5)
{
explode.stretchX = 64;
explode.stretchY = 96;
spr_draw(explode, a, b);
}
else
{
explode.stretchX = 32;
explode.stretchY = 48;
spr_draw(explode, a+16, b+24);
}
}
i=random(15);
u=18;
if (health <= 0)
{
health=0;
}
temp_no=oslSetImageTileSize(numberz,160,0,16,16);
spr_draw(temp_no, 2, 2);
if (health < 25) j=16; else j=0;
if (health / 100)
{
temp_no=oslSetImageTileSize(numberz,((round==2)?((i<12)?16:random(144)):16),0,16,16);
spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
u += 16;
}
if (health > 9)
{
if (round==2)
{
if (i<12)
{
temp_no=oslSetImageTileSize(numberz,((health%100)/10)*16,j,16,16);
}
else
{
temp_no=oslSetImageTileSize(numberz,random(128),j,16,16);
}
}
else temp_no=oslSetImageTileSize(numberz,((health%100)/10)*16,j,16,16);
spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
u += 16;
}
if (round==2)
{
if (i<12)
{
temp_no=oslSetImageTileSize(numberz,(health%10)*16,j,16,16);
}
else
{
temp_no=oslSetImageTileSize(numberz,random(128),j,16,16);
}
}
else temp_no=oslSetImageTileSize(numberz,(health%10)*16,j,16,16);
spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
f++;
}
}
oslStartDrawing();
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
oslDeleteSound(firin);
oslDeleteSound(sdwh);
oslDeleteSound(expl_sound);
oslDeleteImage(buttons);
oslDeleteImage(sdw);
oslDeleteImage(planet);
oslDeleteImage(starsky);
oslDeleteImage(temp);
oslDeleteImage(shoot);
oslDeleteImage(explode);
oslDeleteImage(sdw_sh);
return health;
}
void sad()
{
int f=0;
OSL_IMAGE gr = LoadImg("./gfx/happyface.png");
OSL_SOUND ss = oslLoadSoundFile("./sfx/sfx-0027.wav");
OSL_SOUND dummy = oslLoadSoundFile("./sfx/dummy.wav");
gr=oslSetImageRotCenter(gr);
oslSetSoundLoop(ss, 1);
for (f=0; f<8; f++) oslPlaySound(dummy);
oslPlaySound(ss);
f=0;
while(f < 120)
{
oslStartDrawing();
oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
gr.stretchX = random(150)+400;
gr.stretchY =(int)((float) 0.75*(gr.stretchX));
spr_draw(gr, 240, 136);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
f++;
}
oslStartDrawing();
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
oslDeleteImage(gr);
oslDeleteSound(ss);
oslDeleteSound(dummy);
}
int game(int round, int diff, int nbp)
{
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;
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;
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;
short swinging=0, ulting=0;
int giyg_bg_angles[3] = {0, 0, 0};
float court_zoom=1, reddv=0;
char buffer[20];
int pie_attacks[8][5]; //numeroattaque-duree(frames)-x-y?
int att_cooldowns[15];
int stars_ult[5];
int meteors[3][3];
struct pie_entity pie_ent = initpie();
struct ball ball_ent = initball();
ALLEGRO_EVENT ev;
OSL_IMAGE pie, tvnoise[20], numberz, ulting_gfx;
OSL_SOUND minigametime = oslLoadSoundFile("./sfx/sfx-0080.wav");
OSL_SOUND tvnoisesound;
OSL_SOUND giygas[3];
OSL_SOUND quitter = oslLoadSoundFile("./sfx/quitter.wav");
OSL_SOUND ko_sfx = oslLoadSoundFile("./sfx/sfx-0045.wav");
OSL_SOUND expl_sound = oslLoadSoundFile("./sfx/sfx-0018.wav");
OSL_SOUND pew = oslLoadSoundFile("./sfx/sfx-0100.wav");
OSL_SOUND paf = oslLoadSoundFile("./sfx/beng-0011.wav");
OSL_SOUND meteor_fall = oslLoadSoundFile("./sfx/sfx-0040.wav");
OSL_SOUND expl_sound2 = oslLoadSoundFile("./sfx/sfx-0036.wav");
OSL_SOUND bulbsfx[7];
OSL_SOUND stun_sound = oslLoadSoundFile("./sfx/sfx-0038.wav");
OSL_SOUND elec = oslLoadSoundFile("./sfx/elec.wav");
OSL_SOUND thunder = oslLoadSoundFile("./sfx/thunder.wav");
OSL_SOUND psis_sfx = oslLoadSoundFile("./sfx/sfx-0043.wav");
OSL_SOUND dictators_sfx[4];
OSL_SOUND mouth_sfx[2];
OSL_SOUND whine = oslLoadSoundFile("./sfx/sfx-0097.wav");
OSL_SOUND bounce = oslLoadSoundFile("./sfx/racketbounce.wav");
OSL_IMAGE lightning = LoadImg("./gfx/lightning.png");
OSL_IMAGE premess = LoadImg("./gfx/premess.png");
OSL_IMAGE giyg_bg[33], starsky = LoadImg("./gfx/starsky.png");
OSL_IMAGE sleepwell = LoadImg("./gfx/sleepwell.png");
OSL_IMAGE ball_gfx = LoadImg("./gfx/ball.png");
OSL_IMAGE ball_shad = LoadImg("./gfx/ball_shadow.png");
OSL_IMAGE ko = LoadImg("./gfx/ko.png");
OSL_IMAGE mgswirl = LoadImg("./gfx/mgswirl.png");
OSL_IMAGE explode = LoadImg("./gfx/explode.png");
OSL_IMAGE rckch[2];
OSL_IMAGE psycho = LoadImg("./gfx/gfx-0672.png");
OSL_IMAGE paused_gfx = LoadImg("./gfx/paused.png");
OSL_IMAGE ultgauge = LoadImg("./gfx/ultgauge.png");
OSL_IMAGE shlgauge = LoadImg("./gfx/shlgauge.png");
OSL_IMAGE visor = LoadImg("./gfx/visor.png");
OSL_IMAGE bulbasaur = LoadImg("./gfx/bulbasaur.png");
OSL_IMAGE recipe = LoadImg("./gfx/darkness.png");
OSL_IMAGE shield = LoadImg("./gfx/shield.png");
OSL_IMAGE meteor = LoadImg("./gfx/gfx-0471.png");
OSL_IMAGE stunning = LoadImg("./gfx/creepycircle.png");
OSL_IMAGE psis = LoadImg("./gfx/psis.png");
OSL_IMAGE dictators = LoadImg("./gfx/dictators.png");
OSL_IMAGE mouth = LoadImg("./gfx/gfx-0102.png");
OSL_IMAGE powerball = LoadImg("./gfx/powerball.png");
OSL_IMAGE star = LoadImg("./gfx/star.png");
OSL_IMAGE juche = LoadImg("./gfx/juche.png");
OSL_IMAGE suppo_gfx = LoadImg("./gfx/suppo.png");
OSL_IMAGE attch = LoadImg("./gfx/attchoice.png");
OSL_IMAGE cp2 = LoadImg("./gfx/cursor2p.png");
OSL_SOUND benj_sfx[11];
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;
numberz = LoadImg("./gfx/numberz.png");
ulting_gfx = LoadImg("./gfx/ulting.png");
benj_sfx[0] = oslLoadSoundFile("./sfx/beng-0000.wav");
benj_sfx[1] = oslLoadSoundFile("./sfx/beng-0001.wav");
benj_sfx[2] = oslLoadSoundFile("./sfx/beng-0002.wav");
benj_sfx[3] = oslLoadSoundFile("./sfx/beng-0003.wav");
benj_sfx[4] = oslLoadSoundFile("./sfx/beng-0004.wav"); //hurt
benj_sfx[5] = oslLoadSoundFile("./sfx/beng-0013.wav");
benj_sfx[6] = oslLoadSoundFile("./sfx/beng-0016.wav");
benj_sfx[7] = oslLoadSoundFile("./sfx/beng-0020.wav"); //pass
benj_sfx[8] = oslLoadSoundFile("./sfx/beng-0009.wav");
benj_sfx[9] = oslLoadSoundFile("./sfx/beng-0015.wav"); //ult
benj_sfx[10] = oslLoadSoundFile("./sfx/beng-0006.wav"); //shield
dictators_sfx[0] = oslLoadSoundFile("./sfx/putin.wav"),
dictators_sfx[1] = oslLoadSoundFile("./sfx/kjun.wav"),
dictators_sfx[2] = oslLoadSoundFile("./sfx/hitler.wav"),
dictators_sfx[3] = oslLoadSoundFile("./sfx/skeletor.wav"),
mouth_sfx[0] = oslLoadSoundFile("./sfx/sfx-0021.wav");
mouth_sfx[1] = oslLoadSoundFile("./sfx/sfx-0022.wav"),
rckch[0] = LoadImg("./gfx/rocking_chair.png");
rckch[1] = LoadImg("./gfx/rocking_chair2.png");
pie_ent.pie_hp=100*round*diff;
pie=LoadImg("./gfx/pie.png");
pie=oslSetImageRotCenter(pie);
starsky=oslSetImageRotCenter(starsky);
sleepwell=oslSetImageRotCenter(sleepwell);
rckch[0].centerX = 32;
rckch[0].centerY = 47;
rckch[1]=oslSetImageRotCenter(rckch[1]);
recipe=oslSetImageRotCenter(recipe);
paused_gfx=oslSetImageRotCenter(paused_gfx);
visor=oslSetImageRotCenter(visor);
mouth=oslSetImageRotCenter(mouth);
stunning=oslSetImageRotCenter(stunning);
powerball=oslSetImageRotCenter(powerball);
star=oslSetImageRotCenter(star);
ball_gfx.centerX = 3;
ball_gfx.centerY = 7;
al_register_event_source(event_queue, al_get_display_event_source(display));
al_register_event_source(event_queue, al_get_timer_event_source(timer));
al_start_timer(timer);
temp_pb=oslSetImageTileSize(powerball, 0, 0, 32, 32);
tvnoisesound = oslLoadSoundFile("./sfx/dummy.wav");
mouth.stretchX = 10;
mouth.stretchY = 16;
for (i=0; i<8; i++)
{
for (j=0; j<5; j++)
{
pie_attacks[i][j]=0;
stars_ult[j]=-32;
}
}
for (i=0; i<7; i++)
{
sprintf(buffer,"./sfx/sfx-0%d.wav",i+114);
bulbsfx[i]=oslLoadSoundFile(buffer);
}
for (i=0; i<15; i++)
{
att_cooldowns[i]=(random((8-(diff*2)))*100+random(3*diff)*100+800);
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]));
if ((i!=0) && (i!=3) && (i!=4)) att_cooldowns[i]=att_cooldowns[i]/(0.5*round+0.5);
}
oslSetSoundLoop(psis_sfx, 1);
if (round == 2)
{
giygas[0] = oslLoadSoundFile("./sfx/sfx-0006.wav");
giygas[1] = oslLoadSoundFile("./sfx/sfx-0007.wav");
giygas[2] = oslLoadSoundFile("./sfx/sfx-0008.wav");
for (i=0; i<20; i++)
{
sprintf(buffer,"./gfx/gfx-0%d.png",i+642);
tvnoise[i]= LoadImg(buffer);
tvnoise[i].stretchX = 480;
tvnoise[i].stretchY = 272;
}
oslDeleteSound(tvnoisesound);
tvnoisesound = oslLoadSoundFile("./sfx/sfx-0028.wav");
//tvnoisesound . volumeLeft = tvnoisesound . volumeRight = 0x2000;
oslSetSoundLoop(tvnoisesound, 1);
if (round==2)
{
for (i=0; i<33; i++)
{
sprintf(buffer,"./gfx/gfx-0%d.png",i+103);
giyg_bg[i]=LoadImg(buffer);
giyg_bg[i]=oslSetImageRotCenter(giyg_bg[i]);
giyg_bg[i].stretchX = giyg_bg[i].stretchY = 512;
}
}
}
else
{
giygas[0] = oslLoadSoundFile("./sfx/sfx-0155.wav");
giygas[1] = oslLoadSoundFile("./sfx/sfx-0153.wav");
giygas[2] = oslLoadSoundFile("./sfx/dummy.wav");
for (i=0; i<5; i++)
{
tvnoise[i]=LoadImg("./gfx/dummy.png");
}
}
//oslSetTransparentColor(RGB(255,0,255));
for (i=0; i<3; i++)
{
oslSetSoundLoop(giygas[i], 1);
}
oslPlaySound(giygas[0]);
health=100;
while(!quit)
{
al_wait_for_event(event_queue, &ev);
if(ev.type == ALLEGRO_EVENT_TIMER) skipframe=1; else skipframe=0;
if ((skipframe) && al_event_queue_is_empty(event_queue))
{
oslStartDrawing();
skipframe=0;
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
if (pie_ent.pie_hp < 1)
{
pie_ent.pie_y = 136+5*sin(0.5*global_fr);
}
spr_draw(starsky,239,136);
if ((whineface) && (health > 0) && (pie_ent.pie_hp > 0))
{
//oslSetAlpha(OSL_FX_DEFAULT, 0);
pie.R=255;
pie.G=pie.B=(32-whineface)*8;
spr_draw(pie, pie_ent.pie_x, pie_ent.pie_y);
temp_dics=oslSetImageTileSize(dictators, 160, 80, 80, 80);
temp_dics=oslSetImageRotCenter(temp_dics);
temp_dics.trans=whineface*8;
spr_draw(temp_dics, pie_ent.pie_x, pie_ent.pie_y-22);
whineface--;
pie.R=pie.G=pie.B=255;
}
else
{
pie.R=pie.G=pie.B=255;
spr_draw(pie,pie_ent.pie_x, pie_ent.pie_y);
}
//oslSetAlpha(OSL_FX_DEFAULT, 0);
for (i=0; i<((2*diff)+2); i++)
{
if ((pie_attacks[i][0]==12) && (health > 0))
{
temp_dics=oslSetImageTileSize(dictators, 80*(pie_ent.pie_facemode%2), 80*(pie_ent.pie_facemode/2),80 ,80);
temp_dics=oslSetImageRotCenter(temp_dics);
if (pie_attacks[i][1] > (240*diff-255))
{
temp_dics.trans=240*diff - pie_attacks[i][1];
}
else
{
temp_dics.trans=255;
}
if (pie_attacks[i][1] < 0)
{
temp_dics.trans=255+pie_attacks[i][1];
}
if (!whineface) spr_draw(temp_dics, pie_ent.pie_x, pie_ent.pie_y-22);
if (!paused) pie_attacks[i][1]--;
if (pie_attacks[i][1] == -255)
{
pie_attacks[i][0]=0;
pie_ent.pie_facemode=0;
putin=0;
}
temp_dics.trans=255;
if ((pie_ent.pie_facemode == 2) && (pie_attacks[i][1]==90))
{
for (i=0; i<15; i++)
{
if ((i!=0) && (i!=3) && (i!=4) && (i != 11) && (i!=6)) att_cooldowns[i]=random(250);
}
}
if (pie_ent.pie_facemode == 0)
{
if (pie_attacks[i][1] > -255) putin=1; else putin=0;
}
if (pie_ent.pie_facemode == 1)
{
spr_draw(juche, pie_attacks[i][2], 40+30*sin(0.0625*pie_attacks[i][2]));
pie_attacks[i][2] -= 3;
}
}
}
if (health <= 0)
{
temp_dics=oslSetImageTileSize(dictators, 160, 0, 80, 80);
temp_dics=oslSetImageRotCenter(temp_dics);
temp_dics.trans=255;
spr_draw(temp_dics, pie_ent.pie_x, pie_ent.pie_y-22);
}
else if (pie_ent.pie_hp < 1)
{
temp_dics=oslSetImageTileSize(dictators, 160, 80, 80, 80);
temp_dics=oslSetImageRotCenter(temp_dics);
temp_dics.trans=255;
spr_draw(temp_dics, pie_ent.pie_x, pie_ent.pie_y-22);
}
spr_draw(court,0,0);
if (!paused)
{
if (pie_ent.pie_hp > 0)
{
if (!(pie_ent.pie_direction))
{
pie_ent.pie_x++;
pie.angle+=((round==2)?(giyg_flag+1):1)*4;
if (pie_ent.pie_x>=351) pie_ent.pie_direction=1;
}
else
{
pie_ent.pie_x--;
pie.angle-=((round==2)?(giyg_flag+1):1)*4;
if (pie_ent.pie_x<=128) pie_ent.pie_direction=0;
}
}
if (round==2) starsky.angle=starsky.angle-(giyg_flag+1)*((random(10))-1);
if (counter >= 240)
{
if (diff != 3) a=diff; else a=2;
if (counter == 240) ball_ent=apply_impulse(ball_ent, -1*a, -1*a, 30*3.14/180);
if (ultlvl > 239) ultlvl=239;
if ((!mgcd) && (!lightsoff) && (!rckchscr) && (mouth.stretchX == 10))
{
ball_ent.x2d += ball_ent.speed_h;
ball_ent.y2d += ball_ent.speed_v;
/*ball_ent.speed_z += GRAVITY;
ball_ent.z3d += ball_ent.speed_z;
if (ball_ent.z3d < 0)
{
ball_ent.speed_z = -1*(ball_ent.speed_z);
ball_ent.z3d=0;
}*/
ball_ent.z3d = abs(16*sin(0.0625*global_fr));
}
if (ball_ent.y2d < 138)
{
ball_ent.speed_v = -1*(ball_ent.speed_v);
ball_ent.y2d = 140;
returned=0;
if ((ball_ent.x2d >= pie_ent.pie_x-128) && (ball_ent.x2d <= pie_ent.pie_x+128))
{
pie_ent.pie_hp -= (4-diff);
ultlvl += 5-diff;
oslPlaySound(whine);
whineface=31;
}
else
{
if ((!suppo) && ((health) || (pie_ent.pie_hp)))
{
suppo = 150;
suppox = px - 32;
suppoy = py + 48;
}
}
if (ball_ent.speed_v > 0)
{
a=random(100);
//if (a > 85) ball_ent.poisoned=1; else ball_ent.poisoned=0;
}
}
if (ball_ent.y2d > 288)
{
ball_ent.speed_v = -1*(ball_ent.speed_v);
ball_ent.y2d = 286;
ball_ent.poisoned=0;
if (!shielded)
{
stun=616;
health -= diff+1;
oslPlaySound(thunder);
}
returned=1;
}
if ((ball_ent.x2d >= 480 - 16/2) || (ball_ent.x2d < 4))
{
ball_ent.speed_h = -1*(ball_ent.speed_h);
if (ball_ent.x2d < 4) ball_ent.x2d = 6; else ball_ent.x2d = 478 - 16/2;
}
}
}
al_get_keyboard_state(&kbdstate);
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))
{
rebound=0;
swinging=0;
ulting=0;
frappe=-1;
frappe_ult=-1;
}
if (((al_key_down(&kbdstate, ALLEGRO_KEY_I)) || (al_key_down(&kbdstate, ALLEGRO_KEY_O))) && (nbp==2) && (!rebound))
{
att_ch_timer=0;
if ((al_key_down(&kbdstate, ALLEGRO_KEY_I)) && (cursor2p > 0)) cursor2p--;
if ((al_key_down(&kbdstate, ALLEGRO_KEY_O)) && (cursor2p < 13)) cursor2p++;
rebound=1;
}
if ((al_key_down(&kbdstate, ALLEGRO_KEY_P)) && (pie_ent.pie_hp) && (health) && (!mgcd) && (counter > 256) && (!rebound))
{
rebound=1;
if (!paused)
{
if (!lightsoff) oslStopSound(giygas[giyg_flag%3]);
paused=1;
if (al_get_sample_instance_position(quitter.instance))
{
health -= 5;
if (putin) health -=2;
oslStopSound(quitter);
}
if (al_get_sample_instance_position(tvnoisesound.instance)) oslStopSound(tvnoisesound);
if (al_get_sample_instance_position(psis_sfx.instance)) oslStopSound(psis_sfx);
}
else
{
paused=0;
oslPlaySound(giygas[giyg_flag%3]);
}
}
if ((al_key_down(&kbdstate, ALLEGRO_KEY_L)) && (paused))
{
if ((al_key_down(&kbdstate, ALLEGRO_KEY_R)) && (al_key_down(&kbdstate, ALLEGRO_KEY_L)))
{
if ((al_key_down(&kbdstate, ALLEGRO_KEY_X)) && (al_key_down(&kbdstate, ALLEGRO_KEY_R)) && (al_key_down(&kbdstate, ALLEGRO_KEY_L)))
{
paused=0;
health=0;
mort=2;
}
if ((al_key_down(&kbdstate, ALLEGRO_KEY_N)) && (al_key_down(&kbdstate, ALLEGRO_KEY_R)) && (al_key_down(&kbdstate, ALLEGRO_KEY_L)))
{
paused=0;
pie_ent.pie_hp=0;
pie_ent.pie_facemode=0;
}
}
}
counter++;
global_fr++;
if (nbp==2) att_ch_timer++; else att_ch_timer=4;
if ((att_ch_timer >= 81) && (att_cooldowns[cursor2p] == 1) && (nbp==2))
{
att_cooldowns[cursor2p]=0;
}
benj.stretchX = 32;
benj.stretchY = 48;
benj.angle = 0;
if (stun > 600)
{
lightning.trans=(stun%600)*16;
temp_lghtn=oslSetImageTileSize(lightning,0,0,32,py+64);
spr_draw(temp_lghtn, px, 0);
}
if (health > 0)
{
shadow=oslSetImageTileSize(benj,32,192,32,48);
shadow.trans=128;
spr_draw(shadow, px+8, py+26);
}
temp_benj=oslSetImageTileSize(benj,0,192,32,48);
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))
{
frappe_ult=1;
ulting=1;
rebound=1;
oslPlaySound(benj_sfx[(random(2)+8)]);
racket_devnull++;
stary=py+48;
if ((ultlvl > 59) && (ultlvl < 120))
{
stars_ult[0]=px+32;
nbult=1;
}
else if ((ultlvl > 119) && (ultlvl < 239))
{
stars_ult[0]=px-48;
stars_ult[1]=px+32;
stars_ult[2]=px+112;
nbult=3;
}
else if (ultlvl==239)
{
stars_ult[0]=px-48;
stars_ult[1]=px-8;
stars_ult[2]=px+32;
stars_ult[3]=px+72;
stars_ult[4]=px+112;
nbult=5;
}
if (ultlvl > 59) ultlvl -= ((diff==1)?60:((diff==2)?(ultlvl%60+60):ultlvl));
}
if ((al_key_down(&kbdstate, ALLEGRO_KEY_X)) && (health>0) && (!mgcd) && (!paused) && (shldlvl > 2) && (!stun))
{
racket_devnull++;
}
if (((al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) || (al_key_down(&kbdstate, ALLEGRO_KEY_SPACE))) && (health>0) && (!mgcd) && (!paused) && (frappe<7) && (!stun) && (!rebound) && (!swinging))
{
if (!(racket_devnull%2)) oslPlaySound(benj_sfx[random(3)+5]);
racket_devnull++;
frappe=1;
rebound=1;
swinging=1;
}
if ((al_key_down(&kbdstate, ALLEGRO_KEY_UP)) && (py >= 102) && (health>0) && (!mgcd) && (!paused) && (frappe == -1) && (!stun) && (mouth.stretchX == 10))
{
if (pie_ent.pie_facemode != 1)
{
pbouss=0;
temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,0,32,48);
if (al_key_down(&kbdstate, ALLEGRO_KEY_UP))
{
if (pie_ent.pie_facemode != 3) py-=4; else py-=2;
fs=3;
}
}
else
{
pbouss=2;
temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,96,32,48);
if (al_key_down(&kbdstate, ALLEGRO_KEY_UP))
{
if (pie_ent.pie_facemode != 3) py+=4; else py+=2;
fs=3;
}
if (py > 224) py=216;
}
temp_pb=oslSetImageTileSize(powerball, 32, 0, 32, 32);
if (!(counter%fs)) benj_frame++;
}
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))
{
if (pie_ent.pie_facemode != 1)
{
pbouss=3;
temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,pbouss*48,32,48);
if (al_key_down(&kbdstate, ALLEGRO_KEY_LEFT))
{
if (frappe < 4)
{
if (pie_ent.pie_facemode != 3) px-=4; else px-=2;
}
fs=3;
}
}
else
{
pbouss=1;
temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,48,32,48);
if (al_key_down(&kbdstate, ALLEGRO_KEY_LEFT))
{
if (frappe < 4)
{
if (pie_ent.pie_facemode != 3) px+=4; else px+=2;
}
fs=3;
}
if (px > (0.492*py+321.792)) px = (0.492*py+321.792);
}
temp_pb=oslSetImageTileSize(powerball, 32, 0, 32, 32);
if (!(counter%fs)) benj_frame++;
}
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))
{
if (pie_ent.pie_facemode != 1)
{
pbouss=1;
temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,48,32,48);
if (al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT))
{
if (frappe < 4)
{
if (pie_ent.pie_facemode != 3) px+=4; else px+=2;
}
fs=3;
}
}
else
{
pbouss=3;
temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,pbouss*48,32,48);
if (al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT))
{
if (frappe < 4)
{
if (pie_ent.pie_facemode != 3) px-=4; else px-=2;
}
fs=3;
}
if (px < (-0.492*py+94.184)) px = (-0.492*py+94.184);
}
temp_pb=oslSetImageTileSize(powerball, 0, 0, 32, 32);
if (!(counter%fs)) benj_frame++;
}
if ((al_key_down(&kbdstate, ALLEGRO_KEY_DOWN)) && (py <= 224) && (health>0) && (!mgcd) && (!paused) && (frappe == -1) && (!stun) && (mouth.stretchX == 10))
{
if (pie_ent.pie_facemode != 1)
{
pbouss=2;
temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,96,32,48);
if (al_key_down(&kbdstate, ALLEGRO_KEY_DOWN))
{
if (pie_ent.pie_facemode != 3) py+=4; else py+=2;
fs=3;
}
}
else
{
pbouss=0;
temp_benj=oslSetImageTileSize(benj,(benj_frame%8)*32,0,32,48);
if (al_key_down(&kbdstate, ALLEGRO_KEY_DOWN))
{
if (pie_ent.pie_facemode != 3) py-=4; else py-=2;
fs=3;
}
if (py < 102) py=110;
}
temp_pb=oslSetImageTileSize(powerball, 0, 0, 32, 32);
if (!(counter%fs)) benj_frame++;
}
if ((al_key_down(&kbdstate, ALLEGRO_KEY_LCTRL)) && (health>0) && (!mgcd) && (!paused) && (frappe<7) && (!stun) && (swinging))
{
if ((!(counter%3))) frappe++;
temp_benj=oslSetImageTileSize(benj,(frappe)*32,240,32,48);
if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (frappe > -1))
{
if (frappe>3) temp_benj.angle = 90;
temp_benj=oslSetImageTileSize(benj,(frappe)*32,432,32,48);
}
else if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (frappe > -1))
{
if (frappe>3) temp_benj.angle = -90;
temp_benj=oslSetImageTileSize(benj,(frappe)*32,384,32,48);
}
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))
{
if (diff != 3) a=diff; else a=2;
ball_ent = apply_impulse(ball_ent, a, a, (180-15*frappe)*3.14/180);
oslPlaySound(bounce);
frappe=-1;
returned=1;
//swinging=0;
}
}
if ((al_key_down(&kbdstate, ALLEGRO_KEY_SPACE)) && (health>0) && (!mgcd) && (!paused) && (frappe<7) && (!stun) && (swinging))
{
if ((!(counter%3))) frappe++;
temp_benj=oslSetImageTileSize(benj,(frappe)*32,288,32,48);
if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (frappe > -1))
{
if (frappe>3) temp_benj.angle = 90;
temp_benj=oslSetImageTileSize(benj,(frappe)*32,432,32,48);
}
else if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (frappe > -1))
{
if (frappe>3) temp_benj.angle = -90;
temp_benj=oslSetImageTileSize(benj,(frappe)*32,384,32,48);
}
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))
{
if (diff != 3) a=diff; else a=2;
ball_ent = apply_impulse(ball_ent, -1*a, a, (15*frappe)*3.14/180);
oslPlaySound(bounce);
frappe=-1;
returned=1;
//swinging=0;
}
}
if ((al_key_down(&kbdstate, ALLEGRO_KEY_X)) && (health>0) && (!mgcd) && (!paused) && (shldlvl > 0) && (!stun))
{
if ((!shielded) && (shldlvl > 2)) oslPlaySound(benj_sfx[10]);
if ((!(counter%(4-diff)))) shldlvl--;
shielded=1;
}
if ((al_key_down(&kbdstate, ALLEGRO_KEY_C)) && (health>0) && (!mgcd) && (!paused) && (frappe_ult<7) && (!stun) && (counter > 300) && (!rebound) && (ulting))
{
if (!(counter%3)) frappe_ult++;
}
/*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)))
{
}*/
if ((!al_key_down(&kbdstate, ALLEGRO_KEY_X)) || (!shldlvl))
{
shielded=0;
}
if (stun)
{
frappe=-1;
temp_benj=oslSetImageTileSize(benj,64,192,32,48);
stun--;
if (!(stun%200)) stun=0;
}
if (px < (-0.492*py+94.184)) px = (-0.492*py+94.184);
if (px > (0.492*py+321.792)) px = (0.492*py+321.792);
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)) &&
(!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)))
{
benj_frame=0;
}
if ((frappe >= 7) && (swinging))
{
frappe=7;
rebound=1;
}
if ((frappe_ult >= 7) && (ulting))
{
frappe_ult=7;
rebound=1;
}
if (ulting) temp_benj=oslSetImageTileSize(ulting_gfx,(frappe_ult)*32,0,32,48);
court_zoom = 0.00192*py + 0.562;
temp_benj.stretchX = (int)(64*(float)court_zoom);
temp_benj.stretchY = (int)(96*(float)court_zoom);
shield.stretchX = (int)(48*(float)court_zoom);
shield.stretchY = (int)(48*(float)court_zoom);
ball_gfx.stretchX = (int)(8*(float)court_zoom);
ball_gfx.stretchY = ball_gfx . stretchX;
temp_pb.stretchX = temp_pb.stretchY = (int)(32*(float)(court_zoom));
if (health > 0)
{
if (stary > 0)
{
for(u=0; u<nbult; u++)
{
spr_draw(star, stars_ult[u], stary);
if (stary <= 136)
{
if ((stars_ult[u] >= (pie_ent.pie_x-128)) && (stars_ult[u] <= (pie_ent.pie_x+128))) pie_ent.pie_hp -= 10;
stary=-64;
stars_ult[u]=-32;
nbult=0;
}
}
star.angle -= 5;
stary -= 4;
}
if (ball_ent.poisoned) ball_gfx.R=ball_gfx.G=0;
if (pie_ent.pie_hp > 0) draw_ball(ball_ent, ball_gfx, ball_shad);
draw_benj(temp_benj, px, py, shielded, shield);
if (((pbouss == 3) || (pbouss == 0)) && (pie_ent.pie_facemode == 3)) spr_draw(temp_pb, px+64, py+48);
if (((pbouss == 1) || (pbouss == 2)) && (pie_ent.pie_facemode == 3)) spr_draw(temp_pb, px, py+48);
if (ball_ent.poisoned) ball_gfx.R=ball_gfx.G=0;
}
if (suppo)
{
if (!paused) suppo--;
if (suppo<40)
{
temp_suppo=oslSetImageTileSize(suppo_gfx, suppo/10*32, 0, 32, 32);
}
if (suppo>110)
{
temp_suppo=oslSetImageTileSize(suppo_gfx, (150-suppo)/10*32, 0, 32, 32);
}
court_zoom = 0.00192*suppoy + 0.562;
temp_suppo.stretchX = (int)(32*(float)court_zoom);
temp_suppo.stretchY = (int)(32*(float)court_zoom);
spr_draw(temp_suppo, suppox, suppoy);
spr_draw(temp_suppo, suppox+64, suppoy);
if ((suppo>65) && (suppo<85))
{
if ((px>=suppox) && (px<=suppox+64) && (py>=suppoy-64) && (py <= suppoy))
{
temp_benj.R=0;
temp_benj.G=128;
temp_benj.B=128;
if ((suppo%4) < 2)
{
draw_benj(temp_benj, px, py, shielded, shield);
}
if ((suppo == 67) && (!mgcd) && (!rckchscr))
{
health -= diff;
oslPlaySound(elec);
}
temp_benj.R=temp_benj.G=temp_benj.B=255;
}
}
}
if ((pie_ent.pie_hp > 25*round*diff) && (!giyg_flag) && (pie_ent.pie_hp <= 50*round*diff))
{
giyg_flag=1;
oslStopSound(giygas[0]);
oslPlaySound(giygas[1]);
}
if (round==2)
{
giyg_bg[gbg].trans=random(64);
spr_draw(giyg_bg[gbg], 240, 138);
giyg_bg_angles[0] = random(10)-5;
giyg_bg[gbg].angle += giyg_bg_angles[0];
if (pie_ent.pie_hp <= 50*round*diff)
{
giyg_bg_angles[1] = 2*(random(10)-5);
giyg_bg[gbg].angle += giyg_bg_angles[1];
giyg_bg[gbg].trans=random(64)+64;
spr_draw(giyg_bg[gbg], 240, 138);
}
if (pie_ent.pie_hp <= 25*round*diff)
{
giyg_bg_angles[2] = 4*(random(10)-5);
giyg_bg[gbg].angle += giyg_bg_angles[2];
giyg_bg[gbg].trans=random(64)+128;
spr_draw(giyg_bg[gbg], 240, 138);
if ((giyg_flag < 2))
{
giyg_flag=2;
oslStopSound(giygas[1]);
oslPlaySound(giygas[2]);
}
}
}
if (!(global_fr%5))
{
gbg++;
gbg=gbg%33;
}
if ((counter >= 640))
{
//initializing attacks
for (i=0; i<14; i++)
{
if ((nbp==1) && (!paused)) att_cooldowns[i]--;
if ((nbp==2) && (!paused) && (att_cooldowns[i]>1)) att_cooldowns[i]--;
if ((i==7) && (bulbfell > 0)) att_cooldowns[7]++;
if ((att_cooldowns[i] <= 0) && (pie_ent.pie_hp > 0))
{
attf=0;
for (j=0; j<((2*diff)+2); j++)
{
if (pie_attacks[j][0] == (i+1)) attf=1;
}
for (j=0; j<((2*diff)+2); j++)
{
if ((!(pie_attacks[j][0])) && (!attf))
{
pie_attacks[j][0]=i+1;
switch(i+1)
{
case 1:
pie_attacks[j][1]=140;
break;
case 2:
pie_attacks[j][1]=(py-(pie_ent.pie_y))/(px-pie_ent.pie_x);
pie_attacks[j][2]=(pie_ent.pie_y)-pie_attacks[j][1]*pie_ent.pie_x;
pie_attacks[j][3]=pie_ent.pie_x;
pie_attacks[j][4]=px;
mgsy=pie_attacks[i][1]*pie_attacks[i][3]+pie_attacks[i][2];
break;
case 3:
darkness=0;
for (u=0; u<((2*diff)+2); u++)
{
if (pie_attacks[u][0]==7) darkness=1;
}
if (!darkness)
{
pie_attacks[j][1]=360-(15*diff);
pie_attacks[j][2]=random(160)+80;
pie_attacks[j][3]=random(112)+160;
pie_attacks[j][4]=2*diff+3;
}
else pie_attacks[j][0]=0;
break;
case 4:
pie_attacks[j][1]=diff*166;
lightsoff=1;
break;
case 5:
pie_attacks[j][1]=-218;
pie_attacks[j][2]=255;
break;
case 6:
pie_attacks[j][1]=225*diff;
pie_attacks[j][2]=random(416);
pie_attacks[j][3]=random(100)+108;
if ((diff > 1) && (pie_attacks[j][2]%diff))
{
pie_attacks[j][2] += (diff)-(pie_attacks[j][2]%diff);
}
if ((diff > 1) && (pie_attacks[j][3]%diff))
{
pie_attacks[j][3] += (diff)-(pie_attacks[j][3]%diff);
}
break;
case 7:
chair=0;
for (u=0; u<((2*diff)+2); u++)
{
if (pie_attacks[u][0]==3) chair=1;
}
if (!chair)
{
if (px+16 < 240) pie_attacks[j][1]=0; else pie_attacks[j][1]=1;
pie_attacks[j][2]=random(400)+600;
if (pie_attacks[j][1]) pie_attacks[j][3]=400-random(160); else pie_attacks[j][3]=random(160)+80;
if (pie_attacks[j][1]) pie_attacks[j][4]=480; else pie_attacks[j][4]=0;
mouth.stretchX = 10;
mouth.stretchY = 16;
}
else pie_attacks[j][0]=0;
break;
case 8:
pie_attacks[j][1]=diff+2;
pie_attacks[j][2]=random(4); //sens bulbasaur
pie_attacks[j][3]=random(320)+80; //bulb_x
pie_attacks[j][4]=-64; //bulb_y
bulbfell=1;
if (!lightsoff) oslPlaySound(bulbsfx[(random(2)?1:6)]);
break;
case 9:
pie_attacks[j][1]=120*diff+120;
if (px < 240) pie_attacks[j][2]=1; else pie_attacks[j][2]=0;
pie_attacks[j][3]=py;
for (u=0; u<3; u++)
{
meteors[u][0]=0;
meteors[u][1]=0;
meteors[u][2]=0;
}
break;
case 10:
pie_attacks[j][1]=96;
if ((!shielded) && (!stun)) stun=96;
break;
case 11:
pie_attacks[j][1]=1;
pie_attacks[j][2]=30;
if (!lightsoff) oslPlaySound(psis_sfx);
break;
case 12:
pie_attacks[j][1]=240*diff;
pie_ent.pie_facemode=random(4);
if ((!lightsoff) && (health > 0)) oslPlaySound(dictators_sfx[pie_ent.pie_facemode]);
if (pie_ent.pie_facemode==1)
{
pie_attacks[j][2]=560;
}
break;
case 13:
if ((round==2) && (pie_ent.pie_hp < 20*round*diff) && (!ulted) && (!lightsoff))
{
oslStopSound(giygas[giyg_flag]);
oslStopSound(psis_sfx);
oslEndDrawing();
health=shoop_da_whoop(health, round, diff);
oslStartDrawing();
ulted=1;
oslPlaySound(giygas[giyg_flag]);
oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
}
pie_attacks[j][0]=0;
break;
case 14:
if ((round==2) && (pie_ent.pie_hp < 10*round*diff) && (ulted==1) && (!lightsoff))
{
oslStopSound(giygas[giyg_flag]);
oslStopSound(psis_sfx);
oslEndDrawing();
sad();
oslStartDrawing();
ulted=2;
oslPlaySound(giygas[giyg_flag]);
oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
}
pie_attacks[j][0]=0;
break;
default:
break;
}
j=2*diff+3; //break;
}
}
//att_cooldowns[i]=(random((8-(diff*2)))*100+random(3*diff)*100+800)*(2*i+11);
att_cooldowns[i]=(random((8-(diff*2)))*100+random(3*diff)*100+800);
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]));
if ((i!=0) && (i!=3) && (i!=4)) att_cooldowns[i]=att_cooldowns[i]/(0.5*round+0.5);
if (i == 11) att_cooldowns[i] += 1792;
}
}
//programming attacks
if (!paused) {
for (i=0; i<((2*diff)+2); i++)
{
switch(pie_attacks[i][0])
{
case 1:
{
if ((mgcd < 1) && (health > 0) && (!lightsoff))
{
ko.R=0;
ko.B=ko.G=128;
ko.trans=255;
if (pie_attacks[i][1] > 115)
{
temp_ko=oslSetImageTileSize(ko,0,0,120,96);
spr_draw(temp_ko, (int)(9.6*(140-pie_attacks[i][1])-120), 88);
}
if ((pie_attacks[i][1] <= 115) && (pie_attacks[i][1] >= 90))
{
temp_ko=oslSetImageTileSize(ko,0,0,120,96);
spr_draw(temp_ko, 120, 88);
temp_ko=oslSetImageTileSize(ko,120,0,120,96);
spr_draw(temp_ko, (int)(-9.6*(140-pie_attacks[i][1])+720), 88);
}
if ((pie_attacks[i][1] > 0) && (pie_attacks[i][1] < 90))
{
temp_ko=oslSetImageTileSize(ko,0,0,240,96);
spr_draw(temp_ko, 120, 88);
}
if ((pie_attacks[i][1] <= 0))
{
pie_attacks[i][0]=0;
}
if (pie_attacks[i][1] > 80)
{
if ((pie_attacks[i][1]%6) < 3)
{
explode.stretchX = 64;
explode.stretchY = 96;
spr_draw(explode, px, py);
}
else
{
explode.stretchX = 32;
explode.stretchY = 48;
spr_draw(explode, px+16, py+24);
}
}
pie_attacks[i][1]--;
//oslSetAlpha(OSL_FX_DEFAULT, 0);
}
break;
}
case 2:
{
//frame_debug(j);
if ((!mgcd) && (!lightsoff))
{
mgswirl.trans=128;
if (pie_attacks[i][4] < pie_attacks[i][3])
{
pie_attacks[i][4]-=3;
pie_attacks[i][3]-=3;
}
else
{
pie_attacks[i][4]+=3;
pie_attacks[i][3]+=3;
}
if (mgsy < py) mgsy += random(8)+2; else mgsy -= random(8)+2;
court_zoom = 0.00192*(mgsy) + 0.562;
mgswirl.stretchX = (int)(128*(float)court_zoom);
mgswirl.stretchY = (int)(128*(float)court_zoom);
spr_draw(mgswirl, pie_attacks[i][3], mgsy);
}
if ((swirl_collide(px, py, pie_attacks[i][3], mgsy)) && (health>0))
{
if (!mgcd)
{
al_set_sample_instance_position(minigametime.instance,16);
oslStopSound(giygas[giyg_flag%3]);
oslPlaySound(minigametime);
if (al_get_sample_instance_position(tvnoisesound.instance)) oslStopSound(tvnoisesound);
if (al_get_sample_instance_position(meteor_fall.instance)) oslStopSound(meteor_fall);
oslStopSound(psis_sfx);
sleepwell.stretchX = sleepwell. stretchY = 272;
}
mgcd++;
if (mgcd >= 1)
{
oslStopSound(psis_sfx);
if (mgcd < 9) oslDrawFillRect(0,0,480,272, _RGB(255,255,255)); else
{
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
sleepwell.trans=255-((int)(mgcd*2.55));
sleepwell.stretchX+=18;
sleepwell.stretchY+=36;
spr_draw(sleepwell,240,138);
sleepwell.trans=255;
}
}
}
if ((pie_attacks[i][3] <= -128) || (pie_attacks[i][3] >= 544))
{
pie_attacks[i][0]=0;
mgcd=0;
}
break;
}
case 3:
{
if ((mgcd < 1) && (health > 0) && (!lightsoff))
{
if (pie_attacks[i][4] > 0)
{
pie_attacks[i][1]--;
if (pie_attacks[i][1] > 90)
{
if (pie_attacks[i][1] < 180) rckch[0].angle = (int)(6*sin(0.5*counter));
else rckch[0].angle = 0;
court_zoom = 0.00192*(pie_attacks[i][3]+15) + 0.562;
rckch[0].stretchX = (int)(64*(float)court_zoom);
rckch[0].stretchY = (int)(64*(float)court_zoom);
spr_draw(rckch[0], pie_attacks[i][2], pie_attacks[i][3]+15);
if ((((px-pie_attacks[i][2])*(px-pie_attacks[i][2])+(py-pie_attacks[i][3])*(py-pie_attacks[i][3])) <= 3000) & (frappe >= 1))
{
if (swinging)
{
rckch[0].B=0;
spr_draw(rckch[0], pie_attacks[i][2], pie_attacks[i][3]+15);
rckch[0].B=255;
pie_attacks[i][4]--;
//if (osl_keys . held.triangle) pie_attacks[i][4]=0;
oslPlaySound(paf);
ultlvl += 5-diff;
frappe=-1;
swinging=0;
}
}
if (pie_attacks[i][4] <= 0) pie_attacks[i][1]=20;
}
else
{
if (pie_attacks[i][1] > 59)
{
rckch[1].stretchX = (90-pie_attacks[i][1])*16;
rckch[1].stretchY = (int)(0.567 * (rckch[1] . stretchX));
rckch[1].angle = ((pie_attacks[i][1]-30)*12);
}
if (pie_attacks[i][1] == 59)
{
rckch[1].angle = 0;
rckch[1].stretchX = 480;
rckch[1].stretchY = 272;
rckchscr=1;
oslPlaySound(quitter);
}
spr_draw(rckch[1], 240+random(8)-4, 136+random(8)-4);
if (!(pie_attacks[i][1]%36) && (!shielded))
{
health--;
if (putin) health--;
}
}
if (pie_attacks[i][1] <= -180)
{
oslStopSound(quitter);
pie_attacks[i][0]=0;
rckchscr=0;
}
if (py > ((pie_attacks[i][3]-62)*court_zoom))
{
temp_benj.trans=255;
draw_benj(temp_benj, px, py, shielded, shield);
}
}
else
{
if (pie_attacks[i][1]==20) oslPlaySound(expl_sound2);
explode.stretchX = explode.stretchY = 20 - pie_attacks[i][1];
spr_draw(explode, pie_attacks[i][2], pie_attacks[i][3]);
pie_attacks[i][1]--;
if (pie_attacks[i][1]==0)
{
pie_attacks[i][0]=0;
}
}
}
break;
}
case 4:
{
if ((mgcd < 1) && (health > 0))
{
if ((pie_attacks[i][1] == diff*166) || (pie_attacks[i][1] == 0))
{
oslStopSound(giygas[giyg_flag%3]);
}
if (lightsoff)
{
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
draw_benj(temp_benj, px, py, shielded, shield);
for (u=0; u<(2*diff+2); u++)
{
if (pie_attacks[u][0] != 4)
{
pie_attacks[u][0]=0;
}
}
}
}
if (!pie_attacks[i][1])
{
lightsoff=0;
pie_attacks[i][0]=0;
oslPlaySound(giygas[giyg_flag%3]);
}
pie_attacks[i][1]--;
break;
}
case 5:
{
if ((mgcd < 1) && (health > 0))
{
if (pie_attacks[i][1] < (px-108))
{
spr_draw(psycho, pie_attacks[i][1], abs(32*sin(0.0125*3.14*pie_attacks[i][1]))+8);
}
else
{
if (pie_attacks[i][2] > 2) pie_attacks[i][2]-=2; else pie_attacks[i][0]=0;
oslDrawFillRect(0,0,480,272, _RGBA(255,255,255,pie_attacks[i][2]));
}
pie_attacks[i][1]+=4;
}
break;
}
case 6:
{
if ((mgcd < 1) && (health > 0))
{
if (pie_attacks[i][1] < 51)
{
if ((pie_attacks[i][1])%4 < 3)
{
visor.R=0;
visor.G=0;
visor.trans=192;
}
else
{
visor.R=visor.G=visor.B=visor.trans=255;
}
}
else
{
visor.R=255;
visor.G=255;
visor.trans=255;
}
if (pie_attacks[i][1] > 0) spr_draw(visor, pie_attacks[i][2], pie_attacks[i][3]);
if (px+32 < pie_attacks[i][2])
{
pie_attacks[i][2] -= diff;
}
else if (px+32 > pie_attacks[i][2])
{
pie_attacks[i][2] += diff;
}
if (py+48 < pie_attacks[i][3])
{
pie_attacks[i][3] -= diff;
}
else if (py+48 > pie_attacks[i][3])
{
pie_attacks[i][3] += diff;
}
pie_attacks[i][1]--;
if (!pie_attacks[i][1])
{
oslPlaySound(pew);
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))
{
health -= 2*diff+6;
if (putin) health -= 3;
oslPlaySound(benj_sfx[random(5)]);
}
}
if (pie_attacks[i][1] < 0)
{
explode.stretchX = explode.stretchY = 20 + 2*pie_attacks[i][1];
spr_draw(explode, pie_attacks[i][2], pie_attacks[i][3]);
if (pie_attacks[i][1] == -10) pie_attacks[i][0]=0;
}
}
break;
}
case 8:
{
if ((mgcd < 1) && (health > 0))
{
if (bulbfell==1)
{
temp_bulb=oslSetImageTileSize(bulbasaur, 0, 128, 64, 64);
court_zoom = 0.00192*pie_attacks[i][4] + 0.562;
temp_bulb.stretchX = (int)(64*(float)court_zoom);
temp_bulb.stretchY = (int)(64*(float)court_zoom);
spr_draw(temp_bulb, pie_attacks[i][3], pie_attacks[i][4]);
pie_attacks[i][4] += 8;
if (pie_attacks[i][4] >= 136)
{
pie_attacks[i][4]=136;
bulbfell=2;
}
if (py > ((pie_attacks[i][4])*court_zoom))
{
draw_benj(temp_benj, px, py, shielded, shield);
}
}
else if (bulbfell==2)
{
if (pie_attacks[i][2] != 4)
{
temp_bulb=oslSetImageTileSize(bulbasaur, bulbfs*64, pie_attacks[i][2]*64, 64, 64);
}
else
{
if (abs(pie_attacks[i][3]-px) > abs(pie_attacks[i][4]-py))
{
if (pie_attacks[i][3] > px)
{
temp_bulb=oslSetImageTileSize(bulbasaur, 0, 192, 64, 64);
}
else
{
temp_bulb=oslSetImageTileSize(bulbasaur, 0, 64, 64, 64);
}
}
else
{
if (pie_attacks[i][4] > py)
{
temp_bulb=oslSetImageTileSize(bulbasaur, 0, 0, 64, 64);
}
else
{
temp_bulb=oslSetImageTileSize(bulbasaur, 0, 128, 64, 64);
}
}
}
court_zoom = 0.00192*pie_attacks[i][4] + 0.562;
temp_bulb.stretchX = (int)(64*(float)court_zoom);
temp_bulb.stretchY = (int)(64*(float)court_zoom);
spr_draw(temp_bulb, pie_attacks[i][3], pie_attacks[i][4]);
if (!(counter%52) && ((counter%416) < 364))
{
pie_attacks[i][2]=random(4);
}
else
{
switch(pie_attacks[i][2])
{
case 0:
if (pie_attacks[i][4] > 128) pie_attacks[i][4] -= 2; else pie_attacks[i][2]=2;
break;
case 1:
if (pie_attacks[i][3] < 400) pie_attacks[i][3] += 2; else pie_attacks[i][2]=3;
break;
case 2:
if (pie_attacks[i][4] < 240) pie_attacks[i][4] += 2; else pie_attacks[i][2]=0;
break;
case 3:
if (pie_attacks[i][3] > 80) pie_attacks[i][3] -= 2; else pie_attacks[i][2]=1;
break;
}
}
if ((counter%416) >= 364)
{
pie_attacks[i][2]=4;
if ((counter%416) == 364) oslPlaySound(bulbsfx[random(3)+3]);
if (pie_attacks[i][3] > px) pie_attacks[i][3] -= 4; else pie_attacks[i][3] += 4;
if (pie_attacks[i][4] > py) pie_attacks[i][4] -= 2; else if (pie_attacks[i][4] < 238) pie_attacks[i][4] += 2;
}
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))
{
if (!stun) stun=200+3*diff;
pie_attacks[i][2]=random(4);
health -= diff+1;
if (putin) health -= diff;
oslPlaySound(benj_sfx[random(5)]);
counter += (counter%417)+1;
oslPlaySound(bulbsfx[0]);
}
if ((((px-pie_attacks[i][3])*(px-pie_attacks[i][3])+(py-pie_attacks[i][4])*(py-pie_attacks[i][4])) <= 1500) && (frappe >= 1))
{
if (swinging)
{
temp_bulb.B=0;
spr_draw(temp_bulb, pie_attacks[i][3], pie_attacks[i][4]);
ultlvl += 5-diff;
temp_bulb.B=255;
pie_attacks[i][1]--;
//if (osl_keys . held.triangle) pie_attacks[i][4]=0;
oslPlaySound(paf);
frappe=-1;
swinging=0;
}
}
bulbfs=(counter%20)/5;
if (py > ((pie_attacks[i][4])*court_zoom))
{
//oslSetAlpha(OSL_FX_DEFAULT, 0);
draw_benj(temp_benj, px, py, shielded, shield);
}
}
if (pie_attacks[i][1] <= 0)
{
bulbfell=0;
if (!pie_attacks[i][1]) oslPlaySound(bulbsfx[2]);
pie_attacks[i][2]=4;
pie_attacks[i][1]--;
if (pie_attacks[i][1] == -35)
{
pie_attacks[i][0]=0;
}
bulbfs=(abs(pie_attacks[i][1]))/9;
temp_bulb=oslSetImageTileSize(temp_bulb, bulbfs*64, pie_attacks[i][2]*64, 64, 64);
spr_draw(temp_bulb, pie_attacks[i][3], pie_attacks[i][4]);
}
}
break;
case 9:
{
if ((mgcd <1) && (!lightsoff))
{
if (pie_attacks[i][1] == 120*diff+120)
{
for(u=0; u<3; u++)
{
meteors[u][1] = random(176);
if (pie_attacks[i][2]) meteors[u][0]=-48; else meteors[u][0]=480;
meteors[u][2] = random(3)+1;
}
oslPlaySound(meteor_fall);
}
else
{
if (!al_get_sample_instance_position(meteor_fall.instance)) oslPlaySound(meteor_fall);
for(u=0; u<3; u++)
{
temp_met=oslSetImageTileSize(meteor, u*48, 0, 48, 48);
temp_met.stretchX = temp_met.stretchY = 12*meteors[u][2];
spr_draw(temp_met, meteors[u][0], meteors[u][1]);
if (pie_attacks[i][2]) meteors[u][0]+=random(9)+1; else meteors[u][0]-=random(9)+1;
meteors[u][1]+=4;
if ((meteors[u][1] < pie_attacks[i][3]+32) && (meteors[u][1] >= pie_attacks[i][3]))
{
explode . stretchX = explode . stretchY = 48;
spr_draw(explode, meteors[u][0], meteors[u][1]);
oslPlaySound(expl_sound2);
}
if (meteors[u][1] >= pie_attacks[i][3]+32)
{
if (((px-meteors[u][0])*(px-meteors[u][0])+(py+32-meteors[u][1])*(py+32-meteors[u][1]) <= 196) && (!shielded))
{
oslPlaySound(expl_sound2);
health -= round;
if (putin) health -= round;
oslPlaySound(benj_sfx[random(5)]);
}
if (pie_attacks[i][1] <= 0) meteors[u][2]=0; else meteors[u][2] = random(3)+1;
meteors[u][1]=random(176);
if (pie_attacks[i][2]) meteors[u][0]=-48; else meteors[u][0]=480;
}
}
}
pie_attacks[i][1]--;
if (pie_attacks[i][1] == 0)
{
oslStopSound(meteor_fall);
}
if (meteors[0][2]+meteors[1][2]+meteors[2][2] == 0) pie_attacks[i][0]=0;
}
}
break;
case 10:
{
if ((mgcd <1) && (!lightsoff))
{
if (!shielded)
{
if (pie_attacks[i][1] == 96)
{
stunning.stretchX = stunning.stretchY = 24;
oslPlaySound(stun_sound);
}
for (u=0; u<135; u++)
{
stunning.R=0;
stunning.trans=192;
if (stunning.stretchX > 4) spr_draw(stunning, (u%15)*32+12, ((int)(u/15))*32+12);
stunning.R = stunning.trans = 255;
}
}
pie_attacks[i][1]--;
if (!((pie_attacks[i][1])%8))
{
if (stunning.stretchX > 4)
{
stunning.stretchX -= 4;
stunning.stretchY -= 4;
}
}
if (!(pie_attacks[i][1]))
{
pie_attacks[i][0]=0;
}
}
break;
}
case 11:
{
if ((mgcd <1) && (!lightsoff) && (health > 0))
{
if (pie_attacks[i][2] > 0)
{
temp_psis=oslSetImageTileSize(psis, ((int)(counter%18)/6)*16, 0, 16, 32);
temp_psis=oslSetImageRotCenter(temp_psis);
temp_psis.angle = pie_attacks[i][1];
court_zoom = 0.00192*(py+24) + 0.562;
psis.stretchX = (int)(16*(float)court_zoom);
psis.stretchY = (int)(32*(float)court_zoom);
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));
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));
pie_attacks[i][1] += 16;
if (pie_attacks[i][1] > 360)
{
pie_attacks[i][1] = pie_attacks[i][1]%360;
pie_attacks[i][2]-=2;
}
}
else if (pie_attacks[i][2] <= 0)
{
explode.stretchX = explode.stretchY = 40 + 4*pie_attacks[i][2];
spr_draw(explode, px, py);
if (!(pie_attacks[i][2])) oslPlaySound(expl_sound);
if ((!shielded) && (counter%2))
{
health -= diff;
if (putin) health -= diff;
oslPlaySound(benj_sfx[random(5)]);
}
pie_attacks[i][2]--;
if (pie_attacks[i][2] == -10)
{
oslStopSound(psis_sfx);
pie_attacks[i][0]=0;
}
}
}
break;
}
case 7:
{
if ((mgcd < 1) && (health > 0) && (!lightsoff))
{
if (!(pie_attacks[i][1]))
{
temp_recipe=oslSetImageTileSize(recipe,0, 0, 32, 136);
}
else
{
temp_recipe=oslSetImageTileSize(recipe, 32, 0, 32, 136);
}
temp_recipe.trans=128;
if (pie_attacks[i][2] > 0)
{
oslDrawFillRect(pie_attacks[i][4], 0, (pie_attacks[i][1])?480:0, 272, _RGBA(0, 0, 0, 128));
for(u=0; u<4; u++)
{
spr_draw(temp_recipe, pie_attacks[i][4]+((pie_attacks[i][1])?0:32), u*136-(global_fr%137));
}
//oslSetAlpha(OSL_FX_DEFAULT, 0);
if (((pie_attacks[i][1]) && (pie_attacks[i][2] <= (480-pie_attacks[i][3]))) ||
((!(pie_attacks[i][1])) && (pie_attacks[i][2] <= pie_attacks[i][3])))
{
if (((pie_attacks[i][1]) && (px+32 >= pie_attacks[i][4])) || (!(pie_attacks[i][1]) && (px+32 <= pie_attacks[i][4])))
{
if (!al_get_sample_instance_position(mouth_sfx[0].instance)) oslPlaySound(mouth_sfx[0]);
oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
spr_draw(mouth, 240, 136);
pie_attacks[i][2]++;
mouth.stretchX += 6;
mouth.stretchY = 1.63*mouth.stretchX;
if (mouth . stretchY >= 420)
{
if (!al_get_sample_instance_position(mouth_sfx[1].instance)) oslPlaySound(mouth_sfx[1]);
oslDrawFillRect(0, 0, 480, 272, _RGB(255, 0, 0));
}
if (mouth . stretchY >= 450)
{
health -= 2*diff+4;
if (putin) health -= 2;
pie_attacks[i][0]=0;
mouth . stretchX = 10;
mouth . stretchY = 16;
}
}
else
{
if (!(pie_attacks[i][1]))
{
pie_attacks[i][4]--;
}
else
{
pie_attacks[i][4]++;
}
}
}
else
{
if (!(pie_attacks[i][1]))
{
if (pie_attacks[i][4] < pie_attacks[i][3]) pie_attacks[i][4]++;
if (pie_attacks[i][4] > 512)
{
darkness=0;
pie_attacks[i][0]=0;
}
}
else
{
if (pie_attacks[i][4] > pie_attacks[i][3]) pie_attacks[i][4]--;
if (pie_attacks[i][4] < -64)
{
darkness=0;
pie_attacks[i][0]=0;
}
}
}
pie_attacks[i][2]--;
}
else
{
darkness=0;
pie_attacks[i][0]=0;
}
if (pie_attacks[i][2] <= 0)
{
pie_attacks[i][0]=0;
}
}
break;
}
}
}
}
}
if ((!al_get_sample_instance_position(minigametime.instance)) && (!al_get_sample_instance_position(tvnoisesound.instance)) && (!paused))
{
tvnoise_ev=random((3800/(100*round*diff))*pie_ent.pie_hp+4200);
}
if ((tvnoise_ev <= 4000) && (tvnoise_ev > 3940) && (round==2) && (health>0) && (!lightsoff) && (!paused))
{
i=random(20);
spr_draw(tvnoise[i], 0, 0);
if (!al_get_sample_instance_position(tvnoisesound.instance)) oslPlaySound(tvnoisesound);
tvnoise_ev--;
}
else
{
oslStopSound(tvnoisesound);
}
}
if ((pie_ent.pie_hp) && (!mgcd))
{
reddv = (-0.64/(round*diff))*pie_ent.pie_hp+64;
oslDrawFillRect(0, 0, 480, 272, _RGBA(255, 0, 0, (int)(reddv*1.5)));
}
if ((health < 1) || (pie_ent.pie_hp < 1))
{
oslStopSound(psis_sfx);
ball_ent.speed_v=0;
if (pie_ent.pie_hp < 1)
{
if (!ko_frame)
{
a=pie_ent.pie_x-128+random(256);
for (i=0; i<8; i++)
{
for (j=0; j<5; j++)
{
pie_attacks[i][j]=0;
}
bulbfell=0;
}
}
mort=1;
if (round==2)
{
if (!(ko_frame%9))
{
oslPlaySound(expl_sound);
kx=pie_ent.pie_x-128+random(256);
ky=random(136);
}
if ((ko_frame%6) < 3)
{
explode.stretchX = 64;
explode.stretchY = 96;
spr_draw(explode, kx, ky);
}
else
{
explode.stretchX = 32;
explode.stretchY = 48;
spr_draw(explode, kx+16, ky+24);
}
}
}
if (ko_frame == 0)
{
oslPlaySound(ko_sfx);
oslPlaySound(expl_sound);
u=0;
}
if (health < 1)
{
if (ko_frame < 60)
{
if ((ko_frame%6) < 3)
{
explode.stretchX = 64;
explode.stretchY = 96;
spr_draw(explode, px, py);
}
else
{
explode.stretchX = 32;
explode.stretchY = 48;
spr_draw(explode, px+16, py+24);
}
}
}
if (ko_frame < 25)
{
temp_ko=oslSetImageTileSize(ko,0,0,120,96);
spr_draw(temp_ko, (int)(9.6*ko_frame-120), 88);
}
if ((ko_frame >= 25) && (ko_frame <= 50))
{
temp_ko=oslSetImageTileSize(ko,0,0,120,96);
spr_draw(temp_ko, 120, 88);
temp_ko=oslSetImageTileSize(ko,120,0,120,96);
spr_draw(temp_ko, (int)(-9.6*ko_frame+720), 88);
}
if (ko_frame > 50)
{
temp_ko=oslSetImageTileSize(ko,0,0,240,96);
spr_draw(temp_ko, 120, 88);
}
if (ko_frame >= 140) quit=1;
ko_frame++;
}
if (health < 0) health=0;
if (!mgcd)
{
temp_no=oslSetImageTileSize(numberz,160,0,16,16);
spr_draw(temp_no, 2, 2);
u=random(5);
temp_ultg=oslSetImageTileSize(ultgauge,0,0,64,8);
spr_draw(temp_ultg, 2+((round==2)?u:0), (round==2)?20+u:21);
temp_ultg=oslSetImageTileSize(ultgauge,(int)((ultlvl/60)*6),9,6,6);
spr_draw(temp_ultg, 69+((round==2)?u:0), (round==2)?21+u:22);
spr_draw(shlgauge, 2+((round==2)?u:0), (round==2)?28+u:30);
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));
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));
if ((ultlvl%60) > 15)
{
if ((ultrectshine+16) <= ultlvl%60)
{
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));
}
else
{
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));
}
if ((ultrectshine+8) <= ultlvl%60)
{
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));
}
else
{
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));
}
ultrectshine++;
if (ultrectshine > ultlvl%60)
{
ultrectshine=0;
}
}
i=random(15);
u=18;
if (health < 25) j=16; else j=0;
if (health / 100)
{
temp_no=oslSetImageTileSize(numberz,((round==2)?((i<12)?16:random(144)):16),0,16,16);
spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
u += 16;
}
if (health > 9)
{
if (round==2)
{
if (i<12)
{
temp_no=oslSetImageTileSize(numberz,((health%100)/10)*16,j,16,16);
}
else
{
temp_no=oslSetImageTileSize(numberz,random(128),j,16,16);
}
}
else temp_no=oslSetImageTileSize(numberz,((health%100)/10)*16,j,16,16);
spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
u += 16;
}
if (round==2)
{
if (i<12)
{
temp_no=oslSetImageTileSize(numberz,(health%10)*16,j,16,16);
}
else
{
temp_no=oslSetImageTileSize(numberz,random(128),j,16,16);
}
}
else temp_no=oslSetImageTileSize(numberz,(health%10)*16,j,16,16);
spr_draw(temp_no, u + ((round==2)?random(3):0), ((round==2)?1+random(3):2));
}
if ((paused) && (health))
{
oslDrawFillRect(0,0,480,272, _RGBA(0,8,0,224));
spr_draw(paused_gfx, 240, 136);
}
if ((!(counter%6)) && (shldlvl<60) && (!shielded) && (!paused)) shldlvl++;
if (counter < 256)
{
if (counter < 128)
{
temp_prem=oslSetImageTileSize(premess,0,0,256,64);
if (counter < 32) temp_prem.stretchY = counter*2;
else if (counter > 96) temp_prem.stretchY = 128-counter*2;
else temp_prem.stretchY = 64;
spr_draw(temp_prem, 112, 136-(premess.stretchY)/2);
}
else if (counter >= 128)
{
temp_prem=oslSetImageTileSize(premess,0,64,256,64);
if (counter < 160) temp_prem.stretchY = (counter-128)*2;
else if (counter > 224) temp_prem.stretchY = 256-counter*2;
else temp_prem.stretchY = 64;
spr_draw(temp_prem, 112, 136-(premess.stretchY)/2);
}
// if (counter==255) oslDeleteImage(premess);
}
/*if ((nbp==1) && (DEBUG))
{
if (osl_keys.held.R)
{
for (i=0; i<16; i++)
{
sprintf(buffer,"%d",(i<15)?att_cooldowns[i]:(int)reddv);
u = oslGetStringWidth(buffer);
oslSetTransparentColor(RGB(255,0,255));
oslSetBkColor(RGB(255,0,255));
oslSetTextColor(RGB(255, 255, 255));
oslDrawString(480-u, i*12, buffer);
}
}
if (osl_keys.held.L)
{
for (i=0; i<10; i++)
{
sprintf(buffer,"%d", (i<8)?pie_attacks[i][0]:
(i==8)?(pie_ent.pie_hp):
(int)(-2.55/(round*diff)*(pie_ent.pie_hp)+255));
u = oslGetStringWidth(buffer);
oslSetTransparentColor(RGB(255,0,255));
oslSetBkColor(RGB(255,0,255));
oslSetTextColor(RGB(255, 255, 255));
oslDrawString(480-u, i*12, buffer);
}
}
}*/
if ((att_ch_timer < 80) && (nbp==2) && (health > 0) && (pie_ent.pie_hp > 0) && (!paused))
{
spr_draw(attch, 32, 33);
spr_draw(cp2, 40 + cursor2p*32, 68);
for (i=0; i<15; i++)
{
if (att_cooldowns[i] > 1)
{
sprintf(buffer, "%d", att_cooldowns[i]/60);
oslDrawFillRect(32+i*32, 33, 32+(i+1)*32, 67, _RGBA(1, 1, 1, 128));
if (i < 12) oslDrawString(36+i*32, 42, buffer);
if ((i==12) && (pie_ent.pie_hp > 25*round*diff) && (ulted == 0) && (att_cooldowns[12] > 1))
{
al_draw_line(32+i*32, 33, 32+(i+1)*32, 66, _RGB(255, 0, 0), 0);
}
if ((i==13) && (pie_ent.pie_hp > 10*round*diff) && (ulted != 1) && (att_cooldowns[13] > 1))
{
al_draw_line(32+i*32, 33, 32+(i+1)*32, 66, _RGB(255, 0, 0), 0);
}
}
}
}
if (nbp == 2)
{
oslSetTextColor( _RGBA(255, 255, 255, 255-(global_fr%64)*4));
oslDrawString(270, 2, "OTHER MORTAL, USE I OR O TO ATTACK!");
oslSetTextColor( _RGB(255, 255, 255));
}
oslEndDrawing();
oslSwapBuffers();
}
//oslWaitVSync();
/*oslSwapBuffers();
oslWaitVSync();*/
if (mgcd==100)
{
u=random(6);
switch(u)
{
case 0:
i=sonicexe(diff);
break;
case 1:
i=mincer(diff);
break;
case 2:
i=shoot_teevees(diff, &health, round);
break;
case 3:
i=flappy_cacodemon(diff);
break;
case 4:
i=love_boat(diff);
break;
case 5:
i=sonicexe2(diff);
break;
}
if (i)
{
oslPlaySound(giygas[giyg_flag%3]);
} else health=0;
for (i=0; i<8; i++)
{
for (j=0; j<5; j++)
{
pie_attacks[i][j]=0;
}
bulbfell=0;
}
pie_ent.pie_facemode=0;
mgcd=0;
mouth.stretchX = 10;
if (diff != 3) a=diff; else a=2;
ball_ent = apply_impulse(ball_ent, random(2)?a:-1*a, random(2)?a:-1*a, (180-15*frappe)*3.14/180);
frappe=-1;
rckchscr=0;
if (putin) putin=0;
}
}
if ((mort==1) && (round==2))
{
oslStopSound(tvnoisesound);
oslDeleteSound(paf);
paf = oslLoadSoundFile("./sfx/sfx-0029.wav");
oslStopSound(giygas[2]);
oslPlaySound(tvnoisesound);
for(i=0; i<420; i++)
{
oslStartDrawing();
oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
u=random(4);
//oslSetBilinearFilter(1);
spr_draw(tvnoise[u], 0, 0);
spr_draw(tvnoise[u], random(480), random(272));
spr_draw(tvnoise[u], random(480)-240, random(272)-136);
spr_draw(tvnoise[u], random(240)-120, random(136)-68);
//oslSetBilinearFilter(0);
oslEndDrawing();
oslWaitVSync();
oslSwapBuffers();
}
oslStopSound(tvnoisesound);
oslPlaySound(paf);
for(i=0; i<=135; i+=2)
{
oslStartDrawing();
oslDrawFillRect(0, 0, 480, 272, _RGB(0, 0, 0));
oslDrawFillRect(0, i, 480, 272-i, _RGB(255, 255, 255));
oslEndDrawing();
oslWaitVSync();
oslSwapBuffers();
}
fadeout();
}
for (i=0; i<3; i++) oslDeleteSound(giygas[i]);
for (i=0; i<4; i++) oslDeleteSound(dictators_sfx[i]);
for (i=0; i<5; i++) oslDeleteImage(tvnoise[i]);
for (i=0; i<7; i++) oslDeleteSound(bulbsfx[i]);
for (i=0; i<11; i++) oslDeleteSound(benj_sfx[i]);
oslDeleteSound(tvnoisesound);
if (round==2)
{
for (i=0; i<33; i++) oslDeleteImage(giyg_bg[i]);
}
oslDeleteSound(ko_sfx);
oslDeleteSound(quitter);
oslDeleteSound(pew);
oslDeleteSound(paf);
oslDeleteSound(psis_sfx);
oslDeleteImage(numberz);
oslDeleteImage(starsky);
oslDeleteImage(lightning);
oslDeleteImage(pie);
oslDeleteImage(sleepwell);
oslDeleteImage(ko);
oslDeleteImage(explode);
oslDeleteImage(ball_gfx);
oslDeleteImage(ball_shad);
oslDeleteImage(mgswirl);
oslDeleteImage(powerball);
oslDeleteSound(minigametime);
oslDeleteSound(expl_sound);
oslDeleteSound(expl_sound2);
oslDeleteSound(meteor_fall);
oslDeleteSound(stun_sound);
oslDeleteSound(elec);
oslDeleteSound(thunder);
oslDeleteSound(whine);
oslDeleteSound(mouth_sfx[0]);
oslDeleteSound(mouth_sfx[1]);
oslDeleteSound(bounce);
oslDeleteImage(rckch[0]);
oslDeleteImage(rckch[1]);
oslDeleteImage(psycho);
oslDeleteImage(paused_gfx);
oslDeleteImage(ultgauge);
oslDeleteImage(shlgauge);
oslDeleteImage(visor);
oslDeleteImage(bulbasaur);
oslDeleteImage(recipe);
oslDeleteImage(shield);
oslDeleteImage(meteor);
oslDeleteImage(stunning);
oslDeleteImage(juche);
oslDeleteImage(psis);
oslDeleteImage(dictators);
oslDeleteImage(mouth);
oslDeleteImage(star);
oslDeleteImage(suppo_gfx);
oslDeleteImage(ulting_gfx);
oslDeleteImage(attch);
oslDeleteImage(cp2);
return mort;
}
void taunt(int nbt)
{
int frame=0, k;
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",
"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"};
OSL_SOUND wind = oslLoadSoundFile("./sfx/sfx-0019.wav");
k = oslGetStringWidth(texts[nbt]);
oslPlaySound(wind);
while(frame<282)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0, 0, 0));
if (frame < 82)
{
oslSetTextColor(_RGB(frame*3, frame*3, frame*3));
oslDrawString((480 - k)/2, 130, texts[nbt]);
}
if ((frame >= 82) && (frame <= 200))
{
oslSetTextColor(_RGB(255, 255, 255));
oslDrawString((480 - k)/2, 130, texts[nbt]);
}
else if (frame > 200)
{
oslSetTextColor(_RGB((282-frame)*3, (282-frame)*3, (282-frame)*3));
oslDrawString((480 - k)/2, 130, texts[nbt]);
}
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
frame++;
}
oslDeleteSound(wind);
}
void creepypasta(int cpn)
{
int i, j, k, l, frame=0;
char buffer[20];
OSL_IMAGE suicidemouse[18];
OSL_IMAGE temp_gfx;
OSL_SOUND creepysfx, sfx;
int bok[4][16];
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"};
switch(cpn)
{
case 0:
for (i=0; i<18; i++)
{
sprintf(buffer,"./gfx/gfx-%d.png",i+1160);
suicidemouse[i]=LoadImg(buffer);
suicidemouse[i].stretchX = 363;
suicidemouse[i].stretchY = 272;
suicidemouse[i]=oslSetImageRotCenter(suicidemouse[i]);
}
creepysfx = oslLoadSoundFile("./sfx/sfx-0065.wav");
oslSetSoundLoop(creepysfx, 1);
oslPlaySound(creepysfx);
i=0;
while (frame < 620)
{
if (!(frame%6)) i++;
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0, 0, 0));
spr_draw(suicidemouse[i%18],240,138);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
frame++;
}
for (i=0; i<18; i++)
{
oslDeleteImage(suicidemouse[i]);
}
oslStopSound(creepysfx);
oslDeleteSound(creepysfx);
break;
case 1:
suicidemouse[0]=LoadImg("./gfx/gfx-1038.png");
suicidemouse[1]=LoadImg("./gfx/gfx-1039.png");
suicidemouse[0]=oslSetImageRotCenter(suicidemouse[0]);
creepysfx = oslLoadSoundFile("./sfx/sfx-0058.wav");
oslSetSoundLoop(creepysfx, 0);
oslPlaySound(creepysfx);
while (frame < 45)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
suicidemouse[0]=oslSetAlpha(suicidemouse[0], frame*4);
spr_draw(suicidemouse[0],240,271);
oslEndDrawing();
//frame_debug(frame);
oslSwapBuffers();
suicidemouse[0].stretchX +=2;
suicidemouse[0].stretchY +=2;
oslSetImageRotCenter(suicidemouse[0]);
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
frame++;
oslWaitVSync();
}
for (i=0; i<4; i++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
for (i=0; i<4; i++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0, 0, 0));
spr_draw(suicidemouse[1],0,0);
oslEndDrawing();
oslSwapBuffers();
}
fadeout();
oslDeleteImage(suicidemouse[0]);
oslDeleteImage(suicidemouse[1]);
/*while (oslGetSoundChannel(creepysfx) == 0);*/
oslDeleteSound(creepysfx);
break;
case 2:
j = random(2);
if (!j) suicidemouse[0] = LoadImg("./gfx/endisneigh.png");
else suicidemouse[0] = LoadImg("./gfx/endisneigh2.png");
if (!j) creepysfx = oslLoadSoundFile("./sfx/sfx-0083.wav");
else creepysfx = oslLoadSoundFile("./sfx/sfx-0109.wav");
oslSetSoundLoop(creepysfx, 0);
oslPlaySound(creepysfx);
for (i=0; i<10; i++)
{
oslStartDrawing();
spr_draw(suicidemouse[0],0,0);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
fadeout();
oslDeleteImage(suicidemouse[0]);
break;
case 3:
suicidemouse[0] = LoadImg("./gfx/safe.png");
suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
creepysfx = oslLoadSoundFile("./sfx/sfx-0026.wav");
oslSetSoundLoop(creepysfx, 0);
oslPlaySound(creepysfx);
for (i=0; i<3; i++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
for (i=0; i<200; i++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(suicidemouse[0],239,135);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
fadeout();
oslDeleteImage(suicidemouse[0]);
oslDeleteSound(creepysfx);
break;
case 4:
for (i=0; i<4; i++)
{
sprintf(buffer,"./gfx/bnours%d.png",i+1);
suicidemouse[i]=LoadImg(buffer);
}
creepysfx = oslLoadSoundFile("./sfx/sfx-0149.wav");
oslSetSoundLoop(creepysfx, 0);
oslPlaySound(creepysfx);
i=0;
while (frame < 600)
{
if (!(frame%4)) i++;
oslStartDrawing();
spr_draw(suicidemouse[i%4],0,0);
oslEndDrawing();
oslSwapBuffers();
frame++;
oslWaitVSync();
}
fadeout();
for (i=0; i<4; i++)
{
oslDeleteImage(suicidemouse[i]);
}
oslDeleteSound(creepysfx);
break;
case 5:
suicidemouse[0] = LoadImg("./gfx/court_joy.png");
suicidemouse[1] = LoadImg("./gfx/gfx-0717.png");
creepysfx = oslLoadSoundFile("./sfx/sfx-0147.wav");
sfx=oslLoadSoundFile("./sfx/sfx-0011.wav");
oslPlaySound(sfx);
for (j=0; j<256; j+=3)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(255,255,255));
suicidemouse[0]=oslSetAlpha(suicidemouse[0], j);
suicidemouse[1]=oslSetAlpha(suicidemouse[1], j);
spr_draw(suicidemouse[0],0,0);
spr_draw(suicidemouse[1],177,215);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
/*oslSetAlpha(OSL_FX_DEFAULT,0);*/
oslSetSoundLoop(creepysfx, 0);
oslPlaySound(creepysfx);
while (frame < 292)
{
oslStartDrawing();
spr_draw(suicidemouse[0],0,0);
spr_draw(suicidemouse[1],177,215);
oslEndDrawing();
oslSwapBuffers();
frame++;
oslWaitVSync();
}
fadeout();
oslDeleteImage(suicidemouse[0]);
oslDeleteImage(suicidemouse[1]);
oslDeleteSound(creepysfx);
oslDeleteSound(sfx);
break;
case 6:
creepysfx = oslLoadSoundFile("./sfx/sfx-0060.wav");
suicidemouse[0] = LoadImg("./gfx/oag1.png");
suicidemouse[1] = LoadImg("./gfx/oag2.png");
oslStartDrawing();
spr_draw(suicidemouse[0],0,0);
oslEndDrawing();
oslSwapBuffers();
while (frame < 720)
{
if (frame==480)
{
oslSetSoundLoop(creepysfx, 0);
oslPlaySound(creepysfx);
}
if (frame >= 480)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(suicidemouse[1],173,26);
oslEndDrawing();
oslSwapBuffers();
}
else if (frame < 480)
{
oslStartDrawing();
spr_draw(suicidemouse[0],0,0);
oslEndDrawing();
oslSwapBuffers();
}
frame++;
oslWaitVSync();
}
fadeout();
oslDeleteImage(suicidemouse[0]);
oslDeleteImage(suicidemouse[1]);
oslDeleteSound(creepysfx);
break;
case 7:
creepysfx = oslLoadSoundFile("./sfx/sfx-0148.wav");
suicidemouse[0] = LoadImg("./gfx/smurf_village.png");
suicidemouse[1] = LoadImg("./gfx/smurf_sprite.png");
suicidemouse[2] = LoadImg("./gfx/smurf_papazombie.png");
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(suicidemouse[0],0,0);
oslEndDrawing();
i=0;
j=-32;
frame=0;
oslSetSoundLoop(creepysfx, 0);
oslPlaySound(creepysfx);
suicidemouse[2]=oslSetImageRotCenter(suicidemouse[2]);
//fadein(suicidemouse[0]);
while (frame < 400)
{
if (!(frame%2))
{
if (j < 222) j+=4;
}
if (!(frame%3))
{
i++;
}
oslStartDrawing();
spr_draw(suicidemouse[0],0,0);
temp_gfx = oslSetImageTileSize(suicidemouse[1],(i%8)*32,0,32,42);
temp_gfx.stretchX = 64;
temp_gfx.stretchY = 84;
spr_draw(temp_gfx, j, 181);
oslEndDrawing();
if (j >= 222)
{
oslStartDrawing();
spr_draw(suicidemouse[0],0,0);
temp_gfx = oslSetImageTileSize(suicidemouse[1],256,0,32,42);
temp_gfx.stretchX = 64;
temp_gfx.stretchY = 84;
spr_draw(temp_gfx, j, 181);
oslEndDrawing();
if (frame > 248)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGBA(255,0,0,155));
suicidemouse[2]=oslSetAlpha(suicidemouse[2], 250);
spr_draw(suicidemouse[2],238,136);
if (!(frame%2))
{
suicidemouse[2].stretchX+=16;
suicidemouse[2].stretchY+=16;
}
oslEndDrawing();
}
}
//frame_debug(frame);
oslSwapBuffers();
frame++;
oslWaitVSync();
}
oslDeleteImage(suicidemouse[0]);
oslDeleteImage(suicidemouse[1]);
oslDeleteImage(suicidemouse[2]);
oslDeleteSound(creepysfx);
/*oslSetBilinearFilter(1);
oslDeleteSound(sfx);*/
break;
case 8:
creepysfx = oslLoadSoundFile("./sfx/sfx-0151.wav");
suicidemouse[0] = LoadImg("./gfx/squiward_suicide.png");
suicidemouse[1] = LoadImg("./gfx/bikini_hell.png");
suicidemouse[0]=oslSetImageRotCenter(suicidemouse[0]);
suicidemouse[1]=oslSetImageRotCenter(suicidemouse[1]);
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
oslEndDrawing();
oslSetSoundLoop(creepysfx, 0);
oslPlaySound(creepysfx);
frame=0;
while((suicidemouse[0].stretchX) >= 0)
{
if (!(frame%2))
{
oslStartDrawing();
spr_draw(suicidemouse[1],240,136);
spr_draw(suicidemouse[0],240,136);
if (!(frame%4) && (frame < 282))
{
suicidemouse[0].stretchX++;
suicidemouse[0].stretchY++;
suicidemouse[0].angle += 6;
}
if (frame >= 282)
{
suicidemouse[0].stretchX-=3;
suicidemouse[0].stretchY-=3;
suicidemouse[0].angle -= 11;
}
oslEndDrawing();
//frame_debug(frame);
oslSwapBuffers();
}
else
{
oslStartDrawing();
spr_draw(suicidemouse[1],240,136);
spr_draw(suicidemouse[0],240,136);
oslEndDrawing();
oslSwapBuffers();
}
oslWaitVSync();
frame++;
}
oslStartDrawing();
spr_draw(suicidemouse[1],240,136);
oslEndDrawing();
oslSwapBuffers();
oslDeleteImage(suicidemouse[0]);
oslDeleteImage(suicidemouse[1]);
oslDeleteSound(creepysfx);
/*oslSetTransparentColor(RGB(255,0,255));
oslDeleteSound(sfx);*/
break;
case 9:
creepysfx = oslLoadSoundFile("./sfx/sfx-0152.wav");
j=0;
i=0;
frame=0;
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
oslEndDrawing();
for (k=0; k<16; k++)
{
suicidemouse[k] = LoadImg("./gfx/creepycircle.png");
suicidemouse[k] = oslSetImageRotCenter(suicidemouse[k]);
}
while (frame<16*2)
{
if (!(frame%2))
{
bok[0][i]=(2*(random(24)+1))-24;
bok[1][i]= random(128)+127;
bok[2][i]= random(128)+127;
bok[3][i]= random(128)+127;
oslStartDrawing();
if (bok[0][i] > 0) suicidemouse[i].stretchX = bok[0][i]; else suicidemouse[i].stretchX = 1;
if (bok[0][i] > 0) suicidemouse[i].stretchY = bok[0][i]; else suicidemouse[i].stretchY = 1;
spr_draw(suicidemouse[i],(i%4)*40+172, (i/4)*40+64);
oslEndDrawing();
i++;
}
else
{
oslWaitVSync();
}
frame++;
}
oslSwapBuffers();
//oslWaitKey();
i=0;
j=0;
k=0;
frame=0;
while(k < 100)
{
if (!(frame%4))
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
for (j=0; j<16; j++)
{
if (bok[0][j] > -24) bok[0][j]--;
if (bok[0][j] <= -24)
{
k++;
bok[0][j]=24;
i=0;
oslPlaySound(creepysfx);
bok[1][j]= random(128)+127;
bok[2][j]= random(128)+127;
bok[3][j]= random(128)+127;
}
if (bok[0][j] > 1) suicidemouse[j].stretchX = suicidemouse[j].stretchY = bok[0][j];
suicidemouse[j].R=bok[2][j];
suicidemouse[j].G=bok[3][j];
suicidemouse[j].B=bok[1][j];
if (bok[0][j] > 21) suicidemouse[j].R=suicidemouse[j].G=suicidemouse[j].B=255;
spr_draw(suicidemouse[j],(j%4)*40+172, (j/4)*40+64);
}
oslEndDrawing();
//frame_debug(frame);
oslSwapBuffers();
//oslWaitKey();
}
else
{
oslWaitVSync();
}
frame++;
}
for(i=0; i<16; i++) oslDeleteImage(suicidemouse[i]);
oslDeleteSound(creepysfx);
break;
case 10:
case 15:
creepysfx = oslLoadSoundFile("./sfx/sfx-0057.wav");
sfx = oslLoadSoundFile("./sfx/bark.wav");
suicidemouse[0] = LoadImg("./gfx/gfx-0253.png");
suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
for (i=1; i<9; i++)
{
sprintf(buffer,"./gfx/gfx-0%d.png",i+661);
suicidemouse[i]=LoadImg(buffer);
suicidemouse[i].stretchX = 480;
suicidemouse[i].stretchY = 272;
}
frame=0;
j=0;
/*oslStopSound(w4c);*/
oslSetSoundLoop(creepysfx, 1);
oslPlaySound(creepysfx);
while (frame < 750)
{
if (!(frame%16))
{
suicidemouse[0].stretchX++;
suicidemouse[0].stretchY = (int)(1.27*(suicidemouse[0].stretchX));
}
if (!(frame%4))
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(suicidemouse[(j%8)+1],0,0);
suicidemouse[0]=oslSetAlpha(suicidemouse[0],75);
spr_draw(suicidemouse[0],240,136);
oslEndDrawing();
oslSwapBuffers();
}
else
{
j++;
al_rest(0.016);
}
frame++;
oslWaitVSync();
}
if (cpn == 15)
{
suicidemouse[0].stretchX = 480;
suicidemouse[0].stretchY = 610;
oslStartDrawing();
suicidemouse[0]=oslSetAlpha(suicidemouse[0],255);
spr_draw(suicidemouse[0],240,136);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
al_set_sample_instance_position(sfx.instance, 16);
oslPlaySound(sfx);
while (al_get_sample_instance_position(sfx.instance));
}
for (i=0; i<9; i++)
{
oslDeleteImage(suicidemouse[i]);
}
oslDeleteSound(creepysfx);
oslDeleteSound(sfx);
fadeout();
break;
case 11:
case 16:
suicidemouse[0] = LoadImg("./gfx/dolan.png");
creepysfx = oslLoadSoundFile("./sfx/dolan.wav");
oslSetSoundLoop(creepysfx, 0);
i=272;
frame=0;
j=random(7);
while(frame < 1200)
{
if (!(frame%2))
{
if (i>72)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(suicidemouse[0], 332, i);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
i--;
}
if ((frame > 800) && (i<73))
{
if (cpn == 16)
{
suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
suicidemouse[0].stretchX = 480;
suicidemouse[0].stretchY = 648;
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(suicidemouse[0],240,136);
oslEndDrawing();
oslSwapBuffers();
if (frame == 812) oslPlaySound(creepysfx);
oslWaitVSync();
}
else
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(suicidemouse[0], 332, i+1);
oslSetTextColor(_RGB(255, 255, 255));
k = oslGetStringWidth(text[j]);
oslDrawString((480 - k)/2, 32, text[j]);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
}
oslWaitVSync();
}
else
{
al_rest(0.008);
}
frame++;
oslWaitVSync();
}
oslDeleteImage(suicidemouse[0]);
oslDeleteSound(creepysfx);
/* while (oslGetSoundChannel(creepysfx) == 1);
oslDeleteSound(sfx);*/
break;
case 12:
k=random(42);
j=random(25);
sprintf(buffer,"./sfx/sfx-0%d.wav",j+121);
creepysfx = oslLoadSoundFile(buffer);
j=random(25);
sprintf(buffer,"./sfx/sfx-0%d.wav",j+121);
sfx = oslLoadSoundFile(buffer);
sprintf(buffer,"./gfx/pasta%d.png",k+1);
suicidemouse[0] = LoadImg(buffer);
oslSetSoundLoop(creepysfx, 0);
al_set_sample_instance_position(creepysfx.instance, 16);
oslPlaySound(creepysfx);
suicidemouse[0]=oslSetImageRotCenter(suicidemouse[0]);
frame=0;
//oslSetBilinearFilter(1);
while (al_get_sample_instance_position(creepysfx.instance))
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(suicidemouse[0], 240, 136);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
if (!(frame%4)) suicidemouse[0].stretchX++;
suicidemouse[0].stretchY = (int)((float)(suicidemouse[0].sizeY)/(suicidemouse[0].sizeX)*suicidemouse[0].stretchX);
frame++;
}
oslSetSoundLoop(sfx, 0);
al_set_sample_instance_position(sfx.instance, 16);
oslPlaySound(sfx);
while (al_get_sample_instance_position(sfx.instance))
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(suicidemouse[0], 240, 136);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
if (!(frame%4)) suicidemouse[0].stretchX++;
suicidemouse[0].stretchY = (int)((float)(suicidemouse[0].sizeY)/(suicidemouse[0].sizeX)*suicidemouse[0].stretchX);
frame++;
}
//oslSetBilinearFilter(0);
oslDeleteSound(creepysfx);
oslDeleteImage(suicidemouse[0]);
oslDeleteSound(sfx);
break;
case 13:
creepysfx = oslLoadSoundFile("./sfx/sfx-0150.wav");
oslSetSoundLoop(creepysfx, 0);
al_set_sample_instance_position(creepysfx.instance, 16);
oslPlaySound(creepysfx);
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,255));
oslSetTextColor(_RGB(255, 255, 255));
al_draw_text(freesans, current_col, 8, 0, 0, "FATAL ERROR OCURRED IN THREAD");
al_draw_text(freesans, current_col, 8, 12, 0, "Shit happens... :-(");
al_draw_text(freesans, current_col, 8, 36, 0, "Exception Details:");
al_draw_text(freesans, current_col, 8, 48, 0, "Exception - Bus error (death)");
al_draw_text(freesans, current_col, 8, 60, 0, "EPC - 08A1C208");
al_draw_text(freesans, current_col, 8, 72, 0, "Cause - 07H30P13");
al_draw_text(freesans, current_col, 8, 84, 0, "Status - D34D0L0L");
al_draw_text(freesans, current_col, 8, 96, 0, "BadVAddr - 0012AC40");
al_draw_text(freesans, current_col, 8, 108, 0, "zr:000Y0000 at:0008OF00 v0:000U0000 v1:00000012");
al_draw_text(freesans, current_col, 8, 120, 0, "a0:0000A001 a1:000R002E a2:09FFE768 a3:09FF06BC");
al_draw_text(freesans, current_col, 8, 132, 0, "t0:00D0E6BC t1:000E07D4 t2:0000A032 t3:8804D000");
al_draw_text(freesans, current_col, 8, 144, 0, "t4:09FFY5F8 t5:000O0E00 t6:08A2U658 t7:00008600");
al_draw_text(freesans, current_col, 8, 156, 0, "t8:000S0000 t9:000U8368 s0:08AC0000 s1:08AFK53C");
al_draw_text(freesans, current_col, 8, 168, 0, "s2:08BA0C20 s3:08BT453C s4:08A30000 s5:08A30000");
al_draw_text(freesans, current_col, 8, 180, 0, "s6:000T00EC s7:0000H0F9 k0:09FFIF00 k1:0000S000");
al_draw_text(freesans, current_col, 8, 192, 0, "gp:08AGD390 sp:000AFF00 fp:08A3M000 ra:0896E4BC");
al_draw_text(freesans, current_col, 8, 216, 0, "Will exit to Windows desktop in 10 seconds");
oslEndDrawing();
oslSwapBuffers();
while (al_get_sample_instance_position(creepysfx.instance));
oslDeleteSound(creepysfx);
fadeout();
break;
case 14:
if (random(2)) suicidemouse[0] = LoadImg("./gfx/smilechu.png"); else suicidemouse[0] = LoadImg("./gfx/smilechu2.png");
suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
i=0;
j=0;
frame=0;
while (i < 12)
{
if (!(frame%3))
{
if (!j)
{
k=random(70);
suicidemouse[0].stretchX = 10+random(150);
l=82+random(36);
}
else k++;
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
if (k>44)
{
j=1;
if (k < 74)
{
suicidemouse[0].stretchX += 13;
suicidemouse[0].stretchY = (int)(1.18 * (suicidemouse[0].stretchX));
spr_draw(suicidemouse[0],240,138);
}
if (k==l)
{
i++;
j=0;
}
}
//frame_debug(k);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
else
{
al_rest(0.008);
oslWaitVSync();
}
frame++;
oslWaitVSync();
}
oslDeleteImage(suicidemouse[0]);
//oslDeleteSound(sfx);
break;
case 17:
suicidemouse[0] = LoadImg("./gfx/nigel.png");
suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
creepysfx = oslLoadSoundFile("./sfx/smashing.wav");
frame=0;
oslPlaySound(creepysfx);
while (frame<512)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
for(i=0; i<8; i++)
{
j=random(10)-20;
oslDrawFillRect(i*60,120+j,(i*60)+60,152+(-1*j), _RGB(96,96,0));
oslDrawFillRect(i*60,128+j,(i*60)+60,144+(-1*j), _RGB(128,128,0));
oslDrawFillRect(i*60,136+j,(i*60)+60,136+(-1*j), _RGB(160,160,0));
}
if (frame >= 480)
{
spr_draw(suicidemouse[0],240,138);
suicidemouse[0].stretchX += 16;
suicidemouse[0].stretchY = (int)(1.33*(suicidemouse[0].stretchX));
}
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
frame++;
}
oslDeleteSound(creepysfx);
oslDeleteImage(suicidemouse[0]);
break;
case 18:
suicidemouse[0] = LoadImg("./gfx/caaat.png");
suicidemouse[1] = LoadImg("./gfx/caaat_ns.png");
creepysfx = oslLoadSoundFile("./sfx/caaat.wav");
suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
suicidemouse[1] = oslSetImageRotCenter(suicidemouse[1]);
al_set_sample_instance_position(creepysfx.instance, 16);
oslPlaySound(creepysfx);
frame=0;
while (al_get_sample_instance_position(creepysfx.instance))
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
if (frame<150)
{
spr_draw(suicidemouse[1],240,138);
}
else
{
spr_draw(suicidemouse[0],240,138);
}
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
frame++;
}
oslDeleteSound(creepysfx);
oslDeleteImage(suicidemouse[0]);
oslDeleteImage(suicidemouse[1]);
break;
case 19:
for (i=0; i<9; i++)
{
sprintf(buffer,"./gfx/pona0%d.png",i);
suicidemouse[i]=LoadImg(buffer);
suicidemouse[i].stretchX = 480;
suicidemouse[i].stretchY = 272;
suicidemouse[i]=oslSetImageRotCenter(suicidemouse[i]);
}
frame=0;
creepysfx = oslLoadSoundFile("./sfx/pona.wav");
oslPlaySound(creepysfx);
i=0;
while (frame < 333)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
if (frame < 110)
{
spr_draw(suicidemouse[frame/14],240,138);
}
if ((frame >= 110) && (frame <= 140))
{
spr_draw(suicidemouse[8],240,138);
}
oslEndDrawing();
//frame_debug((int)oslGetRamStatus().maxAvailable);
oslSwapBuffers();
oslWaitVSync();
frame++;
}
oslDeleteSound(creepysfx);
for (i=0; i<9; i++)
{
oslDeleteImage(suicidemouse[i]);
}
break;
case 20:
suicidemouse[0] = LoadImg("./gfx/pookey1.png");
suicidemouse[1] = LoadImg("./gfx/pookey2.png");
creepysfx = oslLoadSoundFile("./sfx/pookeymon.wav");
suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
suicidemouse[1] = oslSetImageRotCenter(suicidemouse[1]);
oslPlaySound(creepysfx);
frame=0;
while(frame < 550)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
if ((frame >= 375) && (frame < 389)) spr_draw(suicidemouse[0], 240, 136);
if ((frame >= 389) && (frame < 401)) spr_draw(suicidemouse[1], 240, 136);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
frame++;
}
oslDeleteImage(suicidemouse[0]);
oslDeleteImage(suicidemouse[1]);
oslDeleteSound(creepysfx);
break;
case 21:
suicidemouse[0] = LoadImg("./gfx/gfx-0825.png");
creepysfx = oslLoadSoundFile("./sfx/sfx-0030.wav");
suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
oslPlaySound(creepysfx);
frame=0;
suicidemouse[0].stretchX = i = 396;
suicidemouse[0].stretchY = (int)(1.68*suicidemouse[0].stretchX);
while(frame < 480)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
i=suicidemouse[0].stretchX;
if ((suicidemouse[0].stretchX) > -72)
{
if (suicidemouse[0].stretchX >= 0)
{
suicidemouse[0].trans=255;
spr_draw(suicidemouse[0], 240, 136);
}
if (suicidemouse[0].stretchX >= -36)
{
suicidemouse[0].stretchX += 36;
suicidemouse[0].stretchY = (int)(1.68* (suicidemouse[0].stretchX));
suicidemouse[0].trans=128;
spr_draw(suicidemouse[0], 240, 136);
}
suicidemouse[0].stretchX += ((suicidemouse[0].stretchX < -36)?72:36);
suicidemouse[0].stretchY = (int)(1.68* (suicidemouse[0].stretchX));
suicidemouse[0].trans=64;
spr_draw(suicidemouse[0], 240, 136);
}
suicidemouse[0].stretchX = i;
if (!(frame%5))
{
suicidemouse[0].stretchX = i - 18;
}
suicidemouse[0].stretchY = (int)(1.68*suicidemouse[0].stretchX);
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
frame++;
}
oslDeleteImage(suicidemouse[0]);
oslDeleteSound(creepysfx);
break;
case 22:
suicidemouse[0] = LoadImg("./gfx/lavender.png");
creepysfx = oslLoadSoundFile("./sfx/lavender.wav");
temp_gfx = oslSetImageTileSize(suicidemouse[0],0,0,48,48);
temp_gfx = oslSetImageRotCenter(temp_gfx);
oslPlaySound(creepysfx);
frame=0;
while(frame < 420)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
if (frame <= 341)
{
temp_gfx.trans=random(128);
temp_gfx.stretchX = temp_gfx.stretchY = 96;
}
else
{
temp_gfx.trans=255;
temp_gfx = oslSetImageTileSize(suicidemouse[0],48,0,48,48);
temp_gfx = oslSetImageRotCenter(temp_gfx);
temp_gfx.stretchX = temp_gfx.stretchY = 640;
}
if (frame < 395) spr_draw(temp_gfx, 240+((frame>341)?0:random(4)), 136+((frame>341)?104:random(4)));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
frame++;
}
oslDeleteImage(suicidemouse[0]);
oslDeleteSound(creepysfx);
break;
case 23:
frame=0;
suicidemouse[0] = LoadImg("./gfx/c64.png");
suicidemouse[1] = LoadImg("./gfx/c64-ar.png");
while (frame < 360)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
oslDrawFillRect(60, 0, 420, 272, _RGB(165,165,255));
oslDrawFillRect(80, 46, 400, 226, _RGB(66,66,231));
if (frame < 150)
{
for(i=0; i<1000; i++)
{
spr_draw(suicidemouse[1], (i%40)*8+80, ((int)(i/40))*8+38);
}
}
else
{
spr_draw(suicidemouse[0], 80, 46);
if ((frame%60) < 30)
{
oslDrawFillRect(80, 94, 88, 102, _RGB(165,165,255));
}
}
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
frame++;
}
oslDeleteImage(suicidemouse[0]);
oslDeleteImage(suicidemouse[1]);
break;
case 24:
suicidemouse[0] = LoadImg("./gfx/sncell.png");
suicidemouse[1] = LoadImg("./gfx/sncpnt.png");
suicidemouse[0] = oslSetImageRotCenter(suicidemouse[0]);
creepysfx = oslLoadSoundFile("./sfx/nuls.wav");
al_set_sample_instance_position(creepysfx.instance, 16);
oslPlaySound(creepysfx);
frame=0;
while (al_get_sample_instance_position(creepysfx.instance))
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(suicidemouse[0], 236+random(7), 132+random(7));
spr_draw(suicidemouse[1], 224+random(7), 132+random(7));
spr_draw(suicidemouse[1], 246+random(7), 132+random(7));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
oslEndDrawing();
oslSwapBuffers();
fadeout();
oslDeleteImage(suicidemouse[0]);
oslDeleteImage(suicidemouse[1]);
oslDeleteSound(creepysfx);
cls();
break;
}
fadeout();
}
void ben()
{
OSL_IMAGE noise[9];
ALLEGRO_BITMAP *ben_sub;
OSL_SOUND ben_mzx = oslLoadSoundFile("./sfx/ben.wav");
char buffer[20];
int i, j, frame=0, trans;
noise[0]=LoadImg("./gfx/ben.png");
for (i=1; i<9; i++)
{
sprintf(buffer,"./gfx/gfx-0%d.png",i+661);
noise[i]=LoadImg(buffer);
noise[i].stretchX = 480;
noise[i].stretchY = 272;
}
oslPlaySound(ben_mzx);
while(frame<704)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(noise[(frame%8)+1],0,0);
if (frame<192)
{
trans=frame;
}
else if (frame>512) trans=704-frame;
else trans=192;
i=0;
while(i<272)
{
j=random(27)+13;
ben_sub=al_create_sub_bitmap(noise[0].asset,0,i,425,i+j);
al_draw_tinted_bitmap(ben_sub, al_map_rgba(255, 255, 255, trans), random(55), i, 0);
i += j;
}
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
frame++;
}
for(i=0; i<9; i++)
{
oslDeleteImage(noise[i]);
}
oslDeleteSound(ben_mzx);
fadeout();
}
void rndsft()
{
int frame=-3, i=0, j=0, k=0, l=0, m=0, n=0;
OSL_IMAGE rndsft, px;
ALLEGRO_BITMAP *rndsft_sub;
OSL_MOD rndtheme;
rndsft = LoadImg("./gfx/rndsft.png");
px = LoadImg("./gfx/pixel.png");
rndtheme = oslLoadSoundFileMOD("./muzaxx/rndsft.xm");
rndsft=oslSetImageRotCenter(rndsft);
oslSetSoundLoopMOD(rndtheme, 0);
oslPlaySoundMOD(rndtheme);
while(frame<470)
{
oslStartDrawing();
al_clear_to_color(_RGB(0, 0, 0));
if (frame >= 161)
{
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);
al_draw_bitmap(rndsft_sub, (480-rndsft.sizeX)/2, (272-rndsft.sizeY)/2, 0);
}
if ((frame >= 200) && (frame <= 220))
{
if (frame==200) i=random(360);
if (!(frame%2))
{
oslDrawFillRect(0, 0, 480, 272, _RGB(0,0,0));
for (j=0; j<13; j++)
{
oslDrawFillRect(i+j*16, 60, i+j*16+8, 272, _RGB(255,127,0));
}
}
}
if ((frame >= 259) && (frame <= 295))
{
if (frame == 259)
{
i=random(32)+24;
k=random(9)+6;
oslSetTextColor(_RGB(0, 224, 0));
m=random(127);
n=random(44);
}
for(j=0; j<k; j++)
{
for (l=0; l<i; l++)
{
oslDrawString(m+l*6, n+j*12, "@");
}
}
}
if ((frame >= 336) && (frame <= 345))
{
oslDrawFillRect(0,0,480,272, _RGB(0,0,0));
spr_draw(rndsft,random(480),random(272));
}
if (frame >= 369)
{
for(i=0; i<48; i++)
{
for (j=0; j<17; j++)
{
al_draw_pixel(i*10, j*16, _RGB(random(256), random(256), random(256)));
}
}
if ((frame == 369) || (!(frame%4))) k=random(360);
oslDrawFillRect(k,0,k+32,272, _RGB(0,254,255));
}
oslEndDrawing();
oslSwapBuffers();
frame++;
oslWaitVSync();
}
oslDeleteImage(rndsft);
oslDeleteImage(px);
oslStopSoundMOD(rndtheme);
fadeout();
}
int warning_onepilepsy()
{
OSL_IMAGE warning = LoadImg("./gfx/warning.png");
OSL_MOD theme = oslLoadSoundFileMOD("./muzaxx/giygas.xm");
int i, w, frame=0, quit=0, red=0, accept=0;
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"};
warning.stretchX = 360;
warning=oslSetImageRotCenter(warning);
oslPlaySoundMOD(theme);
while (!quit)
{
oslStartDrawing();
al_clear_to_color(_RGB(0, 0, 0));
for (i=0; i<7; i++)
{
if (i<5) oslSetTextColor(_RGB(255, 255, 255));
if (i>4) oslSetTextColor(_RGB(255, 255, 0));
w = oslGetStringWidth(text[i]);
oslDrawString((480 - w)/2, 92+i*20, text[i]);
}
warning.angle = 7*sin((0.25*frame)/3.14);
spr_draw(warning, 240, 32);
oslSetTextColor(_RGB(red, 0, 0));
w = oslGetStringWidth(text[7]);
oslDrawString((480 - w)/2, 256, text[7]);
red -= 3;
if (red < 0) red=255;
al_get_keyboard_state(&kbdstate);
if (al_key_down(&kbdstate, ALLEGRO_KEY_SPACE) || al_key_down(&kbdstate, ALLEGRO_KEY_ENTER))
{
accept=1;
quit=1;
}
else if (al_key_down(&kbdstate, ALLEGRO_KEY_ESCAPE))
{
accept=0;
quit=1;
}
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
frame++;
}
//oslFlushKey();
//oslSetBilinearFilter(0);
fadeout();
oslStopSoundMOD(theme);
oslDeleteSoundMOD(theme);
return accept;
}
int main()
{
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;
int q=strlen("v2.00"), scrw, scrh, h=100;
const char *items[4] = {"CHALLENGE THE PIE", "DIFFICULTY:", "WHO DID THIS MESS?", "FLEE TO WINDOWS LIKE A COWARD"};
const char *diffs[3] = {"WUSS", "MANLY", "HELL"};
OSL_IMAGE hand;
OSL_IMAGE title;
OSL_IMAGE alice;
OSL_SOUND crack;
OSL_SOUND theme;
srand(time(NULL));
if(!al_init()) {
fprintf(stderr, "failed to initialize allegro!\n");
exit(-1);
}
al_set_new_display_option(ALLEGRO_VSYNC, 1, ALLEGRO_REQUIRE);
al_set_new_display_option(ALLEGRO_SINGLE_BUFFER, 1, ALLEGRO_REQUIRE);
al_set_new_display_option(ALLEGRO_RENDER_METHOD, 0, ALLEGRO_REQUIRE);
al_set_new_display_flags(ALLEGRO_FULLSCREEN);
al_init_image_addon();
al_init_primitives_addon();
al_init_ttf_addon();
al_install_audio();
al_init_acodec_addon();
al_install_keyboard();
timer=al_create_timer(1.0 / 60);
event_queue = al_create_event_queue();
//al_reserve_samples(16);
voice = al_create_voice(44100, ALLEGRO_AUDIO_DEPTH_INT16, ALLEGRO_CHANNEL_CONF_2);
mixer = al_create_mixer(44100, ALLEGRO_AUDIO_DEPTH_FLOAT32, ALLEGRO_CHANNEL_CONF_2);
al_attach_mixer_to_voice(mixer, voice);
al_set_new_bitmap_flags(ALLEGRO_NO_PREMULTIPLIED_ALPHA);
al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA);
al_set_new_display_refresh_rate(60);
freesans = al_load_ttf_font("./fonts/Nouveau_IBM.ttf", 11, 0); //ALLEGRO_TTF_MONOCHROME);
court=LoadImg("./gfx/court_hell.png");
benj=LoadImg("./gfx/boktai.png");
crack = oslLoadSoundFile("./sfx/sfx-0026.wav");
theme = oslLoadSoundFile("./sfx/theme.wav");
ratio=getScreenRatio();
if (ratio < 160)
{
scrw=800;
scrh=600;
}
else if (ratio > 160)
{
scrw=1280;
scrh=720;
}
else if (ratio == 160)
{
scrw=1280;
scrh=800;
}
display = al_create_display(scrw, scrh);
al_hide_mouse_cursor(display);
psp_screen = al_create_bitmap(480, 272);
hand = LoadImg("./gfx/hand.png");
title = LoadImg("./gfx/title.png");
alice = LoadImg("./gfx/alice.png");
for (a=0; a<90; a++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(0, 0, 0));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
a=warning_onepilepsy();
if (a)
{
rndsft();
while ((ch != 137) && (!quit))
{
oslStartDrawing();
if (!f) oslPlaySound(theme);
if (!(f%6))
{
tx=random(16);
ty=random(32);
}
chd=chd%3;
oslSetTextColor(_RGBA(255, 255, 255, gt));
oslDrawFillRect(0,0,480,272, _RGB(0, 0, 0));
title=oslSetAlpha(title, gt);
spr_draw(title, tx, ty);
title=oslSetAlpha(title, gt/2);
spr_draw(title, random(16), random(32));
title=oslSetAlpha(title, gt/4);
spr_draw(title, random(16), random(32));
alice=oslSetAlpha(alice, gt);
spr_draw(alice, 299, 0);
oslDrawString(480-(q*6), 260, "v2.00");
for (i=0; i<4; i++)
{
oslDrawString(48, 182+i*20, items[i]);
if ((!i) && (nbp==2)) oslDrawString(162, 182, "(AGAINST A MORTAL)");
}
hand=oslSetAlpha(hand,gt);
spr_draw(hand, 8+4*sin(0.0625*f), 186+ch*20);
oslSetTextColor(_RGBA(255, ((chd<2)?(255/(chd+1)):0), 0, gt));
oslDrawString(120, 202, diffs[chd]);
if (gt < 255) gt++;
al_get_keyboard_state(&kbdstate);
if ((!al_key_down(&kbdstate, ALLEGRO_KEY_UP) && !al_key_down(&kbdstate, ALLEGRO_KEY_DOWN) &&
!al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT) && !al_key_down(&kbdstate, ALLEGRO_KEY_LEFT) &&
!al_key_down(&kbdstate, ALLEGRO_KEY_ENTER))) rebound=0;
if (!rebound)
{
if (al_key_down(&kbdstate, ALLEGRO_KEY_UP)) ch--;
if (al_key_down(&kbdstate, ALLEGRO_KEY_DOWN)) ch++;
if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (ch==1)) chd++;
if ((al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT)) && (ch==0) && (nbp==1)) nbp++;
if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (ch==0) && (nbp==2)) nbp--;
if ((al_key_down(&kbdstate, ALLEGRO_KEY_LEFT)) && (ch==1))
{
chd--;
if (chd < 0) chd=2;
}
if ((al_key_down(&kbdstate, ALLEGRO_KEY_UP) || al_key_down(&kbdstate, ALLEGRO_KEY_DOWN) ||
al_key_down(&kbdstate, ALLEGRO_KEY_RIGHT) || al_key_down(&kbdstate, ALLEGRO_KEY_LEFT))) rebound=1;
}
if (ch < 0) ch += 4;
else if (ch > 3) ch -= 4;
f++;
if (al_key_down(&kbdstate, ALLEGRO_KEY_ESCAPE))
{
ch=137;
quit=1;
}
if (al_key_down(&kbdstate, ALLEGRO_KEY_C))
{
oslStopSound(theme);
fadeout();
for (i=0; i<25; i++) creepypasta(i);
oslPlaySound(theme);
}
if ((al_key_down(&kbdstate, ALLEGRO_KEY_ENTER)) && (!rebound) && (!quit))
{
rebound=1;
if (!(ch%2)) fadeout();
switch(ch)
{
case 0:
{
vies=2;
mort=0;
round=1;
f=-1;
oslStopSound(theme);
while ((vies > 0) && (round < 3))
{
mort=game(round, chd+1, nbp);
counter=0;
if ((!mort) || (mort==2))
{
i=random(25);
if (!mort)
{
oslPlaySound(crack);
for (a=0; a<15; a++)
{
oslStartDrawing();
oslDrawFillRect(0,0,480,272, _RGB(255, 255, 255));
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
creepypasta(i);
vies--;
}
else
{
vies=-1;
}
}
else
{
fadeout();
if (round==1) ben();
round++;
}
if ((vies > 0) && (round < 3))
{
taunt(random(12));
}
}
break;
}
case 1:
{
chd++;
break;
}
case 2:
{
f=-1;
oslStopSound(theme);
h=100;
credz();
/*if (DEBUG)
{
sonicexe(chd+1);
}
else
{
credz();
}*/
break;
}
case 3:
{
ch=137;
quit=1;
break;
}
}
}
oslEndDrawing();
oslSwapBuffers();
oslWaitVSync();
}
}
fadeout();
al_show_mouse_cursor(display);
al_destroy_display(display);
return 0;
}