


CustomStateInjector.Miami (CSI Miami for short) is a plugin designed to allow the injection of custom generation steps during Shadows of Doubt map generation process. It uses attributes for automatic execution in a structured and efficient manner.
SOD.CustomStateInjector.Miami.dll into the BepInEx/plugins folder of your game directory.To use the plugin in your code, you must call it in your Plugin.Load() function like so
using SODCustomStateInjectorMiami;
using SODCustomStateInjectorMiami.Attributes;
namespace YourNamespace;
[BepInPlugin("com.yourname.yourplugin", "Your Plugin Name", "1.0.0")]
[BepInDependency("Cukeds.CustomStateInjector.Miami")] // Recommended
public class Plugin
{
public override void Load()
{
CustomStateInjector.InjectStates();
}
}
To create a custom state, define a class and annotate it with the CustomStateAttribute. The attribute requires two parameters:
stepName: The name of the custom state.afterStepName: The name of the state after which the custom state should be executed. It can be either a regular step or a custom stepSingle Step Example:
[CustomState("generateClubs", "generateCompanies")]
public static class CustomStateGenerator
{
[GenerateState("generateClubs")]
public static void GenerateClubs()
{
Plugin.Log.LogInfo("Generating clubs...");
}
}
Multiple Step Example
[CustomState("generateClubs", "generateCompanies")]
[CustomState("generateGuards", "generateClubs")]
[CustomState("generateFaces", "generateBlueprints")]
public static class CustomStateGenerator
{
[GenerateState("generateClubs")]
public static void GenerateClubs()
{
Plugin.Log.LogInfo("Generating clubs...");
}
[GenerateState("generateGuards")]
public static void GenerateGuards()
{
Plugin.Log.LogInfo("Generating guards...");
}
[GenerateState("generateFaces")]
public static void GenerateFaces()
{
Plugin.Log.LogInfo("Generating faces...");
}
}
Methods to generate the custom states must be annotated with the GenerateStateAttribute, which takes a single parameter:
stateName: The name of the state to be generated.The plugin automatically registers and validates these methods upon loading.
git checkout -b feature/your-feature-name).git commit -am 'Add some feature').git push origin feature/your-feature-name).Needed dlls are included in the repository, but you may need to update them to the latest version.
This project is licensed under the MIT License - see the LICENSE file for details.