Skip to content

Instantly share code, notes, and snippets.

@wRadion
Last active November 14, 2025 19:57
Show Gist options
  • Select an option

  • Save wRadion/2062b4d17b1582e1c2a4e6d4b78f5050 to your computer and use it in GitHub Desktop.

Select an option

Save wRadion/2062b4d17b1582e1c2a4e6d4b78f5050 to your computer and use it in GitHub Desktop.
Egging On Autosplitter
/*
* Egging On - Autosplitter
* v1.2
* by wRadion
*/
state("Egging On")
{
float x : "UnityPlayer.dll", 0x01CBD6E8, 0xF0, 0x28, 0x38, 0x18, 0x0;
float y : "UnityPlayer.dll", 0x01CBD6E8, 0xF0, 0x28, 0x38, 0x18, 0x4;
float z : "UnityPlayer.dll", 0x01CBD6E8, 0xF0, 0x28, 0x38, 0x18, 0x8;
}
startup
{
Assembly.Load(File.ReadAllBytes("Components/asl-help")).CreateInstance("Unity");
vars.Helper.GameName = "Egging On";
vars.Helper.LoadSceneManager = true;
// Farm
settings.Add("farm", true, "The Farm");
// Factory
settings.Add("factory", true, "The Factory");
settings.Add("farm_end", false, "Split when entering pipe (Farm end) instead of Factory start", "factory");
// Shop
settings.Add("shop", true, "The Shop");
settings.Add("factory_end", false, "Split when in elevator (Factory end) instead of Shop start", "shop");
// Kitchen
settings.Add("kitchen", true, "The Kitchen");
settings.Add("shop_end", false, "Split when entering drone (Shop end) instead of Kitchen start", "kitchen");
// Attic
settings.Add("attic", true, "The Attic");
// Rooster Fight
settings.Add("rooster", false, "Rooster Fight");
}
init
{
vars.Helper.TryLoad = (Func<dynamic, bool>)(mono => {
// World
vars.Helper["isPlaying"] = mono.Make<bool>("World", "isPlaying");
vars.Helper["isGrounded"] = mono.Make<bool>("World", "instance", "eggCore", "isGrounded");
// Persistent
vars.Helper["finishedGame"] = mono.Make<bool>("Persistent", "instance", "finishedGame");
vars.Helper["msSinceStart"] = mono.Make<int>("Persistent", "instance", "saveData", "millisecondsSinceStart");
vars.Helper["progressMain"] = mono.Make<int>("Persistent", "instance", "saveData", "progress", "main");
vars.Helper["progressSub"] = mono.Make<int>("Persistent", "instance", "saveData", "progress", "sub");
// LocationTitle
vars.Helper["titleSprite"] = mono.Make<IntPtr>("LocationTitle", "instance", "titleImage", "m_Sprite");
return true;
});
vars.splits = new Dictionary<string, bool>();
Func<string, float, float, float, float, bool, bool> SplitDistance = (name, x, y, z, radius, checkGrounded) => {
if (!settings[name] || (vars.splits.ContainsKey(name) && vars.splits[name]))
return false;
float dx = x - current.x;
float dy = y - current.y;
float dz = z - current.z;
float dist = (float)Math.Sqrt(dx * dx + dy * dy + dz * dz);
if (dist < radius && (!checkGrounded || current.isGrounded))
{
vars.splits[name] = true;
return true;
}
return false;
};
vars.SplitDistance = SplitDistance;
Func<string, string, bool> SplitBiome = (name, currentBiome) => {
if (!settings[name] || (vars.splits.ContainsKey(name) && vars.splits[name]))
return false;
if (name.Equals(currentBiome))
{
vars.splits[name] = true;
return true;
}
return false;
};
vars.SplitBiome = SplitBiome;
}
onStart
{
vars.splits.Clear();
}
onReset
{
vars.splits.Clear();
}
gameTime
{
return new TimeSpan(0, 0, 0, 0, current.msSinceStart);
}
start
{
return !old.isPlaying && current.isPlaying;
}
reset
{
return old.isPlaying && !current.isPlaying;
}
split
{
// Biome starts (LocationTitle appears)
if (old.titleSprite != current.titleSprite)
{
var biome = "henhouse";
if (current.progressMain >= 24)
biome = "attic";
else if (current.progressMain >= 19)
biome = "kitchen";
else if (current.progressMain >= 16)
biome = "shop";
else if (current.progressMain >= 7)
biome = "factory";
else if (current.progressMain > 3 || (current.progressMain == 3 && current.progressSub >= 2))
biome = "farm";
if (vars.SplitBiome("farm", biome))
return true;
if (!settings["farm_end"] && vars.SplitBiome("factory", biome))
return true;
if (!settings["factory_end"] && vars.SplitBiome("shop", biome))
return true;
if (!settings["shop_end"] && vars.SplitBiome("kitchen", biome))
return true;
if (vars.SplitBiome("attic", biome))
return true;
}
// Farm End
if (vars.SplitDistance("farm_end", 6.05f, 146.61f, 0.30f, 0.5f, false))
return true;
// Factory End
if (vars.SplitDistance("factory_end", 27.31f, 367.67f, -28.26f, 6f, true))
return true;
// Shop End
if (vars.SplitDistance("shop_end", 15.58f, 581.03f, 13.67f, 1f, true))
return true;
// Rooster Start
if (vars.SplitDistance("rooster", 27.12f, 873.53f, -0.57f, 5.5f, false))
return true;
// Finish Game
if (!old.finishedGame && current.finishedGame)
return true;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment