Looking for Guidance on Editing FATE Reawakened Files

Image information

Added on

Uploaded by

VALORoutlaw

About this image

Hey everyone,

First off, huge thanks to the modders who have already been creating and sharing content for FATE: Reawakened! Seeing quickly released modshas been really encouraging, and I appreciate the work that’s gone into figuring out the game’s file structure and mechanics.

I’m looking to modify player movement speed but haven’t been able to locate where it’s defined in the game’s files. In older FATE games, this was fairly simple, but since Reawakened runs on Unity, I’m unsure whether this value is stored in:

  • Assembly-CSharp.dll (as a hardcoded value or method calculation)
  • Sharedassets0.assets (as a serialized value in a prefab, scriptable object, or config file)

What I’ve Learned So Far

  • Mods have successfully altered sharedassets0.assets (e.g., making all inventory items single-slot).
  • Assembly-CSharp.dll has been modified to adjust RNG mechanics, suggesting gameplay logic is stored there.
  • Player movement speed could be a static float, a multiplier, or a dynamically calculated value rather than a simple variable.

What I’m Trying to Achieve

I want to slightly increase my character’s base movement speed while keeping gameplay balanced. My main question is where this value is controlled—whether it's a hardcoded constant, an adjustable multiplier, or an external config.

If anyone has experience modifying movement speed or has worked with FATE: Reawakened’s game logic and asset files, I’d love to hear your thoughts. Also, if there are specific tools or workflows that have helped with similar modifications, I’d really appreciate any recommendations!

Thanks in advance for any help! Looking forward to learning from the community.

  • Share

8 comments

  1. Nafamere1
    Nafamere1
    • premium
    • 0 kudos
    Locked
    Sticky
    after making a few mods for the game so far I have compiled something for you if you wish to make it, ^_^ I found *I think* the correct fields for this

    it was hidden under Assembly =>  Cleverous Prodigy => Agent => Prodigy Agent Locomotion




    using BepInEx;
    using BepInEx.Configuration;
    using HarmonyLib;
    using System.Collections.Generic;
    using System.Reflection;
    using System.Reflection.Emit;
    using UnityEngine;


    namespace AdjustPlayerSpeed
    {
    [BepInPlugin("adjustplayerspeed", "Adjust Player Speed", "1.0.0")]
    public class AdjustPlayerSpeedPlugin : BaseUnityPlugin
    {
      internal static ConfigEntry<float> SpeedMultiplier = null!;
      internal static AdjustPlayerSpeedPlugin Instance = null!;
      private void Awake()
      {
    Instance = this;
    SpeedMultiplier = Config.Bind("Movement", "SpeedMultiplier", 1.5f,
    "Multiplier for player movement speed. 1 = normal, 2 = double, 0.5 = half.");
    Harmony.CreateAndPatchAll(typeof(AdjustPlayerSpeedPlugin));
    Logger.LogInfo($"[AdjustPlayerSpeed] Loaded. Speed multiplier = {SpeedMultiplier.Value}");
      }
      [HarmonyPatch(typeof(Cleverous.Prodigy.ProdigyAgentLocomotion), "Motion")]
      [HarmonyTranspiler]
      static IEnumerable<CodeInstruction> MultiplyMoveSpeedTranspiler(IEnumerable<CodeInstruction> instructions)
      {
    var codes = new List<CodeInstruction>(instructions);
    var injected = false;
    for (int i = 0; i < codes.Count - 1; i++)
    {
    if (!injected &&
      codes[i].opcode == OpCodes.Callvirt &&
      codes[i].operand is MethodInfo m &&
      m.Name == "get_Definition")
    {
      // After: this.currentSpeed = this.AgentOwner.Definition.MoveSpeed;
      // Inject: this.currentSpeed *= SpeedMultiplier.Value;
      // Look for the next "stfld currentSpeed" after MoveSpeed is loaded
      for (int j = i + 1; j < codes.Count; j++)
      {
    if (codes[j].opcode == OpCodes.Stfld &&
    codes[j].operand.ToString().Contains("currentSpeed"))
    {
    // Inject:
    // this.currentSpeed = this.currentSpeed * SpeedMultiplier.Value;
    codes.Insert(j + 1, new CodeInstruction(OpCodes.Ldarg_0)); // this
    codes.Insert(j + 2, new CodeInstruction(OpCodes.Ldarg_0)); // this
    codes.Insert(j + 3, new CodeInstruction(OpCodes.Ldfld, AccessTools.Field(typeof(Cleverous.Prodigy.ProdigyAgentLocomotion), "currentSpeed")));
    codes.Insert(j + 4, new CodeInstruction(OpCodes.Ldsfld, AccessTools.Field(typeof(AdjustPlayerSpeedPlugin), nameof(SpeedMultiplier))));
    codes.Insert(j + 5, new CodeInstruction(OpCodes.Callvirt, typeof(ConfigEntry<float>).GetProperty("Value")!.GetGetMethod()!));
    codes.Insert(j + 6, new CodeInstruction(OpCodes.Mul));
    codes.Insert(j + 7, new CodeInstruction(OpCodes.Stfld, AccessTools.Field(typeof(Cleverous.Prodigy.ProdigyAgentLocomotion), "currentSpeed")));
    injected = true;
    Instance.Logger.LogInfo("[AdjustPlayerSpeed] Speed multiplier injected into Motion()");
    break;
    }
      }
    }
    }
    if (!injected)
    {
    Instance.Logger.LogWarning("[AdjustPlayerSpeed] Failed to inject speed multiplier.");
    }
    return codes;
      }
    }
    }


    the assbilies for it are: 

    • BepInEx.dll
    • 0Harmony.dll

    • UnityEngine.dll



  2. Wolfmonkey96
    Wolfmonkey96
    • premium
    • 0 kudos
    Locked
    Sticky
    I have Tracked all Enchant i could find by the Buff type number in the main Save file.
    Hope this helps. 
    1 Strength Point
    2 Dex  Point
    3 Vitality Point
    4 Magic Point
    5 Mana Point
    6 Life Point
    7 Stamina point
    8 Defense point
    9 attack Point
    10 Damage dealt point
    11 Damage Taken point
    12 Knockback
    13 Sword skill
    14 Club & Mace skill
    15 Hammer skill
    16 Axe Skill
    17Spear Skill
    18 Staff Skill
    19 Polearm Skill
    20 Bow & Crossbow
    21 Dual-Weilding 
    22 Sheild Skill
    23 Sheild Battle skill
    24 Defence Magic
    25 Charm Magic Skill
    26 All skill
    27 Strength %
    28 Dex %
    29 Vitality %
    30 Magic %
    31 Mana %
    32 Life %
    33 Stamina %
    34 Move Speed %
    35 Attack Speed %
    36 Defense %
    37 Attack %
    38 Damage Dealt %
    39 Damage Taken %
    40 Chance find Magic %
    41 Gold Droped %
    42 Faster Casting %
    43 Life Stolen %
    44 Mana Stolen %
    45 Damage Reflected %
    46 Improved Chance Of Block %
    47 Reduced item Rquierment %
    48 Piercing resistance %
    49 Slashing resistance %
    50 Crushing Resistance %
    51 Magical Resistance %
    52 Fire Resistance %
    53 Ice
    54 Electric
    55 All Resistences %
    56 Poisonis attack %
    57 Knock Back (negative)
    58 Identify item of identification level 4 and Below (unitended)
  3. Nafamere1
    Nafamere1
    • premium
    • 0 kudos
    do you know where the random fishing time is located between cast and hook? I know its between 1-60 seconds, I was wondering if anyone knew where that would be located to change the rates to something less as in 1-30'ish
  4. coolinfernape12
    coolinfernape12
    • member
    • 0 kudos
    I wanted to ask, do you happen to know how the monsters scale in this game or the original? I've been trying to calculate whether or not they scaled, to see which summon is the most optimal ones to use. I'm extremely new to messing with Unity, so I'm unfamiliar with how to try and find this information, but I've found other things, such as what I believe to be what limits your summons to 6 in FATE 1.
    1. VALORoutlaw
      VALORoutlaw
      • supporter
      • 0 kudos
      Great question! Sadly, I don't have the answer though. Perhaps someone else would be able to answer this question?
  5. VALORoutlaw
    VALORoutlaw
    • supporter
    • 0 kudos
    As I continue digging into the files, I wanted to ask: Has anyone had success modifying other gameplay mechanics in Assembly-CSharp.dll, like attack speed, damage scaling, or experience rates? If movement speed is calculated dynamically, I’m wondering if other mechanics work the same way.
    1. coolinfernape12
      coolinfernape12
      • member
      • 0 kudos
      I was looking into the dll file, and I just found where you can locate the experience rates. It's within TableFlip.Fate, I'm sure if you search for ExperienceForLevel, you'll find it.
    2. VALORoutlaw
      VALORoutlaw
      • supporter
      • 0 kudos
      Cheers, mate!
  6. tnally
    tnally
    • member
    • 0 kudos
    How do you read the code for this game? It's not like the original it's just symbols. 
    1. VALORoutlaw
      VALORoutlaw
      • supporter
      • 0 kudos
      If you’re seeing just symbols instead of readable code, that’s because the game is built with Unity and runs on .NET. To actually see how the game works, you need to decompile the code.

      A good tool for this is dnSpyEx, which is an updated version of dnSpy. It’s commonly used for modding Unity-based games because it lets you open the game’s main code file, Assembly-CSharp.dll, and view the actual scripts that control mechanics like movement speed, combat, or inventory.

      How to Use dnSpyEx for FATE: Reawakened

      • Download dnSpyEx from its official GitHub:
        https://github.com/dnSpyEx/dnSpy/releases
      • Find the game’s code file, which is inside the game’s "Managed" folder. This is where all the core game logic is stored.
      • Open it in dnSpyEx, and instead of random symbols, you’ll be able to browse the game’s scripts.
      • Search for gameplay-related terms like speed, movement, or stats to find what you’re looking for.
      • If you want to modify something, you can edit the script, save it, and replace the original file to apply changes.\

      Is dnSpyEx Safe?

      Yes! dnSpyEx is open-source and maintained by the modding community. You can verify its credibility by checking the source code, updates, and discussions on GitHub. It’s a widely used tool for Unity modding and has been proven reliable for games like this.

      If you need help navigating it, feel free to ask! My first recommendation would be Youtube videos or asking an AI you're familiar with.