Jump to content

Moving the party organically in cutscenes


Recommended Posts

I have a cutscene in which I want the party to move from point A to point B organically (i.e. by walking, not by teleporting). To that end, I made 6 script blocks in the cutscene, so that the whole party can move synchronously, and it works as it's supposed to. The only problem is, I don't know when to continue the cutscene. It should not progress until all party members have completed their movement, but since the party members can be in different parts of the area, I can't just put an arbitrary wait() call in the script and hope that they've all gathered.

Is there a good way of doing this? I've got a few ideas on how to go about it, but none of the solutions are ideal.

Link to comment

These things come to mind:

1. If you're modding iwd2, it has an objectRect parameter to object specifiers, which supposedly limits the matching to the specified region.

2. A creature and PersonalSpaceDistance checks. Invisible if needed.

3. Trigger regions at the destinations, then checking via IsOverMe.

Link to comment

I would remember, for the vanilla scripts, it doesn't matter if there's 5 or no NPCs, for the scripts... it's managed as if there's 5 all the time. And only one script... the specific cutscene script made just for the cutscene, that overwrites the players (Player1)... and the party is Player2...6, managed with ActionOverride(... commands ...). See this.

Link to comment

Jarno, that's of no use to me. Like I said, I don't want my other characters jumping to point, so I can't manage them via ActionOverride. Using MoveToPoint with ActionOverride will not have the party members acting at the same time, so I need multiple blocks.

My own idea was actually something similar to what lynx said. I could use SetCutSceneLite and have a separate script manage the characters, which would allow me to check for various triggers in order to verify the characters' position. I was just hoping that there's a better way to wait for the party's action list to clear.

Link to comment
14 minutes ago, Skye said:

Jarno, that's of no use to me. Like I said, I don't want my other characters jumping to point, so I can't manage them via ActionOverride. Using MoveToPoint with ActionOverride will not have the party members acting at the same time, so I need multiple blocks.

My own idea was actually something similar to what lynx said. I could use SetCutSceneLite and have a separate script manage the characters, which would allow me to check for various triggers in order to verify the characters' position. I was just hoping that there's a better way to wait for the party's action list to clear.

You are looking at this from the wrong perspective... I gave you an eaxmple that uses JumpToPoint ... you don't have to use that, but rather MoveToPoint... so I don't mention it at ALL.

And yes, it featured is just one block... but you can use multiple with Wait's in them. But you have to test the final version with a party of 6... as a party of one will work exatly as one with 6 members. Exept that when an order is given, there's no one to act with it. Just like yelling to a forest... things listen to you, they just don't understand or care of you.

Link to comment

Yeah, but that's the problem. I know I can instruct the party members to go somewhere, regardless of whether or not they're actually in the party, but my problem is that I need to know when all of the party members have reached the destination so that I can continue my cutscene. Using Wait isn't good enough because I don't know how long it will take the party to get there and I don't want to leave the cutscene hanging for an arbitrary amount of time if all of the characters are gathered. There's no way to say WaitUntilPartyActionListEmpty().

I tried things with SetCutSceneLite(), but that comes with other problems. The characters no longer walk at consistent speeds since they're not in a real cutscene and then I have to check for every possible condition that could affect how things work. Checking if the characters are standing on a trigger area worked well, but only so long as the conditions are perfect.

Sometimes I really hate IE's scripting system. I wish we could just write straight up Lua code for complex stuff...

Link to comment

In my experience the IE is not robust enough to do this in a safe way.

My advice is: fake it:

- jump the party to somewhere (cloaking it with a fade-to-black and fade-from-black if you like)

- then have the script walk them from that somewhere to the place you want them to go.

It's not perfect but it's a lot more robust and safer. My suspicion is that even if you just-about get it working the way you want, you'll be forever fixing bugs created by awkward edge cases and unexpected interactions.

Link to comment

Yeah, I gave up and did pretty much exactly that. I didn't even really bother with fading in and out. I've wasted far too much time trying to get this perfect when it's not even particularly important. At least it was a learning experience, I guess.

Link to comment

So what was the exact scenario ? Cause you can do a bunch of stuff ... like approximate walking time... unless your origin point is unknown, which is why the jump to a point is a good start, as then you know where everyone is and the walk timers won't likely be much longer than the reference.

This is not a failure. Just a better perspective.

Link to comment

The party members could be in any part of the area, so there was no way to know how much time they would need. Jumping to a point helps, but that's not organic movement.

The scripting engine simply does not support what I was trying to do and it's not worth jumping through hoops to get it sorta working.

Link to comment

Hah, I see your lack of vision the thing that prevents you from realizing your premise. As the question then is, what triggers this scene. As that alone could summon the other chars to the chars to the NPCs side. "Hey everybody, come here, I found a body... and it looks like the blood trail leads to ... " etc.

Link to comment
2 hours ago, Jarno Mikkola said:

Hah, I see your lack of vision the thing that prevents you from realizing your premise. As the question then is, what triggers this scene. As that alone could summon the other chars to the chars to the NPCs side. "Hey everybody, come here, I found a body... and it looks like the blood trail leads to ... " etc.

How is any of that relevant? I know how to trigger the NPCs to go somewhere, but there's no good way of telling when the characters have reached that point within the execution of a single cutscene. I can't tell if you just enjoy playing clueless or if you're just making fun of me.

2 hours ago, lynx said:

It should also be doable with individual ActionListEmpty(), but it'd result in several blocks just to check all the party sizes.

Yeah, but the problem again is that you can only check conditions outside of a cutscene (i.e. within a cutscene lite), which would then require a slew of other triggers and checks just to account for all the nonsense that comes with that. I made it work in perfect conditions, but in reality, conditions are rarely perfect.

Link to comment

'K, let me play a clueless, and reforge this from an iron bar ... hows any of that relevant:

I am pretty sure that if a known character with a known start point and normal walking speed can make a trip from that point to a second point in a Wait(6) timer, that same character can then after that make the same distance in the next Wait(6) sequence to the second point... and so forth.

You pre-phase this in the "cutscene" with the "Hey every..." -dialog and JumpToPoint, which is instant action to all the characters, while using the  the FadeToColor to simulate the time difference, just like the original game did. And you then have a known placement for all the characters, even the ones that won't exist cause there are only 4 NPCs currently joined to the party, or 3, 2, 1 , as in a party of 5, even the 6th character has a known position if the party had a 5 NPCs. (and yes, there can only be 5 NPC cause the 6th party member is ALWAYS the PC, in a party of 6).

Then you use the MoveToPoint to all the chars to different relative points and Wait -timers... as many times as you like and have dialog popups preferably at each transition, as the chars should have a reason to follow the lead character(usually the NPC that starts the dialog). And so he or she is at the front, to move first.

Yes, you make a try approximation for the timers... and then test it. And yes, a Slow or Haste effects might make it a bit of difference... but F that. It's really hardly ever a relevant anyways.

 

Really, how hard was that to get ?

Link to comment

But the whole point is that didn't want want my characters to jump. I know how to do cutscenes with jumps and waits; Jumps are easy. I wanted them to move organically, and jumps are not organic, so everything you've said in this thread is completely besides the point. I was asking for solutions to a very specific problem and you keep trying to tell me how to solve a completely different problem that I don't have any trouble with. I appreciate your input, as always, but unless you can offer a solution to the actual question, then it's just noise.

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...