OAR 2.3. now supports what this plugin tries to achieve. That is, measuring change of states. I will update this mod to use the new features when I find the time, to make this plugin more reliable. For now, this mod works with 2.3. like it used to.
I downloaded this however i get an error code in the oar interface major error detected.. and then it has a message bellow saying i need a newer version of oar...?? but i have the newest version OAR 2.3
what am i doing wrong?
i have other conditions and oar based mods but they work perfectly fine...
This only adds some conditions to OAR. Not animations. You'll need some mod (not like there's many to choose from) that has animations which use these conditions. Or you can create such animations yourself.
Current version of OAR can't do all this plugin does :) With PCG 2.0.0 I used condition "player is choosing" to disable gesture animations from playing when NPC is silent between two voice lines in dialogue.
I'm sorry I still haven't been able to update this mod. I'll try to bump up the priority of this mod. Iirc, there were still some cases where the conditions didn't trigger, which I believe the new built in features of OAR can fix.
Works for me. Try to open the OAR interface, enable animation log, and then select your character with the console open. After that, start talking to npcs to see which animation is playing. Maybe you have something playing that has a higher priority. Also, the animations from Player gestures can be slow to trigger. The earlier idle animation needs to end before that mod kicks in. It then replaces the default idle with an easily interruptible animation, and that allows the dialogue to trigger the gesture animations. Still, there does seem to be some difficulties with my conditions triggering which I fully expected doing this mod. I'll see whether I can do anything about them after I've finished my next mod.
I'm having this problem as well. Everything was working fine, and then it just didn't. This mod is installed and activated, I have uninstalled and reinstalled the bothersome mods, but OAR and Player Gestures WILL NOT recognize this for whatever reason. And yes I have checked 50 times, it is activated in MO2. Simple Dual Sheath giving me problems all of a sudden as well out of nowhere.
I will have little time to mod in the foreseeable future, so your best bet is to debug this yourself. 1. Make a OAR animation with conditions IsPlayer, and then this dialogue plugin condition. 2. Make sure no other OAR animation uses the condition from this plugin. 3. Make sure you are on an interruptible animation when triggering the conditions. If your animation activates, the plugin works as should. This means that the problem is in the OAR condition, or the animations are simply very innoticeable, like they are in the Player Gestures mod.
My implementation of the dialogue conditions are flawed, since making them properly was not possible before. However, it might take a long time until I have the free time to rework this plugin.
What idle animation mod you were using? If standard idle animation player has is very long and has no interruptible setting activated, then it will delay PCG animations
That can't be the case. I made this update so that I could use the features of the updated OAR. Did you update both OAR and this? Can you try to start skyrim after disabling the mods that use this plugin?
I didn't realize I was at the Dialogue plugin page and not the Detection plugin lol. I still doubt that is the case, since I don't get that error on my end. Can you try to disable the mods that use this one and see if the error still continues?
had that problem until I realized I made a very basic mistake and forgot to tick this in MO2, so make sure it's active cause I'm not having any problems
I was experimenting with new conditions and it seems it works in some unusual way or I just don't understand something with "rely on data of the last evaluation", so please help me to clarify what each new condition does...
Trigger whenever dialogue is active. - For me this works just like IsMenuOpen Dialogue Menu. Is there a difference?
Trigger when dialogue starts. - This works as expected and useful :)
Trigger when player is choosing. - For me it's just a condition that does the same as the first one. What it supposed to do?
Trigger when player has choosen. - I was trying to make PC gesture at the same moment when Dragonborn Voice Over makes PC talk, but for some reason it always goes like this: I select dialogue option, DVO voices it while standard player idle is played (although it has Interruptible check mark active) and only after player is silent again gesture animation starts.
Trigger when dialogue ends. - I can't use it with PC to add goodbye gesture for some reason, I guess it is for NPCs?
1. That is correct. It is simply a duplicate, but I added it for convenience.
2. :)
3. It triggers whenever the NPC is not talking but the player is in dialogue (the player is locked in a staring battle with the NPC). In other words, it triggers whenever the player has to make a selection in the dialogue. I had to use this trick to filter out silent dialogues. For whatever reason, when the NPC speaks several lines in a row, the player actually chooses some dialogue options, such as "..." or "I see..." even though nothing of the kind is shown to the player.
4. I used the same trick as in step 3 to check when the player moves forward in the dialogue. Basically, this triggers when an NPC starts speaking after shutting up for a while. Normally that means that the player has selected an option in the dialogue since the player is either mute or speaks in the speed of light. I haven't tried Dragonborn Voice Over, but looking at videos of it now, it apparently delays the end of the selection dialogue, so my little hack for the dialogue no longer works. I'm sure I can make a similar hack specifically for DVO for compatibility.
5. I do not know why that is. It worked on my tests.
Another important point about that "rely on data of the last evaluation" part is that the results of a dialogue starting, player choosing an option, and of the dialogue ending last only for one evaluation. When you use author mode on OAR, you'll most likely see the conditions as triggering for only a single frame. If some other animation triggers the evaluation before your idle animation, that knowledge about the change in the dialogue is lost. OAR triggers an evaluation whenever a new animation is being chosen. That is, an evaluation happens when an animation ends (for example an NPC in the distance takes a single step and the animation will get looped), or if an animation is set as interruptible, then an evaluation happens once each frame. I'm unsure if OAR avoids unnecessary evaluations depending on animation file name, or whether it stores values by actor.
Maybe you not being able to trigger an animation when dialogue ends has to do with another animation triggering an evaluation instead? Try adding a IsActorBase(Skyrim.esm, 7) before the condition to make sure that the condition is only triggered for the player. I could make the change type triggers last for a variable amount of evaluations instead if you think that would help you. (So you could set the amount of animation evaluations / frames that trigger stays activated.)
Edit: I tried the DVO mod. That will stay in my load order :) Anyways, that seems to have some compatibility issues with my current implementation. When it is on in the MCM, the condition doesn't trigger on "player chose" and "dialogue end". When it is off in the MCM, the condition triggers just fine. I'll try and fix this compatibility issue soon.
Thank you for detailed explanation! I hope you will succeed in resolving this issue with DVO, without DVO player just does pantomime. It adds liveliness, but not quite what people would expect. I guess there is also possibility that corrections can be made to DVO plugin, but might not be necessary, I better wait for your update instead of asking someone else. Off I go to make my future mod description :)
I tried to work around DVO, but was unable to do so. DVO does not attach any obvious keyword or spell to the player, and the dialogue manager does not recognize any kind of change in the dialogue or selections until the voiceline is over. DVO also doesn't show its source code so I can't really try figuring out alternative ways. Commonlib also doesn't really support reading current audio files, so I can't use the player voice lines to help me either. I can't resolve the conflict with DVO unless they make changes to the plugin for compatibility, or release their source so I can figure out how it works internally. I'll try asking there for a compatibility patch. Of course, if someone knows of a way to read the current audio file or has other suggestions, I'm ready to listen. Edit: Oh right, the speaker doesn't change internally either.
I have contacted DVO mod author some time ago about this gesture idea of mine and at the time the obstacle was that there are no usable condition for OAR. You have added usable condition - big progress in the right direction already. If there is a need for DVO plugin to be modified in some way, there is more than one person that can help with that. I have all reasons to stay positive :) I made test version of my gesture mod. You can try it yourself and send it to others, it will help to have something demonstrating this delay with gesture after voice line
Player Character Gestures mod is out now, unfortunatelly I wasn't able to publish it sooner. I am sorry if it made you feel like you efforts were in vain...
@CHIMgarden Not at all. Glad you got the mod done. Did you get all the conditions working without DVO? Apart from the timing, some of the conditions didn't trigger at all with DVO last time.
No, I retracted this perfectionistic task and published it as is)) I can't deal with DVO on my own and publishing this mod may help to catch attention of someone who knows how to solve the problem.
There is also possible OAR bug. Basically I noticed another gesture often plays right after the first one, even if in this moment conditions from your plugin are off already.
When DVO is off, probably every bug is caused by me. I do something in this mod that you aren't supposed to do with OAR so it is prone to bugs. With OAR, you should check states of things. Here I check the change of states. Still, it's weird for an animation to trigger twice. I can try adding a delay to this mod so that the condition stays triggered for X amount of milliseconds, so that one can see when the condition has triggered more easily, and to make the mod simply more compatible.
I'll try your mod when I find the free time to see what the duplicate animation looks like.
Your analysis is very welcome! I have to mention when I tested it on my own I placed a submod folder with higher priority with interruptible checkmark activated and it made visible moments when condition from your plugin is active, it wasn't active for long enough to cause other animation to play. With my other OAR mods I also see animations play more than once for no reason and even in vanila game...
I'm not sure about that. I don't know to what extent animators have control over the head, or if it is something that headtracking mods do. But, at any rate, you can use this mod to change animations during dialogue.
No, it's not a headtracking thing. They are idle animations that cause the neck movement or arms in face. Immersive First person will track the head to where the animators put the head and add a real body, so if the player cracks their neck or puts hands in front of the face, it obscures player view.
I see. If that problem only happens during dialogue, you can use this to replace the dialogue animations. Although, you can already do it by using the IsMenuOpen condition. I just have the dialogue active option here for convenience. This is mostly for animators that want to do more diverse animations for dialogue than just replacing the idle.
Would it be possible to add plug-in that basically checks IsReplacerTrue condition? Similar to IsReplacerEnabled condition OAR already has, but if I understood it just checks if a submod is enabled or not, not if it is true (basically if it has all conditions met).
Basically what I'm asking, is a check that if all conditions are met with a certain submod. Hope that makes sense.
You are correct. The IsReplacerEnabled only checks whether a submod is enabled.
Basically, what you're asking is :) / 10 possible. When adding plugins, modders should use the OAR API and only the functions that that API gives (which basically cover all necessary aspects of OAR). Using the API allows OAR to be updated in a way that the plugins won't break, and using the API makes it less likely for modders to break OAR, as well as allowing modders to not learn how OAR works internally just to do simple things with it. The OAR API does not give the necessary functions to check other mods or submods in OAR, so making such a plugin is not normally possible.
However, if I were to skip the API and link straight to OAR, I believe such a condition could be made fairly easily. And I do believe that that would be a great QoL for animators. Especially much so for your mod. Such a mod just would have to be updated every time OAR updates. Still, since I would have to touch the internals of OAR, I believe that condition should be implemented in OAR itself and not as a plugin. If that condition will not exist in the next OAR version, I will make that condition myself.
Sounds good. Let's wait and see what Ershin will bring with the potential update, something like this would be appreciated by many OAR modders, and users too I think.
I spent over three months when OAR was released trying to figure out how to apply conditions during dialogue. Because of all the poser animations and idle animations out there that could be used when for example your character is being spoken to by Jarls. I thought it would be cool to have my ego filled super champion of Skyrim hold his chin or fold his arms...or my feminine super heroine of Skyrim put her hands on hips. I never had any success, no matter what package or condition I tried.
You know Sonderbain and CHM gonna release something similar soon, Dynamic Dialogue Animations for Males/Females. Dynamically Animated Interactions. Animated Dialogue Interactions...
It is possible to have a special player idle animation when spoken to by Jarls even with default OAR conditions, you will have to use IsActorBase 07 and TARGET Dialogue Target (IsInFaction GovRuling 0003662A) for example. And submod priority needs to be higher than your reqular idle animations for player
46 comments
I will update this mod to use the new features when I find the time, to make this plugin more reliable.
For now, this mod works with 2.3. like it used to.
what am i doing wrong?
i have other conditions and oar based mods but they work perfectly fine...
You'll need some mod (not like there's many to choose from) that has animations which use these conditions.
Or you can create such animations yourself.
With PCG 2.0.0 I used condition "player is choosing" to disable gesture animations from playing when NPC is silent between two voice lines in dialogue.
I'll try to bump up the priority of this mod.
Iirc, there were still some cases where the conditions didn't trigger, which I believe the new built in features of OAR can fix.
Try to open the OAR interface, enable animation log, and then select your character with the console open. After that, start talking to npcs to see which animation is playing. Maybe you have something playing that has a higher priority. Also, the animations from Player gestures can be slow to trigger. The earlier idle animation needs to end before that mod kicks in. It then replaces the default idle with an easily interruptible animation, and that allows the dialogue to trigger the gesture animations.
Still, there does seem to be some difficulties with my conditions triggering which I fully expected doing this mod. I'll see whether I can do anything about them after I've finished my next mod.
1. Make a OAR animation with conditions IsPlayer, and then this dialogue plugin condition.
2. Make sure no other OAR animation uses the condition from this plugin.
3. Make sure you are on an interruptible animation when triggering the conditions.
If your animation activates, the plugin works as should. This means that the problem is in the OAR condition, or the animations are simply very innoticeable, like they are in the Player Gestures mod.
My implementation of the dialogue conditions are flawed, since making them properly was not possible before. However, it might take a long time until I have the free time to rework this plugin.
That can't be the case. I made this update so that I could use the features of the updated OAR.
Did you update both OAR and this? Can you try to start skyrim after disabling the mods that use this plugin?
I didn't realize I was at the Dialogue plugin page and not the Detection plugin lol.
I still doubt that is the case, since I don't get that error on my end.
Can you try to disable the mods that use this one and see if the error still continues?
2. :)
3. It triggers whenever the NPC is not talking but the player is in dialogue (the player is locked in a staring battle with the NPC). In other words, it triggers whenever the player has to make a selection in the dialogue.
I had to use this trick to filter out silent dialogues. For whatever reason, when the NPC speaks several lines in a row, the player actually chooses some dialogue options, such as "..." or "I see..." even though nothing of the kind is shown to the player.
4. I used the same trick as in step 3 to check when the player moves forward in the dialogue. Basically, this triggers when an NPC starts speaking after shutting up for a while. Normally that means that the player has selected an option in the dialogue since the player is either mute or speaks in the speed of light.
I haven't tried Dragonborn Voice Over, but looking at videos of it now, it apparently delays the end of the selection dialogue, so my little hack for the dialogue no longer works. I'm sure I can make a similar hack specifically for DVO for compatibility.
5. I do not know why that is. It worked on my tests.
Another important point about that "rely on data of the last evaluation" part is that the results of a dialogue starting, player choosing an option, and of the dialogue ending last only for one evaluation. When you use author mode on OAR, you'll most likely see the conditions as triggering for only a single frame. If some other animation triggers the evaluation before your idle animation, that knowledge about the change in the dialogue is lost.
OAR triggers an evaluation whenever a new animation is being chosen. That is, an evaluation happens when an animation ends (for example an NPC in the distance takes a single step and the animation will get looped), or if an animation is set as interruptible, then an evaluation happens once each frame. I'm unsure if OAR avoids unnecessary evaluations depending on animation file name, or whether it stores values by actor.
Maybe you not being able to trigger an animation when dialogue ends has to do with another animation triggering an evaluation instead? Try adding a IsActorBase(Skyrim.esm, 7) before the condition to make sure that the condition is only triggered for the player. I could make the change type triggers last for a variable amount of evaluations instead if you think that would help you. (So you could set the amount of animation evaluations / frames that trigger stays activated.)
Edit: I tried the DVO mod. That will stay in my load order :)
Anyways, that seems to have some compatibility issues with my current implementation. When it is on in the MCM, the condition doesn't trigger on "player chose" and "dialogue end". When it is off in the MCM, the condition triggers just fine. I'll try and fix this compatibility issue soon.
Off I go to make my future mod description :)
I can't resolve the conflict with DVO unless they make changes to the plugin for compatibility, or release their source so I can figure out how it works internally. I'll try asking there for a compatibility patch. Of course, if someone knows of a way to read the current audio file or has other suggestions, I'm ready to listen.
Edit: Oh right, the speaker doesn't change internally either.
I made test version of my gesture mod. You can try it yourself and send it to others, it will help to have something demonstrating this delay with gesture after voice line
Did you get all the conditions working without DVO?
Apart from the timing, some of the conditions didn't trigger at all with DVO last time.
There is also possible OAR bug. Basically I noticed another gesture often plays right after the first one, even if in this moment conditions from your plugin are off already.
With OAR, you should check states of things. Here I check the change of states.
Still, it's weird for an animation to trigger twice. I can try adding a delay to this mod so that the condition stays triggered for X amount of milliseconds, so that one can see when the condition has triggered more easily, and to make the mod simply more compatible.
I'll try your mod when I find the free time to see what the duplicate animation looks like.
But, at any rate, you can use this mod to change animations during dialogue.
Although, you can already do it by using the IsMenuOpen condition. I just have the dialogue active option here for convenience.
This is mostly for animators that want to do more diverse animations for dialogue than just replacing the idle.
Question;
Would it be possible to add plug-in that basically checks IsReplacerTrue condition? Similar to IsReplacerEnabled condition OAR already has, but if I understood it just checks if a submod is enabled or not, not if it is true (basically if it has all conditions met).
Basically what I'm asking, is a check that if all conditions are met with a certain submod. Hope that makes sense.
Basically, what you're asking is :) / 10 possible. When adding plugins, modders should use the OAR API and only the functions that that API gives (which basically cover all necessary aspects of OAR). Using the API allows OAR to be updated in a way that the plugins won't break, and using the API makes it less likely for modders to break OAR, as well as allowing modders to not learn how OAR works internally just to do simple things with it.
The OAR API does not give the necessary functions to check other mods or submods in OAR, so making such a plugin is not normally possible.
However, if I were to skip the API and link straight to OAR, I believe such a condition could be made fairly easily. And I do believe that that would be a great QoL for animators. Especially much so for your mod. Such a mod just would have to be updated every time OAR updates.
Still, since I would have to touch the internals of OAR, I believe that condition should be implemented in OAR itself and not as a plugin. If that condition will not exist in the next OAR version, I will make that condition myself.
I 'm already scratching my chin on how to use this.
You know Sonderbain and CHM gonna release something similar soon, Dynamic Dialogue Animations for Males/Females. Dynamically Animated Interactions. Animated Dialogue Interactions...