Welcome
Ladies and Gents:

These forums are now closed and registration disabled.

Please join us at our new forum on Proboards. Our hope is that these new forums are more stable, provide more and better features, and allow continuation of the project forums in a safer, more secure, long term environment.

me3explorer.proboards.com

--The ME3Explorer Team

Research | Animcutscenes + Matinee Editing

Semi-technical area to discuss content modding research and discoveries. Technical information necessary for coding tools should be posted in Technical Research on the Coders board.

Research | Animcutscenes + Matinee Editing

Postby The Fob » 08 Nov 2014, 22:56

Hey guys, I hope this is helpful. Here comes a bit of a workflow description of how to edit interrupts. While my research focused on interrupts specifically, I think you may find that there are some broader concepts in this, which show how to generally modify any aspect of an in game cutscene or dialogue (i.e. animations, camera angles, timing of GUI element visibility, particle effects, etc.).

Ok, let's start off in the dialogue editor. As an example, I will use the line of TIM in the final conversation during the end game, after he shot Anderson. He will say "And you'll die knowing you're one of my greatest disappointments." At this point, the player gets a renegade interrupt to shoot him. If the player doesn't hit it, Shepard will die. Here is a video of the line in question.
The dialogue is found in the file BioD_End002_300TIMConflict_LOC_INT.pcc. I extracted the file from the extended cut.

We can find this line in the dialogue editor:
Spoiler:
Image

Note that in the replay list, it says CATEGORY_RENEGADE_INTERRUPT. This is because Shepard doesn't reply to TIM's line by dialogue wheel or automatically but by interrupt.

What we need from this is the ExportID.

Now we can go to the PCC Editor 2.0 and check the _BioSeqEvt_ConvNode objects. Each ConvNode has a property called m_nNodeID. We need to find the ConvNode with the same m_nNodeID as the ExportID in the dialogue editor. This is how The dialogue object interacts with the kismet sequence for this dialogue. So here it is:
Spoiler:
Image

We can see that the object number is 1637. Now we can open the sequence editor and find that object. For the following image, I have already untangled the sequence a little to show what is connected to this object in the sequence:
Spoiler:
Image

Ok, lot's of stuff here, let's go through it:
On the far left, you can see our ConvNode. It acts as a trigger, that is activated when the line is reached in the dialogue editor.
The ConvNode links to an Interp object, which is a matinee object for in game cutscenes. Be aware that this Interp object only encompasses the cutscene for this one line (hence the comment with the actual text of the line in blue).
The ConvNode also links to a WwisePostEvent. These are used for proper playing of sounds, etc. What this particular one does, I don't know.It may be there for the voice over but it may also be for some other sound. I didn't look into that for now.
On the left of the Interp object, you can see that it is linked to an InterData object. The InterpData object (#1876) contains all the essential timing information for this cutscene and we'll need it to go on (I'll get to that in a minute)
You can see that the InterpObject has multiple outputs: If the cutscene for this line is complete, we go to a sequence action, called "EndCurrentConvNode" which basically allows the dialogue object to proceed to the next entry. There are also Sequence actions present that change the music and turn off the "indoctrination effect" ,which, I presume is the black shadows on screen during the TIM Convo. Note that the Interp object that turns this effect off has multiple lines as inputs. In the sequence, you will find structures like the one shown here for all the ConvNodes (i.e. all the lines of this conversation). So the indoctrination effect can be turned off from different points in the conversation as multiple ConvNodes can eventually link to it.

Ok, now that we know how the kismet sequence works, let's move on to the matinee object. I recommend to read Epic's documentation on UE3 matinee and to play around with it a bit in UDK, to get feel for what's what. As a very limited comparison between matinee and what we will see in the pcc files of Mass Effect 3, see this image (right click and see the original for larger size):
Spoiler:
Image

This is just a screenshot of my own UDK, when making a scene for MEHEM. On the right, you can see the kismet sequence window with the matinee object (same as Interp object in the sequence editor) and linked to it, you can see a Data object (same as the InterpData object in the sequence editor).
To the left of that sequence view, you can see the matinee window, which basically shows you the contents of the InterpData object.
Every cutscene has a number of Groups (InterpGroups) which link to an actor in the game world (e.g. a skeletal mesh or a camera). Each group has tracks (InterpTracks) which define certain actions, the actor can take during a cutscene, e.g. movement of a mesh or a focus (depth of field) change for a camera. Each track contains Keyframes, which link a time point to a data point. Data can be very different, depending on the track. For example, in a movement track, a keyframe will define a certain position (and rotation), the mesh should be in at a certain point in time. In an animation track for example, the keyframe may determine which animation should start playing a a given time.
So you have to understand the track, before you can modify it. As I said, it is useful to read the matinee documentation and play around with it in UDK.

Now, how do we do this in ME3Explorer? First, we have to find the InterpData object:
Spoiler:
Image

Ok, in this object, we can find two things of immediate interest:
1. the InterpLength property, which determins the entire length of the matinee (the green area in my UDK screenshot)
2. An array called InterpGroups, which contains information on where to find the groups for this matinee object.
There is no automated array reader because arrays can be pretty diverse, so we'll have to look into the HEX code, to see what's in there (don't worry, this is not too bad): EDIT: I wasn't aware of this at the time but you can use the "Interpret" button in the toolbar to have PCC Editor 2 translate the HEX for you and make your life a lot easier!
Spoiler:
Image

The image should be pretty self explanatory. By the way, apart from the entries themselves, this is how all arrays are set up. So how did I know that I want to go to C7 08 00 00? You can just do it by trial and error. I actually came at the problem from the back (more on that later).
Ok, let's go find our InterpGroup object:
Spoiler:
Image

Huh, looks pretty similar to the InterpData. Only that here, the array is called InterpTracks and contains info about all the tracks in this group. So, let's do the same procedure again:
Spoiler:
Image

And let's go find our InterpTrack object:
Spoiler:
Image

Now we are getting somewhere. The object we found is called BioEvtSysTrackInterrupt, which is looking good for an interrupt. So this is how I actually found this track in the first place. I searched for something in the pcc file that looked like it might be good for an interrupt and went the ladder back up through it's parents until I found the corresponding matinee object. You can see the parent of an object by going to the Meta Data Editor tab and looking at the "Link". Don't forget that the number here is off by 1 as always for objects in the export list. In the end, there no really great way to find individual tracks for now. We'll just have to do some searching.

Anyway, let's move on. You can see that we are again looking at two arrays, one with Data for the Interrupt and one with the name and timing information about the key frame. Because they are arrays, we go back to HEX:
Spoiler:
Image


Let's start with the InterruptData array and go through it byte by byte:
Code: Select all
63 07 00 00 00 00 00 00 -> Property Name (from NameList)  = m_aInterpData
65 00 00 00 00 00 00 00 -> Property type (from NameList) = ArrayProperty
25 00 00 00 00 00 00 00 -> Array size = 25 in HEX
01 00 00 00 -> Number of entries = 1 (this array has only one entry

Ok, this was the header, now comes the actual entry in this array. One property is stored:
Code: Select all
2B 01 00 00 00 00 00 00 -> Property Name (from NameList) = bShowInterrupt
0F 01 00 00 00 00 00 00 -> Property type (from NameList) = BoolProperty
00 00 00 00 00 00 00 00 -> Empty bytes, these are always seen in bool properties like this
01 -> The bool is set to true
1c 08 00 00 00 00 00 00 -> "None" (from the NameList). This always marks the end of an array entry in which properties are stored)

Ok, so the data for this keyframe is that the Interrupt should be set to visible. Now for the next array, m_aTrackkeys:
Code: Select all
63 07 00 00 00 00 00 00 -> Property Name (from NameList)  = m_aTrackKeys
65 00 00 00 00 00 00 00 -> Property type (from NameList) = ArrayProperty
25 00 00 00 00 00 00 00 -> Array size = 48 in HEX
01 00 00 00 -> Number of entries = 1 (this array has only one entry

So again, just one entry, only this time, 2 properties are stored in that entry. Let's go for it.
Code: Select all
B5 06 00 00 00 00 00 00 -> Property Name (from NameList) =KeyName
0F 01 00 00 00 00 00 00 -> Property type (from NameList) = NameProperty
08 00 00 00 00 00 00 00 -> Size of the Property (in bytes)
8E 06 00 00 00 00 00 00 -> "Interrupt" (from NameList)
A0 04 00 00 00 00 00 00 -> Property Name (from NameList) =fTime
65 04 00 00 00 00 00 00 -> Property type (from NameList) = FloatProperty
04 00 00 00 00 00 00 00 -> Size of the Property (in bytes)
34 66 CE 40 00 00 00 00 -> HEX to float conversion (don't forget the endian) = 6.449976
1c 08 00 00 00 00 00 00 -> "None" (from the NameList). This always marks the end of an array entry in which properties are stored)


So, what can we learn from this? Basically, TIM has 6.449976 seconds to say his line. After this point, the renegade interrupt pops up and I can shoot TIM. This particular InterpTrack only has one keyframe but there can be more than one in other tracks (even Interrupt tracks, turning the interrupt on, off and on again). You will see that for all tracks, the number of entries in the arrays, which define keyframes is always the same. This is because the entries in the different arrays match. This track has only one keyframe but if there were two, then both m_aInterruptData and m_aTrackKeys would have 2 entries. Keyframe 1 is then defined by m_aInterruptData(1) and m_aTrackKeys(1) and keyframe 2 is defined by m_aInterruptData(2) and m_aTrackKeys(2). This way, you can have as many keyframes as you like.

Now we can go ahead and change this data. We can change the reply category in the dialogue editor to convert a renegade interrupt into a paragon interrupt and we can change the timing for it to come up earlier.
Here is what that looks like in our case:

(I pressed the interrupt a bit quickly but you can clearly see, it happens earlier (after 2.1 seconds) and is a paragon instead of a renegade interrupt, so yes, I did hit the right mouse button to activate it.)

We can in theory even clone the track and - with enough time and effort - put it into another Interp object. We could even clone Interp objects, give then now groups and tracks, link them to new ConvNodes and thus eventually generate completely custom cutscenes. Doing all of this in HEX is not really feasible of course but all the information is there.

So, I hope this is helpful and not just redundant information. All we need now is a matinee editor. :D

EDIT: A quick word about animations: Body animations are of course AnimSets, which are linked in the properties of an InterpGroup. The Animation can than be played normally with keyframes, in an "Anim" InterpTrack. You can see this in my UDK screenshot. While I have not researched this in ME3 specifically, I guess it works the same way there. FaceFX may be implemented in a similar fashion (although it seems that it's referenced a bit differently, see giftfish's research on the matter).

The Fob has been thanked by:
User avatar
The Fob
Modder
 
Posts: 702
Joined: 08 Oct 2012, 04:37
Has thanked: 242 time
Have thanks: 212 time

Re: Research -- Dialogue Editor

Postby giftfish » 09 Nov 2014, 06:04

@Fob -- Really, really cool. You waaaaaay lost me at the hex, though. "Trial and error," lol. To me it's all error. No matter how many times I read instructions for hex, no matter how clearly written (and yours are), I just don't get it.

WTB Matinee Editor.

Btw, that sound object might be for the interrupt sound trigger.

Also, with the custom cutscenes, I still don't see how we get around the wwisebank issue, since we can't edit them, clone, etc. What's your thought on that?
giftfish
 

Re: Research -- Dialogue Editor

Postby giftfish » 06 Jan 2015, 19:14

Incoming research post.

First, a quick intro for context. I think most folks around here know that one goal for ThaneMOD has always been to get a romance scene in for Thane. After some research, we decided we wanted to try for Kaidan's pre-dream sequence combined with Garrus' post-dream sequence. And, after more than a few months of work, JohnP has made it happen. Files are even custom-named/loaded for Thane, which means no overwriting. Wewt. But, now we need to actually edit the scene content--primarily the dialogue--which is where this post comes in. For now, we'll focus on the pre-dream portion sourced from Kaidan.

Parent Files
  • BioD_Nor_132RomKaidan.pcc
  • BioD_Nor_132RomKaidan_LOC_INT.pcc
  • BioD_CitHub_HospitalP3.pcc (contains Thane's model)

So, the big, big wrinkle is that all the romance scenes aren't normal dialogues. A normal dialogue in a sequence map looks like this:
Spoiler:
Image
Image

Simple and pretty, lol. Normal dialogues can be edited with the Dialogue Editor. While it doesn't give you control over the ENTIRE scene, it gives you control of a lot. What lines are spoken and when, FaceFX used, conditionals, and a certain amount of control over model position and camera angles (via ExportID). Normal dialogues are also subject to the "TLK trick." Lines can be easily skipped by deleting the string data.

But, as I said, romance scenes are not normal dialogues. They are Animcutscenes. Animcutscenes look like this in the sequence map:
Spoiler:
Image
Image
Image

I know, right? My reaction was something along the lines of "Omfg what the holy hell is all that?".

Well, all that is what makes your life miserable as a modder, b/c pretty much NONE of the standard dialogue methods will work. TLK trick does not work and more worrisome, editing via the Dialogue Editor does not work. If you try to skip a line by re-pointing inside the editor you will be out of luck. Don't even try to add something to the Starting List (fucks everything up, lol).

Why don't the normal methods work? Because Animcutscenes are all controlled via a timeline and individual matinee objects. Cameras, lighting, animations, FaceFX, and VO objects... even the subtitles themselves. All are subject to control by the "Animcutscene." Their appearance/timing is controlled by various tracks, keyframes, and float properties.

Here's some objects associated with the "AnimPart1" Animcutscene:

Spoiler:
TheWorld.PersistentLevel.Main_Sequence.Kaidan_Culmination.ANIMCUTSCENE_NorROM_Kaiden_AnimPart1.InterpData (the sequence itself)
TheWorld.PersistentLevel.Main_Sequence.Kaidan_Culmination.ANIMCUTSCENE_NorROM_Kaiden_AnimPart1.InterpData (one of the many Interpgroups for AnimPart1; this one is for a camera)
NorROM_Kaiden_AnimPart1_A. FXA_Shepfem (FemShep's FaceFX for this sequence)
TheWorld.PersistentLevel.Main_Sequence.Kaidan_Culmination.ANIMCUTSCENE_NorROM_Kaiden_AnimPart1.InterpData.InterpGroup. HMM1_Kaidan_F__sub (Kaidan's subtitles when Shep is female)
TheWorld.PersistentLevel.Main_Sequence.Kaidan_Culmination.ANIMCUTSCENE_NorROM_Kaiden_AnimPart1.InterpData.InterpGroup. BioEvtSysTrackLighting (lighting object)
TheWorld.PersistentLevel.Main_Sequence.Kaidan_Culmination.ANIMCUTSCENE_NorROM_Kaiden_AnimPart1.InterpData.InterpGroupDirector. BioEvtSysTrackDOF (DOF post-processing effect)
NorROM_Kaiden_AnimPart1_A. BioAnimSetData (kaidan's body animation data)
NorROM_Kaiden_AnimPart1_A. Kaiden (Kaidan's AnimSet)
NorROM_Kaiden_AnimPart1_A. Kaiden_NorROM_Kaiden_AnimPart1 (part of Kaidan's AnimSequence)
TheWorld.PersistentLevel.Main_Sequence.Kaidan_Culmination.ANIMCUTSCENE_NorROM_Kaiden_AnimPart1.InterpData.InterpGroup. HMM1_Kaidan_F__vo (InterpTrackWwiseEvent; links FaceFX to audio)
TheWorld.PersistentLevel.Main_Sequence.Kaidan_Culmination.ANIMCUTSCENE_NorROM_Kaiden_AnimPart1.InterpData.InterpGroup. HMM1_Kaidan_F__anim (InterpTrackAnimControl for Kaidan)
TheWorld.PersistentLevel.Main_Sequence.Kaidan_Culmination.ANIMCUTSCENE_NorROM_Kaiden_AnimPart1.InterpData.InterpGroup . InterpGroup_51_face (InterpTrackFaceFX for Kaidan)
TheWorld.PersistentLevel.Main_Sequence.Kaidan_Culmination.ANIMCUTSCENE_NorROM_Kaiden_AnimPart1.InterpData.InterpGroup. InterpGroup_51_Move (InterpTrackMove for Kaidan)

I could go on... that's just the tip of the iceberg.

So, this would be why Animcutscene objects have this big warning on them whenever they appear in sequence maps...
Spoiler:
Image

...You can't simply edit one parameter b/c then everything else in the scene will be off. The timeline will continue on as it should and what you edited will simply force that parameter out of sync with everything else.

Fun, eh?

Yeah.

So what can you edit? Well...I'm just starting to figure that out.

First, before you edit, you have to determine which Animcutscene controls the content you want to edit. Assuming there's dialogue involved, this can be done by using the subtitle objects and cross-referencing those with the TLK.

To do this:

1. Locate a "_sub" object like 505 below. Interpret/Scan.
Spoiler:
Image

2. Expanding all the nodes will give you this:
Spoiler:
Image

3.Now you can easily see the string IDs (nStrRefID). Each node is a different spoken line. Use these strings to search the TLK and compare to the testdump dialogue tree. Do this for each Animcutscene, and you can determine what parts of dialogue are in each one. In this case, it's AnimPart1, which controls all dialogue that is linked to E0:
Spoiler:
Image

IMPORTANT: This method also allows you to see which (if any) dialogue isn't a part of an Animcutscene sequence. Any dialogue that isn't , as far as I can tell right now, should be subject to the standard editing methods. In Kaidan's scene, all dialogue except that which branches from nodes E16 and E38 belongs to one of the designated Animcutscenes. These portions have one or more dialogue wheels associated with them and varying responses, which means it can't be subject to the same kind of controls -- primarily, an absolute length.

For example, I removed entries from R33 & R34's reply list to skip over a couple lines that aren't animating properly for Thane. Here's a before and after:

FF to 1:27


FYI, we're not sure why these lines aren't animating properly like the rest. Could be a bone issue since Kaidan is human and Thane is drell. But, it also only happens for content not controlled by Animcutscenes, so it's possible we're missing a piece of the puzzle that could be fixable. For now, it's good to know it can be skipped if necessary.

4. Now that we know which Animcutscene we're interested in, let's look at the AnimPart1 object in the sequence map:
Spoiler:
Image

Inspect/scan and you'll come up with a large list of objects. Expand the top node and we're interested in the second object: 654 (-1 = 653).
Spoiler:
Image

5. Looking 653 up in PCCEd2 we see it's the main InterpData object for the sequence:
Spoiler:
Image

Take a look at its Properties tab.
Spoiler:
Image

I don't know what most of these Properties mean yet, but I was immediately interested in the InterpLength parameter. I've edited the same parameter for normal dialogue and it controls line length. In this case, it would make sense if it controlled the length of the entire Animcutscene. And, it does. If you watch a YT of the scene, 49.2s is the duration from beginning to when Kaidan delivers E6 on the cabin floor.

And turns out this parameter is editable.

If you change its length, it will shorten or lengthen the scene. Here's a before and after that skips a bunch of content as Kaidan arrives and instead dumps the player at the DW at the beginning of the "Convo1Good/Bad" Animcutscene:

@0:00


So...that's one thing that works. Next thing I'm going to try is getting rid of the DW wheel to see if I can ease the transition better. What I'd like to retain is Kaidan's " Shepard, you know that you've done everything you could, right?" line, b/c it eases the transition by showing Shepard coming down the stairs. Since this line is at the end of AnimPart1, though, and I'm ending it early, this line (and everything associated with it) gets cutoff.

6. Jumping back to object 505 I want to mention a couple other details.
Spoiler:
Image

The flength float property above determines the subtitle's/line's length. The timing of the subtitle appearance (when they begin) is controlled by the m_aTrackKeys below. There are 4 nodes and each have a ftime float property. Now that we know the length of the Animcutscene, these numbers make sense:

  • string 644492 begins 28.9s into the scene when Kaidan arrives
  • string 644944 begins 32.9993s into the scene
  • string 644495 begins 37.5667s into the scene
  • string 644496 is the final sub, starting about 3s before the scene ends (46.1333s into the scene)

My guess is that altering these values would only change when the subtitle is displayed, though I haven't tried yet. The reason why I don't expect edits to affect anything but subtitles is because the playing of the line in game is also controlled by VO and FaceFX elements.

7. Let's look at the corresponding VO quick:
Spoiler:
Image

Interpret/scan/expand nodes and you see:
Spoiler:
Image

Notice that the Time float properties have exactly the same values as what we just outlined above for the subtitles. This highlights how all these objects are linked and how editing one particular component isn't going to result in a useable game change. Especially if the goal is to remove/skip something. In that case, every object used during that span of time must be edited to "remove" it, which I don't think at this point is even possible.

We'd need a matinee editor for that ;)

-------------
I know this research was a lot less technical than most, but I'm not a sequence modder/hex person, so this is what I understand and can explain. As far as I know nobody's posted about these kinds of scenes yet. I'll post updates/corrections as I find out more.
giftfish
 

Re: Research -- Dialogue Editor

Postby JohnP » 07 Jan 2015, 15:37

Well, we should be able to "remove" objects by setting their times to a value beyond the end of the Interp's length. I did this in the JAM memorial to keep some of EDI's lines from playing.
Theoretically, for the section you want to skip, we could set the times for everything (dialog, subtitles, animations, camera changes) to an arbitrarily high value. Then the same things for the later sections would need to be set down to an earlier value.

It would probably take a bit of trial and error to get everything, but may be possible.
JohnP
Modder
 
Posts: 159
Joined: 15 Jan 2013, 18:39
Has thanked: 55 time
Have thanks: 132 time

Re: Research -- Dialogue Editor

Postby giftfish » 07 Jan 2015, 19:46

JohnP wrote:Well, we should be able to "remove" objects by setting their times to a value beyond the end of the Interp's length. I did this in the JAM memorial to keep some of EDI's lines from playing.
Theoretically, for the section you want to skip, we could set the times for everything (dialog, subtitles, animations, camera changes) to an arbitrarily high value. Then the same things for the later sections would need to be set down to an earlier value.

It would probably take a bit of trial and error to get everything, but may be possible.

I was thinking about that when looking at some of the values and realizing how complex it would be to try to "delete" things. I think your suggestion is how HJF4 originally removed Thane from the coup, also -- by using an impossible value.

I think you're right; it will take a lot of experimentation. That opening sequence is super complicated with all the actors in it -- datapads, bottle, and glasses, plus Thane and Shepard. There's so many cameras/animations/lighting effects. I'm getting a better feel for how it's all put together, but it's still...confusing.

I need to post a video of what I have it looking like now, versus what I want it to look like. Catching that final line at the bottom of the stairs makes a huge difference.
giftfish
 

Re: Research -- Dialogue Editor

Postby giftfish » 21 Jan 2015, 18:06

Discovered something interesting as I'm working on Jacob's new dialogue for Backoff.

Normally, when there are multiple entries in the Reply's Entry List the game only reads one. These are typically controlled via conditionals. The game starts at the top and works it's way down; the first one that has conditionals satisfied gets played. However, I've just found 2 examples in Jacob's Citadel DLC slap scene that violates this rule.

In this scene there are two separate instances of the game actively using two entries in the Reply's Entry List. Neither has an associated conditional. At first, I thought maybe this was another Animcutscene, despite not being labeled as such, but it doesn't seem like it. I looked at the PCC and there's no subtitle objects, etc, present like there are for Kaidan's romance scene.

Here's what I'm talking about:

Example 1
R5 - FemShep's Bitchslap, REL looks like this:
0: 6
1: 8

E6 = An autocontinue; no conditional. This leads to FemShep's following line (R6), "Yeah, I think maybe you've had it coming."
E8 = Jacob's line after the slap. "What the hell? I guess I deserved that." No replies in his Entry Reply List. Typically, the convo ends when this happens.

So, there's two weird things about this. One, the game uses BOTH of these entries. And, two, it "plays" the bottom one FIRST.


Example 2
R13 - Autocontinue after Jacob's line about Brynn/Baby, REL looks like this:
0: 15
1: 22

E15 = A dialogue wheel that leads to the rest of the conversation.
E22 = Jacob's line. "It is what it is. And I'm sorry." No replies. Convo end.

Like the first example, Jacob actually says his line BEFORE the dialogue wheel appears on screen. The selection of the DW option controls the rest of the conversation.


Really weird. It seems like as long as both entries aren't spoken lines, the game is hardcoded to use both AND will use the line with audio first. It might be way of achieving a "middle" ground between more generic dialogues and full blown Animcutscenes, which I'm sure are more expensive to create. This scene between FemShep and Jacob is relatively complex with the walking around, slap animation, etc, but certainly not as bad as romance scenes.
giftfish
 

Re: Research -- Dialogue Editor

Postby WarrantyVoider » 21 Jan 2015, 19:05

maybe its simply overwritten by a patch or DLC?

greetz WV
always backup your files!
mess with the best or die like the rest!
"I tried everything!" - "mkay, please list that..." ; please dont pm me for help, we have a help section
User avatar
WarrantyVoider
Emeritus
 
Posts: 2270
Joined: 22 Aug 2012, 11:33
Has thanked: 480 time
Have thanks: 626 time

Re: Research -- Dialogue Editor

Postby giftfish » 21 Jan 2015, 19:47

WarrantyVoider wrote:maybe its simply overwritten by a patch or DLC?

It's a good thought, but this happens in Citadel DLC. It has the highest load priority of anything in the game and there are no subsequent patches.

I could be that I'm interpreting the scene wrong, but I'm pretty certain I'm correct.

I'm also looking at Kaidan's romance scene content right now and think I just figured out how the game can bypass content what's observed in the dialogue editor -- by the InterpLength being set to end before the rest of the lines can play. This would explain why dialogue that *should* play according to the dialogue editor's starting list and conditionals doesn't, and why I can *force* it to play when I screw with the scene a bit, skipping over certain portions.
giftfish
 

Re: Research -- Dialogue Editor

Postby The Fob » 23 Jan 2015, 04:42

Hmmmm, maybe it's mislabeled in the DE? Maybe check the conv-nodes in the sequence editor and see what the sequence actually plays? Only thing I can think of from the top of my head.
User avatar
The Fob
Modder
 
Posts: 702
Joined: 08 Oct 2012, 04:37
Has thanked: 242 time
Have thanks: 212 time

Re: Research -- Dialogue Editor

Postby giftfish » 23 Jan 2015, 17:00

The Fob wrote:Hmmmm, maybe it's mislabeled in the DE? Maybe check the conv-nodes in the sequence editor and see what the sequence actually plays? Only thing I can think of from the top of my head.

That's definitely something I can check.

To be honest, I really don't even understand the purpose of the LOC_INT sequence maps for basic conversations. I never edit anything there and dialogue still works without it. Nodes aren't even displayed in order of the conversation on the maps >.>
giftfish
 

Next

Return to Modders' Research

Who is online

Users browsing this forum: No registered users and 0 guests

suspicion-preferred