Companion dispositions

How to declare who is recruitable

When we want to add new NPC as a companion, we must define it in dispositions file. It's very important to define our NPC when we wants to be supported as companion in mod

# content reference token (use it in content pack key or for loading in code with ContentLoader)
Data/CompanionDispositions

# Target file in mod assets folder (refered by token)
assets/Data/CompanionDispositions.json 
# Refered localized file
assets/Data/CompanionDispositions.<lang_code>.json

Structure&Format

Definition structure is a dictionary of NPC, where key is NPC name and value represents companion definitions with slash splited sections.

{
  "<NPC_name>": "<recruitable>/<skills>/<availability>/<minimum_hearts>/<price>/<sword>"
}

Example:

{
  "Abigail": "recruitable/warrior//5/0/Abby's Planchette",
  "Maru": "recruitable/doctor fighter//5/0/Maru's Wrench",
  "Shane": "recruitable/fighter//5/0/-1",
  "Leah": "recruitable/forager fighter//5/0/Leah's Whittler",
  "Haley": "recruitable/fighter scared//5/0/Haley's Iron",
  "Emily": "recruitable/fighter//5/0/Rusty Sword",
  "Penny": "recruitable/forager fighter//5/0/Penny's Fryer",
  "Alex": "recruitable/warrior//5/0/Alex's Bat",
  "Sam": "recruitable/fighter//5/0/Sam's Old Guitar",
  "Sebastian": "recruitable/warrior//5/0/Seb's Lost Mace",
  "Elliott": "recruitable/fighter//5/0/Elliott's Pencil",
  "Harvey": "recruitable/doctor fighter//5/0/Harvey's Mallet"
}

Companion definition

SectionAllowed valuesDescription
recruitablerecruitableIs this NPC recruitable, rentable or unavailable for asks and suggestions, but available in quests only? Only recruitable value is implemented in mod.
skillswarrior, fighter, doctor, forager, scared, spiritual, fishermanOne or more presonal skills. Defines which persoinal skills companion has.
availabilityAn EPU condition delimited with ;Say when the companion can be available for recruit (CSM state AVAILABLE), otherwise they are unavailable for recruit (CSM state UNAVAILABLE) and you can't ask them for follow (same behavior as non-companion standard NPCs).
minimum_heartsUnused
priceUnused
swordDeprecated Sword name (string) or ID (int)This field is deprecated, don't use it. Use custom weapons definition assets instead. Name or id of default sword. Every companion can to have own unique default sword for level 0. See game file Data/weapons for more details. -1 means no sword. Custom swords supported

Edit dispositions in content pack

File assets/data/myOwnCompanionDispositions.json:

{
  "Biglydz": "recruitable/warrior//5/0/Master sword" // This companion uses custom sword from another mod named 'Master sword'
  "Hastings": "recruitable/warrior//5/0/40" // This companion uses vanilla sword with ID 40 (Abby's Planchette)
  "Pam": "recruitable/warrior//5/0/Cutlass" // This companion vanilla sword named 'Cutlass'
}

File content.json:

{
  "Format": "1.3",
  "Changes": [
    {
      "Target": "Data/CompanionDispositions",
      "FromFile": "assets/data/myOwnCompanionDispositions.json"
    },
  ]
}

This defines new companion in mod. Referenced NPC must be exists in gam. If it's a Custom NPC, this NPC mod must be put in mod folder and loaded in game.

See also