Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restore Original Duty Voices in Bloodsucker Cutscene #163

Open
forbiddenspiral opened this issue Feb 7, 2024 · 3 comments
Open

Restore Original Duty Voices in Bloodsucker Cutscene #163

forbiddenspiral opened this issue Feb 7, 2024 · 3 comments

Comments

@forbiddenspiral
Copy link

Hi everyone,

I'm a Clear Sky player who values immersion and appreciates the bug fixes implemented in the patch. I noticed that in the Agroprom Cutscene with the bloodsucker fight, the Duty soldiers use Clear Sky voices. While I understand not all cut content may be restored, I wanted to suggest considering the original Duty voices for this encounter to enhance immersion.

While I don't have the modding expertise to tackle this myself, I wanted to bring this potential inconsistency to your attention. Restoring the original Duty voices for this encounter would further enhance the immersion and authenticity for many players, as it did with previously restored cut content.

Is this something the team might consider addressing in a future update? Any insights or updates on this aspect would be greatly appreciated.

Thanks for your time and continued efforts!

YouTube Video

agroprom_comander_to_squad_1.mp4
marsh_comander_to_squad_1.mp4
@Decane
Copy link
Owner

Decane commented Feb 11, 2024

Marsh creature squad reaction sounds get triggered from bloodsucker_reaction.script. Four sets of sounds are utilized. They are defined in script_sound.ltx:

  • [commander_to_squad] scenario\marsh\bloodsucker\comander_to_squad_
  • [squad_fear] scenario\marsh\bloodsucker\squad_fear_
  • [fear_fire] scenario\marsh\bloodsucker\fear_fire_
  • [alife_bloodsucker] scenario\marsh\bloodsucker\fear_

The last three are played via the usual mechanism, xr_sound.set_sound_play. [commander_to_squad] isn't used by the game, so it's commented out in the SRP. Instead, the comander_to_squad_* sounds are played by invoking the engine method, play_no_feedback, directly. At a glance, it's not obvious to me why; there's probably a good reason I'll discover when I get around to play-testing this.

Two approaches come to mind for utilizing the corresponding sounds from scenario\agroprom\ when appropriate:

Approach 1:

Copy the audio files from:

  • scenario\marsh\bloodsucker\ → human_0{1,2,3}\csky\reactions\bloodsucker\
  • scenario\agroprom\bloodsucker\ → human_0{1,2,3}\dolg\reactions\bloodsucker\

... and modify [squad_fear], [fear_fire], and [alife_bloodsucker] in script_sound.ltx e.g. as follows:

[squad_fear]
npc_prefix = true ; prepends e.g. 'human_01\csky\' to path depending on NPC's character profile
type = npc
avail_communities = csky, dolg
path = reactions\bloodsucker\squad_fear_ ; vanilla: scenario\marsh\bloodsucker\squad_fear_
shuffle = rnd
idle = 1,1

Note: With a bit of extra scripting, support could be added for selecting between an npc_prefix of:

  • characters_voice\
  • characters_voice\human_01\
  • characters_voice\human_0{1|2|3}\<community>\

... instead of only the 1st and 3rd options, as currently. That would enable copying the sounds only into the human_01 tree instead of having to duplicate them for all three of human_0{1,2,3}.

Down-sides:

  • Breaks audio file localization; use of the SRP by e.g. Polish players would result in the English squad reaction audio files bundled with the SRP being used in place of the Polish files.
  • Storage-inefficient duplication of audio files required.
  • Can't use this approach for the comander_to_squad_* sounds unless [commander_to_squad] is re-defined in script_sound.ltx (and utilized in bloodsucker_reaction.script), in which case a new game would be required.

Approach 2:

Define Agroprom-specific duplicates of [squad_fear], [fear_fire], and [alife_bloodsucker] in script_sound.ltx and tweak bloodsucker_reaction.script to select between them depending on whether the level is Agroprom or the Swamps - or, alternatively, depending on whether the squad is Clear Sky or Duty.

Down-sides:

  • New game required.
  • Hacky implementation.

@forbiddenspiral
Copy link
Author

forbiddenspiral commented Feb 12, 2024

Hi Decane,

Thank you so much for taking the time to explain this in such detail! I really appreciate you going into the technical aspects of the issue and offering two potential solutions.

Both approaches seem well-considered, especially the second one. As someone who's still learning the ropes of modding, I understand that sometimes creative solutions are needed with older engines like X-Ray, and yours definitely fit that description!

I especially appreciate your breakdown of the pros and cons of each approach. While I initially envisioned a similar idea with conditional logic for the second one, it seems my solution lacked the nuance of the approaches you outlined.

I completely agree that Approach 1 raises concerns about localization and storage inefficiency. It's clear you've thought deeply about this, and I trust your judgment on the best way to tackle this issue, even if it involves some "hacky implementations" or "workarounds" as you mentioned because I've gone trough it too! After all, sometimes those creative solutions are what make modding so rewarding!

Thanks again for your time and effort.

@forbiddenspiral
Copy link
Author

Oops! So sorry, I accidentally closed this issue when I meant to do something else. I'm super new to GitHub and still figuring things out. Please ignore the close and consider the issue still open!

And to reiterate my previous message, I appreciate the detailed explanation and the two proposed solutions!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants