modding-guide

Fc Files

FileDBReader fctohex -f <file> -i FcFile.xml -d -y

That way, you’ll be able to read everything in well-formed xml in a text editor.

Terminology

Pay attention to the different types of Sequences. all of them are important, but all of them are fundamentally different things.

How does the Game play Object Sequences?

Here is the corresponding Dataset, as Object Sequences have a bit of relevance in the assets as well:

<DataSet>
      <Name>FeedbackSequenceType</Name>
      <Id>262</Id>
      <Items>
        <Item>
          <Name>Default</Name>
          <Id>0</Id>
        </Item>
        <Item>
          <Name>Work</Name>
          <Id>1</Id>
        </Item>
        <Item>
          <Name>LowProductivity</Name>
          <Id>2</Id>
        </Item>
        <Item>
          <Name>Cheer</Name>
          <Id>3</Id>
        </Item>
        <Item>
          <Name>Boosted</Name>
          <Id>4</Id>
        </Item>
        <Item>
          <Name>Riot</Name>
          <Id>5</Id>
        </Item>
        <Item>
          <Name>RiotSpecial01</Name>
          <Id>6</Id>
        </Item>
        <Item>
          <Name>RiotSpecial02</Name>
          <Id>7</Id>
        </Item>
        <Item>
          <Name>RiotSpecial03</Name>
          <Id>8</Id>
        </Item>
      </Items>
    </DataSet>

Mapping Object Sequences to Actor Sequences

An Actor decides for himself which Object Sequences he supports. This is done using FeedbackLoops in the Actors/Feedback Definitions settings. Each Key, aka k, forms a pair with the following Value, aka v.

k and v are index based. The first k relates to the first v, the second k to the second v and so on. It’s totally valid to first write all k’s, then all v’s, as long as they are in order.

Take a look at these FeedbackLoops

<FeedbackLoops>
  <k>0</k>
  <v>0</v>
  <k>1</k>
  <v>0</v>
</FeedbackLoops>
<FeedbackLoops>
  <k>1</k>
  <v>0</v>
</FeedbackLoops>

Elements

DummyRoot

The main DummyGroup for the entire object. Every Dummy that the Object can use is contained in here.

Dummy

Special Dummies

* Dynamic Feedback
Dynamic feedback describes units which are spawned "randomly" in or around your asset and do actions according to their name. This makes your feedback appear less repetitive and static. Since their hardcoded naming convention already determines their actions, they do not need a dedicated `FeedbackConfig`, only a `DummyGroup` with dummies. These DummyGroups are always named with a preceding `feedback_` + the name of the action. Most common ones are:
`feedback_door` `feedback_talk` `feedback_sit` `feedback_celebrate` `feedback_pray` `feedback_react` `feedback_trade` `feedback_listen` `feedback_greet` `feedback_protest` `feedback_cheet` `feedback_laydown` `feedback_workThink` `feedback_ship` ...
In the assets.xml you have to assign your buildings to a `FeedbackBuildingGroup` in order to get the units spawned. Be careful with adding buildings to more than one group since the spawn-count adds up :-)

Actor aka Feedback Definition

<GuidVariationList>CDATA[101878 -1 101879 -1 101880 -1 101872 -1 101873 -1 101874 -1 100903 -1 100904 -1 100905 -1]</GuidVariationList>`

Actors also have a few more settings

SequenceDefinitions

Loop