Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sigvatr

Monster death ending game

Recommended Posts

I'm using the zDoom with Hexen features wad type for my wad and at the end of the episode when you kill the Cyberdemon, I made it end the game after the Cyberdemon is dead. However, the ending is immediate, and you don't get any time to watch the Cyberdemon die.

Is there a way to delay the episode ending by a few seconds?

Thanks.

Share this post


Link to post

ok i ain't no genius this is just an idea...but on e1m8 and e4m8 when u kill the boss(es) it lowers a sector to the ground tagged 666, i think it uses the *bossdeath feature to lower 666 to lowest floor and if there is no 666 just end the level...maybe if u made something like that? lower a floor to an exit after the cyberdemon is dead?

note its just an idea...

Share this post


Link to post

thats simple: instead of giving the daemon an end game special,you assign an ACS_Execute special. Inside of the script executed with this special,you place a delay(20) (where 20 is the number of tics you want to wait,change it to fit your needs) before the end game action.

Share this post


Link to post
farhaven said:

thats simple: instead of giving the daemon an end game special,you assign an ACS_Execute special. Inside of the script executed with this special,you place a delay(20) (where 20 is the number of tics you want to wait,change it to fit your needs) before the end game action.


I will need to use Wad Author to do this, correct?

Share this post


Link to post

or just use DoomBuilder.

Right click on the cyberdemon, go to the Effects tab, and put in 80 for Thing Action, then fill out the flags accordingly (Map number is where the script is located, 0 is the same as saying read it from the current map).

I think the Thing Action triggers when the monster dies. (Dont quote me on that, its been awhile since I've messed with this part, spending most of my time in DECORATE coding)

Then go to the Scripts-->Edit BEHAVIOR lump menu in DoomBuilder.

#include "zcommon.acs"

//Other scripts here

script 256 (void)
{
delay(105) //Time in Tics, 35 to the second. Delay for 3 seconds.
Exit_Normal(0); //End the level*
}

*Exit_Normal(pos); where pos is the arg0 of the player starts in the next map, useful for making multiple paths. Use 0 for standard style maps.

Share this post


Link to post

Wow, a lot of fancy solutions for a simple problem. Just use a DEH/BEX patch to alter the Cyberdemon's frames so that the BossDeath codepointer is executed after a long duration in the frame before it. Absolutely no need for any of this high-tech port-specific crap.

Though if your project already uses those features anyway, knock yourself out. Just don't accept them as an artificial limitation.

Share this post


Link to post

With the ACS version, however, it is possible to add other stuff after the death sequence (like explosions, cinematics, text, etc).

@NFDF: If you dont have the effects tab on the thing editing mode, then you're not actually in Doom in Hexen format (or maybe just an outdated version of DB?).

Share this post


Link to post

If you think learning ACS is like learning Russian, then you could do the following dirty but effective way.

1:Add a dummy sector, and give it a tag (666 as a sample).
2:Give the cyberdemon the function to activate a crusher on the sector with that tag.
3:Add a scripted marine or something there.
4:Give this unlucky creature the function to end the game when killed.

The height of the dummy sector will be the time the map will delay to end after you kill the cyber.

Another option, if you know the basics of MAPINFO, you could set the map to behave as E2M8, I can't remember the code, something like E2M8 special or so. Then when all the cybers on the map get killed you win the game.


Edit: Agree with Quasar's idea, the rest of the solution (including mine) limit your wad to G/Zdoom only for no reason. And unless you are making the wad for your personal use, or you already used other Zdoom features, trust me, people don't like this kind of limitation on the port of choice when it could be avoided (I learned this in the painful way).

Share this post


Link to post
Quasar said:

Absolutely no need for any of this high-tech port-specific crap...
Though if your project already uses those features anyway, knock yourself out. Just don't accept them as an artificial limitation.

Sigvatr said:

I'm using the zDoom with Hexen features wad type for my wad

It's already port specific and using Zdoom Hexen format.

I wouldn't have described a simple script like that as "high-tech" and it is a far neater solution (IMO) than hacking a monster to do what is required - especially if the author then has a situation where he wants to use another cybie somewhere else because it too will exit the level unless a clone of the cybie with its own death sequence is also made in DEHACKED to allow 2 different cybie types to be used.

I'd have gone for dehacked if cross-port compatability was important, but because it isn't, using DEHACKED doesn't make much sense IMO.

Share this post


Link to post

If you think learning ACS is like learning Russian,...


I found Russian just a slight bit harder to learn than ACS,mainly because of the cyrillic alpabet :D

Share this post


Link to post
Steeveeo said:

or just use DoomBuilder.

Right click on the cyberdemon, go to the Effects tab, and put in 80 for Thing Action, then fill out the flags accordingly (Map number is where the script is located, 0 is the same as saying read it from the current map).

I think the Thing Action triggers when the monster dies. (Dont quote me on that, its been awhile since I've messed with this part, spending most of my time in DECORATE coding)

Then go to the Scripts-->Edit BEHAVIOR lump menu in DoomBuilder.

#include "zcommon.acs"

//Other scripts here

script 256 (void)
{
delay(105) //Time in Tics, 35 to the second. Delay for 3 seconds.
Exit_Normal(0); //End the level*
}

*Exit_Normal(pos); where pos is the arg0 of the player starts in the next map, useful for making multiple paths. Use 0 for standard style maps.


I tried this (you forgot a semicolon btw) and it worked. However, instead of ending the episode, it just ended the level and then repeated itself. It probably repeated itself because I specified for it in MAPINFO to have the next level as this one, but how do I make it actually end the episode?

Share this post


Link to post

I think this might do it

http://208.78.96.242/wiki/Teleport_EndGame

Or set your mapinfo up properly to go to one of the endgame types (or an endpic) rather than back to the start of the level.

The MAPINFO Wiki page explains how:

http://208.78.96.242/wiki/MAPINFO

eg
map MAP50 "Data Collection"
cluster 32
sky1 NJSKY28 0.0
music N_0002
fallingdamage
next Endgame3

or

map MAP29 "Resolute Fortress"
cluster 12
sky1 njsky14 0.2
sky2 njsky14b 0.2
forcenoskystretch
lightning
music N_0047
fallingdamage
next EndPic ENJAY5

Share this post


Link to post
Sigvatr said:

I tried this (you forgot a semicolon btw) and it worked. However, instead of ending the episode, it just ended the level and then repeated itself. It probably repeated itself because I specified for it in MAPINFO to have the next level as this one, but how do I make it actually end the episode?

Try Teleport_EndGame(); instead of Exit_Normal(0);.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×