Skip to content

Settings Documentation

radj307 edited this page Oct 24, 2022 · 14 revisions

Settings Reference

    These are the settings available through the Synthesis GUI or the JSON file located at:
    <Synthesis Installation Directory>/Data/Another-Archery-Patcher/settings.json
    If you don't know how JSON files work, or are confused about variable types, see the Variable Type Reference at the bottom of this page.

Projectile Categories

Major Record: PROJ
Type: array
of type: object

This is a list of stat groups that are applied to similarly-named projectiles, as determined by the MatchList.
Each element of this array represents one projectile category, with their own separate values.

  • Identifier

    Type: string

    A name that identifies this category to the user.
    This is not used by the patcher, but is included in logs for debugging purposes.
    You can use this to figure out which category's values were applied to a given record.

  • Priority

    Type: integer

    The priority level for this category.
    When processing a projectile record, the patcher will:

    1. Create a list of all of the categories that apply to that record (if any).
      If this list of categories is empty (at any point in this list), the patcher will skip that record and it won't appear in the final patch.
    2. Search for the category with the largest priority level value and apply the values from that category to the record.
      If multiple categories have the same priority number, the category that appears the latest in the list wins.
  • Speed

    Type: float
    Subrecord: DATA\Speed

    This controls the speed of all projectiles in the section.

  • Gravity

    Type: float
    Subrecord: DATA\Gravity

    This controls the gravity of all projectiles in the section.

  • ImpactForce

    Type: float
    Subrecord: DATA\Impact Force

    This controls the impact force of projectiles in this section.
    Impact Force is the amount of force imparted into whatever objects or actors the arrow collides with.

  • SoundLevel

    Type: enum
    Subrecord: VNAM - Sound Level

    This controls the amount of detectable noise that all projectiles in this section produce while in-flight, which determines whether an NPC will notice a projectile fly past them.
    Does not modify the noise created by impacts, or the noise of firing loud weapons such as crossbows.
    This is most noticeable with mods that make stealth more difficult by increasing the noise detection threshold.
    Possible values for SoundLevel are:

    • Silent
    • Normal
    • Loud
    • VeryLoud
  • Flags

    Type: array
    of type: object
    Subrecord: DATA\Flags

    This is the exact same type as the Global Flag Tweaks list, but flags specified here always take priority.

    • Flag

      Type: enum

      This is the projectile flag to add/remove from records in this section.
      Possible values for Flag are:

      • Hitscan
      • Explosion
      • AltTrigger
      • MuzzleFlash
      • CanBeDisabled
      • CanBePickedUp
      • Supersonic
      • PinsLimbs
      • PassThroughSmallTransparent
      • DisableCombatAimCorrection
      • Rotation
    • State

      Type: enum

      This determines whether the flag should be added or removed from records in this section.
      Possible values for State are:

      • Add
      • Remove
  • MatchList
    Type: array
    of type: string

    Also known as common names, this is a list of words that appear in the Editor ID of projectile records.
    As long as at least one word in this list appears in a projectiles editor ID, this category is considered applicable,
    with one exception; Leaving this empty will make this category applicable to ALL records.

    The vanilla game generally uses this naming scheme: [Quest/DLC]<Type><Material>Projectile, ex. ArrowIronProjectile, MQ101ArrowSteelProjectile
    However, there are outliers to this format, and any projectiles added by mods may or may not follow this naming scheme.

Global Flag Tweaks

Type: array
of type: object

List of PROJ data flags to add or remove from all processed records.
To remove a flag entry in the settings menu, click the background of an entry to select it, then click the x icon at the top.

Game Settings

Type: object

These are settings that modify archery-related game settings.

  • Disable Auto-Aim

    Type: boolean
    Record(s): fAutoAimMaxDegrees, fAutoAimMaxDistance, fAutoAimScreenPercentage, fAutoAimMaxDegrees3rdPerson

    When checked / true, sets all auto-aim-related Game Settings to 0.

  • Fix Ninja-Dodge

    Type: boolean
    Record(s): fCombatDodgeChanceMax

    When checked / true, sets the fCombatDodgeChance for NPCs to 0.

  • Max Attached Arrows

    Type: integer
    Record(s): iMaxAttachedArrows

    This changes the maximum number of arrows/bolts that can be shot into the same actor before the previous projectiles start disappearing.
    Does not impact performance unless you're trying to make pin cushions.
    Vanilla defaults to 3, the patcher defaults to 8.

  • Fully Drawn Speed Mult

    Type: float
    Record(s): fArrowSpeedMult

    Speed multiplier applied to arrows shot from a fully drawn bow.
    Default is 1.0

  • Recovery Chance

    Type: integer
    Record(s): iArrowInventoryChance

    The percentage chance that an arrow/bolt will appear in an actors inventory after shooting them.
    Default is 33

  • fVisibleNavmeshMoveDist

    Type: float
    Record(s): fVisibleNavmeshMoveDist

    The maximum distance from the player before the game engine stops calculating collision for (in-flight) projectiles.

Blacklist

Type: array
of type: FormLink

Allows blacklisting certain projectiles that the patcher should not modify.
These can be added interactively through the GUI by searching for the Editor ID of a projectile.
In the settings.json file, entries must follow this format: "Form ID:Plugin Name", ex. "105EE6:Skyrim.esm"
Note that synthesis does not include the mod index of Form IDs; The first 2 digits that correspond to load order.

JSON Variable Type Reference

This is a list of the JSON variable types present in the settings.json file in layman's terms, and is intended for people with no programming experience.
When editing settings.json directly, ensure that you include commas where required!

  • integer
    A positive or negative number that cannot contain decimal values.
    Ex: -2, -1, 0, 1, 2

  • float
    A positive or negative number that can contain decimal values.
    Note that floating-point numbers are stored as an approximation of a number, not the number itself; for this reason they sometimes experience rounding errors that cause the number to be slightly different than expected.
    Ex: -2.0, -0.5, 0.0, 0.5, 2.0

  • boolean
    A variable that can be one of two values: TRUE or FALSE.
    Mutagen will use checkboxes in the generated settings menu to represent boolean values.
    Ex: true, false

  • string
    A sequential list of characters internally stored in an array, also known as string of characters, or words.
    Strings must be enclosed by quotation marks.
    Can contain any valid unicode character.
    Ex: "Hello World!"
    Note: Due to enums and strings appearing very similar, check the settings reference before changing these values.

  • enum
    An enum, or enumerator, can only have a pre-defined set of possible values, each represented by a word.
    You can think of it like a drop-down menu with preset options. Enum values are case-sensitive and must be surrounded by quotes in the JSON file.
    Mutagen will use dropdowns in the generated settings menu to represent enum values.
    Ex: "Silent", "Normal", "Loud", "VeryLoud"
    Note: Due to enums and strings appearing very similar, check the settings reference before changing these values.

  • object
    A container for other variables that stores a KEY and VALUE for each entry, which appear in the file like this: { "KEY": VALUE }
    Objects must contain all variables in a section, even if those variables are empty.
    Most of the arrays used in the settings file contain objects; to identify an object, look for the curly brackets { } surrounding it.
    Ex: {}

  • array
    An array is a list of values of arbitrary length. An array can only hold one variable type.
    In the autogenerated settings menu, you can remove items from an array first by clicking it so it is selected, then clicking the X icon near the top of the pane.
    In the JSON file, you can identify an array by looking for the square brackets [ ] surrounding it.
    Ex: []