# jDoom: Intermissions and Finales # (see Doc\InFine.txt) Header { Version = 5; } InFine { ID = "title"; Script { # There is no skipping during the titlescreen loop. NoSkip # Any event shows the menu. Trigger MARKER title_loop # Step 1. Patch back 0 0 "TITLEPIC" IF commercial DO MusicOnce "dm2ttl" Wait 13 # Original was 11; this'll play the whole song. ; ELSE DO MusicOnce "intro" Wait 4.857 # Original wait is 170 tics. ; # Step 2. IF MODE:doom1-share PlayDemo "sdemo1.cdm" IF MODE:doom1 PlayDemo "rdemo1.cdm" IF MODE:doom1-ultimate PlayDemo "udemo1.cdm" IF MODE:doom2 PlayDemo "2demo1.cdm" IF MODE:doom2-plut PlayDemo "pdemo1.cdm" IF MODE:doom2-tnt PlayDemo "tdemo1.cdm" # Step 3. Set back "CREDIT" Wait 5.714 # Original is 200 tics. # Step 4. IF MODE:doom1-share PlayDemo "sdemo2.cdm" IF MODE:doom1 PlayDemo "rdemo2.cdm" IF MODE:doom1-ultimate PlayDemo "udemo2.cdm" IF MODE:doom2 PlayDemo "2demo2.cdm" IF MODE:doom2-plut PlayDemo "pdemo2.cdm" IF MODE:doom2-tnt PlayDemo "tdemo2.cdm" # Step 5. IF commercial DO Set back "TITLEPIC" Music "dm2ttl" Wait 13 # Original was 11. ; ELSE DO IF ultimate Set back "CREDIT" ELSE Set back "HELP2" Wait 5.714 # 200 tics. ; # Step 6. IF MODE:doom1-share PlayDemo "sdemo3.cdm" IF MODE:doom1 PlayDemo "rdemo3.cdm" IF MODE:doom1-ultimate PlayDemo "udemo3.cdm" IF MODE:doom2 PlayDemo "2demo3.cdm" IF MODE:doom2-plut PlayDemo "pdemo3.cdm" IF MODE:doom2-tnt PlayDemo "tdemo3.cdm" # Step 7. IF ultimate PlayDemo "udemo4.cdm" GOTO title_loop }; } InFine { ID = "imp"; Script { NoSkip # No background. ColorAlpha 0 0 0 0 # Init objects. Rect info_box 68 28 0 0 FillColor info_box BOTH 0 .4 0 0 EdgeColor info_box BOTH 1 1 1 0 Rect box 98 8 0 0 FillColor box BOTH 0 .4 0 .25 EdgeColor box BOTH 0 1 0 .3 Patch imp 66 56 "TROOA1" RGB imp .3 1 .3 Scale imp .8 Alpha imp 0 # Light text for highlights. PreColor 1 .6 1 .6 # Open the boxes. In 1 FillColor box BOTH 0 .4 0 .4 EdgeColor box BOTH 0 1 0 .2 ScaleXY box 170 145 In .3 FillColor info_box TOP 0 .4 0 .3 FillColor info_box BOTTOM 0 .2 0 .4 EdgeColor info_box BOTH 0 1 0 .3 Scale info_box 40 X info_box 48 Y info_box 8 Wait .3 In .25 Sy info_box 60 Wait .25 In .5 Alpha imp 1 Wait .5 # Show info. Text name 103 13 "The \1Imp\0 Monster" In 0 RGB name 0 .8 0; Scale name .8 FontB name Wait 1 Text desc 103 32 "Beware this \1highly dangerous\0\n monster! Don't be fooled by\n it's friendly-looking grin.\W\n It will hurl \1fireballs\0 at you,\n and they burn!\W\W\n\n Oh, how they \1burn\0!\W\W\n\n Imp, imp, burning bright\n In the forests of the night.\n What immortal hand or eye\n Could frame thy \1fearful\n symmetry\0?" In 0 RGB desc 0 .8 0; Scale desc .75 Wait 15.5 In .5 Precolor 1 1 .8 .3 ColorAlpha 1 .8 .3 .2 Wait .8 In .5 Precolor 1 .6 1 .6 ColorAlpha 0 0 0 0 WaitText desc Wait 5 In .5 Alpha imp 0 Alpha name 0 Alpha desc 0 Wait .5 In .3 FillColor info_box BOTH 0 .4 0 0 FillColor box BOTH 0 .4 0 0 Sy info_box 0 Sy box 0 Wait .3 # Imp scare. In 1 RGB imp 1 1 1 Alpha imp 1 Wait .5 Sound "firsht" In 5 X imp 80 Y imp 500 Scale imp 10 Angle imp 45 Wait 1.5 Sound "bgsit1" Wait 3 SoundAt "pldeth" .5 In .5 Alpha imp 0 Wait .5 CanSkip }; } # I'm using "textdef" to allow compatibility with DeHackEd. # A better way would just be to use "text" and define the text # in the script, no need to go about modifying the Text defs. # How about some custom finales for Plutonia and TNT? IncludeIf doom2-plut "PlutFinales.ded"; IncludeIf doom2-tnt "TNTFinales.ded"; ######======------ SHAREWARE/REG/ULTIMATE DOOM ------======###### # Episode I: Knee-Deep In The Dead Finale { After = "E1M8"; Script { NoSkip # This is the end, no more levels after this. Music "victor" Flat FLOOR4_8 Wait 0.5 TextDef msg 10 10 "E1TEXT" WaitText msg Wait 7 # The original TEXTWAIT is 250 tics. # Show shareware/registered or credits. NoFlat DelText msg IF ultimate Patch back 0 0 CREDIT ELSE Patch back 0 0 HELP2 }; } # Episode II: The Shores Of Hell Finale { After = "E2M8"; Script { noskip; # This is the end, no more levels after this. music "victor"; flat SFLR6_1; wait 0.5; textdef msg 10 10 "E2TEXT"; waittext msg; wait 7; # The original TEXTWAIT is 250 tics. # Fade to the Deimos picture. patch back 0 0 VICTORY2; alpha back 0; in 2 alpha back 1; textalpha msg 0; wait 2; deltext msg; noflat; }; } # Episode III: Inferno Finale { After = "E3M8"; Script { noskip # This is the end, no more levels after this. music "victor" flat MFLR8_4 wait 0.5 textdef msg 10 10 "E3TEXT" waittext msg wait 7 # The original TEXTWAIT is 250 tics. deltext msg # The bunny scroll. noflat; music "bunny" patch b1 320 0 PFUB1 patch b2 0 0 PFUB2 offx 320 wait 6.5 # Start scrolling to the left. in 18.3 offx 0; wait 18.3 # The End. wait 7 patch theend 108 68 END0 wait 1.43 # 50 tics. sound "pistol"; set theend END1; wait 0.14 sound "pistol"; set theend END2; wait 0.14 sound "pistol"; set theend END3; wait 0.14 sound "pistol"; set theend END4; wait 0.14 sound "pistol"; set theend END5; wait 0.14 sound "pistol"; set theend END6 }; } # Episode IV: Thy Flesh Consumed Finale { After = "E4M8"; Script { noskip # This is the end, no more levels after this. music "victor" flat MFLR8_3 wait 0.5 textdef msg 10 10 "E4TEXT" waittext msg wait 7 # The original TEXTWAIT is 250 tics. # Fade to the Deimos picture. patch back 0 0 ENDPIC alpha back 0 in 2 alpha back 1; textalpha msg 0 wait 2 deltext msg noflat }; } #########=========--------- DOOM II ---------=========######### # The rest of this file is skipped if not regular Doom II. SkipIf Not doom2; Finale { Before = "MAP07"; Script { music "read_m" flat SLIME16 wait 0.5 textdef msg 10 10 "C1TEXT" waittext msg wait 7 # The original TEXTWAIT is 250 tics. }; } Finale { Before = "MAP12"; Script { music "read_m" flat RROCK14 wait 0.5 textdef msg 10 10 "C2TEXT" waittext msg wait 7 # The original TEXTWAIT is 250 tics. }; } Finale { Before = "MAP21"; Script { music "read_m" flat RROCK07 wait 0.5 textdef msg 10 10 "C3TEXT" waittext msg wait 7 # The original TEXTWAIT is 250 tics. }; } # This is the actual finale of DOOM II. Finale { After = "MAP30"; Script { music "read_m" flat RROCK17 wait 0.5 textdef msg 10 10 "C4TEXT" waittext msg; wait 7 skiphere #####====--- The Cast ---====##### # Castloop continues forever. # Quite a number of monsters here...! noskip # No more skipping (pause waits for a key, though). deltext msg music "evil" noflat; patch back 0 0 BOSSBACK marker castloop # Create a text for the name. textdef name 160 180 CC_ZOMBIE center name; rate name 0 patch mo 160 170 POSSA1 # "mo" is used for all the monsters. # --- Zombieman --- clranim mo states mo POSS_RUN1 12 states mo POSS_ATK1 2; picsound mo "pistol" states mo POSS_ATK3 1 repeat mo seesound POSSESSED; pause; diesound POSSESSED clranim mo states mo POSS_DIE1 5 waitanim mo; wait 0.43 # --- Shotgun Guy --- clranim mo states mo SPOS_RUN1 12 states mo SPOS_ATK1 2; picsound mo "shotgn" states mo SPOS_ATK3 1 repeat mo settextdef name CC_SHOTGUN seesound SHOTGUY; pause; diesound SHOTGUY clranim mo states mo SPOS_DIE1 5 waitanim mo; wait 0.43 # --- Heavy Weapon Dude --- clranim mo states mo CPOS_RUN1 12 states mo CPOS_ATK1 2; picsound mo "shotgn" states mo CPOS_ATK3 1; picsound mo "shotgn" states mo CPOS_ATK4 1; picsound mo "shotgn" states mo CPOS_ATK3 1; picsound mo "shotgn" states mo CPOS_ATK4 1; picsound mo "shotgn" states mo CPOS_ATK3 1; picsound mo "shotgn" repeat mo settextdef name CC_HEAVY seesound CHAINGUY; pause; diesound CHAINGUY clranim mo states mo CPOS_DIE1 7 waitanim mo; wait 0.43 # --- Imp --- clranim mo states mo TROO_RUN1 12 states mo TROO_ATK1 3; picsound mo "claw" repeat mo settextdef name CC_IMP seesound TROOP; pause; diesound TROOP clranim mo states mo TROO_DIE1 5 waitanim mo; wait 0.43 # --- Demon --- clranim mo states mo SARG_RUN1 12 states mo SARG_ATK1 2; picsound mo "sgtatk" states mo SARG_ATK3 1 repeat mo settextdef name CC_DEMON seesound SERGEANT; pause; diesound SERGEANT clranim mo states mo SARG_DIE1 6 waitanim mo; wait 0.43 # --- Lost Soul --- clranim mo states mo SKULL_RUN1 12 states mo SKULL_ATK1 2; picsound mo "sklatk" states mo SKULL_ATK3 8 repeat mo settextdef name CC_LOST seesound SKULL; pause; diesound SKULL clranim mo states mo SKULL_DIE1 6 waitanim mo; wait 0.43 # --- Cacodemon --- clranim mo states mo HEAD_RUN1 12 states mo HEAD_ATK1 2; picsound mo "firsht" states mo HEAD_ATK3 1 repeat mo settextdef name CC_CACO seesound HEAD; pause; diesound HEAD clranim mo states mo HEAD_DIE1 6 waitanim mo; wait 0.43 # --- Hell Knight --- clranim mo states mo BOS2_RUN1 12 states mo BOS2_ATK1 2; picsound mo "firsht" states mo BOS2_ATK3 1 repeat mo settextdef name CC_HELL seesound KNIGHT; pause; diesound KNIGHT clranim mo states mo BOS2_DIE1 7 waitanim mo; wait 0.43 # --- Baron of Hell --- clranim mo states mo BOSS_RUN1 12 states mo BOSS_ATK1 2; picsound mo "firsht" states mo BOSS_ATK3 1 repeat mo settextdef name CC_BARON seesound BRUISER; pause; diesound BRUISER clranim mo states mo BOSS_DIE1 7 waitanim mo; wait 0.43 # --- Arachnotron --- clranim mo states mo BSPI_SIGHT 12 states mo BSPI_ATK1 2; picsound mo "plasma" states mo BSPI_ATK3 3; picsound mo "plasma" states mo BSPI_ATK3 3; picsound mo "plasma" states mo BSPI_ATK3 3; picsound mo "plasma" states mo BSPI_ATK3 2 repeat mo settextdef name CC_ARACH seesound BABY; pause; diesound BABY clranim mo states mo BSPI_DIE1 7 waitanim mo; wait 0.43 # --- Pain Elemental --- clranim mo states mo PAIN_RUN1 12 states mo PAIN_ATK1 3; picsound mo "sklatk" states mo PAIN_ATK4 1 repeat mo settextdef name CC_PAIN seesound PAIN; pause; diesound PAIN clranim mo states mo PAIN_DIE1 6 waitanim mo; wait 0.43 # --- Revenant --- clranim mo states mo SKEL_RUN1 12 states mo SKEL_MISS1 2; picsound mo "skeatk" states mo SKEL_MISS3 2 states mo SKEL_RUN1 12 states mo SKEL_FIST1 2; picsound mo "skeswg" states mo SKEL_FIST3 2; picsound mo "skepch" repeat mo settextdef name CC_REVEN seesound UNDEAD; pause; diesound UNDEAD clranim mo states mo SKEL_DIE1 6 waitanim mo; wait 0.43 # --- Mancubus --- clranim mo states mo FATT_RUN1 12 states mo FATT_ATK1 2; picsound mo "firsht" states mo FATT_ATK3 3; picsound mo "firsht" states mo FATT_ATK6 3; picsound mo "firsht" states mo FATT_ATK9 2 repeat mo settextdef name CC_MANCU seesound FATSO; pause; diesound FATSO clranim mo states mo FATT_DIE1 10 waitanim mo; wait 0.43 # --- Arch-Vile --- clranim mo states mo VILE_RUN1 12 states mo VILE_ATK1 2; picsound mo "vilatk" states mo VILE_ATK3 9 repeat mo settextdef name CC_ARCH seesound VILE; pause; diesound VILE clranim mo states mo VILE_DIE1 10 waitanim mo; wait 0.43 # --- The Spider Mastermind --- clranim mo states mo SPID_RUN1 12 states mo SPID_ATK1 2; picsound mo "shotgn" states mo SPID_ATK3 1; picsound mo "shotgn" states mo SPID_ATK4 2; picsound mo "shotgn" states mo SPID_ATK3 1; picsound mo "shotgn" states mo SPID_ATK4 2; picsound mo "shotgn" states mo SPID_ATK3 1; picsound mo "shotgn" states mo SPID_ATK4 2; picsound mo "shotgn" states mo SPID_ATK3 1; picsound mo "shotgn" repeat mo settextdef name CC_SPIDER seesound SPIDER; pause; diesound SPIDER clranim mo states mo SPID_DIE1 11 waitanim mo; wait 0.43 # --- Cyberdemon --- clranim mo states mo CYBER_RUN1 12 states mo CYBER_ATK1 2; picsound mo "rlaunc" states mo CYBER_ATK3 2; picsound mo "rlaunc" states mo CYBER_ATK5 2; picsound mo "rlaunc" repeat mo settextdef name CC_CYBER seesound CYBORG; pause; diesound CYBORG clranim mo states mo CYBER_DIE1 10 waitanim mo; wait 0.43 # --- Our Hero (finally!) --- clranim mo states mo PLAY_RUN1 12 states mo PLAY_ATK1 1 repeat mo settextdef name CC_HERO seesound PLAYER; pause; diesound PLAYER clranim mo states mo PLAY_DIE1 7 waitanim mo; wait 0.43 # Restart the loop. goto castloop }; } # Secret level 1. Finale { Before = "MAP31"; Script { music "read_m"; flat RROCK13; wait 0.5; textdef msg 10 10 "C5TEXT"; waittext msg; wait 7; # The original TEXTWAIT is 250 tics. }; } # Secret level 2. Finale { Before = "MAP32"; Script { music "read_m"; flat RROCK19; wait 0.5; textdef msg 10 10 "C6TEXT"; waittext msg; wait 7; # The original TEXTWAIT is 250 tics. }; }