How to Edit Voiceover and Subtitles In a Quest.

Guide made by Forsentio - Quest Team member working on WolvenKit at RED Modding Tools.


First and foremost you need to have the raw files of the game extracted If not, use the latest release of CP77 Tools and extract the archive. You also need to extract and unbundle the lang_eng_text archive for this tutorial.

Now that you have the raw files, head to the "quest" folder (found here: [...]\basegame_4_gamedata\base\quest) then chose a quest from one of the sub folders:

  • main_quests (the main story quest, internally labled as qxxx)

  • minor_quests (minor activites such as psycho sighting... etc, internally labeled mqxxx)

  • side_quests (the side gigs such as Judy's quest, River's story... etc, internally labled as sqxxx)

For this guide, we're going to use the one named MQ041, also known as "War Pigs", avaialable only for the Corpo lifepath. You should find it here: [...]\basegame_4_gamedata\base\quest\minor_quests

We want to make the main character say a different line then the one he is supposed to. For example replacing "Hey, yeah, sure. Damn, you ol' bastard, been a while since..." with "Fuuuck!" when the holocall starts.

You should have also unbundled and uncooked the lang_eng_text archive.

Okey, now that everything is clear, let's start. 1. Open the scenes folder inside MQ041, and then open the file named mq041_corpo_01_deadmans_switch.scene in 010Editor with alphaZomega's template already installed.

2. Go to struct Data, open scnSceneResource, then scnscreenplayStore; inside you're going to find an array named scnscreenplayDialogLine 3. We're going to associate each entry with the line we see on screen; to do so we need the locstringIds and another file you can get from the lang_eng_text archive 4. Next, open the lang_eng_text archive and search for mq041 here: [...]\lang_en_text\base\localization\en-us\subtitles\quest 5. Once found the quest folder open the .json named mq041_corpo_01_deadmans_switch 6. Open struct Data, then JsonResource, handle:iSerializable, localizationPersistenceSubtitleEntry and finally array:localizationPersistenceSubtitleEntry 7. Here in the value column you're going to see lots of stringId; remember the locstringIds from point 3? Good! They're the same 8. We now know that stringId = 1822802647440039936 is responsible for "Hey, yeah, sure. Damn, you ol' bastard, been a while since...", and that stringId = 1874801294016040960 is the same as "Fuuuck!" 9. Let's go back to the the array mentioned in point 3; first thing we do is swap the two the locstringIds 10. Once that is done we need to swap the names we see on the left; in this case m_194BE559A84E2000 with m_1A04A1D80244D000; we can do that by simply going in the CName array and replacing their entries. 11. Once that is done be sure to save, pack and put the archive in your Mod folder


Last updated