Impie Posted August 11, 2016 A collection of detailed DECORATE intermission tutorials would be really grand. I haven't been able to find one, and I'm trying to make a custom cast intermission in MAPINFO, but I don't know how to properly set it up. Or else a wad that uses a custom cast definition I can study. The wiki only has a single entry and doesn't demonstrate how to set up the whole thing. Unless that example IS everything you need to do, in which case I don't know why it's going to the default Doom 2 cast sequence, nor how to change the music or background image. First version looked like this and went to the Doom 2 default cast instead. Spoiler Intermission "Val3DCast" { Cast { CastClass = "GestapoBitch" CastName = "Shieldmaiden" AttackSound = "Missile", 1, "bitch/shoot" AttackSound = "MissileSuper", 1, "bitch/attack" CastClass = "Redhead" CastName = "Stepchild" AttackSound = "Missile", 1, "redhead/shoot" AttackSound = "MissileSuper", 1, "redhead/attack" CastClass = "Amazon" CastName = "Amazon Force Commando" AttackSound = "Missile", 1, "amazon/shoot" CastClass = "Mommybot" CastName = "MommyBot" AttackSound = "Missile", 1, "mbot/attack" CastClass = "Eunuch" CastName = "Eunuch" AttackSound = "Missile", 1, "eunuch/shoot" CastClass = "Fenris" CastName = "Fenris Attack Dog" AttackSound = "Melee", 1, "fenris/attack" CastClass = "DoctorBitch" CastName = "Jotun Vampire Doc" AttackSound = "Missile", 1, "doc/shoot" CastClass = "Juggernaut" CastName = "Juggernaut" AttackSound = "Melee", 1, "juggernaut/attack" CastClass = "Einherjar" CastName = "Einherjar" AttackSound = "Missile", 1, "sjug/shoot" AttackSound = "MissileSuper", 1, "sjug/loadin" CastClass = "Rourke" CastName = "The Rourke Sisters" AttackSound = "Missile", 1, "rourke/shoot" AttackSound = "MissileSuper", 1, "rourke/attack" CastClass = "Althea" CastName = "Bloody Althea Rourke" AttackSound = "Missile", 1, "althea/shoot" CastClass = "DrGaul" CastName = "Dr. Gaul" AttackSound = "Missile", 1, "gaul/attack" } } So I tried doing it this way next, and it says the line with "music" is expecting { but got = instead. Error message that stops loading the mod. Tried several variations of this, but without the Cast subgroup it gives the error. And with the subgroup it goes to the wrong thing. Spoiler Intermission "Val3DCast" { music = "BGMCONV" background = "titlepic" CastClass = "GestapoBitch" CastName = "Shieldmaiden" AttackSound = "Missile", 1, "bitch/shoot" AttackSound = "MissileSuper", 1, "bitch/attack" CastClass = "Redhead" CastName = "Stepchild" AttackSound = "Missile", 1, "redhead/shoot" AttackSound = "MissileSuper", 1, "redhead/attack" CastClass = "Amazon" CastName = "Amazon Force Commando" AttackSound = "Missile", 1, "amazon/shoot" CastClass = "Mommybot" CastName = "MommyBot" AttackSound = "Missile", 1, "mbot/attack" CastClass = "Eunuch" CastName = "Eunuch" AttackSound = "Missile", 1, "eunuch/shoot" CastClass = "Fenris" CastName = "Fenris Attack Dog" AttackSound = "Melee", 1, "fenris/attack" CastClass = "DoctorBitch" CastName = "Jotun Vampire Doc" AttackSound = "Missile", 1, "doc/shoot" CastClass = "Juggernaut" CastName = "Juggernaut" AttackSound = "Melee", 1, "juggernaut/attack" CastClass = "Einherjar" CastName = "Einherjar" AttackSound = "Missile", 1, "sjug/shoot" AttackSound = "MissileSuper", 1, "sjug/loadin" CastClass = "Rourke" CastName = "The Rourke Sisters" AttackSound = "Missile", 1, "rourke/shoot" AttackSound = "MissileSuper", 1, "rourke/attack" CastClass = "Althea" CastName = "Bloody Althea Rourke" AttackSound = "Missile", 1, "althea/shoot" CastClass = "DrGaul" CastName = "Dr. Gaul" AttackSound = "Missile", 1, "gaul/attack" } Any help would be appreciated. Thanks in advance. 0 Quote Share this post Link to post
scifista42 Posted August 11, 2016 Here is the full intermission definition of Doom 2's cast screen after MAP30. Note that the intermission name isn't within quotes, that Music and Background is within an Image sub-block, each actor in the cast is within its own Cast sub-block, and that the first intermission being called is Inter_Cast and it only initializes the music and background before linking to the actual Doom2Cast intermission. Spoiler Intermission Inter_Cast { Image { // This is only here to initialize the background and the music Background = "$bgcastcall" Time = -1 Music = "$MUSIC_EVIL" } Link = Doom2Cast } Intermission Doom2Cast { Cast { CastClass = "Zombieman" CastName = "$CC_ZOMBIE" AttackSound = "Missile", 1, "grunt/attack" } Cast { CastClass = "ShotgunGuy" CastName = "$CC_SHOTGUN" AttackSound = "Missile", 1, "shotguy/attack" } Cast { CastClass = "ChaingunGuy" CastName = "$CC_HEAVY" AttackSound = "Missile", 1, "chainguy/attack" AttackSound = "Missile", 2, "chainguy/attack" AttackSound = "Missile", 3, "chainguy/attack" } Cast { CastClass = "DoomImp" CastName = "$CC_IMP" AttackSound = "Missile", 2, "imp/attack" } Cast { CastClass = "Demon" CastName = "$CC_DEMON" AttackSound = "Melee", 1, "demon/melee" } Cast { CastClass = "LostSoul" CastName = "$CC_LOST" AttackSound = "Missile", 1, "skull/melee" } Cast { CastClass = "Cacodemon" CastName = "$CC_CACO" AttackSound = "Missile", 1, "caco/attack" } Cast { CastClass = "HellKnight" CastName = "$CC_HELL" AttackSound = "Missile", 1, "baron/attack" } Cast { CastClass = "BaronOfHell" CastName = "$CC_BARON" AttackSound = "Missile", 1, "baron/attack" } Cast { CastClass = "Arachnotron" CastName = "$CC_ARACH" AttackSound = "Missile", 1, "baby/attack" } Cast { CastClass = "PainElemental" CastName = "$CC_PAIN" AttackSound = "Missile", 2, "skull/melee" } Cast { CastClass = "Revenant" CastName = "$CC_REVEN" AttackSound = "Missile", 1, "skeleton/attack" AttackSound = "Melee", 1, "skeleton/swing" AttackSound = "Melee", 3, "skeleton/melee" } Cast { CastClass = "Fatso" CastName = "$CC_MANCU" AttackSound = "Missile", 1, "fatso/attack" AttackSound = "Missile", 4, "fatso/attack" AttackSound = "Missile", 7, "fatso/attack" } Cast { CastClass = "Archvile" CastName = "$CC_ARCH" AttackSound = "Missile", 1, "vile/start" } Cast { CastClass = "SpiderMastermind" CastName = "$CC_SPIDER" AttackSound = "Missile", 1, "spider/attack" AttackSound = "Missile", 2, "spider/attack" } Cast { CastClass = "Cyberdemon" CastName = "$CC_CYBER" AttackSound = "Missile", 1, "weapons/rocklf" AttackSound = "Missile", 3, "weapons/rocklf" AttackSound = "Missile", 5, "weapons/rocklf" } Cast { CastClass = "DoomPlayer" CastName = "$CC_HERO" AttackSound = "Missile", 0, "weapons/sshotf" } Link = Doom2Cast // restart cast call } Finally, don't forget to use the EndSequence command in your map definition to actually send the engine to the desired intermission after a specific map ends. Here, the intermission name is within quotes.map <maplump> <nice name> { ... Next = endsequence, "<intermission sequence>" } 0 Quote Share this post Link to post
Impie Posted August 11, 2016 Thanks a ton, scifista. I think I have a much better understanding of how this stuff works now. 0 Quote Share this post Link to post
Impie Posted August 13, 2016 Any idea why certain characters might flicker during their walk animations in this sequence? I can't find anything wrong with the decorate code, nor any missing frames. All the sprite names match the appropriate names in the decorate code, too (SGARA1, SGARA2A8, etc). Spoiler States { Spawn: SGAR A 10 A_Look Loop See: TNT1 B 0 A_JumpIfHealthLower (45, "Run") SGAR BBCCDDEE 3 A_Chase Loop Run: SGAR BBCCDDEE 2 A_Chase Loop Missile: SGAR F 4 A_Jump(128,2) SGAR F 4 A_JumpIfHealthLower(45, "MissileSuper") // Don't user super attack until damaged at least once. SGAR F 3 A_FaceTarget SGAR G 3 BRIGHT A_CustomMissile("eunuchfireball", 32, 0, 0) SGAR F 4 Goto See MissileSuper: SGAR F 6 A_FaceTarget SGAR G 3 BRIGHT A_CustomMissile("eunuchfireball", 32, 0, 0) SGAR F 6 A_FaceTarget SGAR G 3 BRIGHT A_CustomMissile("eunuchfireball", 32, 0, 0) SGAR F 8 Goto See Pain: SGAR H 8 A_Pain Goto See Death: SGAR I 7 A_Scream SGAR J 7 A_NoBlocking SGAR KLM 7 SGAR M -1 Stop } EDIT: On closer inspection, the character in question is briefly turning into the "pool of blood and bones" graphic during the walk cycle, whereas before it was just blinking out of existence. I don't think that sprite has the same name as this enemy sprite, does it? EDIT2: Problem persists after changing the sprite names. I got rid of the blood sprite by redoing the sprites so that A through D are the walk animations and removing the standing frame altogether, but he still blinks when walking. 0 Quote Share this post Link to post
Rayziik Posted August 13, 2016 Change the TNT1 frames to the matching sprite name for the actor. I had the same problem, and this fixed it. 0 Quote Share this post Link to post
Impie Posted August 13, 2016 Weird, it's never done that before. Is TNT deprecated? You were right, of course. It's fine now. Thanks for the tip! Also, your avatar is giving me cavities. 0 Quote Share this post Link to post
scifista42 Posted August 13, 2016 Impie said:Is TNT deprecated? No. 0 Quote Share this post Link to post
Rayziik Posted August 13, 2016 The wiki says nothing about it in regards to cast calls, so I wonder if maybe it's a bug. Since TNT1 frames are typically 0 duration, they shouldn't display at all, but they are obviously showing for a long enough amount of time to be visually apparent. 0 Quote Share this post Link to post
scifista42 Posted August 13, 2016 Could you post a whole wad where this issue with invisible sprites happens? To identify the cause, I might need to see more than just the DECORATE code, not to mention I need a real wad to test any theories instead of just guessing. 0 Quote Share this post Link to post
Rayziik Posted August 13, 2016 Here's a WAD: Cast Call Bug Just load MAP01 and hit the switch. The zombieman has a single TNT1 frame in the middle of his walking animation. You should be able to see him flicker once per cycle. 0 Quote Share this post Link to post
scifista42 Posted August 13, 2016 Aha, so it only happens during the cast sequence. That explains it, because the cast sequence procedure processes states (their durations, actions, etc.) differently (more simply) than the engine does during normal play. It apparently doesn't handle 0-duration states as "immediately skip to next frame" and displays them for one tic instead. 0 Quote Share this post Link to post
Impie Posted August 14, 2016 scifista42 said:Aha, so it only happens during the cast sequence. That explains it, because the cast sequence procedure processes states (their durations, actions, etc.) differently (more simply) than the engine does during normal play. It apparently doesn't handle 0-duration states as "immediately skip to next frame" and displays them for one tic instead. That's sorta what I was thinking. I'll have to just deal with it I guess. Thanks for the link, too. Sometimes I have a tough time finding my way around the wiki. 0 Quote Share this post Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.