|Do not enter! This article is currently under construction and should not be used for reference. If you need help, visit the forums.|
State transitions (STs) are events that control the setting of bools and integers in the game. To look up their ID numbers we need to use TankMaster's Natives Editor (NE), a utility not yet part of the ME3Explorer toolset. This article will cover how to use the editor and provide some guidance on how to determine the plot effects of a state transition.
The tutorial is based on an example, which involves adding a new dialogue wheel option to Sam's "Relationship 2" dialogue. Here's the vanilla dialogue with FemShep for reference. The related PCC is BioD_Nor_203CIC_LOC.INT.pcc and the dialogue is referenced in the nor_comm_relationship2_d_dlg package.
- ME3 Plot Database
- ME3 Plot Dump
- ME1, ME2, ME3 bools by HJF4
- Gibbed ME3 Conditionals Dump
- ME1 and ME2 Plot Project.
Researching State TransitionsEdit
- Download the editor here and run the exe. The NE window will look like this:
- ME3's main "State Event Map" is stored in SFXGameInfoSP_SF.pcc. DLC State Event Maps are stored in their "startup" file. For example, Omega's is stored in Startup_EXP_Pack002_INT.pcc. We'll open the main file since we're editing a file in the base game. Click File > Open, then navigate to the file's location on your PC. Click on the State Event Map tab to see all the transition IDs referenced by the base game:
- Event IDs in SFXGameInfoSP_SF.pcc range from 1 to 4914. DLC picks up with larger IDs, Citadel DLC ending in 7415. Multiplayer DLC seem to lack State Event Maps. They aren't located in the MP Startup PCC and some MP packs lack this file completely.
- Locate 2345 in the list and click on it.
- ST 2345 prompts one action: it sets plot bool 20072 to TRUE. Note from the gibbed dump screenshot in the first case study that this is also the conditional checked at the start of the conversation. This means 20072 is the bool for Sam's R2 convo. It's set to true the first time the conversation is triggered. The conditional check for the bool is what prevents the same conversation from triggering again in the future. We definitely don't want to change this for our edit.
- Locate 2129 in the list and click on it.
We see that it triggers an integer change rather than a bool change. The value of plot integer 10336 will be increased by one from its starting value. If the "increment" box wasn't checked, the game would change the value to one. Now the hard part: figuring out what an integer means. This can be difficult.
Most plot bools and integers are unknown, but it's always worth checking the web references listed in the resources before investing a significant amount of time in research. If that doesn't get you anywhere you'll need to dig through a variety of dialogue files and conditionals related to the character, and use your ME3 plot knowledge to figure things out.
In Sam's case, conditional 943 (checked in several of her convos) references 10336, which gives us a good clue:
((plot.bools == Bool true) || (plot.ints >= 5))
Since cnd 943 also references her romance bool (19835), let's check Sam's cabin lock-in conditional (883) to see if 10336 used there, as well:
Note: conditional modified to include Thane (19283) and Kelly (21100) romance bools.
(((plot.bools == Bool true) && (plot.bools == Bool false) && (plot.bools == Bool false) && (plot.bools == Bool false) && (plot.bools == Bool false) && (plot.bools == Bool false) && (plot.ints 4= 6) && (plot.bools == Bool false)) || (plot.bools == Bool true))
As you can see, 10336 isn't used there, but further research into Sam's other conversations shows that 10336 increases by +1 every time Shepard prompts a new conversation with her in the CIC. From that we can deduce that 10336 is Sam's friendship integer. By talking to Sam, Shepard builds a friendship with her.
Since 10336 isn't involved with Sam's romance, we now know for certain that we don't need to make any changes related to ST 2129. Let's move through the last two state transitions a bit more quickly now that we better understand how to read the editor and figure out plot effects.
- State Event 2133
- This is the transition we're most interested in since it's triggered by the AGREE response and Sam's flirt. From the editor we see it conveys a +2 increase to a different integer: 10337. This is the same integer referenced in Sam's lock-in conditional and is known to be tied to her romance. Any Shepard who chooses AGREE during this convo will trigger this transition. In other words, the game considers AGREE to be an indication Shepard is interested in Sam romantically.
- State Event 4595
- This sets bool 22506 to TRUE. Running a search for both the bool and transition in the Gibbed dump doesn't turn up any other entries. Neither does a search in the common web resources, ST 4595 seems to simply flag the end of the conversation as complete. Since we don't need to make any changes to the associated line, we can safely leave it be despite not fully understanding what it does.
STs can have multiple plot effects. For example, state event 28 sets 8 different bools. State Event 1848 sets a bool and changes an integer. This system means that multiple changes can be triggered as a result of a single decision Shepard makes in game. This is a very important way ME3 controls plot evolution.
Adding State TransitionsEdit
Adding new state transitions and bools to the game is very, very easy. The most important thing to remember is that you MUST use unique ID numbers. Both the transition and bool IDs cannot already be referenced by the vanilla game (this includes DLC). To maintain intermod compatibility, you should also ensure the ID is not used by another mod author. Consult the Compatibility Resource article for a list of plots already used by mods. Once you've chosen your numbers, then use the procedure below to add them. We'll be using 7603 for our state transition and 26503 for our bool.
Why add state transitions rather than edit? Sometimes you want to flag certain events in game that BW hasn't. That way you can reference them in conditionals later on, to mod new plot content. Also, State Transitions are a bit like conditionals: the same state transition is referenced by multiple dialogues and sequence maps. If you change it once, then you've changed it everywhere. This increases the chance of you breaking something somewhere else. Even when you really just want to edit a ST, it's generally always better to make a new one and replace it. Here's how:
- Select the State Event Map tab.
- Click the bottom left Add button. A new ID will be created automatically at the bottom of the list. You may change it by altering where it appears in the labeled field to the upper left.
- Add the new bool. Under the empty, right-hand pane there's a dropdown menu. Make sure Bool is selected and then click the Add button underneath. You should now see a new "Bool" item displayed in the previously empty pane. To the right are all the fields we discussed previously. Let's edit them.
Select the "0" in the Global Bool field and type in your new bool number; ours is 26503. Then, set the New Value to TRUE. This is our flirt flag.
- We're not done yet. We need to make sure we retain the changes that ST2133 implements. That means we need to add a +2 increment for integer 10337. From the bottom dropdown select Int and then click Add. Now, in the Global Int field enter 10337. For New Value type in 2 or use the arrows. Check off the Increment field. I'm not sure what Instance Version is yet, but its value is 0 in 2133 so we want to stick to that.
- When finished, it should look like the screenshots below. Be sure to save changes before exiting using File > Save.
I haven't used any of the other State Event categories besides bool and int, so my current knowledge of STs is limited to those types. There are several others, including Consequence, Function, Float, Local Bool/Int/Float, and Substate. These categories are all used MUCH less frequently than Bool and Int. You can find a bit more information about them in TankMaster's Plot Natives Research thread and the Download thread. Also soon available in the Plot Natives article.