ACS question

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

ACS question

Post by Zhadoom » Wed Feb 03, 2016 17:01

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: 3617
Joined: Sat May 13, 2006 10:30

Re: ACS question

Post by Rachael » Wed Feb 03, 2016 19:19

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.
Spoiler: Zen Sarcasm

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

Re: ACS question

Post by Zhadoom » Thu Feb 04, 2016 17:04

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: 3617
Joined: Sat May 13, 2006 10:30

Re: ACS question

Post by Rachael » Thu Feb 04, 2016 17:40

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.
Spoiler: Zen Sarcasm

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

Re: ACS question

Post by Zhadoom » Fri Feb 05, 2016 17:00

Thank you! :-)

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

Re: ACS question

Post by Rachael » Fri Feb 05, 2016 19:00

Mhm. :)
Spoiler: Zen Sarcasm

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

Re: ACS question

Post by Zhadoom » Wed Jul 13, 2016 15:53

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: 3617
Joined: Sat May 13, 2006 10:30

Re: ACS question

Post by Rachael » Wed Jul 13, 2016 16:42

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.
Spoiler: Zen Sarcasm

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

Re: ACS question

Post by Zhadoom » Thu Jul 14, 2016 15:53

Thanks a lot, Eruanna! :-)

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

Re: ACS question

Post by Rachael » Thu Jul 14, 2016 16:05

You're welcome.
Spoiler: Zen Sarcasm

User avatar
Gez
Developer
Developer
Posts: 1396
Joined: Mon Oct 22, 2007 16:47

Re: ACS question

Post by Gez » Sat Jul 16, 2016 23:47

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”