Editing Supports

#1

Requested from the FEUniversity Request Thread

Note: all offsets specified are FE8, unless stated otherwise.

1: Editing Support Partners/Thresholds

FOR FEBUILDER USERS: The corresponding editor is Support Threshold Editor, First Column in the advanced editor screen. alternatively, you can click on Support Data in the Character Editor to access it.

Field 0x2C of the character data table(Cell AQ if using csvs) is a pointer to a table which contains:
-The seven character IDs of the partners of the character(7 bytes)
-The seven base support values the character has with each partner(7 bytes)
-The seven support growths, aka how much will the support value add each turn the partners are adjacent to each other.(7 bytes)
-The number of supports the unit actually has(1 byte)
-2 useless bytes of padding, generated because the compiler aligns everything to 4 bytes. these bytes are useless for us.

For example, if I wanted to have Character A have a support with Character B with a base value of 50 and a growth of 8 per turn, I would make Character A have the Number of support byte be 1, his first support partner be Character B, and the First Base and Growths bytes respectively 50 and 8. Rinse and Repeat for character B.

IMPORTANT NOTE: You need to have both characters be in the same support entry! So if character A has its first support as character B, character B also needs to have its first support as character B!

The support values work as such:

0-80: No Support
80-176: C Support
176-240: B Support
241-255: A Support

So to make your own support list, you would have to either change the pointer to point to your support data, or just write your new support data at where the original character’s support data was. if you are using FEBuilder, I reccommend you do the second one, as it will be easier for you and the result will be the same. however, if you’re using buildfiles, I think repointing is the more efficient option.

To do that, replace field 0x2C(Cell AQ if using csvs) with *Character*SupportThreshold+IsPointer, then, have a label in freespace(you should probably create a new file for all your support thresholds too, to make everything neat and tidy) where you will put your character’s support threshold.

I have also made some EA definitions to make the job easier to read with buildfiles.

#define CharacterSupport(Char1, Char2, Char3, Char4, Char5, Char6, Char7) "BYTE Char1 Char2 Char3 Char4 Char5 Char6 Char7"
#define SupportBases(Char1, Char2, Char3, Char4, Char5, Char6, Char7) "BYTE Char1 Char2 Char3 Char4 Char5 Char6 Char7"
#define SupportGrowths(Char1, Char2, Char3, Char4, Char5, Char6, Char7) "BYTE Char1 Char2 Char3 Char4 Char5 Char6 Char7"

and here’s two example entries:

RaddSupport:
CharacterSupport(Caesar, 0, 0, 0, 0, 0, 0)
SupportBases(50, 0, 0, 0, 0, 0, 0)
SupportGrowths(8, 0, 0, 0, 0, 0, 0)
BYTE 1 //1 Support
BYTE 0 0 

CaesarSupport:
CharacterSupport(Radd, 0, 0, 0, 0, 0, 0)
SupportBases(50, 0, 0, 0, 0, 0, 0)
SupportGrowths(8, 0, 0, 0, 0, 0, 0)
BYTE 1 //1 Support
BYTE 0 0 

2: Editing Support Conversations

FOR FEBUILDER USERS: The corresponding editor is Support Convo’s Editor, First Column again in the advanced editor screen.

Support Conversations are a bit more tricky, But pointers to the table are located at both 0x84784 and 0x847FC, so to repoint them to expand them, you would have to change both those locations to point to your new list.(Alternatively, if using csvs, you can do INLINE MyNewSupportConvoTable in the first cell to repoint it.)

Buildfiles Code:

PUSH
ORG 0x84784
POIN SupportList
ORG 0x847FC
POIN SupportList
POP

SupportList:

Then, the support convo entries are laid like so:
-The First support partner, and the second one(2 Bytes each)(4 Bytes)
-The C, B and A convo Text IDs(in order)(2 Bytes each)(6 Bytes)
-6 Unused bytes, although maybe originally used for alternative support convos?

So if you’re using FEbuilder, you can get away by just changing the original text ID that was used for the original support and only change the partners, but with buildfiles, you’d want to use definitions, because of TextProcess Making them really easy to use and better than constants in every way.

Here’s an EA definition for support convo entries:

#define SupportText(Partner1, Partner2, CConvoTID, BConvoTID, AConvoTID) "SHORT Partner1 Partner2 CConvoTID BConvoTID AConvoTID 0 0 0"

So if you wanted to have a support convo between CharacterA and CharacterB, you’d have the entry laid out like so:

SupportText(CharacterA, CharacterB, CharacterACharacterBCConvo, CharacterACharacterBBConvo, CharacterACharacterBAConvo)

And in your TextProcess Text, have this

##CharacterACharacterBCConvo
#Your lovely Support Convo

##CharacterACharacterBBConvo
#..., ..., ..., B support attained!

##CharacterACharacterBCAonvo
#Now they're Lovey Dovey!`

(Note: add your own text, the #s are just comments(I won’t teach you how to write text, but tutorials for that exist, look them up))

then when they reach the threshold value(look above for what the thresholds are), they will be able to initiate that convo!

IMPORTANT NOTE: Don’t forget to terminate your repointed support table with WORD 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF, else the game will crash!

Well, I think that should be it, if I missed anything, or you have any question, please point it out.

See ya!

5 Likes
The FEUniversity Initiative: Tutorial/Doc Request Thread