Lyall / HundredHeroesFix

A BepInEx plugin for Eiyuden Chronicle: Hundred Heroes that adds custom resolutions, ultrawide/narrower support and more.
MIT License
24 stars 4 forks source link

Voiceless NPC Fullskip Dialogue Fix #8

Closed shinra358 closed 6 months ago

shinra358 commented 6 months ago

When talking to npcs without voices, pressing confirm skips their whole message without you being able to see what they said. What is expected to happen is when you press the confirm button, it shows the full dialogue first and then pressing confirm again goes to the next dialogue set. This is the behavior of characters with voices and is expected all the time.

Lyall commented 6 months ago

Is this with the latest version where I added a patch to remove the dialogue auto-advance delay? If so, I've already changed it in the next version to only skip the 2-second delay during voiced lines.

shinra358 commented 6 months ago

no sir. this is default game. it's not a bug with your fixes.

Lyall commented 6 months ago

Okay, so I think I get what you mean. When you have auto-advance dialog on in the game settings and you button through the last dialog it closes it. So you want non auto-advance behaviour for unvoiced dialog and auto-advance for those with?

Basically dialog in cutscenes would auto-advance without the 2-second delay and non-voiced dialog would stop and let you read it before pressing a button to advance.

shinra358 commented 6 months ago

oh wow, auto advance does affect it. with it off, it behaves correctly. with it on, it doesnt behave correctly for non-voiced npc characters. that's an issue with the game and not how it's supposed to happen because it works correctly with voiced characters only with auto advanced on.

So ultimately, I want it to be fixed because the skipping the whole dialogue immediately is not supposed to happen when you press the button regardless if auto-advance is on or not. It's supposed to be dialogue scrolls > button press > immediate full dialogue > button press > next script.

Currently it's dialogue scrolls > button press > immediate full dialogue skip/immediate next script.

And yes it should be with auto-advance on. Everything related works fine with it off.

Quote: "Basically dialog in cutscenes would auto-advance without the 2-second delay and non-voiced dialog would stop and let you read it before pressing a button to advance."

Quote Edit: Basically dialog in cutscenes would auto-advance without the 2-second delay and non-voiced dialog would stop and let you read it on first button press before pressing a button a second time to advance.

Answer: Yes

zukane2 commented 6 months ago

Would it be better if theres an option in auto-advance to not affect non-voiced dialogue? Might fix this vanilla issue temporarily and also a cool feature since I sometimes stay in the dialogue with non-voiced dialogue.

shinra358 commented 6 months ago

dont complicate things, visual rep of what i'm referring to: https://www.youtube.com/watch?v=6htiWTwZNFg

it has nothing to do with this mod. behaves the same way without the mod. every rpg does this correctly except this game.

Lyall commented 6 months ago

Okay I think I've got an idea on how it should be. So the tweak with the mod would be to: 1. Always auto-advance voiced dialogue and 2. Remove the 2 second delay on voiced dialogue advancing. That way the auto-advance setting in-game only affects non-voiced dialogue so you can still set that part as you like. Does that work?

Edit: Something like this:


  bAutoVoiceDialog = Config.Bind("Auto-Advance Voiced Dialog",
                      "Enabled",
                      true,
                      "Enables auto-advancing voiced dialog and removes the forced 2-second delay.");

            // Remove 2 second delay from auto-advancing dialogue
            [HarmonyPatch(typeof(TextData.UI.KaeruText), nameof(TextData.UI.KaeruText.AutomaticSubmit))]
            [HarmonyPrefix]
            public static void RemoveDialogueDelaya(TextData.UI.KaeruText __instance, ref float __0)
            {
                var sndMngr = SoundManager.Instance;
                // Only remove dialogue delay for voiced lines
                if (bAutoVoiceDialog.Value && sndMngr.UseEventSE)
                {
                    // 100ms delay seems about right?
                    __0 = 0.1f;
                }
            }

            // Always auto-advance voiced dialogue
            [HarmonyPatch(typeof(TextData.UI.KaeruText), nameof(TextData.UI.KaeruText.IsAuto), MethodType.Getter)]
            [HarmonyPostfix]
            public static void RemoveDialogueDelay(ref bool __result)
            {
                var sndMngr = SoundManager.Instance;
                if (bAutoVoiceDialog.Value && sndMngr.UseEventSE)
                {
                    // Force auto-advance on for voiced dialogue
                    __result = true;
                }
            }
shinra358 commented 6 months ago

let's test it :)

Lyall commented 6 months ago

let's test it :)

https://github.com/Lyall/HundredHeroesFix/releases/tag/v0.9.4

shinra358 commented 6 months ago

Only works partially if you put the in-game on auto dialogue advance off and delete the old option from this mod first. Everything still works correctly in story cutscenes but non-story cutscenes like recruitment and 'short voiced' characters, it doesnt auto advance while showing full dialogue on button press at the same time.

If you put the in-game on auto advance on, everything fully skips on button press instead of stopping first except story cutscene characters.

'short voiced' means the characters who make a short comment while the dialogue says something different.

I want to be able to auto advance all dialogue while not skipping the entire comment on button press with voiceless dialogue and short voiced dialogue.

Lyall commented 6 months ago

Only works partially if you put the in-game on auto dialogue advance off and delete the old option from this mod first. Everything still works correctly in story cutscenes but non-story cutscenes like recruitment and 'short voiced' characters, it doesnt auto advance while showing full dialogue on button press at the same time.

Yeah you'll have to delete the config file for this new version since it changes the option names.

If you put the in-game on auto advance on, everything fully skips on button press instead of stopping first except story cutscene characters.

'short voiced' means the characters who make a short comment while the dialogue says something different.

I can't differentiate on "short-voiced" lines. All I can do is see if there's a voice line playing or not, so that won't be an option.

I want to be able to auto advance all dialogue while not skipping the entire comment on button press with voiceless dialogue and short voiced dialogue.

What you're describing is basically what auto-advance off already does. In the update I made it so that if a line is voiced, regardless of your auto-advance setting, it will automatically move to the next line. The part where you want the dialog not to be skipped on button press, that's what the in-game auto-advance setting is for really. So to get what you want, you would have auto-advance off in-game and set the HundredHeroesFix config to enable auto-advancing voiced dialog.

That would get you voiced dialog that auto-advances and non-voiced dialog that doesn't!

shinra358 commented 6 months ago

Except for if you dont press anything after the speech is fully shown, itll stay forever. So how about on voiceless dialogue only, after 3 secs of the full dialogue being shown, it auto progresses? That way it will achieve the vision fully. If not I suppose this is good enough.

kudanilarab commented 6 months ago

Probably the best way is to provide a way to adjust the text speed to instant. The first reason to press the advance button is because the text speed is too slow. An option to toggle text auto-advance with a press of a button would be helpful too.

Lyall commented 6 months ago

Except for if you dont press anything after the speech is fully shown, itll stay forever. So how about on voiceless dialogue only, after 3 secs of the full dialogue being shown, it auto progresses? That way it will achieve the vision fully. If not I suppose this is good enough.

You can get this exact result by enabling auto advance dialog in-game and using these settings in HundredHeroesFix.cfg:

[Auto Dialog Advance Tweaks]

## Enables auto dialog advance tweaks.
# Setting type: Boolean
# Default value: true
Enabled = true

## Enables auto-advancing voiced dialog and removes the forced 2-second delay.
# Setting type: Boolean
# Default value: true
AutoAdvanceVoicedDialog = true

## Set auto-advance dialog delay. Controls when non-voiced dialog automatically moves to the next line.
# Setting type: Single
# Default value: 2
# Acceptable value range: From 0 to 10
AutoAdvanceDelay = 3
Lyall commented 6 months ago

Probably the best way is to provide a way to adjust the text speed to instant. The first reason to press the advance button is because the text speed is too slow. An option to toggle text auto-advance with a press of a button would be helpful too.

I've added an option to control the text speed for non-voiced dialog in the latest version.

Hopefully with these settings now available to tweak, you'll be able to get the dialog system configured to work the way you prefer it.