Yandros on 14/1/2016 at 18:11
First of all, to make sure everyone understands this script, all it's doing is invoking the play_movie command and passing the name of the movie to it. So all the problematic behavior described here is in the engine and not the script, which of course means that any solutions are workarounds and not real solutions.
Waterfront Racket has several in-mission movies I'd like to play. Triggering the movie works fine (well, only in Thief2.exe; in Dromed it only plays sometimes, but that's OK), but after it's done, all nearby ambient sounds have been turned off. I'm trying to turn them back on again after the movie is over by adding the ActivateAmbient script and sending them TurnOn, but that doesn't seem to work. Or more accurately, it works if they were already OFF before the movie, but not if they were ON (which they will be). I'm guessing that's happening because the ActivateAmbient script ignores a new TurnOn if it thinks the ambient is still playing, but in this case the play_movie command is somehow disabling the ambients without sending them TurnOff, and thus they don't respond to TurnOn after the movie. So I then tried sending them a TurnOff just before the movie plays, and then the TurnOn just after, but that doesn't seem to work either.
I even tried teleporting the player to a black room for the movie and then back, so that the movie is played in a silent place with no ambients it can mess with, but that worked only some of the time; it still failed occasionally. I think the culprit there is the weird teleportation behaviors that showed up in NewDark.
MiniRant: If you're not familiar with this, basically if you try to teleport an AI to a location not accessible to their current location, more often than not they blink to the new spot, but sometimes they instead are slid very quickly in its direction until they hit a solid wall, and are then left there without ever completing the teleport. I think that's happening in the failure cases when using this black room approach - the player (although not an AI) is being slammed against a wall but left in the room, the movie plays, then the player gets teleported back to where they were when it's over, and because they were in the room when the movie played, the ambients are disabled. For those who doubt this is real, I've made a test mission where you frob a button to teleport an AI to a blue room, and about 1 time in 6 he slides to the wall in the direction of the blueroom/teleport trap and stops instead, so it's legit. It wreaked all kinds of havoc in the beta testing of DCE Act II until I figured it out, and I had to change from teleporting AI out after a conversation to destroying them to fix it. I don't think I ever saw this in 10 years of working with Old Dark, so I think it's a new thing with NewDark.
In (
http://www.ttlg.com/forums/showthread.php?t=145817) this thread, fibanocci said he used it multiple times in The Farm, so I'm wondering if he encountered this issue and if so, found a better workaround than what I'm doing. Or anyone else who's used it, for that matter.
GORT on 14/1/2016 at 21:32
Yeah, I'm also trying to figure out a way around it. This will also make your BMGs events fail to play. I have a particular event that needs a cut-scene where a Mechanist get knocked out from gas entering the room's air duct. I'm not so sure on how to come at this, but I have a theory. I'll go take a crack at it.
GORT on 14/1/2016 at 21:56
OK, I've got a way to work around for environmental ambient markers, but the ambient names can't be in the exact same order. The way I did it was creating a clone of the original one, but change the order of the ambient names and add a TurnnedOff flag. Then give it AnimLight in the script properties (just in case). Next, give the event that triggers the cut-scene an additional event to turn on an up-down switch that turns on the ambient (the reason for that is to delay the TurnOn message). So far, it's been working quite well.
Yandros on 14/1/2016 at 23:29
1. You don't need a lever to add a delay, that's a bit Rube Goldberg. I'm using NVRelay and specifying the exact delay I want.
2. So basically you're duplicating the ambient sound sources, with the dupes turned off from the start, and then turning them on after the movie to replace the ones that the movie killed? Interesting idea, I'll have to try it. It should work for positioned ambient sources too (not just the environmental).
3. Why are you using AnimLight? I'm using ActivateAmbient on mine, which is needed here.
GORT on 14/1/2016 at 23:40
1. I just used the lever in order to see if it gets triggered visually.
2. Yes, pretty much. Just remember to have them in a different order.
3. It may not be needed, but I used it just in case it needs a script that turns it on (it's an old habit I use before custom scripts :p ).
Yandros on 15/1/2016 at 00:35
3. Well, the Ambient hacked property needs the ActivateAmbient script. :p
Thanks for the idea, I'll try it out tonight.
EDIT
That seems to work great, thanks for the idea! Also, I dug out my old test missions from last year to mess with the teleporting thing, and found that it does still happen in OldDark although much less often, so I was wrong to say it's new with NewDark, although it does seem to occur more often.
Further, I poked on it enough to have some advice: If you're teleporting an AI away, it's best to teleport him into a largish blue room, and not into solid. In my test mission, when teleporting out into solid is the only time I saw him fly to the wall and stop. I did however see weirdness teleporting AI into my room from a blue room; sometimes they slid out from the wall, and flew way past the teleport trap! I'm talking 10-15 units past. I can share the test missions if anyone is interested. However, I've done no testing at all teleporting the player as I was trying to do yesterday to work around the movie problem, so I'm only guessing that it's related to this issue with teleporting AI.
Nameless Voice on 15/1/2016 at 20:16
Quote Posted by GORT
3. It may not be needed, but I used it just in case it needs a script that turns it on (it's an old habit I use before custom scripts :p ).
Scripts don't work like that. Each one is independent, they don't need another to "turn it on". If the message they want is sent to them, they will react.
See: (
http://www.ttlg.com/forums/showthread.php?t=112228) An introduction to scripts.
john9818a on 15/1/2016 at 20:47
I had to resort to teleporting an AI into a hole in the floor with a false floor and never figured out why it wouldn't teleport out of the room. At least with Dromed there is always more than one way to accomplish anything.