diff --git a/DevourClient/ClientMain.cs b/DevourClient/ClientMain.cs index 4059fa9..6cfb68e 100644 --- a/DevourClient/ClientMain.cs +++ b/DevourClient/ClientMain.cs @@ -3,6 +3,7 @@ using MelonLoader; using System.Threading.Tasks; using Il2CppPhoton.Bolt; using UnityEngine; +using Il2Cpp; namespace DevourClient { @@ -59,6 +60,7 @@ namespace DevourClient static bool need_fly_reset = false; static bool crosshair = false; static bool in_game_cache = false; + static bool should_show_start_message = true; static Texture2D crosshairTexture = default!; public void Start() @@ -79,6 +81,8 @@ namespace DevourClient MelonCoroutines.Start(Helpers.Entities.GetGhosts()); MelonCoroutines.Start(Helpers.Entities.GetBoars()); MelonCoroutines.Start(Helpers.Entities.GetCorpses()); + MelonCoroutines.Start(Helpers.Entities.GetCrows()); + MelonCoroutines.Start(Helpers.Entities.GetLumps()); MelonCoroutines.Start(Helpers.Entities.GetAzazels()); MelonCoroutines.Start(Helpers.Entities.GetAllPlayers()); } @@ -222,6 +226,12 @@ namespace DevourClient public void OnGUI() { + if (should_show_start_message) + { + if (DevourClient.Hacks.Misc.ShowMessageBox("Welcome to DevourClient.\n\nPress the INS key to open the menu.") == 0) + should_show_start_message = false; + } + GUI.backgroundColor = Color.grey; GUI.skin.button.normal.background = GUIHelper.MakeTex(2, 2, Color.black); @@ -334,6 +344,22 @@ namespace DevourClient Render.Render.DrawNameESP(corpse.transform.position, "Corpse", new Color(1.0f, 0.0f, 0.0f, 1.0f)); } } + + foreach (Il2Cpp.CrowBehaviour crow in Helpers.Entities.Crows) + { + if (crow != null) + { + Render.Render.DrawNameESP(crow.transform.position, "Crow", new Color(1.0f, 0.0f, 0.0f, 1.0f)); + } + } + + foreach (Il2Cpp.ManorLumpController lump in Helpers.Entities.Lumps) + { + if (lump != null) + { + Render.Render.DrawNameESP(lump.transform.position, "Lump", new Color(1.0f, 0.0f, 0.0f, 1.0f)); + } + } } if (azazel_esp || azazel_snapline || azazel_skel_esp) @@ -517,6 +543,11 @@ namespace DevourClient BoltNetwork.Instantiate(BoltPrefabs.AzazelNathan, Player.GetPlayer().transform.position, Quaternion.identity); } + if (GUI.Button(new Rect(Settings.Settings.x + 360, Settings.Settings.y + 180, 60, 25), "April") && Player.IsInGameOrLobby() && BoltNetwork.IsServer) + { + BoltNetwork.Instantiate(BoltPrefabs.AzazelApril, Player.GetPlayer().transform.position, Quaternion.identity); + } + // demon if (GUI.Button(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 220, 60, 25), "Ghost") && Player.IsInGameOrLobby() && BoltNetwork.IsServer) @@ -544,6 +575,16 @@ namespace DevourClient BoltNetwork.Instantiate(BoltPrefabs.Corpse, Player.GetPlayer().transform.position, Quaternion.identity); } + if (GUI.Button(new Rect(Settings.Settings.x + 360, Settings.Settings.y + 220, 60, 25), "Crow") && BoltNetwork.IsServer && Player.IsInGameOrLobby()) + { + BoltNetwork.Instantiate(BoltPrefabs.Crow, Player.GetPlayer().transform.position, Quaternion.identity); + } + + if (GUI.Button(new Rect(Settings.Settings.x + 430, Settings.Settings.y + 220, 60, 25), "Lump") && BoltNetwork.IsServer && Player.IsInGameOrLobby()) + { + BoltNetwork.Instantiate(BoltPrefabs.ManorLump, Player.GetPlayer().transform.position, Quaternion.identity); + } + // Animal if (GUI.Button(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 260, 60, 25), "Rat")) @@ -588,7 +629,7 @@ namespace DevourClient { Hacks.Misc.CarryObject("SurvivalPig"); } - } + } } private static void MapSpecificTab() @@ -731,6 +772,94 @@ namespace DevourClient Hacks.Misc.DespawnCorpses(); } break; + + case "Manor": + if (GUI.Button(new Rect(Settings.Settings.x + 190, Settings.Settings.y + 70, 150, 30), "TP to Azazel")) + { + try + { + Il2Cpp.NolanBehaviour nb = Player.GetPlayer(); + + nb.TeleportTo(Helpers.Map.GetAzazel().transform.position, Quaternion.identity); + } + catch + { + MelonLogger.Msg("Azazel not found !"); + } + } + + if (GUI.Button(new Rect(Settings.Settings.x + 190, Settings.Settings.y + 110, 150, 30), "Despawn Crows")) + { + Hacks.Misc.DespawnCrows(); + } + + if (GUI.Button(new Rect(Settings.Settings.x + 190, Settings.Settings.y + 150, 150, 30), "Despawn Lumps")) + { + Hacks.Misc.DespawnLumps(); + } + + if (GUI.Button(new Rect(Settings.Settings.x + 370, Settings.Settings.y + 70, 150, 30), "Switch realm")) + { + Il2Cpp.NolanBehaviour nb = Player.GetPlayer(); + Vector3 pos = nb.transform.position; + + ManorDeadRealmTrigger realm = Il2Cpp.ManorDeadRealmTrigger.FindObjectOfType(); + if (realm == null) + { + MelonLogger.Warning("realm was null."); + return; + } + + if (realm.IsInDeadRealm) + { + // normal dimension + pos.x += 150f;// -10.216758f; + //pos.y = 0.009999979f; + //pos.z = -7.632657f; + + } + else + { + // other dimension + pos.x -= 150f;//-160.03688f; + //pos.y = 0.010014875f; + //pos.z = -7.5686994f; + } + + nb.locomotion.SetPosition(pos, false); + } + + if (GUI.Button(new Rect(Settings.Settings.x + 370, Settings.Settings.y + 110, 150, 30), "Switch realm (house)")) + { + Il2Cpp.NolanBehaviour nb = Player.GetPlayer(); + Vector3 pos = nb.transform.position; + + ManorDeadRealmTrigger realm = Il2Cpp.ManorDeadRealmTrigger.FindObjectOfType(); + if (realm == null) + { + MelonLogger.Warning("realm was null."); + return; + } + + if (realm.IsInDeadRealm) + { + // normal dimension + pos.x = -10.216758f; + pos.y = 0.009999979f; + pos.z = -7.632657f; + + } + else + { + // other dimension + pos.x = -160.03688f; + pos.y = 0.010014875f; + pos.z = -7.5686994f; + } + + nb.locomotion.SetPosition(pos, false); + } + break; } // load map @@ -760,6 +889,12 @@ namespace DevourClient { Helpers.Map.LoadMap("Slaughterhouse"); } + + if (GUI.Button(new Rect(Settings.Settings.x + 560, Settings.Settings.y + 240, 100, 30), "Manor") && BoltNetwork.IsServer) + { + Helpers.Map.LoadMap("Manor"); + } + } private static void EspTab() @@ -916,13 +1051,36 @@ namespace DevourClient } } + if (GUILayout.Button("Shovel")) + { + if (BoltNetwork.IsServer && !Player.IsInGame()) + { + BoltNetwork.Instantiate(BoltPrefabs.SurvivalSpade, Player.GetPlayer().transform.position, Quaternion.identity); + } + else + { + Hacks.Misc.CarryObject("SurvivalSpade"); + } + } + + if (GUILayout.Button("Cake")) + { + if (BoltNetwork.IsServer && !Player.IsInGame()) + { + BoltNetwork.Instantiate(BoltPrefabs.SurvivalCake, Player.GetPlayer().transform.position, Quaternion.identity); + } + else + { + Hacks.Misc.CarryObject("SurvivalCake"); + } + } GUILayout.EndScrollView(); GUILayout.EndVertical(); GUILayout.BeginVertical(); - GUILayout.Label("Rituel Objects"); + GUILayout.Label("Ritual Objects"); Settings.Settings.rituelObjectsScrollPosition = GUILayout.BeginScrollView(Settings.Settings.rituelObjectsScrollPosition, GUILayout.Width(220), GUILayout.Height(190)); @@ -987,6 +1145,30 @@ namespace DevourClient Hacks.Misc.CarryObject("RitualBook-Active-1"); } } + + if (GUILayout.Button("Dirty head")) + { + if (BoltNetwork.IsServer && !Player.IsInGame()) + { + BoltNetwork.Instantiate(BoltPrefabs.SurvivalHead, Player.GetPlayer().transform.position, Quaternion.identity); + } + else + { + Hacks.Misc.CarryObject("SurvivalHead"); + } + } + + if (GUILayout.Button("Clean head")) + { + if (BoltNetwork.IsServer && !Player.IsInGame()) + { + BoltNetwork.Instantiate(BoltPrefabs.SurvivalCleanHead, Player.GetPlayer().transform.position, Quaternion.identity); + } + else + { + Hacks.Misc.CarryObject("SurvivalCleanHead"); + } + } GUILayout.EndScrollView(); GUILayout.EndVertical(); @@ -1183,6 +1365,22 @@ namespace DevourClient } } + if (GUILayout.Button("SurvivalApril")) + { + if (BoltNetwork.IsServer) + { + BoltNetwork.Instantiate(BoltPrefabs.SurvivalApril, Player.GetPlayer().transform.position, Quaternion.identity); + } + } + + if (GUILayout.Button("SurvivalFrank")) + { + if (BoltNetwork.IsServer) + { + BoltNetwork.Instantiate(BoltPrefabs.SurvivalFrank, Player.GetPlayer().transform.position, Quaternion.identity); + } + } + if (GUILayout.Button("SurvivalRose")) { if (BoltNetwork.IsServer) @@ -1247,6 +1445,14 @@ namespace DevourClient } } + if (GUILayout.Button("Miror")) + { + if (BoltNetwork.IsServer) + { + BoltNetwork.Instantiate(BoltPrefabs.ManorMirror, Player.GetPlayer().transform.position, Quaternion.identity); + } + } + GUILayout.EndScrollView(); GUILayout.EndVertical(); GUILayout.EndHorizontal(); diff --git a/DevourClient/Hacks/Misc.cs b/DevourClient/Hacks/Misc.cs index 806a659..4e8eff1 100644 --- a/DevourClient/Hacks/Misc.cs +++ b/DevourClient/Hacks/Misc.cs @@ -99,7 +99,24 @@ namespace DevourClient.Hacks } break; - default: + case "Manor": + Il2Cpp.MapController mapc = UnityEngine.Object.FindObjectOfType(); + if (!mapc) + { + return; + } + + if (burnAll) + { + mapc.SetProgressTo(10); + } + else + { + mapc.SetProgressTo(mapc.GetMapProgress() + 1); + } + break; + + default: Il2Cpp.SurvivalObjectBurnController _altar = UnityEngine.Object.FindObjectOfType(); if (!_altar) { return; @@ -432,11 +449,36 @@ namespace DevourClient.Hacks } } - public static void ShowMessageBox(string message) + public static void DespawnCrows() + { + foreach (Il2Cpp.CrowBehaviour crow in Helpers.Entities.Crows) + { + if (crow != null) + { + crow.Despawn(); + } + } + } + + public static void DespawnLumps() + { + foreach (Il2Cpp.ManorLumpController lump in Helpers.Entities.Lumps) + { + if (lump != null) + { + lump.Dissolve(); + } + } + } + + public static int ShowMessageBox(string message) { //not used, might be useful, some day Il2CppHorror.Menu menu = UnityEngine.Object.FindObjectOfType(); + if (menu == null) + return 1; menu.ShowMessageModal(message); + return 0; } public static void PlaySound() diff --git a/DevourClient/Hacks/Unlock.cs b/DevourClient/Hacks/Unlock.cs index 5242eb0..49da7f4 100644 --- a/DevourClient/Hacks/Unlock.cs +++ b/DevourClient/Hacks/Unlock.cs @@ -1,17 +1,30 @@ -namespace DevourClient.Hacks +using Il2CppSteamworks; + +namespace DevourClient.Hacks { public class Unlock { public static void Achievements() { - Il2Cpp.AchievementHelpers ah = UnityEngine.Object.FindObjectOfType(); - - string[] achievements = {"ACH_ALL_CLIPBOARDS_READ", "ACH_ALL_NOTES_READ", "ACH_UNLOCKED_CAGE", "ACH_UNLOCKED_ATTIC_CAGE", "ACH_CALMED_ANNA", "ACH_FRIED_RAT", "ACH_BURNT_GOAT", "ACH_KNOCKED_OUT_BY_ANNA", "ACH_KNOCKOUT_OUT_BY_DEMON", "ACH_KNOCKED_OUT_IN_HIDING", "STAT_NUM_BLEACH_USED", "ACH_WON_SP", "ACH_WIN_NIGHTMARE", "ACH_WON_HARD_SP", "ACH_WON_COOP", "ACH_WON_HARD", "ACH_WIN_NIGHTMARE_SP", "ACH_LOST", "ACH_NEVER_KNOCKED_OUT", "ACH_ONLY_ONE_KNOCKED_OUT", "ACH_WON_HARD_NO_MEDKITS", "ACH_WON_NO_MEDKITS", "ACH_WON_NO_BATTERIES", "ACH_WON_NIGHTMARE_NO_MEDKITS", "ACH_WON_NO_KNOCKOUT_COOP", "ACH_WON_HARD_NO_BATTERIES", "ACH_WON_HARD_{0}", "ACH_WON_NIGHTMARE_{0}", "ACH_WON_NIGHTMARE_NO_BATTERIES", "ACH_SURVIVED_TO_7_GOATS", "ACH_SURVIVED_TO_5_GOATS", "ACH_SURVIVED_TO_3_GOATS", "ACH_WON_Manor_NIGHTMARE_SP", "ACH_WON_NIGHTMARE_", "ACH_WON_MANOR_NIGHTMARE_SP", "ACH_WON_TOWN_HARD", "ACH_WON_INN_HARD_SP", "ACH_ALL_FEATHERS", "ACH_WON_SLAUGHTERHOUSE_COOP", "ACH_ALL_BARBED_WIRES", "ACH_WON_INN_HARD", "ACH_WON_MOLLY_HARD", "ACH_ALL_HORSESHOES", "ACH_WON_MOLLY_HARD_SP", "ACH_WON_TOWN_NIGHTMARE_SP", "ACH_100_GASOLINE_USED", "ACH_WON_INN_SP", "ACH_WON_MANOR_HARD_SP", "ACH_WON_MOLLY_SP", "ACH_1000_PIGS_DESTROYED", "ACH_1000_MIRRORS_DESTROYED", "ACH_100_EGGS_DESTROYED", "ACH_WON_SLAUGHTERHOUSE_HARD_SP", "ACH_WON_TOWN_COOP", "ACH_100_FUSES_USED", "ACH_WON_MOLLY_COOP", "ACH_WON_MOLLY_NIGHTMARE_SP", "ACH_1000_BOOKS_DESTROYED", "ACH_ALL_PATCHES", "ACH_WON_SLAUGHTERHOUSE_SP", "ACH_WON_TOWN_NIGHTMARE", "ACH_WON_INN_COOP", "ACH_ALL_CHERRY_BLOSSOM", "ACH_WON_TOWN_HARD_SP", "ACH_WON_MOLLY_NIGHTMARE", "ACH_WON_INN_NIGHTMARE_SP", "ACH_ALL_ROSES", "ACH_WON_TOWN_SP", "ACH_WON_SLAUGHTERHOUSE_NIGHTMARE_SP", "ACH_WON_INN_NIGHTMARE", "ACH_WON_MANOR_COOP", "ACH_WON_SLAUGHTERHOUSE_HARD", "ACH_WON_SLAUGHTERHOUSE_NIGHTMARE", "ACH_WON_MANOR_HARD", "ACH_WON_MANOR_NIGHTMARE", "ACH_WON_MANOR_SP", }; + //Il2Cpp.AchievementHelpers ah = UnityEngine.Object.FindObjectOfType(); + string[] achievements = { "ACH_WON_Manor_NIGHTMARE_SP", "ACH_WON_NIGHTMARE_", "ACH_WON_TOWN_HARD", "ACH_WON_MANOR_NIGHTMARE_SP", "ACH_WON_INN_HARD_SP", "ACH_WON_SLAUGHTERHOUSE_COOP", "ACH_ALL_FEATHERS", "ACH_WON_INN_HARD", "ACH_ALL_BARBED_WIRES", "ACH_ALL_HORSESHOES", "ACH_WON_MOLLY_HARD", "ACH_WON_TOWN_NIGHTMARE_SP", "ACH_WON_MOLLY_HARD_SP", "ACH_WON_INN_SP", "ACH_100_GASOLINE_USED", "ACH_WON_MANOR_HARD_SP", "ACH_WON_MOLLY_SP", "ACH_100_EGGS_DESTROYED", "ACH_1000_PIGS_DESTROYED", "ACH_WON_TOWN_COOP", "ACH_WON_SLAUGHTERHOUSE_HARD_SP", "ACH_WON_MOLLY_COOP", "ACH_100_FUSES_USED", "ACH_1000_BOOKS_DESTROYED", "ACH_WON_MOLLY_NIGHTMARE_SP", "ACH_WON_SLAUGHTERHOUSE_SP", "ACH_ALL_PATCHES", "ACH_WON_INN_COOP", "ACH_WON_TOWN_NIGHTMARE", "ACH_ALL_CHERRY_BLOSSOM", "ACH_WON_MOLLY_NIGHTMARE", "ACH_WON_TOWN_HARD_SP", "ACH_ALL_ROSES", "ACH_WON_INN_NIGHTMARE_SP", "ACH_1000_HEADS_BURIED", "ACH_WON_SLAUGHTERHOUSE_NIGHTMARE_SP", "ACH_WON_TOWN_SP", "ACH_WON_INN_NIGHTMARE", "ACH_WON_SLAUGHTERHOUSE_HARD", "ACH_WON_MANOR_COOP", "ACH_WON_MANOR_HARD", "ACH_WON_SLAUGHTERHOUSE_NIGHTMARE", "ACH_WON_MANOR_SP", "ACH_WON_MANOR_NIGHTMARE", "ACH_ALL_CLIPBOARDS_READ", "ACH_ALL_NOTES_READ", "ACH_UNLOCKED_ATTIC_CAGE", "ACH_UNLOCKED_CAGE", "ACH_CALMED_ANNA", "ACH_FRIED_RAT", "ACH_BURNT_GOAT", "ACH_KNOCKED_OUT_BY_ANNA", "ACH_KNOCKOUT_OUT_BY_DEMON", "ACH_KNOCKED_OUT_IN_HIDING", "STAT_NUM_BLEACH_USED", "ACH_WON_SP", "ACH_WIN_NIGHTMARE", "ACH_WON_HARD_SP", "ACH_WON_COOP", "ACH_WON_HARD", "ACH_WIN_NIGHTMARE_SP", "ACH_LOST", "ACH_NEVER_KNOCKED_OUT", "ACH_ONLY_ONE_KNOCKED_OUT", "ACH_WON_HARD_NO_MEDKITS", "ACH_WON_NO_MEDKITS", "ACH_WON_NO_BATTERIES", "ACH_WON_NIGHTMARE_NO_MEDKITS", "ACH_WON_NO_KNOCKOUT_COOP", "ACH_WON_HARD_NO_BATTERIES", "ACH_WON_HARD_{0}", "ACH_WON_NIGHTMARE_{0}", "ACH_WON_NIGHTMARE_NO_BATTERIES", "ACH_SURVIVED_TO_7_GOATS", "ACH_SURVIVED_TO_5_GOATS", "ACH_SURVIVED_TO_3_GOATS", }; + string[] stats = { "STAT_ROSES_COLLECTED", "STAT_BARBED_WIRES_COLLECTED", "STAT_HORSESHOES_COLLECTED", "STAT_PATCHES_COLLECTED", "STAT_CHERRY_BLOSSOM_COLLECTED", "STAT_FEATHERS_COLLECTED", "STAT_NUM_CORPSES_FRIED", "STAT_NUM_GHOSTS_FRIED", "STAT_NUM_MOLLY_CALMED_DOWN", "STAT_NUM_ANNA_CALMED_DOWN", "STAT_NUM_ANNA_STAGGERS", "STAT_NUM_NATHAN_STAGGERS", "STAT_NUM_APRIL_STAGGERS", "STAT_NUM_ZARA_STAGGERS", "STAT_NUM_SAM_STAGGERS", "STAT_NUM_MOLLY_STAGGERS", "STAT_NUM_CROWS_FRIED", "STAT_NUM_BOARS_FRIED", "STAT_NUM_SPIDERS_FRIED", "STAT_NUM_INMATES_FRIED", "STAT_NUM_DEMONS_FRIED", "STAT_NUM_KNOCKOUTS", "STAT_KNOCKOUTS_BY_", "STAT_NUM_BOOKS_CURSED", "STAT_NUM_ALCOHOL_USED", "STAT_NUM_BLEACH_USED", "STAT_NUM_HEADS_BURIED", "STAT_POOPS_SEARCHED", "STAT_EXP", "STAT_NUM_PIGS_DESTROYED", "STAT_NUM_WON_HARD", "STAT_NUM_WON_NIGHTMARE", "STAT_NUM_WON", "STAT_NUM_BOOKS_DESTROYED", "STAT_NUM_GASOLINE_USED", "STAT_NUM_GOATS_DESTROYED", "STAT_NUM_RATS_DESTROYED", "STAT_NUM_FUSES_USED", "STAT_KNOCKOUTS_BY_NATHAN", "STAT_KNOCKOUTS_BY_GHOST", "STAT_INMATES", "STAT_NUM_REVIVES", "STAT_GHOSTS", "STAT_HEADS", "STAT_GOATS_LURED", "STAT_KNOCKOUTS_BY_MOLLY", "STAT_KNOCKOUTS_BY_BOAR", "STAT_NUM_EGGS_DESTROYED", "STAT_DEMONS", "STAT_KNOCKOUTS_BY_SPIDER", "STAT_CATEGORY_MISC", "STAT_BOOKS", "STAT_CATEGORY_WINS", "STAT_KNOCKOUTS_BY_SAM", "STAT_HEADS_CLEANSED", "STAT_BOARS", "STAT_KNOCKOUTS_BY_APRIL", "STAT_RATS", "STAT_HEADS_LURED", "STAT_CATEGORY_MINIONS_BANISHED", "STAT_CROWS", "STAT_PIGS", "STAT_PIGS_LURED", "STAT_CATEGORY_AZAZEL_STAGGERS", "STAT_GOATS", "STAT_KNOCKOUTS_BY_ZARA", "STAT_KNOCKOUTS_BY_DEMON", "STAT_KNOCKOUTS_BY_ANNA", "STAT_EGGS", "STAT_CATEGORY_ANIMALS_LURED", "STAT_CORPSES_FREED", "STAT_KNOCKOUTS_BY_INMATE", "STAT_SPIDERS", "STAT_RATS_LURED", "STAT_CATEGORY_RITUAL_ITEMS_DESTROYED", "STAT_CATEGORY_ITEMS_USED", "STAT_KNOCKOUTS_BY_CROW", "STAT_CATEGORY_KNOCKOUTS", "STAT_NUM_WON_NORMAL", "STAT_TOTAL", "STAT_TRASH_CANS_KICKED", }; for (int i = 0; i < achievements.Length; i++) { - ah.Unlock(achievements[i]); + Il2CppSteamworks.SteamUserStats.SetAchievement(achievements[i]); + //ah.Unlock(achievements[i]); } + + for (int j = 0; j < stats.Length; j++) + { + Il2CppSteamworks.SteamUserStats.SetStat(stats[j], 666); + } + + MelonLoader.MelonLogger.Warning("You need to restart your game for the achievements to be unlocked !!!"); + MelonLoader.MelonLogger.Warning("You need to restart your game for the achievements to be unlocked !!!"); + MelonLoader.MelonLogger.Warning("You need to restart your game for the achievements to be unlocked !!!"); + MelonLoader.MelonLogger.Warning("You need to restart your game for the achievements to be unlocked !!!"); } public static void Doors() diff --git a/DevourClient/Helpers/Map.cs b/DevourClient/Helpers/Map.cs index a62b31a..8e5582a 100644 --- a/DevourClient/Helpers/Map.cs +++ b/DevourClient/Helpers/Map.cs @@ -21,6 +21,8 @@ return "Town"; case "Slaughterhouse": return "Slaughterhouse"; + case "Manor": + return "Manor"; default: return "Menu"; } diff --git a/DevourClient/Helpers/StateHelper.cs b/DevourClient/Helpers/StateHelper.cs index 8695f65..af82bb4 100644 --- a/DevourClient/Helpers/StateHelper.cs +++ b/DevourClient/Helpers/StateHelper.cs @@ -187,6 +187,8 @@ namespace DevourClient.Helpers public static Il2Cpp.SurvivalAzazelBehaviour[] Azazels = default!; public static Il2Cpp.BoarBehaviour[] Boars = default!; public static Il2Cpp.CorpseBehaviour[] Corpses = default!; + public static Il2Cpp.CrowBehaviour[] Crows = default!; + public static Il2Cpp.ManorLumpController[] Lumps = default!; public static IEnumerator GetLocalPlayer() { @@ -333,6 +335,28 @@ namespace DevourClient.Helpers } } + public static IEnumerator GetCrows() + { + while (true) + { + Crows = Il2Cpp.CrowBehaviour.FindObjectsOfType(); + + // Wait 5 seconds before caching objects again. + yield return new WaitForSeconds(5f); + } + } + + public static IEnumerator GetLumps() + { + while (true) + { + Lumps = Il2Cpp.ManorLumpController.FindObjectsOfType(); + + // Wait 5 seconds before caching objects again. + yield return new WaitForSeconds(5f); + } + } + public static IEnumerator GetAzazels() { /* diff --git a/README.md b/README.md index 1f088e7..c334b70 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ In order to get all of this working you need to generate the DevourClient.dll fi * `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2Cppudpkit.platform.photon.dll` * `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.AnimationModule.dll` * `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\UnityEngine.PhysicsModule.dll` +* `C:\Program Files (x86)\Steam\steamapps\common\Devour\MelonLoader\Il2CppAssemblies\Il2Cppcom.rlabrecque.steamworks.net.dll` 7. Build the solutions in Release | Any CPU ## Contact diff --git a/Screenshots/menu.png b/Screenshots/menu.png index 729351e..403c3db 100644 Binary files a/Screenshots/menu.png and b/Screenshots/menu.png differ diff --git a/Scripts/generate_achievements.py b/Scripts/generate_achievements.py index f53b154..19e47d6 100644 --- a/Scripts/generate_achievements.py +++ b/Scripts/generate_achievements.py @@ -11,17 +11,26 @@ import json f = open('script.json') data = json.load(f) -o = open('out.cs', 'a') +o = open('out.cs', 'w') o.write("string[] achievements = {") -tot = 0 +tot_ach = 0 for i in data['ScriptString']: v = i["Value"] if "ACH_" in v : o.write('"'+v+'", ') - tot+=1 + tot_ach+=1 +o.write("};\n") -o.write("};") -print(f"{tot} achievements") +tot_stat = 0 +o.write("string[] stats = {") +for j in data['ScriptString']: + v = j["Value"] + if "STAT_" in v : + o.write('"'+v+'", ') + tot_stat+=1 +o.write("};\n") + +print(f"{tot_ach} achievements, {tot_stat} stats") # Closing files o.close()