FactionConfig - Histidine91/Nexerelin GitHub Wiki

This page documents the various faction config tags.

General tags

corvusCompatible

  • Boolean (default false)
  • Prints a warning message if faction is not marked as compatible with non-random sector (does not affect behavior)

difficultyString

  • String (default "")
  • Used in new game dialog; you can write "hard" or "easy" here, for instance

enabledByDefault

  • Boolean (default true)
  • Set to false to make this faction disabled by default in random sector (no effect in non-random sector)

freeStart

  • Boolean (default false)
  • If true, doesn't spawn markets in random sector mode

ngcTooltip

  • String (default null)
  • Use to display a tooltip for your faction in new game dialog).

playableFaction

  • Boolean (default true)
  • Set to false if faction is not playable (e.g. independents). Faction will not be checked for victory.

startingFaction

  • Boolean (default playableFaction)
  • Is this faction selectable in a new game?

spawnAsFactionId

  • String
  • If specified, transfer from the config's faction to faction spawnAsFactionId after new game commences
    • Example use case: Start as Lion's Guard and get LG ships, be assigned to Sindrian Diktat to actually play the game with

Diplomacy tags

disableDiplomacy

  • Boolean (default false)

startRelationships

  • Object (default {})
  • Specify a table of other factions and their starting relationships with the config faction (ranges from -1 to 1). Overriden by the random starting relationships option. Only applied in random sector, except when useConfigRelationshipsInNonRandomSector is set.

minRelationships

maxRelationships

  • Object (default {})
  • Specify a table of other factions and their minimum/maximum relationships with the config faction (ranges from -1 to 1). Can be disabled in exerelin_config.json.
  • If two configs have conflicting values, the one that gets applied is undefined.

diplomacyPositiveChance

diplomacyNegativeChance

  • Object (default {})
  • Specify a table of other factions and their minimum/maximum relationships with the config faction (ranges from -1 to 1). Can be disabled in exerelin_config.json.
  • If two configs have conflicting values, it uses the one further from 1.

hostileToAll

  • Integer (0-3)
  • If enabled, make this faction hostile to others at start (including with random start relationships). Does not affect Corvus mode.
    • 1 = inhospitable to followers faction, hostile to everyone else
    • 2 = hostile to everyone
    • 3 = vengeful to everyone

isPirateNeutral

  • Boolean (default false)
  • Makes this faction neutral to pirate factions (see pirateFaction) at start. Does not affect Corvus mode.

pirateFaction

  • Boolean (default false)
  • Marks this faction as a pirate faction.
    • This has certain diplomacy implications (defaults to hostile to non-pirates, etc.)
    • Pirate factions do not count for victory by default (unless the player is a member). This can be modified in exerelin_config.json.

noRandomizeRelations

  • Boolean (default false)
  • Ignore this faction when randomizing faction relationships at game start.

noSyncRelations

  • Boolean (default false)
  • Player's relationship with this faction, and the player's commissioning faction's relationship with this faction, will not be synced.

morality

  • String (default neutral)
  • Available values are good, neutral, amoral, evil
  • Affects which commodities faction wants for stabilization package; currently does nothing otherwise

alignment

  • Object (default all values zero)
  • Available alignments are corporate, technocratic, militarist, diplomatic, ideological
  • Determines compatibility for alliance formation (can be disabled in exerelin_config.json)
    • Each alliance has an alignment
    • Two factions must have at least one alignment's affinity sum to 1 to form an alliance
    • A faction must have non-negative affinity with an alliance's alignment to join it
  • Factions with matching alignments will have a better diplomacy disposition towards each other

diplomacyTraits

  • Array (default empty)
  • Affects disposition of factions towards each other
  • See here for information

factionsDisliked

  • Array (default [])
  • Start hostile to this faction. Deprecated, use startRelationships instead.

factionsLiked

  • Array (default [])
  • Start welcoming to this faction. Deprecated, use startRelationships instead.

useConfigRelationshipsInNonRandomSector

  • Boolean (default false)
  • Set to true to apply faction's starting relationships in non-random sector (normally a mod would apply this in code)

Markets

freeMarket

  • Boolean (default false)
  • If true, this faction's markets will have the Free Market condition. Does not affect Corvus mode.

spawnMarketShare

  • Float (default 1)
  • Weighted share of the number of markets this faction gets in random generation mode.

defenceStations

  • Array
  • Each entry is an Object containing sub-objects:
    • ids (Array)
      • Specify the industry IDs for this station type, one for each level
    • weight (Float) (default 1)
      • Chance of this station type being picked for a particular market

industrySeeds

  • Array
  • This specifies industries that will always be added to your faction at the start of the game, when in random sector mode
  • Each entry is an Object containing sub-objects:
    • id (String)
      • Industry ID to add
    • mult (Float)
      • Number of industries added = this × number of markets
    • roundUp (boolean) (default true)
      • Specifies whether to round up or down the result of above multiplication for getting number of industries

industrySpawnMults

  • Object
  • Each entry is a pair of industry type string and float multiplier for the chance of this industry being semi-randomly added to markets
    • Industry type is as specified in data/config/exerelin/industryClassDefs.csv, not the normal industry ID

bonusSeeds

  • Array
  • This "bonus items" that will always be added to your faction at the start of the game, when in random sector mode
  • Each entry is an Object containing sub-objects:
    • id (String)
      • Bonus type to add
    • count (Integer)
      • Number of bonuses to add, on top of mult
    • mult (Float)
      • Number of bonuses added = this × number of markets
  • See data/config/exerelin/industry_bonuses.csv for list of available bonuses

tariffMult

  • Float (default 1.0)

Fleets and invasions

canInvade

  • Boolean (default true)
  • If false, invasions are replaced by raids

factionIdForHqResponse

  • String
  • Currently only used for generating special forces fleets, see "Special forces" section

groundBattleSettings

  • Map (default null)
  • Used for miscellaneous ground battle configuration, normally you don't need to set this

invasionOnlyRetake

  • Boolean (default false)
  • If true, only invades to retake planets or stations lost to another faction

invasionStrengthBonusAttack

invasionStrengthBonusDefend

  • Float (default 0)
  • Bonus/penalty fraction for marine rolls during invasions

invasionFleetSizeMod

responseFleetSizeMod

  • Float (default 0)
  • Bonus/penalty fraction for invasion/response fleet size

invasionPointMult

  • Float (default 1)
  • Multiplier for accumulating invasion points (launch invasion fleet when filled)

miningVariantsOrWings

  • Array (default empty)
  • List ship variants that will be present in mining fleets

raidsFromBases

  • Boolean (default false)
  • If true, will allow functionality like mod's Remnant raids

Starting ships

As an example from player config:

    "startShipsCombatLarge":[
      ["swp_vulture_sta", "swp_striker_ass", "wolf_Assault"],
      ["eagle_Balanced", "sunder_Assault", "brawler_Elite"]
    ],
  • The Combat (large) starting fleet type is defined as an array with two possible sets of starting ships, which the player can cycle through in the starting fleet picker when setting up a new game. Each set here has three ships: a cruiser, a destroyer, and a frigate; however, any new ship sets added may choose to have a different number and combination of ships.
  • Ship sets are arrays of variant IDs. The first starting set contains two variants from the Ship/Weapon Pack mod; if a set contains any invalid variants (e.g. the variant does not exist), the entire set will be hidden. This means ship sets relying on other mods can be safely added; Nexerelin will automatically hide the set as needed.

Fleet names

Available name tags are:

  • asteroidMiningFleetName
  • gasMiningFleetName (unused)
  • invasionFleetName
  • invasionSupportFleetName
  • responseFleetName
  • defenceFleetName
  • suppressionFleetName
  • stationName

Colonies

colonyExpeditionChance

  • Float (default 0)
  • Weighting for when the game picks a random faction to found a new colony.

maxColonyDistance

  • Float (default 18)
  • After the game picks a random existing faction market to launch the colony expedition from, valid targets must be within this many light-years of the origin market.

colonyTargetValuator

  • String (default "exerelin.campaign.colony.ColonyTargetValuator")
  • Code to decide which colonization target is the most desirable. Other defaults available are IndustrialColonyTargetValuator and LuddicColonyTargetValuator, or the mod can define its own.

noHomeworld

  • Boolean (default false)
  • If true, faction will not receive a planet that has the "homeworld" features in random sector

Special forces

Tags that control the special task groups.

specialForcesMaxFleets

  • Integer (default 2)

specialForcesPointMult

  • Float (default 1)
  • Multiplier for how quickly the faction generates spawning points for STGs.

specialForcesSizeMult

  • Float (default 1)

specialForcesNamerClass

  • String (default exerelin.campaign.intel.specialforces.namer.CommanderNamer)
  • Can define a custom Java class to generate the name of the task group.

specialForcesFlagshipVariants

  • Array (default null)
  • Specify variants here to enforce their use as flagships for a special task group.

Vengeance fleets

The use of the name values is best illustrated by the following example for Luddic Church:

    "vengeanceLevelNames":["Excommunication", "Interdiction", "Jihad"],
    "vengeanceFleetNames":["Evangelists", "Inquisition", "Crusade"],
    "vengeanceFleetNamesSingle":["Evangelists", "an Inquisition", "a Crusade Fleet"],

vengeanceLevelNames

  • Array (default empty)
  • The length of this list determines how high the vengeance level can go. If list is not provided, max level defaults to 2.

vengeanceFleetNames

  • Array (default empty)
  • Should have same length as vengeanceLevelNames

vengeanceFleetNamesSingle

  • Array (default empty)
  • Entries should be a singular form of the names in vengeanceFleetNames

vengeanceFleetSizeMult

  • Float (default 1)

Miscellaneous

customStations

  • Array (default empty)
  • List entity IDs for space stations the faction should use here

directoryUseShortName

  • Boolean (default false)
  • Use the faction's short name in game start faction picker and faction directory

dropPrisoners

  • Boolean (default true)
  • If true, faction will not drop prisoners or lootable crew after battle

noMissionTarget

  • Boolean (default false)
  • Blocks the faction from being picked for various missions (e.g. those given by contacts)

noStartingContact

  • Boolean (default false)
  • If true, does not generate a contact for player when starting with this faction

showIntelEvenIfDead

  • Boolean (default false)
  • If true, faction will not be removed from the intel screen when eliminated or absent
    • Use this for factions that have a presence in the campaign even when they have no markets (e.g. pirates)

stabilizeCommodities

  • Array (default null)
  • Set to specify which commodities the faction's officials want to receive as stabilization assistance
    • Normally this is supplies and food for "good" or "neutral" factions, supplies and heavy armaments for "amoral" and "evil" factions

startSpecialItems

  • Array
  • Will place special items in player cargo at start.
  • Each entry is an array of arrays (so 3 levels of arrays in total).
    • The deepest array has 2 String elements: special item ID (e.g. "midline_package") and data (usually empty string, but can specify the hull/wing/weapon/ ID of a specific item blueprint).
    • Multiple level 3 arrays can be stored in a level 2 array. One item from each level 2 array will be picked at start.
  • Example using a modified player.json:
    "startSpecialItems":[
        ["low_tech_package", ""], ["midline_package", ""], ["high_tech_package", ""], ["XIV_package", ""], ["missile_package", ""](/Histidine91/Nexerelin/wiki/"low_tech_package",-""],-["midline_package",-""],-["high_tech_package",-""],-["XIV_package",-""],-["missile_package",-""),
        ["modspec", "targetingunit"](/Histidine91/Nexerelin/wiki/"modspec",-"targetingunit")
    ],
  • The first row is a level 2 array containing five level 3 arrays, each representing a different blueprint package. The second row is a level 2 array containing 1 level 3 array, representing the Integrated Targeting Unit modspec.
  • At game start (if choosing the 'own faction' starting faction) the player will receive the ITU modspec, and one randomly selected blueprint package from the five available.

allowAgentActions

allowPrisonerActions

  • Boolean (default true)
  • If false, this faction cannot be targeted for agent/prisoner actions (including by the player).