Getting Started with EPL
Enhanced Prefab Loader (EPL) is a mod loader for TCG Card Shop Simulator that allows mod authors to load custom assets, items, card expansions, and more into the game.
EPL is fully usable with just a JSON descriptor and asset bundle — no C# code required. The EPL API is an optional extension point for power users who want custom runtime behaviors such as custom pack generators or price generators.
Adding Content (JSON Descriptor Path)
The primary way to add content with EPL is through a JSON descriptor file paired with a Unity asset bundle. Define your items, card expansions, prefabs, and more in the descriptor and EPL will handle loading and registering them automatically.
Use the Bundle Verification Window in Unity to configure and build your bundles. It exports both the asset bundle and the JSON descriptor for you.
Installing Your Bundle
Place your built asset bundle folder (containing the bundle file and its .json descriptor)
inside the BepInEx/plugins/ directory. EPL automatically discovers and loads all bundles
during the game's loading screen.
Adding the API as a Dependency (Power Users)
If you need runtime control beyond what the descriptor supports, add the EPL API as a dependency:
- Download
EnhancedPrefabLoader.API.dllfrom the latest EPL release - Add a reference to it in your mod project
- Add EPL as a BepInEx soft dependency in your plugin class:
[BepInDependency("EnhancedPrefabLoader", BepInDependency.DependencyFlags.SoftDependency)]
[BepInPlugin("com.yourname.yourmod", "Your Mod", "1.0.0")]
public class YourPlugin : BaseUnityPlugin { }
Checking if EPL is Available
EPL may not always be installed. Always check before using the API:
if(Epl.IsAvailable)
{
var api = Epl.Api;
}
Entry Point
All EPL functionality is accessed through Epl.Api:
Epl.Api.Assets // Access loaded EPL assets
Epl.Api.Services // Interact with EPL game state
Epl.Api.Events // Subscribe to EPL events
Epl.Api.BundleRegistry // Query loaded bundles
Waiting for EPL to Finish Loading
EPL loads asset bundles during the game's loading screen. Subscribe to
OnBundleLoadingComplete to know when EPL assets are ready:
Epl.Api.Events.OnBundleLoadingComplete += () =>
{
// Safe to access EPL assets here
};
Note: If you subscribe after loading is already complete, the event will fire immediately. You do not need to check
IsLoadingCompleteseparately.
Custom Shops
If EPL bundles register custom shops and Phone Overhaul is installed, you can react when all shops are ready:
Epl.Api.Events.Shops.OnShopsReady += () =>
{
// All custom shops have been registered and the shared shop screen is ready
};