// SHAMEFUL DISPLAY // Hello yes how do I explain this? // // Some people try to autoload this stuff without realizing that not all big // gameplay mods can be combined just like that, they will break in funky ways™ // // For those who are not aware, there are "monsters only" versions of these // types of mods, and you can load them fine, they should just work™ // // Still, if you insist on doing "the funny thing", this event handler is there // so you know what I think of your attempt at being funny // // So, yeah, thanks for giving me an excuse to make this silly script // // PS: I actually like Project Brutality, no joke // Brutal Doom is still poopy junk tho, every single fork of it is better // (except Black Edition, that one is just embarrassing) Class SWWMBrutalHandler : StaticEventHandler { Mixin SWWMUIRandom; ui int timer; ui Font fnt; 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; override void OnRegister() { // check for brutal doom if ( FindClass('Doomer','PlayerPawn') || FindClass('BDoomer','PlayerPawn') || FindClass('BEDoomer','PlayerPawn') ) detected = true; if ( !detected ) return; let shnd = SWWMStaticHandler(StaticEventHandler.Find('SWWMStaticHandler')); shnd.isbd = true; Console.PrintfEx(PRINT_HIGH|PRINT_NONOTIFY, "\cx┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\c-\n" "\cx┃ \cfIf you have BD on your autoload you really shouldn't.\cx ┃\c-\n" "\cx┃ \cfIf you manually loaded it with this mod, why would you?\cx ┃\c-\n" "\cx┃ \cfThey're not compatible and never will be.\cx ┃\c-\n" "\cx┃ \cfThis mod will now shit the bed once you go in-game,\cx ┃\c-\n" "\cx┃ \cfand trust me, it's better this way.\cx ┃\c-\n" "\cx┃ \cf\cx ┃\c-\n" "\cx┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\c-"); S_StartSound("compat/warn",CHAN_YABLEWIT,CHANF_UI|CHANF_NOPAUSE|CHANF_OVERLAP,1,ATTN_NONE); } override void WorldLoaded( WorldEvent e ) { // get rid of ourselves if not needed if ( !detected && !bDestroyed ) Destroy(); } override void UiTick() { if ( !detected || (gamestate != GS_LEVEL) ) { timer = 0; return; } switch ( timer ) { 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] = 1400.; eztext[0] = "Eeeeeh?\nReally\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] = (1250.,50.); eztextpos[1] = (810.,790.); eztextpos[2] = (40.,70.); eztextpos[3] = (50.,830.); eztextpos[4] = (150.,830.); 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],500); ezlinesw[i] = 0.; for ( int j=0; j 300 ) { double fact = clamp(((timer+e.fractic)-300.)/100.,0.,1.); Screen.Dim(0xFFFF0000,fact,0,0,Screen.GetWidth(),Screen.GetHeight(),STYLE_Add); SetUIRandom(MSTime()/10); pos.x += RandomShiver()*64.*hs*fact*fact; pos.y += RandomShiver()*64.*hs*fact*fact; } Screen.SetClipRect(int(pos.x),int(pos.y),int(1400.*hs),int(1050.*hs)); Screen.Dim(0xFFFFFFFF,1.,int(pos.x),int(pos.y),int(1400.*hs),int(1050.*hs)); SetUIRandom(MSTime()/40); for ( int i=0; i<6; i++ ) { double ypos = RandomOffset()*1050.*hs; Screen.DrawThickLine(pos.x,pos.y+ypos,pos.x+1400.*hs,pos.y+ypos,4.*hs,0xFF000000); } for ( int i=0; i<12; i++ ) { double ypos = RandomOffset()*1050.*hs; Screen.DrawThickLine(pos.x,pos.y+ypos,pos.x+1400.*hs,pos.y+ypos,hs,0xFF000000); } 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 300 ) Screen.Dim(0xFFFF0000,clamp(((timer+e.fractic)-350.)/50.,0.,1.),0,0,Screen.GetWidth(),Screen.GetHeight(),STYLE_Translucent); } }