New BD screen (missing voice acting).

This commit is contained in:
Mari the Deer 2025-02-06 20:13:35 +01:00
commit 8857c3c03f
23 changed files with 163 additions and 224 deletions

View file

@ -1,98 +1,28 @@
Material Texture "graphics/BDScreen/BOYKISS0.png"
Material Texture "graphics/BDScreen/BDBorder.png"
{
Shader "shaders/glsl/TexFilterHack.fp"
Texture "retex" "graphics/BDScreen/BOYKISS0.png"
{
filter linear
}
Define "OVERSAMPLE"
nomipmap
}
Material Texture "graphics/BDScreen/BOYKISS1.png"
Material Texture "graphics/BDScreen/BDSaya.png"
{
Shader "shaders/glsl/TexFilterHack.fp"
Texture "retex" "graphics/BDScreen/BOYKISS1.png"
{
filter linear
}
Define "OVERSAMPLE"
nomipmap
}
Material Texture "graphics/BDScreen/BOYKISS2.png"
Material Texture "graphics/BDScreen/BDDemo.png"
{
Shader "shaders/glsl/TexFilterHack.fp"
Texture "retex" "graphics/BDScreen/BOYKISS2.png"
{
filter linear
}
Define "OVERSAMPLE"
nomipmap
}
Material Texture "graphics/BDScreen/BOYKISS3.png"
Material Texture "graphics/BDScreen/BDBubble0.png"
{
Shader "shaders/glsl/TexFilterHack.fp"
Texture "retex" "graphics/BDScreen/BOYKISS3.png"
{
filter linear
}
Define "OVERSAMPLE"
nomipmap
}
Material Texture "graphics/BDScreen/BOYKISS4.png"
Material Texture "graphics/BDScreen/BDBubble1.png"
{
Shader "shaders/glsl/TexFilterHack.fp"
Texture "retex" "graphics/BDScreen/BOYKISS4.png"
{
filter linear
}
Define "OVERSAMPLE"
nomipmap
}
Material Texture "graphics/BDScreen/BOYKISS5.png"
Material Texture "graphics/BDScreen/BDBubble2.png"
{
Shader "shaders/glsl/TexFilterHack.fp"
Texture "retex" "graphics/BDScreen/BOYKISS5.png"
{
filter linear
}
Define "OVERSAMPLE"
nomipmap
}
Material Texture "graphics/BDScreen/BOYKISS6.png"
Material Texture "graphics/BDScreen/BDBubble3.png"
{
Shader "shaders/glsl/TexFilterHack.fp"
Texture "retex" "graphics/BDScreen/BOYKISS6.png"
{
filter linear
}
Define "OVERSAMPLE"
}
Material Texture "graphics/BDScreen/BOYKISS7.png"
{
Shader "shaders/glsl/TexFilterHack.fp"
Texture "retex" "graphics/BDScreen/BOYKISS7.png"
{
filter linear
}
Define "OVERSAMPLE"
}
Material Texture "graphics/BDScreen/BOYKISS8.png"
{
Shader "shaders/glsl/TexFilterHack.fp"
Texture "retex" "graphics/BDScreen/BOYKISS8.png"
{
filter linear
}
Define "OVERSAMPLE"
}
Material Texture "graphics/BDScreen/BOYKISS9.png"
{
Shader "shaders/glsl/TexFilterHack.fp"
Texture "retex" "graphics/BDScreen/BOYKISS9.png"
{
filter linear
}
Define "OVERSAMPLE"
}
Material Texture "graphics/BDScreen/BOYKISSR.png"
{
Shader "shaders/glsl/TexFilterHack.fp"
Texture "retex" "graphics/BDScreen/BOYKISSR.png"
{
filter linear
}
nomipmap
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 984 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1177 \cu(jue 06 feb 2025 20:13:06 CET)\c-";
SWWM_SHORTVER="\cw1.3pre r1177 \cu(2025-02-06 20:13:06)\c-";
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1178 \cu(jue 06 feb 2025 20:13:35 CET)\c-";
SWWM_SHORTVER="\cw1.3pre r1178 \cu(2025-02-06 20:13:35)\c-";

Binary file not shown.

View file

@ -398,3 +398,20 @@ MiniWhiteFlash // "misc"
#000000 #FFFFFF 0 50
#FFFFFF #FFFFFF 51 255
}
// stuff
BDSayaRed
{
#000000 #000000 0 50
#A08080 #FFC0C0 51 255
}
BDDemoGreen
{
#000000 #000000 0 50
#80A080 #C0FFC0 51 255
}
BDRed
{
#000000 #000000 0 50
#800000 #FF4040 51 255
}

View file

@ -20,9 +20,16 @@ Class SWWMBrutalHandler : StaticEventHandler
{
ui int timer;
ui Font fnt;
ui TextureID boydance[10], boykiss;
ui int boyframe, boystate, boyloop1, boyloop2, boytimer, boyseq[12];
ui TextureID eztex[7];
ui bool ezstate[7];
ui float ezslide[4];
ui String eztext[5];
ui BrokenLines ezlines[5];
ui Vector2 eztextpos[5];
ui double ezlinesw[5];
ui int ezcolor[5];
bool detected;
ui int rss;
const BOYTICRATE = 5;
@ -66,137 +73,80 @@ Class SWWMBrutalHandler : StaticEventHandler
timer = 0;
return;
}
if ( timer == 70 )
switch ( timer )
{
boykiss = TexMan.CheckForTexture("graphics/BDScreen/BOYKISSR.png");
case 50:
eztex[0] = TexMan.CheckForTexture("graphics/BDScreen/BDBorder.png");
eztex[1] = TexMan.CheckForTexture("graphics/BDScreen/BDSaya.png");
eztex[2] = TexMan.CheckForTexture("graphics/BDScreen/BDDemo.png");
eztex[3] = TexMan.CheckForTexture("graphics/BDScreen/BDBubble0.png");
eztex[4] = TexMan.CheckForTexture("graphics/BDScreen/BDBubble1.png");
eztex[5] = TexMan.CheckForTexture("graphics/BDScreen/BDBubble2.png");
eztex[6] = TexMan.CheckForTexture("graphics/BDScreen/BDBubble3.png");
for ( int i=0; i<6; i++ ) ezstate[i] = false;
for ( int i=0; i<4; i++ ) ezslide[i] = 2800.;
eztext[0] = "Really\nnow\n!?";
eztext[1] = "\c[BDRed]Brutal\nDoom\c-?\n\nThat's\ncringe";
eztext[2] = "Only a\ncomplete\nfool\nwould try\nto load\n\c[BDRed]Brutal Doom\c-\nwith\nother game-\nplay mods,\nright?";
eztext[3] = "Ha\nha\nha\nha";
eztext[4] = "Ki\nhi\nhi\nhi";
eztextpos[0] = (2520.,120.);
eztextpos[1] = (1620.,1580.);
eztextpos[2] = (80.,140.);
eztextpos[3] = (100.,1660.);
eztextpos[4] = (300.,1660.);
ezcolor[0] = Font.FindFontColor("BDSayaRed");
ezcolor[1] = Font.FindFontColor("BDSayaRed");
ezcolor[2] = Font.FindFontColor("BDDemoGreen");
ezcolor[3] = Font.FindFontColor("BDDemoGreen");
ezcolor[4] = Font.FindFontColor("BDSayaRed");
fnt = Font.GetFont("TewiFontOutline");
for ( int i=0; i<5; i++ )
{
ezlines[i] = fnt.BreakLines(eztext[i],1000);
ezlinesw[i] = 0.;
for ( int j=0; j<ezlines[i].Count(); j++ )
ezlinesw[i] = max(ezlinesw[i],ezlines[i].StringWidth(j));
}
S_StartSound("misc/spawn",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1.,ATTN_NONE);
S_StartSound("misc/spawn",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1.,ATTN_NONE);
S_ChangeMusic("",force:true);
Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY,
"\cj⢀⡾⠳⣄⣠⡴⠛⣆\n"
"\cj⢠⡟⠈⠳⣄⣠⠞⠉⠸⣆\c-\n"
"\cj⢠⡟⠈⢳⣄⢠⡤⣤⣤⣀⡀⣠⠞⠁⢻⡀\c-\n"
"\cj⠙⢷⡀⢸⡇⠉⠙⠳⢦⣄⣠⠞⠁⠘⣇\c-\n"
"\cj⢰⡇⠙⣦⡀⠻⣄⠈⠻⣦⣀⡾⠋⣿\c-\n"
"\cj⢸⡇⢀⣨⡷⠞⠛⠛⠈⠻⣦⣿\c-\n"
"\cj⢸⡇⢴⣯⣥⣤⣤⣤⣤⠴⣿\c-\n"
"\cj⠸⡇⢰⡇\c-\n"
"\cj⢿⡀⢀⡾\c-\n"
"\cj⠈⢧⢤⣤⡤⠤⢤⣤⣤⣤⣤⡄⣶⣶⣿⣿⣟⠛⠛⢿⡛⢀⡾⠁\c-\n"
"\cj⠈⢷⡀⢸⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⠘⡇⣠⣟⣁⣀\c-\n"
"\cj⢻⡟⠓⠶⠶⠿⢸⡇⠘⣿⣿⣿⣿⠇⣿⣿⣿⣿⡏⠈⠉⠉⣩⡟\c-\n"
"\cj⠻⣄⡀⠘⣧⢻⣿⣿⡟⢀⣀⡀⠈⠿⠿⠟⠁⣀⡴⠋\c-\n"
"\cj⢨⡏⠠⠶⣿⣤⠶⠰⢿⣷⠞⠻⣦\c-\n"
"\cj⢠⡟⠰⣤⣤⡴⠟⠶⠶⠶⠛⠈⠁⠈⢷⡀\c-\n"
"\cj⠿⢤⡤⠴⠶⠶⣤⣀⣀⣠⡴⠞⠛⠓⠒⠛⠛⠋⠁\c-\n"
"\cj⠉⠻⣶⠶⣤⣤⣤⡄⠛⣿⠉⠁\c-\n"
"\cj⠙⢦⣄⠘⣧\c-\n"
"\cj⣴⠟⠁⠸⣇\c-\n"
"\cj⠼⠷⢶⡶⢹⡄\c-\n"
"\cj⡾⠁⠈⣧\c-\n"
"\cj⣸⠇⢹⡆\c-\n"
"\cj⠈⣇\c-\n"
"\cj⢸⡇\c-\n"
"\cj\c-\n"
"\cj⢸⡇\c-\n"
"\cjYou like playing \cgBrutal Doom\cj, don't you?\c-");
case 60:
ezstate[0] = true;
break;
case 80:
ezstate[2] = true;
break;
case 120:
ezstate[3] = true;
break;
case 180:
ezstate[1] = true;
break;
case 200:
ezstate[4] = true;
break;
case 280:
ezstate[5] = true;
ezstate[6] = true;
break;
case 400:
ThrowAbortException("This manual abort is for your own safety");
break;
}
else if ( timer == 140 )
if ( ezstate[0] )
{
for ( int i=0; i<10; i++ )
boydance[i] = TexMan.CheckForTexture(String.Format("graphics/BDScreen/BOYKISS%d.png",i));
// map frames to states
boyseq[0] = 0;
boyseq[1] = 1;
boyseq[2] = 2;
boyseq[3] = 3;
boyseq[4] = 4;
boyseq[5] = 5;
boyseq[6] = 3;
boyseq[7] = 2;
boyseq[8] = 6;
boyseq[9] = 7;
boyseq[10] = 8;
boyseq[11] = 9;
S_ChangeMusic("music/thepenis.it",force:true);
ezslide[1] = ezslide[0];
if ( ezslide[0] < double.epsilon ) ezslide[0] = 0.;
else ezslide[0] *= .8;
}
if ( ezstate[1] )
{
ezslide[3] = ezslide[2];
if ( ezslide[2] < double.epsilon ) ezslide[2] = 0.;
else ezslide[2] *= .8;
}
else if ( timer == 2100 ) ThrowAbortException("This manual abort is for your own safety");
timer++;
if ( timer >= 105 )
{
boyframe = boyseq[boystate];
boytimer++;
if ( boytimer%BOYTICRATE ) return;
// funni state machine
switch ( boystate )
{
case 0: // up
boystate = 1;
break;
case 1: // down
if ( boyloop1 >= 2 )
{
boyloop1 = 0;
boystate = 2;
break;
}
boyloop1++;
boystate = 0;
break;
case 2: // turn A
boystate = 3;
break;
case 3: // turn B
boystate = 4;
break;
case 4: // down
boystate = 5;
break;
case 5: // up
if ( boyloop1 >= 2 )
{
boyloop1 = 0;
boystate = 6;
break;
}
boyloop1++;
boystate = 4;
break;
case 6: // turn B
boystate = 7;
break;
case 7: // turn A
if ( boyloop2 >= 2 )
{
boyloop2 = 0;
boystate = 8;
break;
}
boyloop2++;
boystate = 0;
break;
case 8: // spin left
boystate = 9;
break;
case 9: // spin back
boystate = 10;
break;
case 10: // spin right
boystate = 11;
break;
case 11: // spin front
if ( boyloop1 >= 2 )
{
boyloop1 = 0;
boystate = 0;
break;
}
boyloop1++;
boystate = 8;
break;
}
}
}
override void WorldTick()
@ -205,27 +155,69 @@ Class SWWMBrutalHandler : StaticEventHandler
for ( int i=0; i<MAXPLAYERS; i++ ) if ( playeringame[i] ) players[i].cheats |= CF_TOTALLYFROZEN;
}
private ui int GetUIRandom()
{
return (rss = (rss<<1)*35447+(rss/87));
}
private ui double RandomShiver()
{
int sd = GetUIRandom();
return ((abs(sd)%11)-5)*.1;
}
private ui double RandomOffset()
{
int sd = GetUIRandom();
return (abs(sd)&65535)/65535.;
}
override void RenderOverlay( RenderEvent e )
{
if ( !detected ) return;
Screen.Dim("White",clamp((timer+e.fractic)/70.,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight());
if ( timer < 70 ) return;
String str = "You like playing \cgBrutal Doom\c-, don't you?";
int boxh = fnt?((fnt.GetHeight()+16)*CleanYFac):0;
double scl = (Screen.GetHeight()-boxh)/2048.;
if ( boykiss.IsValid() ) Screen.DrawTexture(boykiss,false,Screen.GetWidth()/2,(Screen.GetHeight()-boxh)/2,DTA_CenterOffset,true,DTA_ScaleX,scl,DTA_ScaleY,scl);
if ( fnt )
Screen.Dim("Black",clamp((timer+e.fractic)/50.,0.,.5),0,0,Screen.GetWidth(),Screen.GetHeight());
if ( timer < 50 ) return;
double hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.)/6.;
Vector2 pos = ((Screen.GetWidth()-(2800.*hs))/2.,(Screen.GetHeight()-(2100.*hs))/2.);
if ( timer > 300 )
{
Screen.Dim("Black",.8,0,Screen.GetHeight()-boxh,Screen.GetWidth(),boxh);
Screen.DrawText(fnt,Font.CR_WHITE,(Screen.GetWidth()-fnt.StringWidth(str)*CleanXFac)/2,Screen.GetHeight()-(boxh-8*CleanYFac),str,DTA_CleanNoMove,true);
double fact = clamp(((timer+e.fractic)-300.)/100.,0.,1.);
Screen.Dim("Red",fact,0,0,Screen.GetWidth(),Screen.GetHeight(),STYLE_Add);
rss = MSTime()/10;
pos.x += RandomShiver()*64.*hs*fact*fact;
pos.y += RandomShiver()*64.*hs*fact*fact;
}
if ( timer < 140 ) return;
if ( boydance[boyframe].IsValid() )
Screen.DrawTexture(eztex[0],false,pos.x,pos.y,DTA_ScaleX,hs,DTA_ScaleY,hs);
Screen.SetClipRect(int(pos.x),int(pos.y),int(2800.*hs),int(2100.*hs));
Screen.Dim("White",1.,int(pos.x),int(pos.y),int(2800.*hs),int(2100.*hs));
rss = MSTime()/40;
for ( int i=0; i<6; i++ )
{
Screen.DrawTexture(boydance[boyframe],false,112*CleanXFac_1,192*CleanYFac_1,DTA_CleanNoMove_1,true);
Screen.DrawTexture(boydance[boyframe],false,Screen.GetWidth()-112*CleanXFac_1,192*CleanYFac_1,DTA_CleanNoMove_1,true);
Screen.DrawTexture(boydance[boyframe],false,112*CleanXFac_1,Screen.GetHeight()-(boxh+32*CleanYFac_1),DTA_CleanNoMove_1,true);
Screen.DrawTexture(boydance[boyframe],false,Screen.GetWidth()-112*CleanXFac_1,Screen.GetHeight()-(boxh+32*CleanYFac_1),DTA_CleanNoMove_1,true);
double ypos = RandomOffset()*2100.*hs;
Screen.DrawThickLine(pos.x,pos.y+ypos,pos.x+2800.*hs,pos.y+ypos,8.*hs,"Black");
}
for ( int i=0; i<12; i++ )
{
double ypos = RandomOffset()*2100.*hs;
Screen.DrawThickLine(pos.x,pos.y+ypos,pos.x+2800.*hs,pos.y+ypos,2.*hs,"Black");
}
if ( ezstate[1] )
Screen.DrawTexture(eztex[2],false,pos.x+SWWMUtility.Lerp(ezslide[3],ezslide[2],e.fractic),pos.y,DTA_ScaleX,hs,DTA_ScaleY,hs);
if ( ezstate[0] )
Screen.DrawTexture(eztex[1],false,pos.x+SWWMUtility.Lerp(ezslide[1],ezslide[0],e.fractic),pos.y,DTA_ScaleX,hs,DTA_ScaleY,hs);
for ( int i=0; i<5; i++ )
{
if ( !ezstate[2+i] ) continue;
if ( i<4 ) Screen.DrawTexture(eztex[3+i],false,pos.x,pos.y,DTA_ScaleX,hs,DTA_ScaleY,hs);
for ( int j=0; j<ezlines[i].Count(); j++ )
{
double xofs = (ezlinesw[i]-ezlines[i].StringWidth(j))*3.*hs;
double yofs = (fnt.GetHeight()+2)*j*6.*hs;
Screen.DrawText(fnt,ezcolor[i],pos.x+eztextpos[i].x*hs+xofs,pos.y+eztextpos[i].y*hs+yofs,ezlines[i].StringAt(j),DTA_ScaleX,hs*6.,DTA_ScaleY,hs*6.);
}
}
Screen.ClearClipRect();
if ( timer > 300 )
Screen.Dim("Red",clamp(((timer+e.fractic)-350.)/50.,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight(),STYLE_Translucent);
}
}