Make a new email - ME3Tweaks/LegendaryExplorer GitHub Wiki

This guide is for Mass Effect 3 / Mass Effect 3 Legendary Edition. This does not apply to Game 2!

Requirements:

1) Creating the Mod

To create the email you first need to create the DLC mod. For that you’ll need to modify your mod's tlk file. The tlk files contain all the strings of text that exist in the game, from the menus to the subtitles. But first, we need to create a DLC Starter Kit so that we don’t modify base game files, and instead we modify it through a DLC mod. This is just a basic setup guide, you should consult the Mod Manager documentation on how to properly set up your mod, for things such as dependencies.

  1. Launch ME3Tweaks Mod Manager and click on Tools -> Generate new DLC mod -> Mass Effect 3 or Mass Effect 3 Legendary Edition.
  2. This will bring you to the DLC mod creation screen. Here, just fill in the appropriate information for your mod. The only really important info for adding an email is the Internal Name TLK ID. That will be the ID of the last strings of your tlk file. Set it to a high number, and it has to be unique. This will generate a DLC Mod in the mods folder of your Mod Manager.
  3. You need to decompile your mod's Coalesced file as well as it's TLK file. Right click the mod that was generated in Mod Manager, and select 'Open mod folder'. Then go into the DLC(yourmodname)/CookedPCConsole folder - you will see the files we need to decompile:
    • *.tlk files: These files are the talk files. The suffix is the language, INT is the English one.
    • Default_DLC_MOD_(yourmodname).bin: This is your mod's Coalesced file.

You can decompile these files by drag and dropping them onto Mod Manager. TLK files will produce a .xml file, Coalesced files will generate a folder, and in it are the coalesced's contents, as xml files.

2) Create the content of the email

First, you'll need to edit your TLK file. Open your TLK's decompiled XML file and add your strings ABOVE the last entry, the one labeled 'Female'. Strings that appear after this one will not reliably work.

Use the following format: <String id="stringID">Your string </String>. You’ll need two strings per mail, one for the title, and one for the body. For example:

<?xml version="1.0" encoding="utf-8"?>
<tlkFile TLKToolVersion="4.0.0.0">
    <!--Male entries section begin-->
    <String id="25310400">I am the email title</String>
    <String id="25310401">And I am the email body!</String>

    <String id="25310500">Alternate Outfit for Jack (LE3)</String>
    <String id="25310510">DLC_MOD_AOFJ</String>
    <String id="25310520">en-us</String>
    <String id="25310530">Male</String>
    <!--Male entries section end-->
    <!--Female entries section begin-->
    <String id="25310530">Female</String>
    <!--Female entries section end-->
</tlkFile>

Remember to put all your entries under the Male section of the tlk, which is the default one. A female character will still use them. When you’re done, recompile the TLK by drag and dropping the .xml file back onto Mod Manager. You should see the file changed date change on the .tlk file of the same name.

3) Adding the Mail to the inbox

Now that we’re done with creating the email text itself, we need to add it to your inbox. For that, we will be editing the decompiled coalesced file that's in the new subfolder of your mod. Open the BioUI.xml in that folder; we’re now gonna add the email into the system.

Assuming you want the email to be sent to the Normandy terminal, here’s what you’ll need to do: under the <Sections>, add <Section name=”sfxgamecontent.sfxguidata_mail_normandy”>.

Then, add a <Property name=”maillist”>. You’re telling the game that you want your content to be added to the normandy email system, and in the mail list. Then each new line is a new email. Here’s a template:

<Value type=”3”>(MailTitle=TitleID, MailBody=BodyID, MailStatePlot=PlotID, SendConditional=ConditionalID, SmallImage=””)</String>

Let’s decrypt this: the TitleID and the BodyID are the id’s you’ve given to your strings earlier in your tlk. The MailStatePlot is what the game updates to know if the player has read the message: if it’s 0 the email wasn’t sent, if it’s 1 it’s been sent but not read, if it’s 2 it’s been sent and read. Finally the SendConditional is the condition upon which the email is sent. This relates to Plot ID’s, for which you can find a list of commonly used ones in Plot DB in ME3Explorer. Example of a complete BioUI.xml structure:

<CoalesceAsset id="BioUI" name="bioui.ini" source="..\..\biogame\config\bioui.ini">
	<Sections>
		<Section name="sfxgamecontent.sfxguidata_mail_normandy">
			<Property name="maillist">
				<Value type="3">(MailTitle=42017, MailBody=42018, MailStatePlot=42069, SendConditional=185, SmallImage="")</Value>
				<Value type="3">(MailTitle=42022, MailBody=42023, MailStatePlot=42070, SendConditional=42069, SmallImage="")</Value>
			</Property>
		</Section>
	</Sections>
</CoalesceAsset>

Now that you’ve filled all of this with what you wanted, you can recompile your Coalesced file by drag and dropping the same-named .xml file (NOT THE .BIN!) as the original one that was decompiled back onto the interface. For example, Default_DLC_MOD_EMAIL.bin would be recompiled by dragging the Default_DLC_MOD_EMAIL.xml file back onto the interface.

It will produce a new file next to the xml files. Make sure you copy it to your mod's CookedPCConsole folder and overwrite the original.

4) Chaining emails

Now the game will automatically send the email upon the conditional being toggled. But there’s more! If you want to do email chains, one mail triggering after another, you can! All you have to do is use the MailStatePlot ID of your first mail as the SendConditional of your second email, and so on and so forth if you need more. That way, they’ll trigger in sequence.

After all that’s said and done, don’t forget to run the AutoTOC (you can find the tool on the main page of ME3Explorer, the big ATOC) and you’re done! You can also use those MailStatePlot ID’s to trigger sequences in Sequence Editor, but that’s a tutorial for another time!

⚠️ **GitHub.com Fallback** ⚠️