ACS question

Need help with your project? Ask here.
Zhadoom
Posts: 57
Joined: Tue Sep 02, 2014 16:06

ACS question

Post by Zhadoom »

Hello!

Question: Is there a way to achive the following with an ACS script? When the player reaches the exit reset the level (revive monsters, remove decals), but keep kills, secrets, items etc. the player has reached throughout the level.

In other words: Player kills all monsters, but when s/he triggers the exit the level should look "unused". :roll:

Bye
zhd
User avatar
Rachael
Developer
Developer
Posts: 3640
Joined: Sat May 13, 2006 10:30

Re: ACS question

Post by Rachael »

I guess I should ask, what exactly are you trying to accomplish?

You can exit into the exact same level, as long as it is not part of a hub that will be sufficient enough to reset it and it will still give you stats at the end.
Zhadoom
Posts: 57
Joined: Tue Sep 02, 2014 16:06

Re: ACS question

Post by Zhadoom »

Hello Eruanna!

Thank you for answering! :cheers:

What I want to do: When the player reaches the exit of the level, a moving camera should start a flight through the level.

What I've done so far is to let start a script when the player passes a line at the exit area. The script freezes the player, changes the camera and activates it. The flight begins. At the last of the interpolation points there is an interpolation special as well which ends the level so that the intermission sequence starts. It shows the actual kill statistics of the level.

Everything works fine up to here.

Now, what I want is, that the level looks "unused" when the camera flight starts. You should not see dead monsters all around but dormant ones standing in the place where they are in the editor.
The problem is, if I reenter the level completely, all scripts of the OPEN-type will be run again. And the kill statistics is reset, too.

The levels are not in a hub.

Kind regards!
zhd
User avatar
Rachael
Developer
Developer
Posts: 3640
Joined: Sat May 13, 2006 10:30

Re: ACS question

Post by Rachael »

Okay - what you are trying to accomplish, as far as I know, is not possible. You could try a "work-around" where the level is duplicated in another area and is left untouched, but then it would be only possible to get 50% of your kill count in the intermission. This, itself, can be solved by turning the monsters into dopplegangers - making them lose their +KILLCOUNT flags, and possibly even lose their +ISMONSTER flags, and obviously completely isolating them from any area the player has access to. You would obviously have to create DECORATE duplicates for each one, setting the appropriate flags. Possibly even +DORMANT so that they don't aggro the player even by accident.
Zhadoom
Posts: 57
Joined: Tue Sep 02, 2014 16:06

Re: ACS question

Post by Zhadoom »

Thank you! :-)
User avatar
Rachael
Developer
Developer
Posts: 3640
Joined: Sat May 13, 2006 10:30

Re: ACS question

Post by Rachael »

Mhm. :)
Zhadoom
Posts: 57
Joined: Tue Sep 02, 2014 16:06

Re: ACS question

Post by Zhadoom »

Okay Eruanna, how about this one:

Imagine, there is a wall and within the wall, there is a computer terminal, 16 map units recessed into the wall. On its left and right sides there are lite5 textures. The sector is divided into several sectors to achieve a light gradient, so that the middle is dark and the left and right edges are lighter.

Now imagine, you wanted to give this terminal the sector special light_flicker. This would lead to the behabiour that every single sector within the whole light gradient flickered randomly.

Can we make it, so that all of the sectore flicker synchronously, but still not at a fixed interval in time?

;-)

zhd
User avatar
Rachael
Developer
Developer
Posts: 3640
Joined: Sat May 13, 2006 10:30

Re: ACS question

Post by Rachael »

You can, but it might be pretty time-consuming to set up, depending on how smooth you want the gradient to be.

One way to do it might be this:

Tag the entire gradient from 1001-1016 (or however many sectors you're planning to use in the gradient) and then use a script that kind of does this:

First, determine whether on this run, to flicker on or off. You'll have to tweak your random algorithm a bit to get the desired effect. Checks like if (rand>0.95) would probably work.

Then, if the RNG said to turn it on, iterate all the sectors to their corresponding light values, from darkest to lightest. (Or lightest to darkest if that's your goal)

If RNG says turn it off, iterate all sectors to the same dark value (usually 96 is sufficient in ZDoom, whereas with GZDoom you'll have to go lower like 25 or 0).

That's just one way to do it. There might be better ways, though.
Zhadoom
Posts: 57
Joined: Tue Sep 02, 2014 16:06

Re: ACS question

Post by Zhadoom »

Thanks a lot, Eruanna! :-)
User avatar
Rachael
Developer
Developer
Posts: 3640
Joined: Sat May 13, 2006 10:30

Re: ACS question

Post by Rachael »

You're welcome.
User avatar
Gez
Developer
Developer
Posts: 1399
Joined: Mon Oct 22, 2007 16:47

Re: ACS question

Post by Gez »

Something else you can try, use a dynamic sector light. Make your sector flicker normally but place such a light in it.

Drawbacks: works only in OpenGL, light is spherical so you can't do shadowcasting.
Post Reply

Return to “Editing Help”