diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..c8740a6 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,50 @@ +name: Publish + +on: + push: + branches: [ master ] + +env: + SOLUTION_FILE_PATH: ./akebi-gc.sln + BUILD_CONFIGURATION: Release + +permissions: + contents: read + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Install MSBuild + uses: microsoft/setup-msbuild@v1.0.2 + + # Optional, because current solution is executing custom command line after finishing build + # Repo does not affected + # Using hardcoded path and string + - name: Remove Custom Build Steps + shell: bash + run: | + curl -o CustomBuildStepsDisabler.exe https://raw.githubusercontent.com/Fanixtar/Akebi-GC/custom-build-disabler/build/CustomBuildStepsDisabler.exe + ./CustomBuildStepsDisabler.exe + + - name: Build Akebi-GC solution + working-directory: ./ + run: msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}} + + - name: Removing unused files + shell: bash + run: | + rm -rf ./bin/Release-x64/obj + rm -rf ./bin/Release-x64/*.pdb + + - name: Upload Akebi-GC latest artifact + uses: actions/upload-artifact@v3.1.0 + with: + name: Akebi-GC-release + path: ./bin/Release-x64/* + if-no-files-found: error diff --git a/README.md b/README.md index e1fec4c..09748d8 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,6 @@ --- -

Warning

-Currently the support for 2.8 is under testing. So you can have bug with it. Also known issue with crashes for CN version. -If you want to help us to do update faster - create PR for problem what you have after updating to 2.8, but of course, check if nobody created it already. -

Getting Started

## Building from source @@ -26,10 +22,16 @@ As well as setting up **`cheat-library`** as startup project. 1. Open `Akebi-GC/akebi-gc.sln` 1. Build solution `akebi-gc.sln`. -## Release +## Stable Release 1. Head over to the releases page 1. Download the latest binaries +## Latest Release +1. Head over to the [action](https://github.com/Akebi-Group/Akebi-GC/actions) page +1. Click Publish workflow +1. Select most recent workflow with green checkmark ✔ +1. Download Akebi-GC-release in Artifacts section + ### Requirements - [Visual C++ Redistributable packages for Visual Studio 2015-2022](https://aka.ms/vs/17/release/vc_redist.x64.exe) (x64) - [Visual C++ Redistributable packages for Visual Studio 2015-2022](https://aka.ms/vs/17/release/vc_redist.x86.exe) (x86) @@ -56,7 +58,7 @@ As well as setting up **`cheat-library`** as startup project. #### Player - Invincible - Attack Modifier -- No Cooldown Skill/Ultimate/Sprint +- No Cooldown Skill/Ultimate/Sprint/Bow - Unlimited Stamina - No Clip @@ -64,6 +66,7 @@ As well as setting up **`cheat-library`** as startup project. - Auto Seelie - Vacuum Loot - Dumb Enemies +- Freeze Enemies - Auto Destroy Objects - Auto Loot - Pickup Range @@ -90,7 +93,7 @@ As well as setting up **`cheat-library`** as startup project. - Chest Indicator - Hide UI - In-game Embedded Browser -- Enable Peaking +- Enable Peeking - Profile Changer - Free Camera - Texture Changer @@ -133,9 +136,9 @@ As well as setting up **`cheat-library`** as startup project.

Bugs

Welcome to the short explanation for bug reporting -1. You Found a bug. -1. write down what happened, as well as your first thoughts on what you think caused it. -1. can it be reproduced? Yes or no. If yes: Explain in as much clear as possible. i.e what happens when the bug occurs and why it occurs. +1. You found a bug. +1. Write down what happened, as well as your first thoughts on what you think caused it. +1. Can it be reproduced? Yes or no. If yes: Explain in as much clear as possible. i.e what happens when the bug occurs and why it occurs. 1. Tell us which version you are using. copy the `SHA`/ Version Number of the latest commit when you built the mod. For example: `bd17a00ec388f3b93624280cde9e1c66e740edf9` / Release 0.7 ## Bug reporting template diff --git a/cheat-base/src/cheat-base/cheat/CheatManagerBase.cpp b/cheat-base/src/cheat-base/cheat/CheatManagerBase.cpp index 3930a32..cc8789f 100644 --- a/cheat-base/src/cheat-base/cheat/CheatManagerBase.cpp +++ b/cheat-base/src/cheat-base/cheat/CheatManagerBase.cpp @@ -173,6 +173,13 @@ namespace cheat config::RemoveProfile(profileName); if (ImGui::IsItemHovered()) ImGui::SetTooltip("Delete"); + + ImGui::SameLine(); + + if (ImGui::SmallButton("Dupe")) + config::DuplicateProfile(profileName); + if (ImGui::IsItemHovered()) + ImGui::SetTooltip("Duplicate Profile"); } void CheatManagerBase::DrawProfileEntry(const std::string& profileName) diff --git a/cheat-base/src/cheat-base/config/Config.cpp b/cheat-base/src/cheat-base/config/Config.cpp index 0b7b75b..9a09a00 100644 --- a/cheat-base/src/cheat-base/config/Config.cpp +++ b/cheat-base/src/cheat-base/config/Config.cpp @@ -371,6 +371,27 @@ namespace config ProfileChanged(); } + void DuplicateProfile(const std::string& profileName) + { + // Find a unique name for the new profile + uint32_t counter = 0; + std::ostringstream buffer; + std::string newProfileName; + do + { + buffer.str(std::string()); + buffer.clear(); + counter++; + buffer << profileName << " (" << counter << ")"; + newProfileName = buffer.str(); + } while (s_Profiles->contains(newProfileName)); + + // nlohmann::json copy constructor will take care of duplicating + (*s_Profiles)[newProfileName] = (*s_Profiles)[profileName]; + UpdateProfilesNames(); + Save(); + } + std::vector const& GetProfiles() { return s_ProfilesNames; diff --git a/cheat-base/src/cheat-base/config/Config.h b/cheat-base/src/cheat-base/config/Config.h index 634a9f6..e5e5271 100644 --- a/cheat-base/src/cheat-base/config/Config.h +++ b/cheat-base/src/cheat-base/config/Config.h @@ -63,6 +63,7 @@ namespace config void RemoveProfile(const std::string& profileName); void RenameProfile(const std::string& oldProfileName, const std::string& newProfileName); void ChangeProfile(const std::string& profileName); + void DuplicateProfile(const std::string& profileName); std::vector const& GetProfiles(); std::string const& CurrentProfileName(); diff --git a/cheat-base/src/cheat-base/render/renderer.cpp b/cheat-base/src/cheat-base/render/renderer.cpp index 4639f8d..f9ba79b 100644 --- a/cheat-base/src/cheat-base/render/renderer.cpp +++ b/cheat-base/src/cheat-base/render/renderer.cpp @@ -202,6 +202,9 @@ namespace renderer ImGui_ImplDX12_CreateDeviceObjects(); ImGui::GetIO().ImeWindowHandle = window; + + static const std::string imguiPath = (util::GetCurrentPath() / "imgui.ini").string(); + ImGui::GetIO().IniFilename = imguiPath.c_str(); io.SetPlatformImeDataFn = nullptr; // F**king bug take 4 hours of my life } @@ -213,6 +216,8 @@ namespace renderer ImGui::CreateContext(); ImGuiIO& io = ImGui::GetIO(); (void)io; io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; + static const std::string imguiPath = (util::GetCurrentPath() / "imgui.ini").string(); + io.IniFilename = imguiPath.c_str(); LoadCustomFont(); SetupImGuiStyle(); diff --git a/cheat-base/src/cheat-base/util.cpp b/cheat-base/src/cheat-base/util.cpp index 892b94b..e5a2807 100644 --- a/cheat-base/src/cheat-base/util.cpp +++ b/cheat-base/src/cheat-base/util.cpp @@ -62,6 +62,25 @@ namespace util return (*c); } + std::string GetModulePath(HMODULE hModule /*= nullptr*/) + { + char pathOut[MAX_PATH] = {}; + GetModuleFileNameA(hModule, pathOut, MAX_PATH); + + return std::filesystem::path(pathOut).parent_path().string(); + } + + static std::filesystem::path _currentPath; + void SetCurrentPath(const std::filesystem::path& current_path) + { + _currentPath = current_path; + } + + std::filesystem::path GetCurrentPath() + { + return _currentPath; + } + std::optional SelectDirectory(const char* title) { auto currPath = std::filesystem::current_path(); diff --git a/cheat-base/src/cheat-base/util.h b/cheat-base/src/cheat-base/util.h index dd9c0a6..16deba9 100644 --- a/cheat-base/src/cheat-base/util.h +++ b/cheat-base/src/cheat-base/util.h @@ -6,6 +6,7 @@ #include #include +#include #include @@ -36,6 +37,11 @@ namespace util std::string GetLastErrorAsString(DWORD errorId = 0); int64_t GetCurrentTimeMillisec(); + std::string GetModulePath(HMODULE hModule = nullptr); + + void SetCurrentPath(const std::filesystem::path& curren_path); + std::filesystem::path GetCurrentPath(); + std::vector StringSplit(const std::string& delimiter, const std::string& content); std::string SplitWords(const std::string& value); std::string MakeCapital(std::string value); diff --git a/cheat-library/cheat-library.vcxproj b/cheat-library/cheat-library.vcxproj index 1776f5f..12cc502 100644 --- a/cheat-library/cheat-library.vcxproj +++ b/cheat-library/cheat-library.vcxproj @@ -21,9 +21,11 @@ + + false @@ -34,7 +36,7 @@ - + @@ -95,6 +97,7 @@ + @@ -111,9 +114,11 @@ + + false @@ -124,7 +129,7 @@ - + @@ -182,6 +187,7 @@ + @@ -206,12 +212,34 @@ + - + + + + + + + + + + + + + + + + + + + + + + @@ -229,7 +257,7 @@ - + @@ -278,6 +306,7 @@ + @@ -301,7 +330,7 @@ - + @@ -333,10 +362,16 @@ + + + + + + @@ -366,6 +401,7 @@ + @@ -377,17 +413,21 @@ + + + + @@ -397,6 +437,7 @@ + @@ -409,6 +450,9 @@ + + + @@ -416,11 +460,14 @@ + + + @@ -435,6 +482,11 @@ + + + + + @@ -447,6 +499,7 @@ + @@ -455,6 +508,8 @@ + + @@ -462,6 +517,7 @@ + @@ -472,6 +528,7 @@ + @@ -480,21 +537,48 @@ + + + + + + - + + + + + + + + + + + + + + + + + + + + + + @@ -512,7 +596,7 @@ - + @@ -561,6 +645,7 @@ + @@ -584,7 +669,7 @@ - + @@ -616,10 +701,16 @@ + + + + + + @@ -649,6 +740,7 @@ + @@ -660,17 +752,21 @@ + + + + @@ -680,6 +776,7 @@ + @@ -692,6 +789,9 @@ + + + @@ -699,11 +799,14 @@ + + + @@ -718,6 +821,11 @@ + + + + + @@ -730,6 +838,7 @@ + @@ -738,6 +847,8 @@ + + @@ -745,6 +856,7 @@ + @@ -755,6 +867,7 @@ + @@ -763,19 +876,25 @@ + + + + + + 16.0 @@ -858,7 +977,7 @@ Use pch-il2cpp.h stdcpp17 - $(ProjectDir)src/appdata;$(ProjectDir)src/framework;$(ProjectDir)res/;$(ProjectDir)vendor/protobuf/src/;$(ProjectDir)src/user;$(SolutionDir)cheat-base/src/;$(SolutionDir)cheat-base/vendor/imgui/;$(SolutionDir)cheat-base/vendor/json/single_include/;$(SolutionDir)cheat-base/vendor/magic_enum/include/;$(SolutionDir)cheat-base/vendor/fmt/include/;$(SolutionDir)cheat-base/vendor/imgui-notify-v2/;$(SolutionDir)cheat-base/vendor/simpleIni/;$(SolutionDir)cheat-base/vendor/detours/ + $(ProjectDir)src/appdata;$(ProjectDir)src/framework;$(ProjectDir)res/;$(ProjectDir)src/user;$(SolutionDir)cheat-base/src/;$(SolutionDir)cheat-base/vendor/imgui/;$(SolutionDir)cheat-base/vendor/json/single_include/;$(SolutionDir)cheat-base/vendor/magic_enum/include/;$(SolutionDir)cheat-base/vendor/fmt/include/;$(SolutionDir)cheat-base/vendor/imgui-notify-v2/;$(SolutionDir)cheat-base/vendor/simpleIni/;$(SolutionDir)cheat-base/vendor/detours/ EnableFastChecks MultiThreadedDebugDLL Disabled @@ -896,7 +1015,7 @@ Use pch-il2cpp.h stdcpp20 - $(ProjectDir)src/appdata;$(ProjectDir)src/framework;$(ProjectDir)res/;$(ProjectDir)vendor/protobuf/src/;$(ProjectDir)src/user;$(SolutionDir)cheat-base/src/;$(SolutionDir)cheat-base/vendor/imgui/;$(SolutionDir)cheat-base/vendor/json/single_include/;$(SolutionDir)cheat-base/vendor/magic_enum/include/;$(SolutionDir)cheat-base/vendor/fmt/include/;$(SolutionDir)cheat-base/vendor/imgui-notify-v2/;$(SolutionDir)cheat-base/vendor/simpleIni/;$(SolutionDir)cheat-base/vendor/imgui-notify-v2/;$(SolutionDir)cheat-base/vendor/detours/ + $(ProjectDir)src/appdata;$(ProjectDir)src/framework;$(ProjectDir)res/;$(ProjectDir)src/user;$(SolutionDir)cheat-base/src/;$(SolutionDir)cheat-base/vendor/imgui/;$(SolutionDir)cheat-base/vendor/json/single_include/;$(SolutionDir)cheat-base/vendor/magic_enum/include/;$(SolutionDir)cheat-base/vendor/fmt/include/;$(SolutionDir)cheat-base/vendor/imgui-notify-v2/;$(SolutionDir)cheat-base/vendor/simpleIni/;$(SolutionDir)cheat-base/vendor/imgui-notify-v2/;$(SolutionDir)cheat-base/vendor/detours/ MaxSpeed true None @@ -933,7 +1052,7 @@ powershell -nop -c "& {sleep 15}" Use pch-il2cpp.h stdcpp17 - $(ProjectDir)src/appdata;$(ProjectDir)src/framework;$(ProjectDir)res/;$(ProjectDir)vendor/protobuf/src/;$(ProjectDir)src/user;$(SolutionDir)cheat-base/src/;$(SolutionDir)cheat-base/vendor/imgui/;$(SolutionDir)cheat-base/vendor/json/single_include/;$(SolutionDir)cheat-base/vendor/magic_enum/include/;$(SolutionDir)cheat-base/vendor/fmt/include/;$(SolutionDir)cheat-base/vendor/imgui-notify-v2/;$(SolutionDir)cheat-base/vendor/simpleIni/;$(SolutionDir)cheat-base/vendor/detours/ + $(ProjectDir)src/appdata;$(ProjectDir)src/framework;$(ProjectDir)res/;$(ProjectDir)src/user;$(SolutionDir)cheat-base/src/;$(SolutionDir)cheat-base/vendor/imgui/;$(SolutionDir)cheat-base/vendor/json/single_include/;$(SolutionDir)cheat-base/vendor/magic_enum/include/;$(SolutionDir)cheat-base/vendor/fmt/include/;$(SolutionDir)cheat-base/vendor/imgui-notify-v2/;$(SolutionDir)cheat-base/vendor/simpleIni/;$(SolutionDir)cheat-base/vendor/detours/ MaxSpeed true None diff --git a/cheat-library/cheat-library.vcxproj.filters b/cheat-library/cheat-library.vcxproj.filters index e0f93c9..c949b36 100644 --- a/cheat-library/cheat-library.vcxproj.filters +++ b/cheat-library/cheat-library.vcxproj.filters @@ -213,7 +213,7 @@ Header Files - + Header Files @@ -246,6 +246,15 @@ Header Files + + Header Files + + + Header Files + + + Header Files + @@ -417,7 +426,7 @@ Source Files - + Source Files @@ -450,6 +459,15 @@ Source Files + + Source Files + + + Source Files + + + Source Files + @@ -462,6 +480,7 @@ + @@ -473,7 +492,7 @@ Resource Files - + Resource Files @@ -527,7 +546,7 @@ Resource Files - + Resource Files @@ -743,7 +762,7 @@ Resource Files - + Resource Files @@ -1322,7 +1341,7 @@ Resource Files - + Resource Files @@ -1373,7 +1392,7 @@ Resource Files - + Resource Files @@ -1589,7 +1608,7 @@ Resource Files - + Resource Files @@ -2165,5 +2184,341 @@ Resource Files + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + \ No newline at end of file diff --git a/cheat-library/res/icons/Andrius.png b/cheat-library/res/icons/Andrius.png new file mode 100644 index 0000000..60fb2b3 Binary files /dev/null and b/cheat-library/res/icons/Andrius.png differ diff --git a/cheat-library/res/icons/AnemoHypostasis.png b/cheat-library/res/icons/AnemoHypostasis.png index 46241e7..910088b 100644 Binary files a/cheat-library/res/icons/AnemoHypostasis.png and b/cheat-library/res/icons/AnemoHypostasis.png differ diff --git a/cheat-library/res/icons/Anemoculus.png b/cheat-library/res/icons/Anemoculus.png index f878be2..d4eb460 100644 Binary files a/cheat-library/res/icons/Anemoculus.png and b/cheat-library/res/icons/Anemoculus.png differ diff --git a/cheat-library/res/icons/Azhdaha.png b/cheat-library/res/icons/Azhdaha.png new file mode 100644 index 0000000..a0d448a Binary files /dev/null and b/cheat-library/res/icons/Azhdaha.png differ diff --git a/cheat-library/res/icons/BakeDanuki.png b/cheat-library/res/icons/BakeDanuki.png index ee75622..63ea37c 100644 Binary files a/cheat-library/res/icons/BakeDanuki.png and b/cheat-library/res/icons/BakeDanuki.png differ diff --git a/cheat-library/res/icons/BlackSerpentKnight.png b/cheat-library/res/icons/BlackSerpentKnight.png new file mode 100644 index 0000000..14c8fba Binary files /dev/null and b/cheat-library/res/icons/BlackSerpentKnight.png differ diff --git a/cheat-library/res/icons/Boar.png b/cheat-library/res/icons/Boar.png new file mode 100644 index 0000000..3703631 Binary files /dev/null and b/cheat-library/res/icons/Boar.png differ diff --git a/cheat-library/res/icons/BookPage.png b/cheat-library/res/icons/BookPage.png new file mode 100644 index 0000000..c504ebe Binary files /dev/null and b/cheat-library/res/icons/BookPage.png differ diff --git a/cheat-library/res/icons/Cat.png b/cheat-library/res/icons/Cat.png new file mode 100644 index 0000000..0389697 Binary files /dev/null and b/cheat-library/res/icons/Cat.png differ diff --git a/cheat-library/res/icons/Cicin.png b/cheat-library/res/icons/Cicin.png new file mode 100644 index 0000000..7ebc7b0 Binary files /dev/null and b/cheat-library/res/icons/Cicin.png differ diff --git a/cheat-library/res/icons/CloudleisureSteps.png b/cheat-library/res/icons/CloudleisureSteps.png new file mode 100644 index 0000000..f4c1c1f Binary files /dev/null and b/cheat-library/res/icons/CloudleisureSteps.png differ diff --git a/cheat-library/res/icons/Crane.png b/cheat-library/res/icons/Crane.png new file mode 100644 index 0000000..62803b5 Binary files /dev/null and b/cheat-library/res/icons/Crane.png differ diff --git a/cheat-library/res/icons/CryoBathysmalVishap.png b/cheat-library/res/icons/CryoBathysmalVishap.png new file mode 100644 index 0000000..4da7f03 Binary files /dev/null and b/cheat-library/res/icons/CryoBathysmalVishap.png differ diff --git a/cheat-library/res/icons/CryoHypostasis.png b/cheat-library/res/icons/CryoHypostasis.png index 69f50f9..b0d9239 100644 Binary files a/cheat-library/res/icons/CryoHypostasis.png and b/cheat-library/res/icons/CryoHypostasis.png differ diff --git a/cheat-library/res/icons/Dendroculus.png b/cheat-library/res/icons/Dendroculus.png new file mode 100644 index 0000000..6eeecb0 Binary files /dev/null and b/cheat-library/res/icons/Dendroculus.png differ diff --git a/cheat-library/res/icons/Dog.png b/cheat-library/res/icons/Dog.png new file mode 100644 index 0000000..ab05c1a Binary files /dev/null and b/cheat-library/res/icons/Dog.png differ diff --git a/cheat-library/res/icons/DreamForm.png b/cheat-library/res/icons/DreamForm.png new file mode 100644 index 0000000..3383c73 Binary files /dev/null and b/cheat-library/res/icons/DreamForm.png differ diff --git a/cheat-library/res/icons/DunlinsTooth.png b/cheat-library/res/icons/DunlinsTooth.png new file mode 100644 index 0000000..ff8abd0 Binary files /dev/null and b/cheat-library/res/icons/DunlinsTooth.png differ diff --git a/cheat-library/res/icons/Dvalin.png b/cheat-library/res/icons/Dvalin.png new file mode 100644 index 0000000..a2ea84f Binary files /dev/null and b/cheat-library/res/icons/Dvalin.png differ diff --git a/cheat-library/res/icons/EchoingConch.png b/cheat-library/res/icons/EchoingConch.png index de005d8..b4cf5b2 100644 Binary files a/cheat-library/res/icons/EchoingConch.png and b/cheat-library/res/icons/EchoingConch.png differ diff --git a/cheat-library/res/icons/Eel.png b/cheat-library/res/icons/Eel.png new file mode 100644 index 0000000..6256126 Binary files /dev/null and b/cheat-library/res/icons/Eel.png differ diff --git a/cheat-library/res/icons/ElectroAbyssLector.png b/cheat-library/res/icons/ElectroAbyssLector.png new file mode 100644 index 0000000..98e031e Binary files /dev/null and b/cheat-library/res/icons/ElectroAbyssLector.png differ diff --git a/cheat-library/res/icons/BathysmalVishap.png b/cheat-library/res/icons/ElectroBathysmalVishap.png similarity index 100% rename from cheat-library/res/icons/BathysmalVishap.png rename to cheat-library/res/icons/ElectroBathysmalVishap.png diff --git a/cheat-library/res/icons/ElectroHypostasis.png b/cheat-library/res/icons/ElectroHypostasis.png index 1d0234c..0b00dbd 100644 Binary files a/cheat-library/res/icons/ElectroHypostasis.png and b/cheat-library/res/icons/ElectroHypostasis.png differ diff --git a/cheat-library/res/icons/ElectroRegisvine.png b/cheat-library/res/icons/ElectroRegisvine.png new file mode 100644 index 0000000..1cffdf2 Binary files /dev/null and b/cheat-library/res/icons/ElectroRegisvine.png differ diff --git a/cheat-library/res/icons/ElectroSeelie.png b/cheat-library/res/icons/ElectroSeelie.png index 0df2d14..905cd8f 100644 Binary files a/cheat-library/res/icons/ElectroSeelie.png and b/cheat-library/res/icons/ElectroSeelie.png differ diff --git a/cheat-library/res/icons/Eremite.png b/cheat-library/res/icons/Eremite.png new file mode 100644 index 0000000..10e014c Binary files /dev/null and b/cheat-library/res/icons/Eremite.png differ diff --git a/cheat-library/res/icons/Falcon.png b/cheat-library/res/icons/Falcon.png new file mode 100644 index 0000000..247a311 Binary files /dev/null and b/cheat-library/res/icons/Falcon.png differ diff --git a/cheat-library/res/icons/Finch.png b/cheat-library/res/icons/Finch.png new file mode 100644 index 0000000..ce6511e Binary files /dev/null and b/cheat-library/res/icons/Finch.png differ diff --git a/cheat-library/res/icons/FloatingHydroFungus.png b/cheat-library/res/icons/FloatingFungus.png similarity index 100% rename from cheat-library/res/icons/FloatingHydroFungus.png rename to cheat-library/res/icons/FloatingFungus.png diff --git a/cheat-library/res/icons/Fox.png b/cheat-library/res/icons/Fox.png new file mode 100644 index 0000000..9210eaf Binary files /dev/null and b/cheat-library/res/icons/Fox.png differ diff --git a/cheat-library/res/icons/GeoHypostasis.png b/cheat-library/res/icons/GeoHypostasis.png index 3eb9290..3645f6e 100644 Binary files a/cheat-library/res/icons/GeoHypostasis.png and b/cheat-library/res/icons/GeoHypostasis.png differ diff --git a/cheat-library/res/icons/Geoculus.png b/cheat-library/res/icons/Geoculus.png index 1f6b0f1..e685e7b 100644 Binary files a/cheat-library/res/icons/Geoculus.png and b/cheat-library/res/icons/Geoculus.png differ diff --git a/cheat-library/res/icons/GroundedShroom.png b/cheat-library/res/icons/GroundedShroom.png new file mode 100644 index 0000000..53eed28 Binary files /dev/null and b/cheat-library/res/icons/GroundedShroom.png differ diff --git a/cheat-library/res/icons/HarraFruit.png b/cheat-library/res/icons/HarraFruit.png new file mode 100644 index 0000000..87818ba Binary files /dev/null and b/cheat-library/res/icons/HarraFruit.png differ diff --git a/cheat-library/res/icons/AbyssHerald.png b/cheat-library/res/icons/HydroAbyssHerald.png similarity index 100% rename from cheat-library/res/icons/AbyssHerald.png rename to cheat-library/res/icons/HydroAbyssHerald.png diff --git a/cheat-library/res/icons/HydroBathysmalVishap.png b/cheat-library/res/icons/HydroBathysmalVishap.png new file mode 100644 index 0000000..f83268b Binary files /dev/null and b/cheat-library/res/icons/HydroBathysmalVishap.png differ diff --git a/cheat-library/res/icons/HydroHypostasis.png b/cheat-library/res/icons/HydroHypostasis.png index 30e6112..fc67ef7 100644 Binary files a/cheat-library/res/icons/HydroHypostasis.png and b/cheat-library/res/icons/HydroHypostasis.png differ diff --git a/cheat-library/res/icons/ImagingConch.png b/cheat-library/res/icons/ImagingConch.png new file mode 100644 index 0000000..b4cf5b2 Binary files /dev/null and b/cheat-library/res/icons/ImagingConch.png differ diff --git a/cheat-library/res/icons/Inu.png b/cheat-library/res/icons/Inu.png new file mode 100644 index 0000000..a087fd8 Binary files /dev/null and b/cheat-library/res/icons/Inu.png differ diff --git a/cheat-library/res/icons/JadeplumeTerrorshroom.png b/cheat-library/res/icons/JadeplumeTerrorshroom.png new file mode 100644 index 0000000..c83b236 Binary files /dev/null and b/cheat-library/res/icons/JadeplumeTerrorshroom.png differ diff --git a/cheat-library/res/icons/Kairagi.png b/cheat-library/res/icons/Kairagi.png new file mode 100644 index 0000000..f42a01a Binary files /dev/null and b/cheat-library/res/icons/Kairagi.png differ diff --git a/cheat-library/res/icons/KalpalataLotus.png b/cheat-library/res/icons/KalpalataLotus.png new file mode 100644 index 0000000..33c73e6 Binary files /dev/null and b/cheat-library/res/icons/KalpalataLotus.png differ diff --git a/cheat-library/res/icons/KeySigil.png b/cheat-library/res/icons/KeySigil.png new file mode 100644 index 0000000..9114b74 Binary files /dev/null and b/cheat-library/res/icons/KeySigil.png differ diff --git a/cheat-library/res/icons/MelodicBloom.png b/cheat-library/res/icons/MelodicBloom.png new file mode 100644 index 0000000..6a01fbd Binary files /dev/null and b/cheat-library/res/icons/MelodicBloom.png differ diff --git a/cheat-library/res/icons/Millelith.png b/cheat-library/res/icons/Millelith.png new file mode 100644 index 0000000..2490fbc Binary files /dev/null and b/cheat-library/res/icons/Millelith.png differ diff --git a/cheat-library/res/icons/NilotpalaLotus.png b/cheat-library/res/icons/NilotpalaLotus.png new file mode 100644 index 0000000..b0585df Binary files /dev/null and b/cheat-library/res/icons/NilotpalaLotus.png differ diff --git a/cheat-library/res/icons/Nobushi.png b/cheat-library/res/icons/Nobushi.png index e445c0e..88d0881 100644 Binary files a/cheat-library/res/icons/Nobushi.png and b/cheat-library/res/icons/Nobushi.png differ diff --git a/cheat-library/res/icons/OceanidSummons.png b/cheat-library/res/icons/OceanidSummons.png new file mode 100644 index 0000000..3cd66a9 Binary files /dev/null and b/cheat-library/res/icons/OceanidSummons.png differ diff --git a/cheat-library/res/icons/Padisarah.png b/cheat-library/res/icons/Padisarah.png new file mode 100644 index 0000000..b62e64c Binary files /dev/null and b/cheat-library/res/icons/Padisarah.png differ diff --git a/cheat-library/res/icons/Pigeon.png b/cheat-library/res/icons/Pigeon.png new file mode 100644 index 0000000..bba2160 Binary files /dev/null and b/cheat-library/res/icons/Pigeon.png differ diff --git a/cheat-library/res/icons/PyroAbyssLector.png b/cheat-library/res/icons/PyroAbyssLector.png new file mode 100644 index 0000000..2d78704 Binary files /dev/null and b/cheat-library/res/icons/PyroAbyssLector.png differ diff --git a/cheat-library/res/icons/PyroHypostasis.png b/cheat-library/res/icons/PyroHypostasis.png index d515648..581e5a9 100644 Binary files a/cheat-library/res/icons/PyroHypostasis.png and b/cheat-library/res/icons/PyroHypostasis.png differ diff --git a/cheat-library/res/icons/Rifthound.png b/cheat-library/res/icons/Rifthound.png new file mode 100644 index 0000000..ec957f7 Binary files /dev/null and b/cheat-library/res/icons/Rifthound.png differ diff --git a/cheat-library/res/icons/RifthoundWhelp.png b/cheat-library/res/icons/RifthoundWhelp.png new file mode 100644 index 0000000..3432608 Binary files /dev/null and b/cheat-library/res/icons/RifthoundWhelp.png differ diff --git a/cheat-library/res/icons/RishbolandTiger.png b/cheat-library/res/icons/RishbolandTiger.png new file mode 100644 index 0000000..745f807 Binary files /dev/null and b/cheat-library/res/icons/RishbolandTiger.png differ diff --git a/cheat-library/res/icons/RuinDrake.png b/cheat-library/res/icons/RuinDrake.png new file mode 100644 index 0000000..f095d58 Binary files /dev/null and b/cheat-library/res/icons/RuinDrake.png differ diff --git a/cheat-library/res/icons/RuinGrader.png b/cheat-library/res/icons/RuinGrader.png index 322909a..eb0b1e2 100644 Binary files a/cheat-library/res/icons/RuinGrader.png and b/cheat-library/res/icons/RuinGrader.png differ diff --git a/cheat-library/res/icons/RuinSentinel.png b/cheat-library/res/icons/RuinSentinel.png index 007b44d..13f26b8 100644 Binary files a/cheat-library/res/icons/RuinSentinel.png and b/cheat-library/res/icons/RuinSentinel.png differ diff --git a/cheat-library/res/icons/RukkhashavaMushrooms.png b/cheat-library/res/icons/RukkhashavaMushrooms.png new file mode 100644 index 0000000..c5b1480 Binary files /dev/null and b/cheat-library/res/icons/RukkhashavaMushrooms.png differ diff --git a/cheat-library/res/icons/Salamander.png b/cheat-library/res/icons/Salamander.png new file mode 100644 index 0000000..1d104b3 Binary files /dev/null and b/cheat-library/res/icons/Salamander.png differ diff --git a/cheat-library/res/icons/SangonomiyaCohort.png b/cheat-library/res/icons/SangonomiyaCohort.png new file mode 100644 index 0000000..5a1356d Binary files /dev/null and b/cheat-library/res/icons/SangonomiyaCohort.png differ diff --git a/cheat-library/res/icons/ShaggySumpterBeast.png b/cheat-library/res/icons/ShaggySumpterBeast.png new file mode 100644 index 0000000..c38ab8d Binary files /dev/null and b/cheat-library/res/icons/ShaggySumpterBeast.png differ diff --git a/cheat-library/res/icons/Shogun.png b/cheat-library/res/icons/Shogun.png new file mode 100644 index 0000000..2307fd3 Binary files /dev/null and b/cheat-library/res/icons/Shogun.png differ diff --git a/cheat-library/res/icons/ShogunateInfantry.png b/cheat-library/res/icons/ShogunateInfantry.png new file mode 100644 index 0000000..64ef7f5 Binary files /dev/null and b/cheat-library/res/icons/ShogunateInfantry.png differ diff --git a/cheat-library/res/icons/ShrineOfDepth.png b/cheat-library/res/icons/ShrineOfDepth.png new file mode 100644 index 0000000..cbcae90 Binary files /dev/null and b/cheat-library/res/icons/ShrineOfDepth.png differ diff --git a/cheat-library/res/icons/Signora.png b/cheat-library/res/icons/Signora.png new file mode 100644 index 0000000..cd07b14 Binary files /dev/null and b/cheat-library/res/icons/Signora.png differ diff --git a/cheat-library/res/icons/Spincrocodile.png b/cheat-library/res/icons/Spincrocodile.png new file mode 100644 index 0000000..355cf42 Binary files /dev/null and b/cheat-library/res/icons/Spincrocodile.png differ diff --git a/cheat-library/res/icons/StarlightCoalescence.png b/cheat-library/res/icons/StarlightCoalescence.png new file mode 100644 index 0000000..a80948f Binary files /dev/null and b/cheat-library/res/icons/StarlightCoalescence.png differ diff --git a/cheat-library/res/icons/StretchyFungus.png b/cheat-library/res/icons/StretchyFungus.png new file mode 100644 index 0000000..344c724 Binary files /dev/null and b/cheat-library/res/icons/StretchyFungus.png differ diff --git a/cheat-library/res/icons/SumeruRose.png b/cheat-library/res/icons/SumeruRose.png new file mode 100644 index 0000000..c8a23a8 Binary files /dev/null and b/cheat-library/res/icons/SumeruRose.png differ diff --git a/cheat-library/res/icons/Tartaglia.png b/cheat-library/res/icons/Tartaglia.png new file mode 100644 index 0000000..8e9724b Binary files /dev/null and b/cheat-library/res/icons/Tartaglia.png differ diff --git a/cheat-library/res/icons/TheRavenForum.png b/cheat-library/res/icons/TheRavenForum.png new file mode 100644 index 0000000..b59af6a Binary files /dev/null and b/cheat-library/res/icons/TheRavenForum.png differ diff --git a/cheat-library/res/icons/Tukan.png b/cheat-library/res/icons/Tukan.png new file mode 100644 index 0000000..7cdd57f Binary files /dev/null and b/cheat-library/res/icons/Tukan.png differ diff --git a/cheat-library/res/icons/UnusualHilichurl.png b/cheat-library/res/icons/UnusualHilichurl.png index e228842..1a6d207 100644 Binary files a/cheat-library/res/icons/UnusualHilichurl.png and b/cheat-library/res/icons/UnusualHilichurl.png differ diff --git a/cheat-library/res/icons/Viparyas.png b/cheat-library/res/icons/Viparyas.png new file mode 100644 index 0000000..9bfb6e2 Binary files /dev/null and b/cheat-library/res/icons/Viparyas.png differ diff --git a/cheat-library/res/icons/Weasel.png b/cheat-library/res/icons/Weasel.png new file mode 100644 index 0000000..d23df74 Binary files /dev/null and b/cheat-library/res/icons/Weasel.png differ diff --git a/cheat-library/res/icons/WhirlingFungus.png b/cheat-library/res/icons/WhirlingFungus.png new file mode 100644 index 0000000..a704cc7 Binary files /dev/null and b/cheat-library/res/icons/WhirlingFungus.png differ diff --git a/cheat-library/res/icons/Wigeon.png b/cheat-library/res/icons/Wigeon.png new file mode 100644 index 0000000..6503798 Binary files /dev/null and b/cheat-library/res/icons/Wigeon.png differ diff --git a/cheat-library/res/icons/WingedShroom.png b/cheat-library/res/icons/WingedShroom.png new file mode 100644 index 0000000..03b308b Binary files /dev/null and b/cheat-library/res/icons/WingedShroom.png differ diff --git a/cheat-library/res/icons/ZaytunPeach.png b/cheat-library/res/icons/ZaytunPeach.png new file mode 100644 index 0000000..34ff25f Binary files /dev/null and b/cheat-library/res/icons/ZaytunPeach.png differ diff --git a/cheat-library/res/iconsHD/Andrius.png b/cheat-library/res/iconsHD/Andrius.png new file mode 100644 index 0000000..14d5f99 Binary files /dev/null and b/cheat-library/res/iconsHD/Andrius.png differ diff --git a/cheat-library/res/iconsHD/AnemoHypostasis.png b/cheat-library/res/iconsHD/AnemoHypostasis.png index 70d0f2e..ba03ac6 100644 Binary files a/cheat-library/res/iconsHD/AnemoHypostasis.png and b/cheat-library/res/iconsHD/AnemoHypostasis.png differ diff --git a/cheat-library/res/iconsHD/Anemoculus.png b/cheat-library/res/iconsHD/Anemoculus.png index 810a6bd..2ecd063 100644 Binary files a/cheat-library/res/iconsHD/Anemoculus.png and b/cheat-library/res/iconsHD/Anemoculus.png differ diff --git a/cheat-library/res/iconsHD/Azhdaha.png b/cheat-library/res/iconsHD/Azhdaha.png new file mode 100644 index 0000000..ad9b7bf Binary files /dev/null and b/cheat-library/res/iconsHD/Azhdaha.png differ diff --git a/cheat-library/res/iconsHD/BakeDanuki.png b/cheat-library/res/iconsHD/BakeDanuki.png index 46b2643..d99b861 100644 Binary files a/cheat-library/res/iconsHD/BakeDanuki.png and b/cheat-library/res/iconsHD/BakeDanuki.png differ diff --git a/cheat-library/res/iconsHD/BlackSerpentKnight.png b/cheat-library/res/iconsHD/BlackSerpentKnight.png new file mode 100644 index 0000000..d126db6 Binary files /dev/null and b/cheat-library/res/iconsHD/BlackSerpentKnight.png differ diff --git a/cheat-library/res/iconsHD/Boar.png b/cheat-library/res/iconsHD/Boar.png new file mode 100644 index 0000000..91d3ea1 Binary files /dev/null and b/cheat-library/res/iconsHD/Boar.png differ diff --git a/cheat-library/res/iconsHD/BookPage.png b/cheat-library/res/iconsHD/BookPage.png new file mode 100644 index 0000000..d13b14f Binary files /dev/null and b/cheat-library/res/iconsHD/BookPage.png differ diff --git a/cheat-library/res/iconsHD/Cat.png b/cheat-library/res/iconsHD/Cat.png new file mode 100644 index 0000000..ed79ca9 Binary files /dev/null and b/cheat-library/res/iconsHD/Cat.png differ diff --git a/cheat-library/res/iconsHD/Cicin.png b/cheat-library/res/iconsHD/Cicin.png new file mode 100644 index 0000000..663aa13 Binary files /dev/null and b/cheat-library/res/iconsHD/Cicin.png differ diff --git a/cheat-library/res/iconsHD/CloudleisureSteps.png b/cheat-library/res/iconsHD/CloudleisureSteps.png new file mode 100644 index 0000000..f6bd9f7 Binary files /dev/null and b/cheat-library/res/iconsHD/CloudleisureSteps.png differ diff --git a/cheat-library/res/iconsHD/Crane.png b/cheat-library/res/iconsHD/Crane.png new file mode 100644 index 0000000..591d9fc Binary files /dev/null and b/cheat-library/res/iconsHD/Crane.png differ diff --git a/cheat-library/res/iconsHD/CryoBathysmalVishap.png b/cheat-library/res/iconsHD/CryoBathysmalVishap.png new file mode 100644 index 0000000..ce23581 Binary files /dev/null and b/cheat-library/res/iconsHD/CryoBathysmalVishap.png differ diff --git a/cheat-library/res/iconsHD/CryoHypostasis.png b/cheat-library/res/iconsHD/CryoHypostasis.png index 69f6d8c..8549c0b 100644 Binary files a/cheat-library/res/iconsHD/CryoHypostasis.png and b/cheat-library/res/iconsHD/CryoHypostasis.png differ diff --git a/cheat-library/res/iconsHD/Dendroculus.png b/cheat-library/res/iconsHD/Dendroculus.png new file mode 100644 index 0000000..603d63f Binary files /dev/null and b/cheat-library/res/iconsHD/Dendroculus.png differ diff --git a/cheat-library/res/iconsHD/Dog.png b/cheat-library/res/iconsHD/Dog.png new file mode 100644 index 0000000..e81a468 Binary files /dev/null and b/cheat-library/res/iconsHD/Dog.png differ diff --git a/cheat-library/res/iconsHD/DreamForm.png b/cheat-library/res/iconsHD/DreamForm.png new file mode 100644 index 0000000..4484519 Binary files /dev/null and b/cheat-library/res/iconsHD/DreamForm.png differ diff --git a/cheat-library/res/iconsHD/DunlinsTooth.png b/cheat-library/res/iconsHD/DunlinsTooth.png new file mode 100644 index 0000000..823c2ae Binary files /dev/null and b/cheat-library/res/iconsHD/DunlinsTooth.png differ diff --git a/cheat-library/res/iconsHD/Dvalin.png b/cheat-library/res/iconsHD/Dvalin.png new file mode 100644 index 0000000..8d26d7a Binary files /dev/null and b/cheat-library/res/iconsHD/Dvalin.png differ diff --git a/cheat-library/res/iconsHD/EchoingConch.png b/cheat-library/res/iconsHD/EchoingConch.png new file mode 100644 index 0000000..94f4db8 Binary files /dev/null and b/cheat-library/res/iconsHD/EchoingConch.png differ diff --git a/cheat-library/res/iconsHD/Eel.png b/cheat-library/res/iconsHD/Eel.png new file mode 100644 index 0000000..fad465c Binary files /dev/null and b/cheat-library/res/iconsHD/Eel.png differ diff --git a/cheat-library/res/iconsHD/ElectroAbyssLector.png b/cheat-library/res/iconsHD/ElectroAbyssLector.png new file mode 100644 index 0000000..779d319 Binary files /dev/null and b/cheat-library/res/iconsHD/ElectroAbyssLector.png differ diff --git a/cheat-library/res/iconsHD/BathysmalVishap.png b/cheat-library/res/iconsHD/ElectroBathysmalVishap.png similarity index 100% rename from cheat-library/res/iconsHD/BathysmalVishap.png rename to cheat-library/res/iconsHD/ElectroBathysmalVishap.png diff --git a/cheat-library/res/iconsHD/ElectroHypostasis.png b/cheat-library/res/iconsHD/ElectroHypostasis.png index 638a56a..fed9f4a 100644 Binary files a/cheat-library/res/iconsHD/ElectroHypostasis.png and b/cheat-library/res/iconsHD/ElectroHypostasis.png differ diff --git a/cheat-library/res/iconsHD/ElectroRegisvine.png b/cheat-library/res/iconsHD/ElectroRegisvine.png new file mode 100644 index 0000000..5e9a5c6 Binary files /dev/null and b/cheat-library/res/iconsHD/ElectroRegisvine.png differ diff --git a/cheat-library/res/iconsHD/ElectroSeelie.png b/cheat-library/res/iconsHD/ElectroSeelie.png index 6e8a788..350aa19 100644 Binary files a/cheat-library/res/iconsHD/ElectroSeelie.png and b/cheat-library/res/iconsHD/ElectroSeelie.png differ diff --git a/cheat-library/res/iconsHD/Eremite.png b/cheat-library/res/iconsHD/Eremite.png new file mode 100644 index 0000000..73a9bbc Binary files /dev/null and b/cheat-library/res/iconsHD/Eremite.png differ diff --git a/cheat-library/res/iconsHD/Falcon.png b/cheat-library/res/iconsHD/Falcon.png new file mode 100644 index 0000000..c8b0fa0 Binary files /dev/null and b/cheat-library/res/iconsHD/Falcon.png differ diff --git a/cheat-library/res/iconsHD/Finch.png b/cheat-library/res/iconsHD/Finch.png new file mode 100644 index 0000000..cc14a45 Binary files /dev/null and b/cheat-library/res/iconsHD/Finch.png differ diff --git a/cheat-library/res/iconsHD/FloatingHydroFungus.png b/cheat-library/res/iconsHD/FloatingFungus.png similarity index 100% rename from cheat-library/res/iconsHD/FloatingHydroFungus.png rename to cheat-library/res/iconsHD/FloatingFungus.png diff --git a/cheat-library/res/iconsHD/Fox.png b/cheat-library/res/iconsHD/Fox.png new file mode 100644 index 0000000..096da32 Binary files /dev/null and b/cheat-library/res/iconsHD/Fox.png differ diff --git a/cheat-library/res/iconsHD/GeoHypostasis.png b/cheat-library/res/iconsHD/GeoHypostasis.png index 57e40af..542ec5f 100644 Binary files a/cheat-library/res/iconsHD/GeoHypostasis.png and b/cheat-library/res/iconsHD/GeoHypostasis.png differ diff --git a/cheat-library/res/iconsHD/Geoculus.png b/cheat-library/res/iconsHD/Geoculus.png index de687ee..a24e455 100644 Binary files a/cheat-library/res/iconsHD/Geoculus.png and b/cheat-library/res/iconsHD/Geoculus.png differ diff --git a/cheat-library/res/iconsHD/GroundedShroom.png b/cheat-library/res/iconsHD/GroundedShroom.png new file mode 100644 index 0000000..99e679b Binary files /dev/null and b/cheat-library/res/iconsHD/GroundedShroom.png differ diff --git a/cheat-library/res/iconsHD/HarraFruit.png b/cheat-library/res/iconsHD/HarraFruit.png new file mode 100644 index 0000000..931cb45 Binary files /dev/null and b/cheat-library/res/iconsHD/HarraFruit.png differ diff --git a/cheat-library/res/iconsHD/AbyssHerald.png b/cheat-library/res/iconsHD/HydroAbyssHerald.png similarity index 100% rename from cheat-library/res/iconsHD/AbyssHerald.png rename to cheat-library/res/iconsHD/HydroAbyssHerald.png diff --git a/cheat-library/res/iconsHD/HydroBathysmalVishap.png b/cheat-library/res/iconsHD/HydroBathysmalVishap.png new file mode 100644 index 0000000..d9e8fec Binary files /dev/null and b/cheat-library/res/iconsHD/HydroBathysmalVishap.png differ diff --git a/cheat-library/res/iconsHD/HydroHypostasis.png b/cheat-library/res/iconsHD/HydroHypostasis.png index 6bce663..3842bda 100644 Binary files a/cheat-library/res/iconsHD/HydroHypostasis.png and b/cheat-library/res/iconsHD/HydroHypostasis.png differ diff --git a/cheat-library/res/iconsHD/ImagingConch.png b/cheat-library/res/iconsHD/ImagingConch.png new file mode 100644 index 0000000..94f4db8 Binary files /dev/null and b/cheat-library/res/iconsHD/ImagingConch.png differ diff --git a/cheat-library/res/iconsHD/Inu.png b/cheat-library/res/iconsHD/Inu.png new file mode 100644 index 0000000..df62405 Binary files /dev/null and b/cheat-library/res/iconsHD/Inu.png differ diff --git a/cheat-library/res/iconsHD/JadeplumeTerrorshroom.png b/cheat-library/res/iconsHD/JadeplumeTerrorshroom.png new file mode 100644 index 0000000..5e6c622 Binary files /dev/null and b/cheat-library/res/iconsHD/JadeplumeTerrorshroom.png differ diff --git a/cheat-library/res/iconsHD/Kairagi.png b/cheat-library/res/iconsHD/Kairagi.png new file mode 100644 index 0000000..cf4d378 Binary files /dev/null and b/cheat-library/res/iconsHD/Kairagi.png differ diff --git a/cheat-library/res/iconsHD/KalpalataLotus.png b/cheat-library/res/iconsHD/KalpalataLotus.png new file mode 100644 index 0000000..8c108ef Binary files /dev/null and b/cheat-library/res/iconsHD/KalpalataLotus.png differ diff --git a/cheat-library/res/iconsHD/KeySigil.png b/cheat-library/res/iconsHD/KeySigil.png new file mode 100644 index 0000000..1a4b86d Binary files /dev/null and b/cheat-library/res/iconsHD/KeySigil.png differ diff --git a/cheat-library/res/iconsHD/MelodicBloom.png b/cheat-library/res/iconsHD/MelodicBloom.png new file mode 100644 index 0000000..e9cadeb Binary files /dev/null and b/cheat-library/res/iconsHD/MelodicBloom.png differ diff --git a/cheat-library/res/iconsHD/Millelith.png b/cheat-library/res/iconsHD/Millelith.png new file mode 100644 index 0000000..9656de1 Binary files /dev/null and b/cheat-library/res/iconsHD/Millelith.png differ diff --git a/cheat-library/res/iconsHD/NilotpalaLotus.png b/cheat-library/res/iconsHD/NilotpalaLotus.png new file mode 100644 index 0000000..48ddda1 Binary files /dev/null and b/cheat-library/res/iconsHD/NilotpalaLotus.png differ diff --git a/cheat-library/res/iconsHD/Nobushi.png b/cheat-library/res/iconsHD/Nobushi.png index 44778fc..17013c8 100644 Binary files a/cheat-library/res/iconsHD/Nobushi.png and b/cheat-library/res/iconsHD/Nobushi.png differ diff --git a/cheat-library/res/iconsHD/OceanidSummons.png b/cheat-library/res/iconsHD/OceanidSummons.png new file mode 100644 index 0000000..98ada0f Binary files /dev/null and b/cheat-library/res/iconsHD/OceanidSummons.png differ diff --git a/cheat-library/res/iconsHD/Padisarah.png b/cheat-library/res/iconsHD/Padisarah.png new file mode 100644 index 0000000..25a3d2f Binary files /dev/null and b/cheat-library/res/iconsHD/Padisarah.png differ diff --git a/cheat-library/res/iconsHD/Pigeon.png b/cheat-library/res/iconsHD/Pigeon.png new file mode 100644 index 0000000..cf318a3 Binary files /dev/null and b/cheat-library/res/iconsHD/Pigeon.png differ diff --git a/cheat-library/res/iconsHD/PyroAbyssLector.png b/cheat-library/res/iconsHD/PyroAbyssLector.png new file mode 100644 index 0000000..329d76e Binary files /dev/null and b/cheat-library/res/iconsHD/PyroAbyssLector.png differ diff --git a/cheat-library/res/iconsHD/PyroHypostasis.png b/cheat-library/res/iconsHD/PyroHypostasis.png index fbb043f..491fe0d 100644 Binary files a/cheat-library/res/iconsHD/PyroHypostasis.png and b/cheat-library/res/iconsHD/PyroHypostasis.png differ diff --git a/cheat-library/res/iconsHD/Rifthound.png b/cheat-library/res/iconsHD/Rifthound.png new file mode 100644 index 0000000..58f8032 Binary files /dev/null and b/cheat-library/res/iconsHD/Rifthound.png differ diff --git a/cheat-library/res/iconsHD/RifthoundWhelp.png b/cheat-library/res/iconsHD/RifthoundWhelp.png new file mode 100644 index 0000000..6c76ae0 Binary files /dev/null and b/cheat-library/res/iconsHD/RifthoundWhelp.png differ diff --git a/cheat-library/res/iconsHD/RishbolandTiger.png b/cheat-library/res/iconsHD/RishbolandTiger.png new file mode 100644 index 0000000..9e5cbbe Binary files /dev/null and b/cheat-library/res/iconsHD/RishbolandTiger.png differ diff --git a/cheat-library/res/iconsHD/RuinDrake.png b/cheat-library/res/iconsHD/RuinDrake.png new file mode 100644 index 0000000..45590f7 Binary files /dev/null and b/cheat-library/res/iconsHD/RuinDrake.png differ diff --git a/cheat-library/res/iconsHD/RuinGrader.png b/cheat-library/res/iconsHD/RuinGrader.png index 16897ed..156419e 100644 Binary files a/cheat-library/res/iconsHD/RuinGrader.png and b/cheat-library/res/iconsHD/RuinGrader.png differ diff --git a/cheat-library/res/iconsHD/RuinSentinel.png b/cheat-library/res/iconsHD/RuinSentinel.png index 04123bf..4f295b6 100644 Binary files a/cheat-library/res/iconsHD/RuinSentinel.png and b/cheat-library/res/iconsHD/RuinSentinel.png differ diff --git a/cheat-library/res/iconsHD/RukkhashavaMushrooms.png b/cheat-library/res/iconsHD/RukkhashavaMushrooms.png new file mode 100644 index 0000000..9b747e6 Binary files /dev/null and b/cheat-library/res/iconsHD/RukkhashavaMushrooms.png differ diff --git a/cheat-library/res/iconsHD/Salamander.png b/cheat-library/res/iconsHD/Salamander.png new file mode 100644 index 0000000..7311e13 Binary files /dev/null and b/cheat-library/res/iconsHD/Salamander.png differ diff --git a/cheat-library/res/iconsHD/SangonomiyaCohort.png b/cheat-library/res/iconsHD/SangonomiyaCohort.png new file mode 100644 index 0000000..b524ea2 Binary files /dev/null and b/cheat-library/res/iconsHD/SangonomiyaCohort.png differ diff --git a/cheat-library/res/iconsHD/ShaggySumpterBeast.png b/cheat-library/res/iconsHD/ShaggySumpterBeast.png new file mode 100644 index 0000000..4e313b3 Binary files /dev/null and b/cheat-library/res/iconsHD/ShaggySumpterBeast.png differ diff --git a/cheat-library/res/iconsHD/Shogun.png b/cheat-library/res/iconsHD/Shogun.png new file mode 100644 index 0000000..2dfeff6 Binary files /dev/null and b/cheat-library/res/iconsHD/Shogun.png differ diff --git a/cheat-library/res/iconsHD/ShogunateInfantry.png b/cheat-library/res/iconsHD/ShogunateInfantry.png new file mode 100644 index 0000000..b306760 Binary files /dev/null and b/cheat-library/res/iconsHD/ShogunateInfantry.png differ diff --git a/cheat-library/res/iconsHD/ShrineOfDepth.png b/cheat-library/res/iconsHD/ShrineOfDepth.png new file mode 100644 index 0000000..ed78a45 Binary files /dev/null and b/cheat-library/res/iconsHD/ShrineOfDepth.png differ diff --git a/cheat-library/res/iconsHD/Signora.png b/cheat-library/res/iconsHD/Signora.png new file mode 100644 index 0000000..118dba1 Binary files /dev/null and b/cheat-library/res/iconsHD/Signora.png differ diff --git a/cheat-library/res/iconsHD/Spincrocodile.png b/cheat-library/res/iconsHD/Spincrocodile.png new file mode 100644 index 0000000..cf97d13 Binary files /dev/null and b/cheat-library/res/iconsHD/Spincrocodile.png differ diff --git a/cheat-library/res/iconsHD/StarlightCoalescence.png b/cheat-library/res/iconsHD/StarlightCoalescence.png new file mode 100644 index 0000000..b17a5f5 Binary files /dev/null and b/cheat-library/res/iconsHD/StarlightCoalescence.png differ diff --git a/cheat-library/res/iconsHD/StretchyFungus.png b/cheat-library/res/iconsHD/StretchyFungus.png new file mode 100644 index 0000000..12efed2 Binary files /dev/null and b/cheat-library/res/iconsHD/StretchyFungus.png differ diff --git a/cheat-library/res/iconsHD/SumeruRose.png b/cheat-library/res/iconsHD/SumeruRose.png new file mode 100644 index 0000000..199056d Binary files /dev/null and b/cheat-library/res/iconsHD/SumeruRose.png differ diff --git a/cheat-library/res/iconsHD/Tartaglia.png b/cheat-library/res/iconsHD/Tartaglia.png new file mode 100644 index 0000000..70b67d0 Binary files /dev/null and b/cheat-library/res/iconsHD/Tartaglia.png differ diff --git a/cheat-library/res/iconsHD/TheRavenForum.png b/cheat-library/res/iconsHD/TheRavenForum.png new file mode 100644 index 0000000..ec9b5c2 Binary files /dev/null and b/cheat-library/res/iconsHD/TheRavenForum.png differ diff --git a/cheat-library/res/iconsHD/Tukan.png b/cheat-library/res/iconsHD/Tukan.png new file mode 100644 index 0000000..8f505a8 Binary files /dev/null and b/cheat-library/res/iconsHD/Tukan.png differ diff --git a/cheat-library/res/iconsHD/UnusualHilichurl.png b/cheat-library/res/iconsHD/UnusualHilichurl.png index 7049642..09c3a53 100644 Binary files a/cheat-library/res/iconsHD/UnusualHilichurl.png and b/cheat-library/res/iconsHD/UnusualHilichurl.png differ diff --git a/cheat-library/res/iconsHD/Viparyas.png b/cheat-library/res/iconsHD/Viparyas.png new file mode 100644 index 0000000..6fe6da8 Binary files /dev/null and b/cheat-library/res/iconsHD/Viparyas.png differ diff --git a/cheat-library/res/iconsHD/Weasel.png b/cheat-library/res/iconsHD/Weasel.png new file mode 100644 index 0000000..6f0a879 Binary files /dev/null and b/cheat-library/res/iconsHD/Weasel.png differ diff --git a/cheat-library/res/iconsHD/WhirlingFungus.png b/cheat-library/res/iconsHD/WhirlingFungus.png new file mode 100644 index 0000000..2e1d7ae Binary files /dev/null and b/cheat-library/res/iconsHD/WhirlingFungus.png differ diff --git a/cheat-library/res/iconsHD/Wigeon.png b/cheat-library/res/iconsHD/Wigeon.png new file mode 100644 index 0000000..df6ac41 Binary files /dev/null and b/cheat-library/res/iconsHD/Wigeon.png differ diff --git a/cheat-library/res/iconsHD/WingedShroom.png b/cheat-library/res/iconsHD/WingedShroom.png new file mode 100644 index 0000000..9cdc7c1 Binary files /dev/null and b/cheat-library/res/iconsHD/WingedShroom.png differ diff --git a/cheat-library/res/iconsHD/ZaytunPeach.png b/cheat-library/res/iconsHD/ZaytunPeach.png new file mode 100644 index 0000000..223a549 Binary files /dev/null and b/cheat-library/res/iconsHD/ZaytunPeach.png differ diff --git a/cheat-library/res/map_golden_apple_archipelago.json b/cheat-library/res/map_golden_apple_archipelago.json new file mode 100644 index 0000000..de1b21a --- /dev/null +++ b/cheat-library/res/map_golden_apple_archipelago.json @@ -0,0 +1,2051 @@ +{ + "labels": { + "3": { + "name": "Teleport Waypoint", + "clear_name": "TeleportWaypoint", + "points": [ + { + "id": 26920, + "x_pos": -1213.28564453125, + "y_pos": 857.6071166992188 + }, + { + "id": 26921, + "x_pos": -968.25, + "y_pos": -167.28570556640625 + }, + { + "id": 26922, + "x_pos": -987.5719604492188, + "y_pos": -400.00006103515625 + }, + { + "id": 26923, + "x_pos": -804.357421875, + "y_pos": -1036.9285888671875 + }, + { + "id": 26924, + "x_pos": 461.3216247558594, + "y_pos": -469.7857360839844 + }, + { + "id": 26925, + "x_pos": 520.2498168945312, + "y_pos": -964.3214111328125 + }, + { + "id": 26926, + "x_pos": 965.8570556640625, + "y_pos": 964.0714111328125 + }, + { + "id": 26927, + "x_pos": 648.7859497070312, + "y_pos": 706.5714111328125 + }, + { + "id": 26928, + "x_pos": -142.0001678466797, + "y_pos": 1557.03564453125 + }, + { + "id": 26929, + "x_pos": 85.0712890625, + "y_pos": -73.74998474121094 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220401/0cc42d15134cbb724304050fd0bbcaac_8799482478853097434.png" + }, + "190": { + "name": "Waverider Waypoint (Cannot Teleport)", + "clear_name": "WaveriderWaypointCannotTeleport", + "points": [ + { + "id": 26930, + "x_pos": -1276.6787109375, + "y_pos": 877.5 + }, + { + "id": 26931, + "x_pos": -1135.0714111328125, + "y_pos": 1739.7142333984375 + }, + { + "id": 26932, + "x_pos": -146.99993896484375, + "y_pos": 1493.7142333984375 + }, + { + "id": 26933, + "x_pos": 652.3573608398438, + "y_pos": 812.1428833007812 + }, + { + "id": 26934, + "x_pos": 1087.8992919921875, + "y_pos": 61.67854690551758 + }, + { + "id": 26935, + "x_pos": 1068.9642333984375, + "y_pos": -344.3571472167969 + }, + { + "id": 26936, + "x_pos": -256.3931579589844, + "y_pos": -866.8214111328125 + }, + { + "id": 26937, + "x_pos": -765.0003662109375, + "y_pos": -993.1428833007812 + }, + { + "id": 26938, + "x_pos": 98.00017547607422, + "y_pos": 145.5714111328125 + }, + { + "id": 26939, + "x_pos": -1147.7857666015625, + "y_pos": 58.42857360839844 + }, + { + "id": 26940, + "x_pos": -1002.3573608398438, + "y_pos": -441.0 + }, + { + "id": 26941, + "x_pos": 331.5, + "y_pos": -826.5 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220401/6db2133bf163989dbff9c6a1e0c814a0_7631310718225262758.png" + }, + "362": { + "name": "Imaging Conch", + "clear_name": "ImagingConch", + "points": [ + { + "id": 26958, + "x_pos": 959.25, + "y_pos": 977.25 + }, + { + "id": 26959, + "x_pos": -14.25, + "y_pos": 10.25 + }, + { + "id": 26960, + "x_pos": -425.5, + "y_pos": 1743.5 + }, + { + "id": 26961, + "x_pos": 865.25, + "y_pos": -478.0 + }, + { + "id": 26962, + "x_pos": -670.5, + "y_pos": -315.25 + }, + { + "id": 26963, + "x_pos": -375.25, + "y_pos": 1701.25 + } + ], + "icon": "https://act.hoyoverse.com/map_manage/20220712/9d59ce72575ba04549be74226cb9b847_8252658972468922312.png" + }, + "383": { + "name": "Echoing Conch", + "clear_name": "EchoingConch", + "points": [ + { + "id": 26964, + "x_pos": 979.25, + "y_pos": 1106.5 + }, + { + "id": 26965, + "x_pos": 740.25, + "y_pos": 1085.25 + }, + { + "id": 26966, + "x_pos": -888.0, + "y_pos": -233.0 + }, + { + "id": 26967, + "x_pos": -1131.0, + "y_pos": -266.0 + }, + { + "id": 26968, + "x_pos": -1087.0, + "y_pos": -186.5 + }, + { + "id": 26969, + "x_pos": 446.5, + "y_pos": -887.5 + }, + { + "id": 26970, + "x_pos": 577.0, + "y_pos": -983.5 + }, + { + "id": 26971, + "x_pos": -401.75, + "y_pos": 1741.0 + } + ], + "icon": "https://act.hoyoverse.com/map_manage/20220622/9d59ce72575ba04549be74226cb9b847_602176721705642969.png" + }, + "185": { + "name": "Sea Ganoderma", + "clear_name": "SeaGanoderma", + "points": [ + { + "id": 27176, + "x_pos": 455.5357360839844, + "y_pos": -857.963134765625 + }, + { + "id": 27177, + "x_pos": 452.9287109375, + "y_pos": -855.9276123046875 + }, + { + "id": 27178, + "x_pos": 449.75, + "y_pos": -855.5 + }, + { + "id": 27179, + "x_pos": -1166.250244140625, + "y_pos": 802.5950927734375 + }, + { + "id": 27180, + "x_pos": -1132.29541015625, + "y_pos": 785.197998046875 + }, + { + "id": 27181, + "x_pos": -839.7855834960938, + "y_pos": -1059.6038818359375 + }, + { + "id": 27182, + "x_pos": -843.2144165039062, + "y_pos": -1055.213134765625 + }, + { + "id": 27183, + "x_pos": -794.7855834960938, + "y_pos": -1075.25 + }, + { + "id": 27184, + "x_pos": -958.916259765625, + "y_pos": -1175.3082275390625 + }, + { + "id": 27185, + "x_pos": -954.285888671875, + "y_pos": -1173.678955078125 + }, + { + "id": 27186, + "x_pos": -964.2496337890625, + "y_pos": -1177.1065673828125 + }, + { + "id": 27187, + "x_pos": -22.964269638061523, + "y_pos": -783.5 + }, + { + "id": 27188, + "x_pos": -4.0, + "y_pos": -738.14208984375 + }, + { + "id": 27189, + "x_pos": 9.786462783813477, + "y_pos": -737.9644775390625 + }, + { + "id": 27190, + "x_pos": -153.8120880126953, + "y_pos": -666.7908935546875 + }, + { + "id": 27191, + "x_pos": -301.7069091796875, + "y_pos": -768.591064453125 + }, + { + "id": 27192, + "x_pos": -308.5, + "y_pos": -771.8223876953125 + }, + { + "id": 27193, + "x_pos": 1210.2144775390625, + "y_pos": 221.2130889892578 + }, + { + "id": 27194, + "x_pos": 1268.6429443359375, + "y_pos": 265.7131042480469 + }, + { + "id": 27195, + "x_pos": 1281.2855224609375, + "y_pos": 247.42898559570312 + }, + { + "id": 27196, + "x_pos": 1270.142578125, + "y_pos": 296.1448059082031 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/93263cf3ea17f1cf6921f7c16194d0cd_1121745296339257675.png" + }, + "24": { + "name": "Abyss Mage", + "clear_name": "AbyssMage", + "points": [ + { + "id": 27115, + "x_pos": 492.3213195800781, + "y_pos": -542.928955078125 + }, + { + "id": 27116, + "x_pos": 573.4642944335938, + "y_pos": 1521.6776123046875 + }, + { + "id": 27117, + "x_pos": 1336.5, + "y_pos": 359.2814025878906 + }, + { + "id": 27118, + "x_pos": 1336.88427734375, + "y_pos": 381.85491943359375 + }, + { + "id": 27119, + "x_pos": -159.57180786132812, + "y_pos": -1137.0 + }, + { + "id": 27120, + "x_pos": -142.0009002685547, + "y_pos": -1145.6844482421875 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/d2fa99f9123c46cd98de7410adfe1d7a_8479587568669217286.png" + }, + "149": { + "name": "Mitachurl", + "clear_name": "Mitachurl", + "points": [ + { + "id": 27104, + "x_pos": 490.67779541015625, + "y_pos": -540.8497314453125 + }, + { + "id": 27105, + "x_pos": -102.1429214477539, + "y_pos": 66.64207458496094 + }, + { + "id": 27106, + "x_pos": 156.1072235107422, + "y_pos": -15.71447467803955 + }, + { + "id": 27107, + "x_pos": -166.46426391601562, + "y_pos": -817.4630737304688 + }, + { + "id": 27108, + "x_pos": -271.2142333984375, + "y_pos": 710.2841186523438 + }, + { + "id": 27109, + "x_pos": 348.7295837402344, + "y_pos": 1076.4066162109375 + }, + { + "id": 27110, + "x_pos": 1311.714111328125, + "y_pos": 111.21173858642578 + }, + { + "id": 27111, + "x_pos": 1299.0882568359375, + "y_pos": 168.21755981445312 + }, + { + "id": 27112, + "x_pos": 1287.0, + "y_pos": 378.2158508300781 + }, + { + "id": 27113, + "x_pos": 1285.4285888671875, + "y_pos": 388.5 + }, + { + "id": 27114, + "x_pos": 1488.3927001953125, + "y_pos": 554.8726806640625 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/cef1444b97c8f49cd8cd8aa10e5448ae_955377869035330155.png" + }, + "17": { + "name": "Common Chest", + "clear_name": "CommonChest", + "points": [ + { + "id": 26942, + "x_pos": -746.2852783203125, + "y_pos": -815.2841796875 + }, + { + "id": 26943, + "x_pos": -1159.682373046875, + "y_pos": 1281.3375244140625 + }, + { + "id": 26944, + "x_pos": 575.5359497070312, + "y_pos": 1519.10791015625 + }, + { + "id": 26945, + "x_pos": 364.6786804199219, + "y_pos": 637.5724487304688 + }, + { + "id": 26946, + "x_pos": -124.25, + "y_pos": 110.32103729248047 + }, + { + "id": 26947, + "x_pos": -313.4995422363281, + "y_pos": 47.284080505371094 + }, + { + "id": 26948, + "x_pos": 935.1771240234375, + "y_pos": 393.6966857910156 + }, + { + "id": 26949, + "x_pos": -150.89295959472656, + "y_pos": -1142.036865234375 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/35cf41aad7620ce6d5dc516defb967f7_7806440070871726330.png" + }, + "44": { + "name": "Exquisite Chest", + "clear_name": "ExquisiteChest", + "points": [ + { + "id": 26950, + "x_pos": -766.25, + "y_pos": -1220.75 + }, + { + "id": 26951, + "x_pos": -944.0711059570312, + "y_pos": -1274.2158203125 + }, + { + "id": 26952, + "x_pos": -174.2140655517578, + "y_pos": -810.8565673828125 + }, + { + "id": 26953, + "x_pos": -257.21441650390625, + "y_pos": 726.928955078125 + }, + { + "id": 26954, + "x_pos": 361.9807434082031, + "y_pos": 1090.147216796875 + }, + { + "id": 26955, + "x_pos": 1320.9283447265625, + "y_pos": 92.46310424804688 + }, + { + "id": 26956, + "x_pos": 1275.70849609375, + "y_pos": 386.8524169921875 + }, + { + "id": 26957, + "x_pos": 1483.0, + "y_pos": 562.64208984375 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/8cd1c9d66f0adf4b34a7dfcf7715c99f_1064467135939485371.png" + }, + "64": { + "name": "Time Trial Challenge", + "clear_name": "TimeTrialChallenge", + "points": [ + { + "id": 26972, + "x_pos": -1051.0224609375, + "y_pos": -1073.6220703125 + }, + { + "id": 26973, + "x_pos": -1123.7144775390625, + "y_pos": 544.571044921875 + }, + { + "id": 26974, + "x_pos": -767.4288940429688, + "y_pos": 842.7158813476562 + }, + { + "id": 26975, + "x_pos": -63.71390914916992, + "y_pos": 884.1476440429688 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/5f0745a1c1812d249a90601c8de54552_2767759384451412130.png" + }, + "68": { + "name": "Bloatty Floatty", + "clear_name": "BloattyFloatty", + "points": [ + { + "id": 26976, + "x_pos": -914.9855346679688, + "y_pos": -1275.90625 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20210428/c8bc224c24b8b9036b50f3d44f48b308_6549675881226177642.png" + }, + "69": { + "name": "Buried Chest", + "clear_name": "BuriedChest", + "points": [ + { + "id": 27304, + "x_pos": -1325.25, + "y_pos": 828.0 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/35cf41aad7620ce6d5dc516defb967f7_7844961179332080431.png" + }, + "77": { + "name": "Mini Puzzle", + "clear_name": "MiniPuzzle", + "points": [ + { + "id": 26977, + "x_pos": -968.1430053710938, + "y_pos": -1327.571044921875 + }, + { + "id": 26978, + "x_pos": -1304.32177734375, + "y_pos": 637.5 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/8318e95c402c3f8120c236d569b7c30d_4122189942380617256.png" + }, + "55": { + "name": "Hilichurl", + "clear_name": "Hilichurl", + "points": [ + { + "id": 26979, + "x_pos": 491.46392822265625, + "y_pos": -556.5355224609375 + }, + { + "id": 26980, + "x_pos": 499.4283752441406, + "y_pos": -551.6762084960938 + }, + { + "id": 26981, + "x_pos": 31.690345764160156, + "y_pos": -98.28509521484375 + }, + { + "id": 26982, + "x_pos": -55.5, + "y_pos": -134.06834411621094 + }, + { + "id": 26983, + "x_pos": -65.12728881835938, + "y_pos": -122.63756561279297 + }, + { + "id": 26984, + "x_pos": -49.714412689208984, + "y_pos": -125.5 + }, + { + "id": 26985, + "x_pos": -125.14295196533203, + "y_pos": -58.28690719604492 + }, + { + "id": 26986, + "x_pos": -121.07572937011719, + "y_pos": -51.15031051635742 + }, + { + "id": 26987, + "x_pos": -125.78488159179688, + "y_pos": -47.2103271484375 + }, + { + "id": 26988, + "x_pos": -109.64298248291016, + "y_pos": 59.71309280395508 + }, + { + "id": 26989, + "x_pos": -106.14470672607422, + "y_pos": 63.28140640258789 + }, + { + "id": 26990, + "x_pos": -110.3570785522461, + "y_pos": 115.42894744873047 + }, + { + "id": 26991, + "x_pos": -105.35742950439453, + "y_pos": 120.5027084350586 + }, + { + "id": 26992, + "x_pos": -109.50175476074219, + "y_pos": 123.50823974609375 + }, + { + "id": 26993, + "x_pos": 154.2857666015625, + "y_pos": -26.214473724365234 + }, + { + "id": 26994, + "x_pos": 153.0357666015625, + "y_pos": -22.964473724365234 + }, + { + "id": 26995, + "x_pos": -1308.3822021484375, + "y_pos": 642.4385375976562 + }, + { + "id": 26996, + "x_pos": -1314.392822265625, + "y_pos": 643.1092529296875 + }, + { + "id": 26997, + "x_pos": -1313.5357666015625, + "y_pos": 647.35791015625 + }, + { + "id": 26998, + "x_pos": -198.0522918701172, + "y_pos": -834.247314453125 + }, + { + "id": 26999, + "x_pos": -185.87269592285156, + "y_pos": -854.9999389648438 + }, + { + "id": 27000, + "x_pos": -187.33705139160156, + "y_pos": -851.4309692382812 + }, + { + "id": 27001, + "x_pos": -176.89295959472656, + "y_pos": -815.0 + }, + { + "id": 27002, + "x_pos": -172.42868041992188, + "y_pos": -814.821044921875 + }, + { + "id": 27003, + "x_pos": -232.0362548828125, + "y_pos": -681.75 + }, + { + "id": 27004, + "x_pos": -227.96441650390625, + "y_pos": -681.7486572265625 + }, + { + "id": 27005, + "x_pos": -1160.5009765625, + "y_pos": 1278.9178466796875 + }, + { + "id": 27006, + "x_pos": -1162.14306640625, + "y_pos": 1280.8934326171875 + }, + { + "id": 27007, + "x_pos": -253.55810546875, + "y_pos": 709.6854858398438 + }, + { + "id": 27008, + "x_pos": -252.55801391601562, + "y_pos": 715.1817016601562 + }, + { + "id": 27009, + "x_pos": -201.5535430908203, + "y_pos": 705.4384155273438 + }, + { + "id": 27010, + "x_pos": -187.05226135253906, + "y_pos": 704.6889038085938 + }, + { + "id": 27011, + "x_pos": -173.05104064941406, + "y_pos": 689.4493408203125 + }, + { + "id": 27012, + "x_pos": -169.96426391601562, + "y_pos": 704.2144775390625 + }, + { + "id": 27013, + "x_pos": 355.23016357421875, + "y_pos": 1071.90966796875 + }, + { + "id": 27014, + "x_pos": 358.4642639160156, + "y_pos": 1076.178955078125 + }, + { + "id": 27015, + "x_pos": 1219.9830322265625, + "y_pos": 114.80021667480469 + }, + { + "id": 27016, + "x_pos": 1238.4287109375, + "y_pos": 67.21585845947266 + }, + { + "id": 27017, + "x_pos": 1236.3568115234375, + "y_pos": 68.68171691894531 + }, + { + "id": 27018, + "x_pos": 1237.5355224609375, + "y_pos": 70.6803207397461 + }, + { + "id": 27019, + "x_pos": 1313.9541015625, + "y_pos": 100.98345947265625 + }, + { + "id": 27020, + "x_pos": 1319.3212890625, + "y_pos": 103.32105255126953 + }, + { + "id": 27021, + "x_pos": 1272.5517578125, + "y_pos": 191.67381286621094 + }, + { + "id": 27022, + "x_pos": 1280.0523681640625, + "y_pos": 181.18099975585938 + }, + { + "id": 27023, + "x_pos": 1277.7469482421875, + "y_pos": 393.7701110839844 + }, + { + "id": 27024, + "x_pos": 1273.9288330078125, + "y_pos": 399.35797119140625 + }, + { + "id": 27025, + "x_pos": 1499.5714111328125, + "y_pos": 559.0 + }, + { + "id": 27026, + "x_pos": 1490.427734375, + "y_pos": 560.7185668945312 + }, + { + "id": 27027, + "x_pos": 1499.2120361328125, + "y_pos": 567.1475219726562 + }, + { + "id": 27028, + "x_pos": 1502.5712890625, + "y_pos": 544.0696411132812 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/4cca7114e8db044283d84ed3b0b72b06_5192184377885677903.png" + }, + "56": { + "name": "Hilichurl Shooter", + "clear_name": "HilichurlShooter", + "points": [ + { + "id": 27029, + "x_pos": 491.96337890625, + "y_pos": -558.8893432617188 + }, + { + "id": 27030, + "x_pos": 500.5716247558594, + "y_pos": -554.6079711914062 + }, + { + "id": 27031, + "x_pos": -57.42853927612305, + "y_pos": -111.75 + }, + { + "id": 27032, + "x_pos": -188.3052520751953, + "y_pos": -819.5665283203125 + }, + { + "id": 27033, + "x_pos": -157.7857666015625, + "y_pos": -821.178955078125 + }, + { + "id": 27034, + "x_pos": -1176.5067138671875, + "y_pos": 1283.4635009765625 + }, + { + "id": 27035, + "x_pos": -1178.892822265625, + "y_pos": 1284.7144775390625 + }, + { + "id": 27036, + "x_pos": -1146.820556640625, + "y_pos": 1288.286865234375 + }, + { + "id": 27037, + "x_pos": -1143.46484375, + "y_pos": 1286.644775390625 + }, + { + "id": 27038, + "x_pos": -1157.785888671875, + "y_pos": 1262.428955078125 + }, + { + "id": 27039, + "x_pos": -1154.5001220703125, + "y_pos": 1263.321044921875 + }, + { + "id": 27040, + "x_pos": -189.552490234375, + "y_pos": 687.6964111328125 + }, + { + "id": 27041, + "x_pos": -193.6429901123047, + "y_pos": 691.1065673828125 + }, + { + "id": 27042, + "x_pos": 323.9774169921875, + "y_pos": 1066.4134521484375 + }, + { + "id": 27043, + "x_pos": 569.1919555664062, + "y_pos": 1503.6964111328125 + }, + { + "id": 27044, + "x_pos": 594.6427612304688, + "y_pos": 1523.5697021484375 + }, + { + "id": 27045, + "x_pos": 563.298583984375, + "y_pos": 1529.71435546875 + }, + { + "id": 27046, + "x_pos": 577.2496337890625, + "y_pos": 1516.8975830078125 + }, + { + "id": 27047, + "x_pos": 580.25, + "y_pos": 1520.963134765625 + }, + { + "id": 27048, + "x_pos": 358.6072082519531, + "y_pos": 637.178955078125 + }, + { + "id": 27049, + "x_pos": 359.1426086425781, + "y_pos": 641.6475219726562 + }, + { + "id": 27050, + "x_pos": 346.75018310546875, + "y_pos": 646.3197021484375 + }, + { + "id": 27051, + "x_pos": 349.6070556640625, + "y_pos": 648.0355224609375 + }, + { + "id": 27052, + "x_pos": 377.7140808105469, + "y_pos": 625.7144775390625 + }, + { + "id": 27053, + "x_pos": 380.8572082519531, + "y_pos": 628.25 + }, + { + "id": 27054, + "x_pos": 395.1612548828125, + "y_pos": 613.4479370117188 + }, + { + "id": 27055, + "x_pos": -335.8566589355469, + "y_pos": 22.456275939941406 + }, + { + "id": 27056, + "x_pos": -337.7144470214844, + "y_pos": 59.210384368896484 + }, + { + "id": 27057, + "x_pos": -313.42987060546875, + "y_pos": 37.789615631103516 + }, + { + "id": 27058, + "x_pos": -319.92889404296875, + "y_pos": 43.57375717163086 + }, + { + "id": 27059, + "x_pos": -311.7161865234375, + "y_pos": 43.292381286621094 + }, + { + "id": 27060, + "x_pos": 1312.678466796875, + "y_pos": 137.28689575195312 + }, + { + "id": 27061, + "x_pos": 945.3324584960938, + "y_pos": 403.9039001464844 + }, + { + "id": 27062, + "x_pos": 943.75, + "y_pos": 407.1079406738281 + }, + { + "id": 27063, + "x_pos": 931.8369750976562, + "y_pos": 414.7503662109375 + }, + { + "id": 27064, + "x_pos": 933.0001831054688, + "y_pos": 390.5355224609375 + }, + { + "id": 27065, + "x_pos": 930.6429443359375, + "y_pos": 393.10791015625 + }, + { + "id": 27066, + "x_pos": 951.1971435546875, + "y_pos": 386.1877136230469 + }, + { + "id": 27067, + "x_pos": 1512.6785888671875, + "y_pos": 556.8196411132812 + }, + { + "id": 27068, + "x_pos": -756.3193969726562, + "y_pos": -805.131103515625 + }, + { + "id": 27069, + "x_pos": -755.0359497070312, + "y_pos": -801.8551635742188 + }, + { + "id": 27070, + "x_pos": -753.392822265625, + "y_pos": -817.5382080078125 + }, + { + "id": 27071, + "x_pos": -756.785400390625, + "y_pos": -816.3948364257812 + }, + { + "id": 27072, + "x_pos": -738.1786499023438, + "y_pos": -818.3224487304688 + }, + { + "id": 27073, + "x_pos": -734.6787109375, + "y_pos": -816.1420288085938 + }, + { + "id": 27074, + "x_pos": -165.67868041992188, + "y_pos": -1120.35791015625 + }, + { + "id": 27075, + "x_pos": -141.14263916015625, + "y_pos": -1125.71728515625 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/6011c87e15abc4e57f71b0f50a946afa_5965930998284792313.png" + }, + "57": { + "name": "Samachurl", + "clear_name": "Samachurl", + "points": [ + { + "id": 27076, + "x_pos": -1157.3931884765625, + "y_pos": 1279.6434326171875 + }, + { + "id": 27077, + "x_pos": -274.5599365234375, + "y_pos": 725.6824340820312 + }, + { + "id": 27078, + "x_pos": 342.7140808105469, + "y_pos": 632.2486572265625 + }, + { + "id": 27079, + "x_pos": -759.8570556640625, + "y_pos": -801.8948364257812 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/38142ddcc6d6a3ff9aacf691bb7b97af_4527768697261404629.png" + }, + "59": { + "name": "Slime", + "clear_name": "Slime", + "points": [ + { + "id": 27080, + "x_pos": 517.4287109375, + "y_pos": -682.4276123046875 + }, + { + "id": 27081, + "x_pos": -115.21195983886719, + "y_pos": 119.64480590820312 + }, + { + "id": 27082, + "x_pos": -1343.4288330078125, + "y_pos": 842.213134765625 + }, + { + "id": 27083, + "x_pos": -1333.2857666015625, + "y_pos": 834.7855224609375 + }, + { + "id": 27084, + "x_pos": -1338.0, + "y_pos": 838.2144775390625 + }, + { + "id": 27085, + "x_pos": -1348.7144775390625, + "y_pos": 845.5723876953125 + }, + { + "id": 27086, + "x_pos": -49.82146072387695, + "y_pos": -757.3223876953125 + }, + { + "id": 27087, + "x_pos": -47.81090545654297, + "y_pos": -754.31689453125 + }, + { + "id": 27088, + "x_pos": -52.21426773071289, + "y_pos": -754.2855224609375 + }, + { + "id": 27089, + "x_pos": -274.07147216796875, + "y_pos": 721.75 + }, + { + "id": 27090, + "x_pos": -269.0, + "y_pos": 726.0355224609375 + }, + { + "id": 27091, + "x_pos": -279.1070556640625, + "y_pos": 727.1065673828125 + }, + { + "id": 27092, + "x_pos": 341.6203308105469, + "y_pos": 1065.0635986328125 + }, + { + "id": 27093, + "x_pos": 345.5713195800781, + "y_pos": 1066.428955078125 + }, + { + "id": 27094, + "x_pos": 340.7288818359375, + "y_pos": 1068.412109375 + }, + { + "id": 27095, + "x_pos": 353.22998046875, + "y_pos": 1085.150634765625 + }, + { + "id": 27096, + "x_pos": 361.0715026855469, + "y_pos": 639.3593139648438 + }, + { + "id": 27097, + "x_pos": 356.14312744140625, + "y_pos": 639.7855224609375 + }, + { + "id": 27098, + "x_pos": 383.7492980957031, + "y_pos": 623.7472534179688 + }, + { + "id": 27099, + "x_pos": 1272.2855224609375, + "y_pos": 406.2158508300781 + }, + { + "id": 27100, + "x_pos": 947.3570556640625, + "y_pos": 405.75 + }, + { + "id": 27101, + "x_pos": 1496.2109375, + "y_pos": 562.2923583984375 + }, + { + "id": 27102, + "x_pos": 1648.142578125, + "y_pos": 892.571044921875 + }, + { + "id": 27103, + "x_pos": 1654.5714111328125, + "y_pos": 899.071044921875 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/380ece40b8222cd7cd17cf44ba325739_5103907981293273194.png" + }, + "61": { + "name": "Mist Flower Corolla", + "clear_name": "MistFlowerCorolla", + "points": [ + { + "id": 27165, + "x_pos": -939.3570556640625, + "y_pos": -1125.35791015625 + }, + { + "id": 27166, + "x_pos": -989.2498168945312, + "y_pos": -1127.14208984375 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20210428/379f3acf5091d5c9bab5d238398ed74b_1299253059491585322.png" + }, + "62": { + "name": "Flaming Flower Stamen", + "clear_name": "FlamingFlowerStamen", + "points": [ + { + "id": 27136, + "x_pos": 479.1648254394531, + "y_pos": -738.4446411132812 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20210428/a04fa1f0d9619196297357a33127095c_7827399238932095762.png" + }, + "63": { + "name": "Electro Crystal", + "clear_name": "ElectroCrystal", + "points": [ + { + "id": 27167, + "x_pos": -764.5357666015625, + "y_pos": -1251.0355224609375 + }, + { + "id": 27168, + "x_pos": 1182.713623046875, + "y_pos": 57.103824615478516 + }, + { + "id": 27169, + "x_pos": 1179.357177734375, + "y_pos": 58.67894744873047 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20210428/723d15046c4bd70a5b319d81a0032428_8204759773213807472.png" + }, + "91": { + "name": "Butterfly Wings", + "clear_name": "ButterflyWings", + "points": [ + { + "id": 27137, + "x_pos": 1204.0, + "y_pos": 171.71585083007812 + }, + { + "id": 27138, + "x_pos": 1200.2823486328125, + "y_pos": 174.86886596679688 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20210428/afb17f6ad50d8b33cd503e1390527ce8_6283032796221356535.png" + }, + "116": { + "name": "Crab", + "clear_name": "Crab", + "points": [ + { + "id": 27170, + "x_pos": -65.85637664794922, + "y_pos": -143.8634033203125 + }, + { + "id": 27171, + "x_pos": -1158.2508544921875, + "y_pos": 804.2882690429688 + }, + { + "id": 27172, + "x_pos": -1161.5357666015625, + "y_pos": 796.2117309570312 + }, + { + "id": 27173, + "x_pos": -280.6429443359375, + "y_pos": -760.25 + }, + { + "id": 27174, + "x_pos": -101.54914855957031, + "y_pos": -126.00096130371094 + }, + { + "id": 27175, + "x_pos": -94.5, + "y_pos": -121.5710220336914 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20210428/11307a34068f026989b56c0539fad37f_2196812100248598086.png" + }, + "126": { + "name": "Bird Egg", + "clear_name": "BirdEgg", + "points": [ + { + "id": 27139, + "x_pos": -115.03572845458984, + "y_pos": 62.28554153442383 + }, + { + "id": 27140, + "x_pos": -748.8051147460938, + "y_pos": -1194.8360595703125 + }, + { + "id": 27141, + "x_pos": -986.5721435546875, + "y_pos": -1132.6092529296875 + }, + { + "id": 27142, + "x_pos": -149.1785125732422, + "y_pos": -776.963134765625 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20210428/3774818f576e9ac0b0c22db53db06236_3117052274833919637.png" + }, + "160": { + "name": "Sweet Flower", + "clear_name": "SweetFlower", + "points": [ + { + "id": 27126, + "x_pos": 60.0, + "y_pos": -54.82103729248047 + }, + { + "id": 27127, + "x_pos": -102.0, + "y_pos": 80.2144775390625 + }, + { + "id": 27128, + "x_pos": -55.85725402832031, + "y_pos": -80.2103271484375 + }, + { + "id": 27129, + "x_pos": -823.535888671875, + "y_pos": -1203.9644775390625 + }, + { + "id": 27130, + "x_pos": -999.0379028320312, + "y_pos": -1239.683349609375 + }, + { + "id": 27131, + "x_pos": -895.1963500976562, + "y_pos": -1247.7586669921875 + }, + { + "id": 27132, + "x_pos": -131.53573608398438, + "y_pos": -824.1803588867188 + }, + { + "id": 27133, + "x_pos": -81.0, + "y_pos": -792.85791015625 + }, + { + "id": 27134, + "x_pos": -213.21409606933594, + "y_pos": -709.0355224609375 + }, + { + "id": 27135, + "x_pos": -236.50003051757812, + "y_pos": -722.2513427734375 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/fe24f3f4a006b643db66d94ab6699292_7138432858176083519.png" + }, + "161": { + "name": "Mint", + "clear_name": "Mint", + "points": [ + { + "id": 27143, + "x_pos": 442.6412048339844, + "y_pos": -660.8237915039062 + }, + { + "id": 27144, + "x_pos": 71.10706329345703, + "y_pos": 50.49863052368164 + }, + { + "id": 27145, + "x_pos": -82.38029479980469, + "y_pos": 88.98826599121094 + }, + { + "id": 27146, + "x_pos": -75.64295196533203, + "y_pos": -21.106531143188477 + }, + { + "id": 27147, + "x_pos": -47.30812072753906, + "y_pos": -51.793819427490234 + }, + { + "id": 27148, + "x_pos": -1260.5001220703125, + "y_pos": 816.7158203125 + }, + { + "id": 27149, + "x_pos": -1248.83544921875, + "y_pos": 698.7781372070312 + }, + { + "id": 27150, + "x_pos": -868.5357666015625, + "y_pos": -1117.64208984375 + }, + { + "id": 27151, + "x_pos": -971.8216552734375, + "y_pos": -1221.9617919921875 + }, + { + "id": 27152, + "x_pos": -962.3212890625, + "y_pos": -1140.7144775390625 + }, + { + "id": 27153, + "x_pos": -1046.2503662109375, + "y_pos": -1115.39208984375 + }, + { + "id": 27154, + "x_pos": -797.5, + "y_pos": -1149.071044921875 + }, + { + "id": 27155, + "x_pos": -211.05233764648438, + "y_pos": -800.0376586914062 + }, + { + "id": 27156, + "x_pos": -148.051025390625, + "y_pos": -727.3200073242188 + }, + { + "id": 27157, + "x_pos": -163.25, + "y_pos": -750.1434326171875 + }, + { + "id": 27158, + "x_pos": -231.89295959472656, + "y_pos": -826.2855224609375 + }, + { + "id": 27159, + "x_pos": 1232.947021484375, + "y_pos": 74.68002319335938 + }, + { + "id": 27160, + "x_pos": 1205.4285888671875, + "y_pos": 161.57107543945312 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20220323/aa83f2e70bcc0a0d69998f52b97b07d4_6511257378598580635.png" + }, + "163": { + "name": "Berry", + "clear_name": "Berry", + "points": [ + { + "id": 27161, + "x_pos": 72.46424102783203, + "y_pos": -0.7855254411697388 + }, + { + "id": 27162, + "x_pos": -954.7015380859375, + "y_pos": -1217.279541015625 + }, + { + "id": 27163, + "x_pos": -765.787841796875, + "y_pos": -1225.681640625 + }, + { + "id": 27164, + "x_pos": -82.71427154541016, + "y_pos": -768.89208984375 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20210428/0dac79cd68e374c60be673fef82e0804_172650782223650192.png" + }, + "275": { + "name": "Pale Red Crab", + "clear_name": "PaleRedCrab", + "points": [ + { + "id": 27121, + "x_pos": -1154.0006103515625, + "y_pos": 790.922119140625 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20211021/6e17260992a233799a23381eb0feedd9_4513070379884671128.png" + }, + "282": { + "name": "Ocean Crab", + "clear_name": "OceanCrab", + "points": [ + { + "id": 27122, + "x_pos": -1158.25, + "y_pos": 803.9276123046875 + }, + { + "id": 27123, + "x_pos": -94.14122772216797, + "y_pos": -121.20764923095703 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20211021/dc91128cbe42afd2beb80b9d875fdc0d_3704974644510104752.png" + }, + "288": { + "name": "Golden Crab", + "clear_name": "GoldenCrab", + "points": [ + { + "id": 27124, + "x_pos": -65.72248077392578, + "y_pos": -144.0218505859375 + }, + { + "id": 27125, + "x_pos": -101.92573547363281, + "y_pos": -125.78414154052734 + } + ], + "icon": "https://upload-static.hoyoverse.com/map_manage/20211021/13f856fdf3ff98766323042faa264a11_5377005728875672077.png" + } + }, + "categories": [ + { + "id": 1, + "name": "Waypoints", + "children": [ + 2, + 3, + 154, + 158, + 190, + 192, + 316, + 319, + 338, + 340 + ] + }, + { + "id": 4, + "name": "Oculi", + "children": [ + 5, + 6, + 141, + 182, + 194, + 320, + 325, + 326, + 327, + 328, + 357, + 362, + 383 + ] + }, + { + "id": 7, + "name": "Shrines of Depths", + "children": [ + 8, + 9, + 212 + ] + }, + { + "id": 10, + "name": "Local Specialties", + "children": [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 78, + 185, + 196, + 197, + 198, + 199, + 211, + 227, + 228, + 266 + ] + }, + { + "id": 11, + "name": "Ores", + "children": [ + 15, + 16, + 80, + 139, + 142, + 172, + 202 + ] + }, + { + "id": 12, + "name": "Enemies (Elite)", + "children": [ + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 49, + 53, + 149, + 150, + 151, + 152, + 169, + 206, + 207, + 210, + 214, + 215, + 255, + 257, + 265, + 337, + 344 + ] + }, + { + "id": 13, + "name": "Open-World Chests", + "children": [ + 17, + 44, + 45, + 46, + 269 + ] + }, + { + "id": 14, + "name": "Puzzles", + "children": [ + 18, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 79, + 83, + 148, + 155, + 156, + 159, + 191, + 193, + 205, + 216, + 230, + 231, + 258, + 259, + 260, + 264, + 321, + 330, + 331, + 332, + 341, + 346, + 349, + 353, + 354 + ] + }, + { + "id": 50, + "name": "Enemies (Common)", + "children": [ + 47, + 48, + 54, + 55, + 56, + 57, + 58, + 59, + 209, + 213, + 221, + 222, + 229, + 345 + ] + }, + { + "id": 51, + "name": "World Quests", + "children": [ + 52 + ] + }, + { + "id": 60, + "name": "Materials", + "children": [ + 61, + 62, + 63, + 81, + 82, + 90, + 91, + 92, + 93, + 94, + 115, + 116, + 121, + 122, + 123, + 124, + 125, + 126, + 140, + 153, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 184, + 195, + 200, + 201, + 254, + 342, + 343, + 355, + 356 + ] + }, + { + "id": 84, + "name": "Geography", + "children": [ + 85 + ] + }, + { + "id": 86, + "name": "Enemies (Easter Egg)", + "children": [ + 87 + ] + }, + { + "id": 88, + "name": "Events", + "children": [] + }, + { + "id": 110, + "name": "Books/Recipes", + "children": [ + 111, + 112 + ] + }, + { + "id": 113, + "name": "Investigation", + "children": [ + 114, + 127, + 128, + 129, + 130, + 223, + 224, + 256, + 329, + 359 + ] + }, + { + "id": 131, + "name": "Enemies (Boss)", + "children": [ + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 157, + 181, + 183, + 203, + 204, + 262, + 263, + 318, + 333, + 352 + ] + }, + { + "id": 143, + "name": "Guide", + "children": [ + 144, + 145, + 146, + 147, + 208, + 253, + 267, + 268, + 322, + 323, + 324, + 334, + 347, + 358 + ] + }, + { + "id": 170, + "name": "NPC", + "children": [ + 171, + 225, + 226, + 270 + ] + }, + { + "id": 173, + "name": "Wood", + "children": [ + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 217, + 218, + 219, + 220 + ] + }, + { + "id": 186, + "name": "Puzzle Chest", + "children": [ + 187, + 188, + 189 + ] + }, + { + "id": 232, + "name": "Fishing", + "children": [ + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 261, + 335, + 336 + ] + }, + { + "id": 273, + "name": "Animals", + "children": [ + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 301, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 314, + 315, + 339, + 348, + 350, + 351 + ] + } + ] +} \ No newline at end of file diff --git a/cheat-library/res/res.rc b/cheat-library/res/res.rc index e8945e0..923ed0e 100644 --- a/cheat-library/res/res.rc +++ b/cheat-library/res/res.rc @@ -25,21 +25,21 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // TEXTINCLUDE // -1 TEXTINCLUDE +1 TEXTINCLUDE BEGIN - "resource.h\0" +"resource.h\0" END -2 TEXTINCLUDE +2 TEXTINCLUDE BEGIN - "#include ""winres.h""\r\n" - "\0" +"#include ""winres.h""\r\n" +"\0" END -3 TEXTINCLUDE +3 TEXTINCLUDE BEGIN - "\r\n" - "\0" +"\r\n" +"\0" END #endif // APSTUDIO_INVOKED @@ -62,6 +62,8 @@ MAPTEYVATDATA RCDATA "map_teyvat.json" MAPUNDEGROUNDMINESDATA RCDATA "map_undeground_mines.json" +MAPGOLDENAPPLEARCHIPELAGODATA RCDATA "map_golden_apple_archipelago.json" + AssemblyChecksums RCDATA "assembly_checksum.json" @@ -72,8 +74,6 @@ AssemblyChecksums RCDATA "assembly_checksum.json" HDABIDINGANGELFISH PNG "iconsHD\\AbidingAngelfish.png" -HDABYSSHERALD PNG "iconsHD\\AbyssHerald.png" - HDABYSSMAGE PNG "iconsHD\\AbyssMage.png" HDADORNEDUNAGI PNG "iconsHD\\AdornedUnagi.png" @@ -88,6 +88,8 @@ HDAMETHYSTLUMP PNG "iconsHD\\AmethystLump.png" HDANCIENTRIME PNG "iconsHD\\AncientRime.png" +HDANDRIUS PNG "iconsHD\\Andrius.png" + HDANEMOCRYSTALFLY PNG "iconsHD\\AnemoCrystalfly.png" HDANEMOCULUS PNG "iconsHD\\Anemoculus.png" @@ -102,14 +104,14 @@ HDARCHAICSTONE PNG "iconsHD\\ArchaicStone.png" HDARTIFACT PNG "iconsHD\\Artifact.png" +HDAZHDAHA PNG "iconsHD\\Azhdaha.png" + HDBAKEDANUKI PNG "iconsHD\\BakeDanuki.png" HDBAMBOOSEGMENT PNG "iconsHD\\BambooSegment.png" HDBAMBOOSHOOT PNG "iconsHD\\BambooShoot.png" -HDBATHYSMALVISHAP PNG "iconsHD\\BathysmalVishap.png" - HDBATHYSMALVISHAPHERD PNG "iconsHD\\BathysmalVishapHerd.png" HDBERRY PNG "iconsHD\\Berry.png" @@ -124,6 +126,8 @@ HDBITTERPUFFERFISH PNG "iconsHD\\BitterPufferfish.png" HDBLACKKINGPIGEON PNG "iconsHD\\BlackKingPigeon.png" +HDBLACKSERPENTKNIGHT PNG "iconsHD\\BlackSerpentKnight.png" + HDBLOATTYFLOATTY PNG "iconsHD\\BloattyFloatty.png" HDBLUEFROG PNG "iconsHD\\BlueFrog.png" @@ -132,8 +136,12 @@ HDBLUEHORNEDLIZARD PNG "iconsHD\\BlueHornedLizard.png" HDBLUETHUNDERWEASEL PNG "iconsHD\\BluethunderWeasel.png" +HDBOAR PNG "iconsHD\\Boar.png" + HDBOOK PNG "iconsHD\\Book.png" +HDBOOKPAGE PNG "iconsHD\\BookPage.png" + HDBOOTWEASEL PNG "iconsHD\\BootWeasel.png" HDBRIGHTCROWNPIGEON PNG "iconsHD\\BrightcrownPigeon.png" @@ -150,10 +158,14 @@ HDCAMPFIRETORCH PNG "iconsHD\\CampfireTorch.png" HDCARROT PNG "iconsHD\\Carrot.png" +HDCAT PNG "iconsHD\\Cat.png" + HDCECILIA PNG "iconsHD\\Cecilia.png" HDCHILLEDMEAT PNG "iconsHD\\ChilledMeat.png" +HDCICIN PNG "iconsHD\\Cicin.png" + HDCOMMONCHEST PNG "iconsHD\\CommonChest.png" HDCOOKINGINGREDIENT PNG "iconsHD\\CookingIngredient.png" @@ -162,6 +174,8 @@ HDCORLAPIS PNG "iconsHD\\CorLapis.png" HDCRAB PNG "iconsHD\\Crab.png" +HDCRANE PNG "iconsHD\\Crane.png" + HDCRIMSONAGATE PNG "iconsHD\\CrimsonAgate.png" HDCRIMSONFINCH PNG "iconsHD\\CrimsonFinch.png" @@ -172,6 +186,8 @@ HDCRIMSONFOX PNG "iconsHD\\CrimsonFox.png" HDCROW PNG "iconsHD\\Crow.png" +HDCRYOBATHYSMALVISHAP PNG "iconsHD\\CryoBathysmalVishap.png" + HDCRYOCRYSTALFLY PNG "iconsHD\\CryoCrystalfly.png" HDCRYOHYPOSTASIS PNG "iconsHD\\CryoHypostasis.png" @@ -202,14 +218,30 @@ HDDEEPSEAUNAGI PNG "iconsHD\\DeepSeaUnagi.png" HDDENDROBIUM PNG "iconsHD\\Dendrobium.png" +HDDENDROCULUS PNG "iconsHD\\Dendroculus.png" + HDDIVDARAY PNG "iconsHD\\DivdaRay.png" +HDDOG PNG "iconsHD\\Dog.png" + HDDOMAIN PNG "iconsHD\\Domain.png" +HDDUNLINSTOOTH PNG "iconsHD\\DunlinsTooth.png" + +HDDVALIN PNG "iconsHD\\Dvalin.png" + +HDECHOINGCONCH PNG "iconsHD\\EchoingConch.png" + +HDEEL PNG "iconsHD\\Eel.png" + HDEIGHTSTONETABLETS PNG "iconsHD\\EightStoneTablets.png" HDELECTRICCONDUCTION PNG "iconsHD\\ElectricConduction.png" +HDELECTROABYSSLECTOR PNG "iconsHD\\ElectroAbyssLector.png" + +HDELECTROBATHYSMALVISHAP PNG "iconsHD\\ElectroBathysmalVishap.png" + HDELECTROCRYSTAL PNG "iconsHD\\ElectroCrystal.png" HDELECTROCRYSTALFLY PNG "iconsHD\\ElectroCrystalfly.png" @@ -220,6 +252,8 @@ HDELECTROGRANUM PNG "iconsHD\\Electrogranum.png" HDELECTROHYPOSTASIS PNG "iconsHD\\ElectroHypostasis.png" +HDELECTROREGISVINE PNG "iconsHD\\ElectroRegisvine.png" + HDELECTROSEELIE PNG "iconsHD\\ElectroSeelie.png" HDELEMENTALMONUMENT PNG "iconsHD\\ElementalMonument.png" @@ -230,10 +264,14 @@ HDENEMIESFIRSTTIMEVICTORY PNG "iconsHD\\EnemiesFirstTimeVict HDENKANOMIYAPHASEGATE PNG "iconsHD\\EnkanomiyaPhaseGate.png" +HDEREMITE PNG "iconsHD\\Eremite.png" + HDEXQUISITECHEST PNG "iconsHD\\ExquisiteChest.png" HDEYEOFTHESTORM PNG "iconsHD\\EyeoftheStorm.png" +HDFALCON PNG "iconsHD\\Falcon.png" + HDFATUIAGENT PNG "iconsHD\\FatuiAgent.png" HDFATUICICINMAGE PNG "iconsHD\\FatuiCicinMage.png" @@ -242,6 +280,8 @@ HDFATUIMIRRORMAIDEN PNG "iconsHD\\FatuiMirrorMaiden.png" HDFATUISKIRMISHER PNG "iconsHD\\FatuiSkirmisher.png" +HDFINCH PNG "iconsHD\\Finch.png" + HDFIRWOOD PNG "iconsHD\\FirWood.png" HDFISH PNG "iconsHD\\Fish.png" @@ -252,7 +292,7 @@ HDFLAMINGFLOWERSTAMEN PNG "iconsHD\\FlamingFlowerStamen.pn HDFLOATINGANEMOSLIME PNG "iconsHD\\FloatingAnemoSlime.png" -HDFLOATINGHYDROFUNGUS PNG "iconsHD\\FloatingHydroFungus.png" +HDFLOATINGFUNGUS PNG "iconsHD\\FloatingFungus.png" HDFLUORESCENTFUNGUS PNG "iconsHD\\FluorescentFungus.png" @@ -260,6 +300,8 @@ HDFORMALORAY PNG "iconsHD\\FormaloRay.png" HDFOWL PNG "iconsHD\\Fowl.png" +HDFOX PNG "iconsHD\\Fox.png" + HDFRAGRANTCEDARWOOD PNG "iconsHD\\FragrantCedarWood.png" HDFROG PNG "iconsHD\\Frog.png" @@ -276,6 +318,8 @@ HDGEOGRANUM PNG "iconsHD\\Geogranum.png" HDGEOHYPOSTASIS PNG "iconsHD\\GeoHypostasis.png" +HDGEOPUZZLE PNG "iconsHD\\MiniPuzzle.png" + HDGEOSIGIL PNG "iconsHD\\GeoSigil.png" HDGEOVISHAP PNG "iconsHD\\Geovishap.png" @@ -302,6 +346,10 @@ HDGRAYWINGPIGEON PNG "iconsHD\\GraywingPigeon.png" HDGREENHORNEDLIZARD PNG "iconsHD\\GreenHornedLizard.png" +HDGROUNDEDSHROOM PNG "iconsHD\\GroundedShroom.png" + +HDHARRAFRUIT PNG "iconsHD\\HarraFruit.png" + HDHARVESTABLEPLANT PNG "iconsHD\\HarvestablePlant.png" HDHILICHURL PNG "iconsHD\\Hilichurl.png" @@ -312,18 +360,32 @@ HDHILICHURLSHOOTER PNG "iconsHD\\HilichurlShooter.png" HDHORSETAIL PNG "iconsHD\\Horsetail.png" +HDHYDROABYSSHERALD PNG "iconsHD\\HydroAbyssHerald.png" + HDHYDROHYPOSTASIS PNG "iconsHD\\HydroHypostasis.png" HDILLUSION PNG "iconsHD\\Illusion.png" +HDIMAGINGCONCH PNG "iconsHD\\ImagingConch.png" + HDINAZUMASHRINEOFDEPTHS PNG "iconsHD\\InazumaShrineofDepths.png" +HDINU PNG "iconsHD\\Inu.png" + HDIRONCHUNK PNG "iconsHD\\IronChunk.png" HDJADECHAMBER PNG "iconsHD\\JadeChamber.png" +HDJADEPLUMETERRORSHROOM PNG "iconsHD\\JadeplumeTerrorshroom.png" + HDJUEYUNCHILI PNG "iconsHD\\JueyunChili.png" +HDKAIRAGI PNG "iconsHD\\Kairagi.png" + +HDKALPALATALOTUS PNG "iconsHD\\KalpalataLotus.png" + +HDKEYSIGIL PNG "iconsHD\\KeySigil.png" + HDKEYSIGILI PNG "iconsHD\\KeySigilI.png" HDKEYSIGILII PNG "iconsHD\\KeySigilII.png" @@ -382,6 +444,8 @@ HDMEDAKA PNG "iconsHD\\Medaka.png" HDMERCHANT PNG "iconsHD\\Merchant.png" +HDMILLELITH PNG "iconsHD\\Millelith.png" + HDMINIPUZZLE PNG "iconsHD\\MiniPuzzle.png" HDMINT PNG "iconsHD\\Mint.png" @@ -404,6 +468,8 @@ HDMYSTERIOUSCARVINGS PNG "iconsHD\\MysteriousCarvings.png HDNAKUWEED PNG "iconsHD\\NakuWeed.png" +HDNILOTPALALOTUS PNG "iconsHD\\NilotpalaLotus.png" + HDNOBUSHI PNG "iconsHD\\Nobushi.png" HDNOCTILUCOUSJADE PNG "iconsHD\\NoctilucousJade.png" @@ -412,25 +478,45 @@ HDOCEANCRAB PNG "iconsHD\\OceanCrab.png" HDOCEANID PNG "iconsHD\\Oceanid.png" +HDOCEANIDBOAR PNG "iconsHD\\OceanidSummons.png" + +HDOCEANIDCRAB PNG "iconsHD\\OceanidSummons.png" + +HDOCEANIDCRANE PNG "iconsHD\\OceanidSummons.png" + +HDOCEANIDFALCON PNG "iconsHD\\OceanidSummons.png" + +HDOCEANIDFINCH PNG "iconsHD\\OceanidSummons.png" + +HDOCEANIDFROG PNG "iconsHD\\OceanidSummons.png" + +HDOCEANIDSQUIRREL PNG "iconsHD\\OceanidSummons.png" + +HDOCEANIDWIGEON PNG "iconsHD\\OceanidSummons.png" + HDONIKABUTO PNG "iconsHD\\Onikabuto.png" HDORES PNG "iconsHD\\Ores.png" HDOTOGIWOOD PNG "iconsHD\\OtogiWood.png" +HDPADISARAH PNG "iconsHD\\Padisarah.png" + HDPALEREDCRAB PNG "iconsHD\\PaleRedCrab.png" -HDPERPETUALMECHANICALARRAY PNG "iconsHD\\PerpetualMechanicalArray.png" +HDPERPETUALMECHANICALARRAY PNG "iconsHD\\PerpetualMechanicalArray.png" HDPHASEGATE PNG "iconsHD\\PhaseGate.png" HDPHILANEMOMUSHROOM PNG "iconsHD\\PhilanemoMushroom.png" +HDPIGEON PNG "iconsHD\\Pigeon.png" + HDPINECONE PNG "iconsHD\\Pinecone.png" HDPINEWOOD PNG "iconsHD\\PineWood.png" -HDPLACESOFESSENCEWORSHIP PNG "iconsHD\\PlacesofEssenceWorship.png" +HDPLACESOFESSENCEWORSHIP PNG "iconsHD\\PlacesofEssenceWorship.png" HDPOT PNG "iconsHD\\Pot.png" @@ -444,6 +530,8 @@ HDPUFFERFISH PNG "iconsHD\\Pufferfish.png" HDPURPLESHIRAKODAI PNG "iconsHD\\PurpleShirakodai.png" +HDPYROABYSSLECTOR PNG "iconsHD\\PyroAbyssLector.png" + HDPYROHYPOSTASIS PNG "iconsHD\\PyroHypostasis.png" HDPYROREGISVINE PNG "iconsHD\\PyroRegisvine.png" @@ -468,10 +556,18 @@ HDREDTAILEDWEASEL PNG "iconsHD\\RedTailedWeasel.png" HDREMARKABLECHEST PNG "iconsHD\\RemarkableChest.png" +HDRIFTHOUND PNG "iconsHD\\Rifthound.png" + +HDRIFTHOUNDWHELP PNG "iconsHD\\RifthoundWhelp.png" + +HDRISHBOLANDTIGER PNG "iconsHD\\RishbolandTiger.png" + HDROCKPILE PNG "iconsHD\\RockPile.png" HDRUINBRAZIER PNG "iconsHD\\RuinBrazier.png" +HDRUINDRAKE PNG "iconsHD\\RuinDrake.png" + HDRUINGRADER PNG "iconsHD\\RuinGrader.png" HDRUINGUARD PNG "iconsHD\\RuinGuard.png" @@ -482,16 +578,22 @@ HDRUINSENTINEL PNG "iconsHD\\RuinSentinel.png" HDRUINSERPENT PNG "iconsHD\\RuinSerpent.png" +HDRUKKHASHAVAMUSHROOMS PNG "iconsHD\\RukkhashavaMushrooms.png" + HDRUSTYKOI PNG "iconsHD\\RustyKoi.png" HDSACREDSAKURA PNG "iconsHD\\SacredSakura.png" HDSAKURABLOOM PNG "iconsHD\\SakuraBloom.png" +HDSALAMANDER PNG "iconsHD\\Salamander.png" + HDSAMACHURL PNG "iconsHD\\Samachurl.png" HDSANDBEARERWOOD PNG "iconsHD\\SandbearerWood.png" +HDSANGONOMIYACOHORT PNG "iconsHD\\SangonomiyaCohort.png" + HDSANGOPEARL PNG "iconsHD\\SangoPearl.png" HDSAPPHIRE PNG "iconsHD\\Sapphire.png" @@ -504,6 +606,10 @@ HDSEAGRASS PNG "iconsHD\\Seagrass.png" HDSEALEDCHEST PNG "iconsHD\\SealedChest.png" +HDSEALLOCATIONS PNG "iconsHD\\SealLocationI.png" + +HDSEALLOCATIONI PNG "iconsHD\\SealLocationI.png" + HDSEALLOCATIONII PNG "iconsHD\\SealLocationII.png" HDSEALLOCATIONIII PNG "iconsHD\\SealLocationIII.png" @@ -512,14 +618,22 @@ HDSEALLOCATIONIV PNG "iconsHD\\SealLocationIV.png" HDSEALLOCATIONV PNG "iconsHD\\SealLocationV.png" -HDSEALLOCATIONI PNG "iconsHD\\SealLocationI.png" - HDSEELIE PNG "iconsHD\\Seelie.png" HDSEELIECOURT PNG "iconsHD\\SeelieCourt.png" HDSHADOWYHUSK PNG "iconsHD\\ShadowyHusk.png" +HDSHAGGYSUMPTERBEAST PNG "iconsHD\\ShaggySumpterBeast.png" + +HDSHOGUN PNG "iconsHD\\Shogun.png" + +HDSHOGUNATEINFANTRY PNG "iconsHD\\ShogunateInfantry.png" + +HDSHRINEOFDEPTH PNG "iconsHD\\Mondstadt.png" + +HDSIGNORA PNG "iconsHD\\Signora.png" + HDSILKFLOWER PNG "iconsHD\\SilkFlower.png" HDSLIME PNG "iconsHD\\Slime.png" @@ -544,6 +658,8 @@ HDSNOWWEASEL PNG "iconsHD\\SnowWeasel.png" HDSPECTER PNG "iconsHD\\Specter.png" +HDSPINCROCODILE PNG "iconsHD\\Spincrocodile.png" + HDSQUIRREL PNG "iconsHD\\Squirrel.png" HDSTARCONCH PNG "iconsHD\\Starconch.png" @@ -560,6 +676,10 @@ HDSTORMSTONE PNG "iconsHD\\Stormstone.png" HDSTRANGETOOTH PNG "iconsHD\\StrangeTooth.png" +HDSTRETCHYFUNGUS PNG "iconsHD\\StretchyFungus.png" + +HDSUMERUROSE PNG "iconsHD\\SumeruRose.png" + HDSUNCRAB PNG "iconsHD\\SunCrab.png" HDSUNNYLOACH PNG "iconsHD\\SunnyLoach.png" @@ -574,6 +694,8 @@ HDSWEETFLOWERMEDAKA PNG "iconsHD\\SweetFlowerMedaka.png" HDSWORDHILT PNG "iconsHD\\SwordHilt.png" +HDTARTAGLIA PNG "iconsHD\\Tartaglia.png" + HDTEACOLOREDSHIRAKODAI PNG "iconsHD\\TeaColoredShirakodai.png" HDTELEPORTWAYPOINT PNG "iconsHD\\TeleportWaypoint.png" @@ -594,6 +716,8 @@ HDTREASUREHOARDER PNG "iconsHD\\TreasureHoarder.png" HDTRIANGULARMECHANISM PNG "iconsHD\\TriangularMechanism.png" +HDTUKAN PNG "iconsHD\\Tukan.png" + HDUNAGIMEAT PNG "iconsHD\\UnagiMeat.png" HDUNIQUEROCKS PNG "iconsHD\\UniqueRocks.png" @@ -610,22 +734,32 @@ HDVIOLETGRASS PNG "iconsHD\\Violetgrass.png" HDVIOLETIBIS PNG "iconsHD\\VioletIbis.png" +HDVIPARYAS PNG "iconsHD\\Viparyas.png" + HDWARMINGSEELIE PNG "iconsHD\\WarmingSeelie.png" -HDWAVERIDERWAYPOINTCANNOTTELEPORT PNG "iconsHD\\WaveriderWaypointCannotTeleport.png" +HDWAVERIDERWAYPOINTCANNOTTELEPORT PNG "iconsHD\\WaveriderWaypointCannotTeleport.png" HDWEAPON PNG "iconsHD\\Weapon.png" +HDWEASEL PNG "iconsHD\\Weasel.png" + +HDWHIRLINGFUNGUS PNG "iconsHD\\WhirlingFungus.png" + HDWHITEIRONCHUNK PNG "iconsHD\\WhiteIronChunk.png" HDWHITEPIGEON PNG "iconsHD\\WhitePigeon.png" HDWHOPPERFLOWER PNG "iconsHD\\Whopperflower.png" +HDWIGEON PNG "iconsHD\\Wigeon.png" + HDWINDMILLMECHANISM PNG "iconsHD\\WindmillMechanism.png" HDWINDWHEELASTER PNG "iconsHD\\WindwheelAster.png" +HDWINGEDSHROOM PNG "iconsHD\\WingedShroom.png" + HDWOLFHOOK PNG "iconsHD\\Wolfhook.png" HDWOLVESOFTHERIFT PNG "iconsHD\\WolvesoftheRift.png" @@ -636,9 +770,19 @@ HDWORLDQUESTS PNG "iconsHD\\WorldQuests.png" HDYUMEMIRUWOOD PNG "iconsHD\\YumemiruWood.png" -ABIDINGANGELFISH PNG "icons\\AbidingAngelfish.png" +HDZAYTUNPEACH PNG "iconsHD\\ZaytunPeach.png" -ABYSSHERALD PNG "icons\\AbyssHerald.png" +HDMELODICBLOOM PNG "iconsHD\\MelodicBloom.png" + +HDCLOUDLEISURESTEPS PNG "iconsHD\\CloudleisureSteps.png" + +HDDREAMFORM PNG "iconsHD\\DreamForm.png" + +HDSTARLIGHTCOALESCENCE PNG "iconsHD\\StarlightCoalescence.png" + +HDTHERAVENFORUM PNG "iconsHD\\TheRavenForum.png" + +ABIDINGANGELFISH PNG "icons\\AbidingAngelfish.png" ABYSSMAGE PNG "icons\\AbyssMage.png" @@ -654,6 +798,8 @@ AMETHYSTLUMP PNG "icons\\AmethystLump.png" ANCIENTRIME PNG "icons\\AncientRime.png" +ANDRIUS PNG "icons\\Andrius.png" + ANEMOCRYSTALFLY PNG "icons\\AnemoCrystalfly.png" ANEMOCULUS PNG "icons\\Anemoculus.png" @@ -668,9 +814,11 @@ ARCHAICSTONE PNG "icons\\ArchaicStone.png" ARTIFACT PNG "icons\\Artifact.png" -AVATAROWN PNG "icons\\Avatar.png" +AVATAROWN PNG "icons\\Avatar.png" -AVATARTEAMMATE PNG "icons\\Avatar.png" +AVATARTEAMMATE PNG "icons\\Avatar.png" + +AZHDAHA PNG "icons\\Azhdaha.png" BAKEDANUKI PNG "icons\\BakeDanuki.png" @@ -678,8 +826,6 @@ BAMBOOSEGMENT PNG "icons\\BambooSegment.png" BAMBOOSHOOT PNG "icons\\BambooShoot.png" -BATHYSMALVISHAP PNG "icons\\BathysmalVishap.png" - BATHYSMALVISHAPHERD PNG "icons\\BathysmalVishapHerd.png" BERRY PNG "icons\\Berry.png" @@ -694,6 +840,8 @@ BITTERPUFFERFISH PNG "icons\\BitterPufferfish.png" BLACKKINGPIGEON PNG "icons\\BlackKingPigeon.png" +BLACKSERPENTKNIGHT PNG "icons\\BlackSerpentKnight.png" + BLOATTYFLOATTY PNG "icons\\BloattyFloatty.png" BLUEFROG PNG "icons\\BlueFrog.png" @@ -702,8 +850,12 @@ BLUEHORNEDLIZARD PNG "icons\\BlueHornedLizard.png" BLUETHUNDERWEASEL PNG "icons\\BluethunderWeasel.png" +BOAR PNG "icons\\Boar.png" + BOOK PNG "icons\\Book.png" +BOOKPAGE PNG "icons\\BookPage.png" + BOOTWEASEL PNG "icons\\BootWeasel.png" BRIGHTCROWNPIGEON PNG "icons\\BrightcrownPigeon.png" @@ -720,10 +872,14 @@ CAMPFIRETORCH PNG "icons\\CampfireTorch.png" CARROT PNG "icons\\Carrot.png" +CAT PNG "icons\\Cat.png" + CECILIA PNG "icons\\Cecilia.png" CHILLEDMEAT PNG "icons\\ChilledMeat.png" +CICIN PNG "icons\\Cicin.png" + COMMONCHEST PNG "icons\\CommonChest.png" COOKINGINGREDIENT PNG "icons\\CookingIngredient.png" @@ -732,6 +888,8 @@ CORLAPIS PNG "icons\\CorLapis.png" CRAB PNG "icons\\Crab.png" +CRANE PNG "icons\\Crane.png" + CRIMSONAGATE PNG "icons\\CrimsonAgate.png" CRIMSONFINCH PNG "icons\\CrimsonFinch.png" @@ -742,6 +900,8 @@ CRIMSONFOX PNG "icons\\CrimsonFox.png" CROW PNG "icons\\Crow.png" +CRYOBATHYSMALVISHAP PNG "icons\\CryoBathysmalVishap.png" + CRYOCRYSTALFLY PNG "icons\\CryoCrystalfly.png" CRYOHYPOSTASIS PNG "icons\\CryoHypostasis.png" @@ -766,20 +926,36 @@ DANDY PNG "icons\\Dandy.png" DAWNCATCHER PNG "icons\\Dawncatcher.png" -DAYNIGHTSWITCHINGMECHANISM PNG "icons\\DayNightSwitchingMechanism.png" +DAYNIGHTSWITCHINGMECHANISM PNG "icons\\DayNightSwitchingMechanism.png" DEEPSEAUNAGI PNG "icons\\DeepSeaUnagi.png" DENDROBIUM PNG "icons\\Dendrobium.png" +DENDROCULUS PNG "icons\\Dendroculus.png" + DIVDARAY PNG "icons\\DivdaRay.png" +DOG PNG "icons\\Dog.png" + DOMAIN PNG "icons\\Domain.png" +DUNLINSTOOTH PNG "icons\\DunlinsTooth.png" + +DVALIN PNG "icons\\Dvalin.png" + +ECHOINGCONCH PNG "icons\\EchoingConch.png" + +EEL PNG "icons\\Eel.png" + EIGHTSTONETABLETS PNG "icons\\EightStoneTablets.png" ELECTRICCONDUCTION PNG "icons\\ElectricConduction.png" +ELECTROABYSSLECTOR PNG "icons\\ElectroAbyssLector.png" + +ELECTROBATHYSMALVISHAP PNG "icons\\ElectroBathysmalVishap.png" + ELECTROCRYSTAL PNG "icons\\ElectroCrystal.png" ELECTROCRYSTALFLY PNG "icons\\ElectroCrystalfly.png" @@ -790,6 +966,8 @@ ELECTROGRANUM PNG "icons\\Electrogranum.png" ELECTROHYPOSTASIS PNG "icons\\ElectroHypostasis.png" +ELECTROREGISVINE PNG "icons\\ElectroRegisvine.png" + ELECTROSEELIE PNG "icons\\ElectroSeelie.png" ELEMENTALMONUMENT PNG "icons\\ElementalMonument.png" @@ -800,10 +978,14 @@ ENEMIESFIRSTTIMEVICTORY PNG "icons\\EnemiesFirstTimeVictory. ENKANOMIYAPHASEGATE PNG "icons\\EnkanomiyaPhaseGate.png" +EREMITE PNG "icons\\Eremite.png" + EXQUISITECHEST PNG "icons\\ExquisiteChest.png" EYEOFTHESTORM PNG "icons\\EyeoftheStorm.png" +FALCON PNG "icons\\Falcon.png" + FATUIAGENT PNG "icons\\FatuiAgent.png" FATUICICINMAGE PNG "icons\\FatuiCicinMage.png" @@ -812,6 +994,8 @@ FATUIMIRRORMAIDEN PNG "icons\\FatuiMirrorMaiden.png" FATUISKIRMISHER PNG "icons\\FatuiSkirmisher.png" +FINCH PNG "icons\\Finch.png" + FIRWOOD PNG "icons\\FirWood.png" FISH PNG "icons\\Fish.png" @@ -822,7 +1006,7 @@ FLAMINGFLOWERSTAMEN PNG "icons\\FlamingFlowerStamen.png" FLOATINGANEMOSLIME PNG "icons\\FloatingAnemoSlime.png" -FLOATINGHYDROFUNGUS PNG "icons\\FloatingHydroFungus.png" +FLOATINGFUNGUS PNG "icons\\FloatingFungus.png" FLUORESCENTFUNGUS PNG "icons\\FluorescentFungus.png" @@ -830,6 +1014,8 @@ FORMALORAY PNG "icons\\FormaloRay.png" FOWL PNG "icons\\Fowl.png" +FOX PNG "icons\\Fox.png" + FRAGRANTCEDARWOOD PNG "icons\\FragrantCedarWood.png" FROG PNG "icons\\Frog.png" @@ -846,6 +1032,8 @@ GEOGRANUM PNG "icons\\Geogranum.png" GEOHYPOSTASIS PNG "icons\\GeoHypostasis.png" +GEOPUZZLE PNG "icons\\MiniPuzzle.png" + GEOSIGIL PNG "icons\\GeoSigil.png" GEOVISHAP PNG "icons\\Geovishap.png" @@ -872,6 +1060,10 @@ GRAYWINGPIGEON PNG "icons\\GraywingPigeon.png" GREENHORNEDLIZARD PNG "icons\\GreenHornedLizard.png" +GROUNDEDSHROOM PNG "icons\\GroundedShroom.png" + +HARRAFRUIT PNG "icons\\HarraFruit.png" + HARVESTABLEPLANT PNG "icons\\HarvestablePlant.png" HILICHURL PNG "icons\\Hilichurl.png" @@ -882,18 +1074,32 @@ HILICHURLSHOOTER PNG "icons\\HilichurlShooter.png" HORSETAIL PNG "icons\\Horsetail.png" +HYDROABYSSHERALD PNG "icons\\HydroAbyssHerald.png" + HYDROHYPOSTASIS PNG "icons\\HydroHypostasis.png" ILLUSION PNG "icons\\Illusion.png" +IMAGINGCONCH PNG "icons\\ImagingConch.png" + INAZUMASHRINEOFDEPTHS PNG "icons\\InazumaShrineofDepths.png" +INU PNG "icons\\Inu.png" + IRONCHUNK PNG "icons\\IronChunk.png" JADECHAMBER PNG "icons\\JadeChamber.png" +JADEPLUMETERRORSHROOM PNG "icons\\JadeplumeTerrorshroom.png" + JUEYUNCHILI PNG "icons\\JueyunChili.png" +KAIRAGI PNG "icons\\Kairagi.png" + +KALPALATALOTUS PNG "icons\\KalpalataLotus.png" + +KEYSIGIL PNG "icons\\KeySigil.png" + KEYSIGILI PNG "icons\\KeySigilI.png" KEYSIGILII PNG "icons\\KeySigilII.png" @@ -952,6 +1158,8 @@ MEDAKA PNG "icons\\Medaka.png" MERCHANT PNG "icons\\Merchant.png" +MILLELITH PNG "icons\\Millelith.png" + MINIPUZZLE PNG "icons\\MiniPuzzle.png" MINT PNG "icons\\Mint.png" @@ -974,6 +1182,8 @@ MYSTERIOUSCARVINGS PNG "icons\\MysteriousCarvings.png" NAKUWEED PNG "icons\\NakuWeed.png" +NILOTPALALOTUS PNG "icons\\NilotpalaLotus.png" + NOBUSHI PNG "icons\\Nobushi.png" NOCTILUCOUSJADE PNG "icons\\NoctilucousJade.png" @@ -984,12 +1194,30 @@ OCEANCRAB PNG "icons\\OceanCrab.png" OCEANID PNG "icons\\Oceanid.png" +OCEANIDBOAR PNG "icons\\OceanidSummons.png" + +OCEANIDCRAB PNG "icons\\OceanidSummons.png" + +OCEANIDCRANE PNG "icons\\OceanidSummons.png" + +OCEANIDFALCON PNG "icons\\OceanidSummons.png" + +OCEANIDFINCH PNG "icons\\OceanidSummons.png" + +OCEANIDFROG PNG "icons\\OceanidSummons.png" + +OCEANIDSQUIRREL PNG "icons\\OceanidSummons.png" + +OCEANIDWIGEON PNG "icons\\OceanidSummons.png" + ONIKABUTO PNG "icons\\Onikabuto.png" ORES PNG "icons\\Ores.png" OTOGIWOOD PNG "icons\\OtogiWood.png" +PADISARAH PNG "icons\\Padisarah.png" + PALEREDCRAB PNG "icons\\PaleRedCrab.png" PERPETUALMECHANICALARRAY PNG "icons\\PerpetualMechanicalArray.png" @@ -998,6 +1226,8 @@ PHASEGATE PNG "icons\\PhaseGate.png" PHILANEMOMUSHROOM PNG "icons\\PhilanemoMushroom.png" +PIGEON PNG "icons\\Pigeon.png" + PINECONE PNG "icons\\Pinecone.png" PINEWOOD PNG "icons\\PineWood.png" @@ -1016,6 +1246,8 @@ PUFFERFISH PNG "icons\\Pufferfish.png" PURPLESHIRAKODAI PNG "icons\\PurpleShirakodai.png" +PYROABYSSLECTOR PNG "icons\\PyroAbyssLector.png" + PYROHYPOSTASIS PNG "icons\\PyroHypostasis.png" PYROREGISVINE PNG "icons\\PyroRegisvine.png" @@ -1040,10 +1272,18 @@ REDTAILEDWEASEL PNG "icons\\RedTailedWeasel.png" REMARKABLECHEST PNG "icons\\RemarkableChest.png" +RIFTHOUND PNG "icons\\Rifthound.png" + +RIFTHOUNDWHELP PNG "icons\\RifthoundWhelp.png" + +RISHBOLANDTIGER PNG "icons\\RishbolandTiger.png" + ROCKPILE PNG "icons\\RockPile.png" RUINBRAZIER PNG "icons\\RuinBrazier.png" +RUINDRAKE PNG "icons\\RuinDrake.png" + RUINGRADER PNG "icons\\RuinGrader.png" RUINGUARD PNG "icons\\RuinGuard.png" @@ -1054,16 +1294,22 @@ RUINSENTINEL PNG "icons\\RuinSentinel.png" RUINSERPENT PNG "icons\\RuinSerpent.png" +RUKKHASHAVAMUSHROOMS PNG "icons\\RukkhashavaMushrooms.png" + RUSTYKOI PNG "icons\\RustyKoi.png" SACREDSAKURA PNG "icons\\SacredSakura.png" SAKURABLOOM PNG "icons\\SakuraBloom.png" +SALAMANDER PNG "icons\\Salamander.png" + SAMACHURL PNG "icons\\Samachurl.png" SANDBEARERWOOD PNG "icons\\SandbearerWood.png" +SANGONOMIYACOHORT PNG "icons\\SangonomiyaCohort.png" + SANGOPEARL PNG "icons\\SangoPearl.png" SAPPHIRE PNG "icons\\Sapphire.png" @@ -1076,6 +1322,10 @@ SEAGRASS PNG "icons\\Seagrass.png" SEALEDCHEST PNG "icons\\SealedChest.png" +SEALLOCATIONS PNG "icons\\SealLocationI.png" + +SEALLOCATIONI PNG "icons\\SealLocationI.png" + SEALLOCATIONII PNG "icons\\SealLocationII.png" SEALLOCATIONIII PNG "icons\\SealLocationIII.png" @@ -1084,14 +1334,22 @@ SEALLOCATIONIV PNG "icons\\SealLocationIV.png" SEALLOCATIONV PNG "icons\\SealLocationV.png" -SEALLOCATIONI PNG "icons\\SealLocationI.png" - SEELIE PNG "icons\\Seelie.png" SEELIECOURT PNG "icons\\SeelieCourt.png" SHADOWYHUSK PNG "icons\\ShadowyHusk.png" +SHAGGYSUMPTERBEAST PNG "icons\\ShaggySumpterBeast.png" + +SHOGUN PNG "icons\\Shogun.png" + +SHOGUNATEINFANTRY PNG "icons\\ShogunateInfantry.png" + +SHRINEOFDEPTH PNG "icons\\ShrineOfDepth.png" + +SIGNORA PNG "icons\\Signora.png" + SILKFLOWER PNG "icons\\SilkFlower.png" SLIME PNG "icons\\Slime.png" @@ -1116,6 +1374,8 @@ SNOWWEASEL PNG "icons\\SnowWeasel.png" SPECTER PNG "icons\\Specter.png" +SPINCROCODILE PNG "icons\\Spincrocodile.png" + SQUIRREL PNG "icons\\Squirrel.png" STARCONCH PNG "icons\\Starconch.png" @@ -1132,6 +1392,10 @@ STORMSTONE PNG "icons\\Stormstone.png" STRANGETOOTH PNG "icons\\StrangeTooth.png" +STRETCHYFUNGUS PNG "icons\\StretchyFungus.png" + +SUMERUROSE PNG "icons\\SumeruRose.png" + SUNCRAB PNG "icons\\SunCrab.png" SUNNYLOACH PNG "icons\\SunnyLoach.png" @@ -1146,6 +1410,8 @@ SWEETFLOWERMEDAKA PNG "icons\\SweetFlowerMedaka.png" SWORDHILT PNG "icons\\SwordHilt.png" +TARTAGLIA PNG "icons\\Tartaglia.png" + TEACOLOREDSHIRAKODAI PNG "icons\\TeaColoredShirakodai.png" TELEPORTWAYPOINT PNG "icons\\TeleportWaypoint.png" @@ -1166,6 +1432,8 @@ TREASUREHOARDER PNG "icons\\TreasureHoarder.png" TRIANGULARMECHANISM PNG "icons\\TriangularMechanism.png" +TUKAN PNG "icons\\Tukan.png" + UNAGIMEAT PNG "icons\\UnagiMeat.png" UNIQUEROCKS PNG "icons\\UniqueRocks.png" @@ -1182,22 +1450,32 @@ VIOLETGRASS PNG "icons\\Violetgrass.png" VIOLETIBIS PNG "icons\\VioletIbis.png" +VIPARYAS PNG "icons\\Viparyas.png" + WARMINGSEELIE PNG "icons\\WarmingSeelie.png" -WAVERIDERWAYPOINTCANNOTTELEPORT PNG "icons\\WaveriderWaypointCannotTeleport.png" +WAVERIDERWAYPOINTCANNOTTELEPORT PNG "icons\\WaveriderWaypointCannotTeleport.png" WEAPON PNG "icons\\Weapon.png" +WEASEL PNG "icons\\Weasel.png" + +WHIRLINGFUNGUS PNG "icons\\WhirlingFungus.png" + WHITEIRONCHUNK PNG "icons\\WhiteIronChunk.png" WHITEPIGEON PNG "icons\\WhitePigeon.png" WHOPPERFLOWER PNG "icons\\Whopperflower.png" +WIGEON PNG "icons\\Wigeon.png" + WINDMILLMECHANISM PNG "icons\\WindmillMechanism.png" WINDWHEELASTER PNG "icons\\WindwheelAster.png" +WINGEDSHROOM PNG "icons\\WingedShroom.png" + WOLFHOOK PNG "icons\\Wolfhook.png" WOLVESOFTHERIFT PNG "icons\\WolvesoftheRift.png" @@ -1208,6 +1486,18 @@ WORLDQUESTS PNG "icons\\WorldQuests.png" YUMEMIRUWOOD PNG "icons\\YumemiruWood.png" +ZAYTUNPEACH PNG "icons\\ZaytunPeach.png" + +MELODICBLOOM PNG "icons\\MelodicBloom.png" + +CLOUDLEISURESTEPS PNG "icons\\CloudleisureSteps.png" + +DREAMFORM PNG "icons\\DreamForm.png" + +STARLIGHTCOALESCENCE PNG "icons\\StarlightCoalescence.png" + +THERAVENFORUM PNG "icons\\TheRavenForum.png" + #endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/cheat-library/src/appdata/il2cpp-functions.h b/cheat-library/src/appdata/il2cpp-functions.h index e7a94dc..b40a760 100644 --- a/cheat-library/src/appdata/il2cpp-functions.h +++ b/cheat-library/src/appdata/il2cpp-functions.h @@ -51,9 +51,8 @@ DO_APP_FUNC(0x026F0820, bool, MoleMole_LCAvatarCombat_IsEnergyMax, (void* __this DO_APP_FUNC(0x026F0500, void, MoleMole_LCAvatarCombat_ChangeEnergy_1, (LCAvatarCombat* __this, ElementType__Enum type, float value, DataPropOp__Enum state, MethodInfo* method)); DO_APP_FUNC(0x026F13C0, bool, MoleMole_LCAvatarCombat_OnSkillStart, (LCAvatarCombat* __this, uint32_t skillID, float cdMultipler, MethodInfo* method)); DO_APP_FUNC(0x026F54A0, bool, MoleMole_LCAvatarCombat_IsSkillInCD_1, (LCAvatarCombat* __this, LCAvatarCombat_LCAvatarCombat_SkillInfo* skillInfo, MethodInfo* method)); - -DO_APP_FUNC(0x02DB4680, void, MoleMole_ActorAbilityPlugin_AddDynamicFloatWithRange, (void* __this, String* key, float value, float min, float max, bool forceDoAtRemote, MethodInfo* method)); - +DO_APP_FUNC(0x02DB4680, void, MoleMole_ActorAbilityPlugin_AddDynamicFloatWithRange, (MoleMole_ActorAbilityPlugin* __this, String* key, float value, float min, float max, bool forceDoAtRemote, MethodInfo* method)); + // Rapid fire DO_APP_FUNC(0x017B1D50, void, MoleMole_LCBaseCombat_DoHitEntity, (LCBaseCombat* __this, uint32_t targetID, AttackResult* attackResult, bool ignoreCheckCanBeHitInMP, MethodInfo* method)); DO_APP_FUNC(0x019DDF40, void, MoleMole_Formula_CalcAttackResult, (CombatProperty* attackCombatProperty, CombatProperty* defenseCombatProperty, AttackResult* attackResult, BaseEntity* attackerEntity, BaseEntity* attackeeEntity, MethodInfo* method)); @@ -155,6 +154,11 @@ DO_APP_FUNC(0x012BC260, void, CookingQtePageContext_CloseItemGotPanel, (CookingQ DO_APP_FUNC(0x02A37D50, Button_1*, ProfilePage, (MonoInLevelPlayerProfilePage* __this, MethodInfo* method)); // MonoInLevelPlayerProfilePage_get_logoutButton DO_APP_FUNC(0x01B101B0, void, ProfileEditPage, (MonoFriendInformationDialog* __this, Sprite* value, MethodInfo* method)); // MonoFriendInformationDialog_set_icon +// Custom Weather | RyujinZX#6666 +DO_APP_FUNC(0x027774F0, bool, EnviroSky_ChangeWeather, (void* /*app::EnviroSky*/ __this, String* weatherPath, float transTime, float ratio, MethodInfo* method)); +DO_APP_FUNC(0x014EDB10, void* /*app::EnviroSky*/, EnviroSky_get_Instance, (MethodInfo* method)); + + // Free Camera DO_APP_FUNC(0x057E9C00, float, Camera_get_fieldOfView, (Camera* __this, MethodInfo* method)); DO_APP_FUNC(0x057EA060, void, Camera_set_fieldOfView, (Camera* __this, float value, MethodInfo* method)); @@ -245,6 +249,7 @@ DO_APP_FUNC(0x0596AFF0, LCBaseCombat*, MoleMole_BaseEntity_GetLogicCombatCompone DO_APP_FUNC_METHODINFO(0x099D4410, MoleMole_BaseEntity_GetLogicCombatComponent_1__MethodInfo); DO_APP_FUNC(0x031ACE30, String*, MoleMole_BaseEntity_ToStringRelease, (BaseEntity* __this, MethodInfo* method)); + DO_APP_FUNC(0x03180C10, void, MoleMole_BaseEntity_SetRelativePosition, (BaseEntity* __this, Vector3 position, bool forceSyncToRigidbody, MethodInfo* method)); DO_APP_FUNC(0x0319D8B0, void, MoleMole_BaseEntity_SetAbsolutePosition, (BaseEntity* __this, Vector3 abpos, bool forceSyncToRigidbody, MethodInfo* method)); DO_APP_FUNC(0x031AA160, Vector3, MoleMole_BaseEntity_GetAbsolutePosition, (BaseEntity* __this, MethodInfo* method)); @@ -255,6 +260,7 @@ DO_APP_FUNC(0x03187C30, Vector3, MoleMole_BaseEntity_GetRight, (BaseEntity* __th DO_APP_FUNC(0x03185DC0, Vector3, MoleMole_BaseEntity_GetUp, (BaseEntity* __this, MethodInfo* method)); DO_APP_FUNC(0x031A5120, bool, MoleMole_BaseEntity_IsActive, (BaseEntity* __this, MethodInfo* method)); DO_APP_FUNC(0x031AFEE0, Rigidbody*, MoleMole_BaseEntity_GetRigidbody, (BaseEntity* __this, MethodInfo* method)); +DO_APP_FUNC(0x0318DB20, Animator*, MoleMole_BaseEntity_get_animator, (BaseEntity* __this, MethodInfo* method)); // type should be 'MoleMole_VCCharacterCombat' not 'MoleMole_VCBaseMove' // function name should be 'GetVisualCombatComponent' not 'GetMoveComponent' @@ -318,6 +324,9 @@ DO_APP_FUNC(0x057E4470, void, Cursor_set_visible, (bool value, MethodInfo* metho DO_APP_FUNC(0x057E4460, void, Cursor_set_lockState, (CursorLockMode__Enum value, MethodInfo* method)); DO_APP_FUNC(0x057E4450, bool, Cursor_get_visible, (MethodInfo* method)); +DO_APP_FUNC(0x0571E7C0, RigidbodyConstraints__Enum, Rigidbody_get_constraints, (Rigidbody* __this, MethodInfo* method)); +DO_APP_FUNC(0x0571E990, void, Rigidbody_set_constraints, (Rigidbody* __this, RigidbodyConstraints__Enum value, MethodInfo* method)); +DO_APP_FUNC(0x0571E980, void, Rigidbody_set_collisionDetectionMode, (Rigidbody* __this, CollisionDetectionMode__Enum value, MethodInfo* method)); DO_APP_FUNC(0x0571E9A0, void, Rigidbody_set_detectCollisions, (Rigidbody* __this, bool value, MethodInfo* method)); DO_APP_FUNC(0x0571E9E0, void, Rigidbody_set_isKinematic, (Rigidbody* __this, bool value, MethodInfo* method)); DO_APP_FUNC(0x0571E8F0, Vector3, Rigidbody_get_velocity, (Rigidbody* __this, MethodInfo* method)); @@ -335,6 +344,11 @@ DO_APP_FUNC(0x057E9D10, int32_t, Camera_get_pixelHeight, (Camera* __this, Method DO_APP_FUNC(0x0579EB70, int32_t, Screen_get_width, (MethodInfo* method)); DO_APP_FUNC(0x0579EB00, int32_t, Screen_get_height, (MethodInfo* method)); +DO_APP_FUNC(0x05822EE0, void, Animator_Play, (Animator* __this, String* stateName, int32_t layer, float normalizedTime, MethodInfo* method)); +DO_APP_FUNC(0x05823060, void, Animator_Rebind, (Animator* __this, MethodInfo* method)); +DO_APP_FUNC(0x058235C0, float, Animator_get_speed, (Animator* __this, MethodInfo* method)); +DO_APP_FUNC(0x058236F0, void, Animator_set_speed, (Animator* __this, float value, MethodInfo* method)); + DO_APP_FUNC(0x058AE2D0, bool, Behaviour_get_isActiveAndEnabled, (Behaviour* __this, MethodInfo* method)); DO_APP_FUNC(0x05891610, Vector3, Quaternion_ToEulerAngles, (Quaternion rotation, MethodInfo* method)); diff --git a/cheat-library/src/appdata/il2cpp-types.h b/cheat-library/src/appdata/il2cpp-types.h index 8093753..5fb7cd1 100644 --- a/cheat-library/src/appdata/il2cpp-types.h +++ b/cheat-library/src/appdata/il2cpp-types.h @@ -109,53 +109,53 @@ typedef enum } Il2CppRuntimeUnhandledExceptionPolicy; typedef struct Il2CppStackFrameInfo { - const MethodInfo *method; + const MethodInfo* method; } Il2CppStackFrameInfo; typedef void(*Il2CppMethodPointer)(); typedef struct Il2CppMethodDebugInfo { Il2CppMethodPointer methodPointer; int32_t code_size; - const char *file; + const char* file; } Il2CppMethodDebugInfo; typedef struct { void* (*malloc_func)(size_t size); void* (*aligned_malloc_func)(size_t size, size_t alignment); - void (*free_func)(void *ptr); - void (*aligned_free_func)(void *ptr); + void (*free_func)(void* ptr); + void (*aligned_free_func)(void* ptr); void* (*calloc_func)(size_t nmemb, size_t size); - void* (*realloc_func)(void *ptr, size_t size); - void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment); + void* (*realloc_func)(void* ptr, size_t size); + void* (*aligned_realloc_func)(void* ptr, size_t size, size_t alignment); } Il2CppMemoryCallbacks; typedef struct { - const char *name; - void(*connect)(const char *address); + const char* name; + void(*connect)(const char* address); int(*wait_for_attach)(void); void(*close1)(void); void(*close2)(void); - int(*send)(void *buf, int len); - int(*recv)(void *buf, int len); + int(*send)(void* buf, int len); + int(*recv)(void* buf, int len); } Il2CppDebuggerTransport; typedef uint16_t Il2CppChar; typedef char Il2CppNativeChar; typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata); typedef void (*il2cpp_WorldChangedCallback)(); -typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data); +typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo* info, void* user_data); typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof); -typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method); -typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass); +typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo* method); +typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject* obj, Il2CppClass* klass); typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation); typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size); typedef void (*Il2CppProfileFileIOFunc) (Il2CppProfiler* prof, Il2CppProfileFileIOKind kind, int count); -typedef void (*Il2CppProfileThreadFunc) (Il2CppProfiler *prof, unsigned long tid); +typedef void (*Il2CppProfileThreadFunc) (Il2CppProfiler* prof, unsigned long tid); typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*); typedef void (*Il2CppLogCallback)(const char*); typedef size_t(*Il2CppBacktraceFunc) (Il2CppMethodPointer* buffer, size_t maxSize); typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot; typedef uintptr_t il2cpp_array_size_t; -typedef void ( *SynchronizationContextCallback)(intptr_t arg); +typedef void (*SynchronizationContextCallback)(intptr_t arg); typedef uint32_t Il2CppMethodSlot; static const uint32_t kInvalidIl2CppMethodSlot = 65535; static const int ipv6AddressSize = 16; @@ -639,18 +639,18 @@ typedef struct Il2CppArrayType uint8_t rank; uint8_t numsizes; uint8_t numlobounds; - int *sizes; - int *lobounds; + int* sizes; + int* lobounds; } Il2CppArrayType; typedef struct Il2CppGenericInst { uint32_t type_argc; - const Il2CppType **type_argv; + const Il2CppType** type_argv; } Il2CppGenericInst; typedef struct Il2CppGenericContext { - const Il2CppGenericInst *class_inst; - const Il2CppGenericInst *method_inst; + const Il2CppGenericInst* class_inst; + const Il2CppGenericInst* method_inst; } Il2CppGenericContext; typedef struct Il2CppGenericParameter { @@ -672,7 +672,7 @@ typedef struct Il2CppGenericClass { TypeDefinitionIndex typeDefinitionIndex; Il2CppGenericContext context; - Il2CppClass *cached_class; + Il2CppClass* cached_class; } Il2CppGenericClass; typedef struct Il2CppGenericMethod { @@ -685,10 +685,10 @@ typedef struct Il2CppType { void* dummy; TypeDefinitionIndex klassIndex; - const Il2CppType *type; - Il2CppArrayType *array; + const Il2CppType* type; + Il2CppArrayType* array; GenericParameterIndex genericParameterIndex; - Il2CppGenericClass *generic_class; + Il2CppGenericClass* generic_class; } data; unsigned int attrs : 16; Il2CppTypeEnum type : 8; @@ -958,88 +958,88 @@ typedef enum Il2CppTypeNameFormat } Il2CppTypeNameFormat; typedef struct Il2CppDefaults { - Il2CppImage *corlib; - Il2CppClass *object_class; - Il2CppClass *byte_class; - Il2CppClass *void_class; - Il2CppClass *boolean_class; - Il2CppClass *sbyte_class; - Il2CppClass *int16_class; - Il2CppClass *uint16_class; - Il2CppClass *int32_class; - Il2CppClass *uint32_class; - Il2CppClass *int_class; - Il2CppClass *uint_class; - Il2CppClass *int64_class; - Il2CppClass *uint64_class; - Il2CppClass *single_class; - Il2CppClass *double_class; - Il2CppClass *char_class; - Il2CppClass *string_class; - Il2CppClass *enum_class; - Il2CppClass *array_class; - Il2CppClass *delegate_class; - Il2CppClass *multicastdelegate_class; - Il2CppClass *asyncresult_class; - Il2CppClass *manualresetevent_class; - Il2CppClass *typehandle_class; - Il2CppClass *fieldhandle_class; - Il2CppClass *methodhandle_class; - Il2CppClass *systemtype_class; - Il2CppClass *monotype_class; - Il2CppClass *exception_class; - Il2CppClass *threadabortexception_class; - Il2CppClass *thread_class; - Il2CppClass *internal_thread_class; - Il2CppClass *appdomain_class; - Il2CppClass *appdomain_setup_class; - Il2CppClass *field_info_class; - Il2CppClass *method_info_class; - Il2CppClass *property_info_class; - Il2CppClass *event_info_class; - Il2CppClass *mono_event_info_class; - Il2CppClass *stringbuilder_class; - Il2CppClass *stack_frame_class; - Il2CppClass *stack_trace_class; - Il2CppClass *marshal_class; - Il2CppClass *typed_reference_class; - Il2CppClass *marshalbyrefobject_class; - Il2CppClass *generic_ilist_class; - Il2CppClass *generic_icollection_class; - Il2CppClass *generic_ienumerable_class; - Il2CppClass *generic_ireadonlylist_class; - Il2CppClass *generic_ireadonlycollection_class; - Il2CppClass *runtimetype_class; - Il2CppClass *generic_nullable_class; - Il2CppClass *il2cpp_com_object_class; - Il2CppClass *attribute_class; - Il2CppClass *customattribute_data_class; - Il2CppClass *version; - Il2CppClass *culture_info; - Il2CppClass *async_call_class; - Il2CppClass *assembly_class; - Il2CppClass *mono_assembly_class; - Il2CppClass *assembly_name_class; - Il2CppClass *mono_field_class; - Il2CppClass *mono_method_class; - Il2CppClass *mono_method_info_class; - Il2CppClass *mono_property_info_class; - Il2CppClass *parameter_info_class; - Il2CppClass *mono_parameter_info_class; - Il2CppClass *module_class; - Il2CppClass *pointer_class; - Il2CppClass *system_exception_class; - Il2CppClass *argument_exception_class; - Il2CppClass *wait_handle_class; - Il2CppClass *safe_handle_class; - Il2CppClass *sort_key_class; - Il2CppClass *dbnull_class; - Il2CppClass *error_wrapper_class; - Il2CppClass *missing_class; - Il2CppClass *value_type_class; - Il2CppClass *threadpool_wait_callback_class; - MethodInfo *threadpool_perform_wait_callback_method; - Il2CppClass *mono_method_message_class; + Il2CppImage* corlib; + Il2CppClass* object_class; + Il2CppClass* byte_class; + Il2CppClass* void_class; + Il2CppClass* boolean_class; + Il2CppClass* sbyte_class; + Il2CppClass* int16_class; + Il2CppClass* uint16_class; + Il2CppClass* int32_class; + Il2CppClass* uint32_class; + Il2CppClass* int_class; + Il2CppClass* uint_class; + Il2CppClass* int64_class; + Il2CppClass* uint64_class; + Il2CppClass* single_class; + Il2CppClass* double_class; + Il2CppClass* char_class; + Il2CppClass* string_class; + Il2CppClass* enum_class; + Il2CppClass* array_class; + Il2CppClass* delegate_class; + Il2CppClass* multicastdelegate_class; + Il2CppClass* asyncresult_class; + Il2CppClass* manualresetevent_class; + Il2CppClass* typehandle_class; + Il2CppClass* fieldhandle_class; + Il2CppClass* methodhandle_class; + Il2CppClass* systemtype_class; + Il2CppClass* monotype_class; + Il2CppClass* exception_class; + Il2CppClass* threadabortexception_class; + Il2CppClass* thread_class; + Il2CppClass* internal_thread_class; + Il2CppClass* appdomain_class; + Il2CppClass* appdomain_setup_class; + Il2CppClass* field_info_class; + Il2CppClass* method_info_class; + Il2CppClass* property_info_class; + Il2CppClass* event_info_class; + Il2CppClass* mono_event_info_class; + Il2CppClass* stringbuilder_class; + Il2CppClass* stack_frame_class; + Il2CppClass* stack_trace_class; + Il2CppClass* marshal_class; + Il2CppClass* typed_reference_class; + Il2CppClass* marshalbyrefobject_class; + Il2CppClass* generic_ilist_class; + Il2CppClass* generic_icollection_class; + Il2CppClass* generic_ienumerable_class; + Il2CppClass* generic_ireadonlylist_class; + Il2CppClass* generic_ireadonlycollection_class; + Il2CppClass* runtimetype_class; + Il2CppClass* generic_nullable_class; + Il2CppClass* il2cpp_com_object_class; + Il2CppClass* attribute_class; + Il2CppClass* customattribute_data_class; + Il2CppClass* version; + Il2CppClass* culture_info; + Il2CppClass* async_call_class; + Il2CppClass* assembly_class; + Il2CppClass* mono_assembly_class; + Il2CppClass* assembly_name_class; + Il2CppClass* mono_field_class; + Il2CppClass* mono_method_class; + Il2CppClass* mono_method_info_class; + Il2CppClass* mono_property_info_class; + Il2CppClass* parameter_info_class; + Il2CppClass* mono_parameter_info_class; + Il2CppClass* module_class; + Il2CppClass* pointer_class; + Il2CppClass* system_exception_class; + Il2CppClass* argument_exception_class; + Il2CppClass* wait_handle_class; + Il2CppClass* safe_handle_class; + Il2CppClass* sort_key_class; + Il2CppClass* dbnull_class; + Il2CppClass* error_wrapper_class; + Il2CppClass* missing_class; + Il2CppClass* value_type_class; + Il2CppClass* threadpool_wait_callback_class; + MethodInfo* threadpool_perform_wait_callback_method; + Il2CppClass* mono_method_message_class; Il2CppClass* ireference_class; Il2CppClass* ireferencearray_class; Il2CppClass* ikey_value_pair_class; @@ -1073,16 +1073,16 @@ typedef struct FieldInfo { const char* name; const Il2CppType* type; - Il2CppClass *parent; + Il2CppClass* parent; int32_t offset; uint32_t token; } FieldInfo; typedef struct PropertyInfo { - Il2CppClass *parent; - const char *name; - const MethodInfo *get; - const MethodInfo *set; + Il2CppClass* parent; + const char* name; + const MethodInfo* get; + const MethodInfo* set; uint32_t attrs; uint32_t token; } PropertyInfo; @@ -1139,7 +1139,7 @@ typedef struct Il2CppMethodHeaderInfo } Il2CppMethodHeaderInfo; typedef struct Il2CppSequencePointSourceFile { - const char *file; + const char* file; uint8_t hash[16]; } Il2CppSequencePointSourceFile; typedef struct Il2CppTypeSourceFilePair @@ -1193,8 +1193,8 @@ typedef struct MethodInfo Il2CppMethodPointer methodPointer; InvokerMethod invoker_method; const char* name; - Il2CppClass *klass; - const Il2CppType *return_type; + Il2CppClass* klass; + const Il2CppType* return_type; const ParameterInfo* parameters; union { @@ -1233,7 +1233,7 @@ typedef struct Il2CppClass Il2CppClass* castClass; Il2CppClass* declaringType; Il2CppClass* parent; - Il2CppGenericClass *generic_class; + Il2CppGenericClass* generic_class; const Il2CppTypeDefinition* typeDefinition; const Il2CppInteropData* interopData; Il2CppClass* klass; @@ -1247,7 +1247,7 @@ typedef struct Il2CppClass void* static_fields; const Il2CppRGCTXData* rgctx_data; struct Il2CppClass** typeHierarchy; - void *unity_user_data; + void* unity_user_data; uint32_t initializationExceptionGCHandle; uint32_t cctor_started; uint32_t cctor_finished; @@ -1304,7 +1304,7 @@ typedef struct Il2CppClass_0 { Il2CppClass* castClass; Il2CppClass* declaringType; Il2CppClass* parent; - Il2CppGenericClass * generic_class; + Il2CppGenericClass* generic_class; const Il2CppTypeDefinition* typeDefinition; const Il2CppInteropData* interopData; Il2CppClass* klass; @@ -1318,7 +1318,7 @@ typedef struct Il2CppClass_0 { typedef struct Il2CppClass_1 { struct Il2CppClass** typeHierarchy; - void * unity_user_data; + void* unity_user_data; uint32_t initializationExceptionGCHandle; uint32_t cctor_started; uint32_t cctor_finished; @@ -1410,7 +1410,7 @@ typedef struct Il2CppAssemblyName typedef struct Il2CppImage { const char* name; - const char *nameNoExt; + const char* nameNoExt; Il2CppAssembly* assembly; TypeDefinitionIndex typeStart; uint32_t typeCount; @@ -1419,7 +1419,7 @@ typedef struct Il2CppImage CustomAttributeIndex customAttributeStart; uint32_t customAttributeCount; MethodIndex entryPointIndex; - Il2CppNameToTypeDefinitionIndexHashTable * nameToClassHashTable; + Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable; const Il2CppCodeGenModule* codeGenModule; uint32_t token; uint8_t dynamic; @@ -1478,7 +1478,7 @@ typedef struct Il2CppCodeGenModule const Il2CppTokenRangePair* rgctxRanges; const uint32_t rgctxsCount; const Il2CppRGCTXDefinition* rgctxs; - const Il2CppDebuggerMetadataRegistration *debuggerMetadata; + const Il2CppDebuggerMetadataRegistration* debuggerMetadata; } Il2CppCodeGenModule; typedef struct Il2CppCodeRegistration { @@ -1503,13 +1503,13 @@ typedef struct Il2CppCodeRegistration typedef struct Il2CppMetadataRegistration { int32_t genericClassesCount; - Il2CppGenericClass* const * genericClasses; + Il2CppGenericClass* const* genericClasses; int32_t genericInstsCount; - const Il2CppGenericInst* const * genericInsts; + const Il2CppGenericInst* const* genericInsts; int32_t genericMethodTableCount; const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable; int32_t typesCount; - const Il2CppType* const * types; + const Il2CppType* const* types; int32_t methodSpecsCount; const Il2CppMethodSpec* methodSpecs; FieldIndex fieldOffsetsCount; @@ -1608,10 +1608,10 @@ typedef struct Il2CppObject { union { - Il2CppClass *klass; - Il2CppVTable *vtable; + Il2CppClass* klass; + Il2CppVTable* vtable; } Il2CppClass; - MonitorData *monitor; + MonitorData* monitor; } Il2CppObject; typedef int32_t il2cpp_array_lower_bound_t; typedef struct Il2CppArrayBounds @@ -1622,13 +1622,13 @@ typedef struct Il2CppArrayBounds typedef struct Il2CppArray { Il2CppObject obj; - Il2CppArrayBounds *bounds; + Il2CppArrayBounds* bounds; il2cpp_array_size_t max_length; } Il2CppArray; typedef struct Il2CppArraySize { Il2CppObject obj; - Il2CppArrayBounds *bounds; + Il2CppArrayBounds* bounds; il2cpp_array_size_t max_length; __declspec(align(8)) void* vector[32]; } Il2CppArraySize; @@ -1641,12 +1641,12 @@ typedef struct Il2CppString typedef struct Il2CppReflectionType { Il2CppObject object; - const Il2CppType *type; + const Il2CppType* type; } Il2CppReflectionType; typedef struct Il2CppReflectionRuntimeType { Il2CppReflectionType type; - Il2CppObject *type_info; + Il2CppObject* type_info; Il2CppObject* genericCache; Il2CppObject* serializationCtor; } Il2CppReflectionRuntimeType; @@ -1657,7 +1657,7 @@ typedef struct Il2CppReflectionMonoType typedef struct Il2CppReflectionEvent { Il2CppObject object; - Il2CppObject *cached_add_event; + Il2CppObject* cached_add_event; } Il2CppReflectionEvent; typedef struct Il2CppReflectionMonoEvent { @@ -1679,24 +1679,24 @@ typedef struct Il2CppReflectionMonoEventInfo typedef struct Il2CppReflectionField { Il2CppObject object; - Il2CppClass *klass; - FieldInfo *field; - Il2CppString *name; - Il2CppReflectionType *type; + Il2CppClass* klass; + FieldInfo* field; + Il2CppString* name; + Il2CppReflectionType* type; uint32_t attrs; } Il2CppReflectionField; typedef struct Il2CppReflectionProperty { Il2CppObject object; - Il2CppClass *klass; - const PropertyInfo *property; + Il2CppClass* klass; + const PropertyInfo* property; } Il2CppReflectionProperty; typedef struct Il2CppReflectionMethod { Il2CppObject object; - const MethodInfo *method; - Il2CppString *name; - Il2CppReflectionType *reftype; + const MethodInfo* method; + Il2CppString* name; + Il2CppReflectionType* reftype; } Il2CppReflectionMethod; typedef struct Il2CppReflectionGenericMethod { @@ -1704,8 +1704,8 @@ typedef struct Il2CppReflectionGenericMethod } Il2CppReflectionGenericMethod; typedef struct Il2CppMethodInfo { - Il2CppReflectionType *parent; - Il2CppReflectionType *ret; + Il2CppReflectionType* parent; + Il2CppReflectionType* ret; uint32_t attrs; uint32_t implattrs; uint32_t callconv; @@ -1714,21 +1714,21 @@ typedef struct Il2CppPropertyInfo { Il2CppReflectionType* parent; Il2CppReflectionType* declaringType; - Il2CppString *name; - Il2CppReflectionMethod *get; - Il2CppReflectionMethod *set; + Il2CppString* name; + Il2CppReflectionMethod* get; + Il2CppReflectionMethod* set; uint32_t attrs; } Il2CppPropertyInfo; typedef struct Il2CppReflectionParameter { Il2CppObject object; - Il2CppReflectionType *ClassImpl; - Il2CppObject *DefaultValueImpl; - Il2CppObject *MemberImpl; - Il2CppString *NameImpl; + Il2CppReflectionType* ClassImpl; + Il2CppObject* DefaultValueImpl; + Il2CppObject* MemberImpl; + Il2CppString* NameImpl; int32_t PositionImpl; uint32_t AttrsImpl; - Il2CppObject *MarshalAsImpl; + Il2CppObject* MarshalAsImpl; } Il2CppReflectionParameter; typedef struct Il2CppReflectionModule { @@ -1744,33 +1744,33 @@ typedef struct Il2CppReflectionModule typedef struct Il2CppReflectionAssemblyName { Il2CppObject obj; - Il2CppString *name; - Il2CppString *codebase; + Il2CppString* name; + Il2CppString* codebase; int32_t major, minor, build, revision; - Il2CppObject *cultureInfo; + Il2CppObject* cultureInfo; uint32_t flags; uint32_t hashalg; - Il2CppObject *keypair; - Il2CppArray *publicKey; - Il2CppArray *keyToken; + Il2CppObject* keypair; + Il2CppArray* publicKey; + Il2CppArray* keyToken; uint32_t versioncompat; - Il2CppObject *version; + Il2CppObject* version; uint32_t processor_architecture; uint32_t contentType; } Il2CppReflectionAssemblyName; typedef struct Il2CppReflectionAssembly { Il2CppObject object; - const Il2CppAssembly *assembly; - Il2CppObject *resolve_event_holder; - Il2CppObject *evidence; - Il2CppObject *minimum; - Il2CppObject *optional; - Il2CppObject *refuse; - Il2CppObject *granted; - Il2CppObject *denied; + const Il2CppAssembly* assembly; + Il2CppObject* resolve_event_holder; + Il2CppObject* evidence; + Il2CppObject* minimum; + Il2CppObject* optional; + Il2CppObject* refuse; + Il2CppObject* granted; + Il2CppObject* denied; uint8_t from_byte_array; - Il2CppString *name; + Il2CppString* name; } Il2CppReflectionAssembly; typedef struct Il2CppReflectionMarshal { @@ -1828,7 +1828,7 @@ typedef struct Il2CppInternalThread void* abort_protected_block_count; int32_t priority; void* owned_mutexes; - void * suspended; + void* suspended; int32_t self_suspended; size_t thread_state; size_t unused2; @@ -1838,8 +1838,8 @@ typedef struct Il2CppIOSelectorJob { Il2CppObject object; int32_t operation; - Il2CppObject *callback; - Il2CppObject *state; + Il2CppObject* callback; + Il2CppObject* state; } Il2CppIOSelectorJob; typedef enum { @@ -1851,14 +1851,14 @@ typedef enum typedef struct Il2CppMethodMessage { Il2CppObject obj; - Il2CppReflectionMethod *method; - Il2CppArray *args; - Il2CppArray *names; - Il2CppArray *arg_types; - Il2CppObject *ctx; - Il2CppObject *rval; - Il2CppObject *exc; - Il2CppAsyncResult *async_result; + Il2CppReflectionMethod* method; + Il2CppArray* args; + Il2CppArray* names; + Il2CppArray* arg_types; + Il2CppObject* ctx; + Il2CppObject* rval; + Il2CppObject* exc; + Il2CppAsyncResult* async_result; uint32_t call_type; } Il2CppMethodMessage; typedef struct Il2CppAppDomainSetup @@ -1925,43 +1925,43 @@ typedef struct Il2CppSystemException typedef struct Il2CppArgumentException { Il2CppException base; - Il2CppString *argName; + Il2CppString* argName; } Il2CppArgumentException; typedef struct Il2CppTypedRef { - const Il2CppType *type; + const Il2CppType* type; void* value; - Il2CppClass *klass; + Il2CppClass* klass; } Il2CppTypedRef; typedef struct Il2CppDelegate { Il2CppObject object; Il2CppMethodPointer method_ptr; InvokerMethod invoke_impl; - Il2CppObject *target; - const MethodInfo *method; + Il2CppObject* target; + const MethodInfo* method; void* delegate_trampoline; intptr_t extraArg; - uint8_t **method_code; - Il2CppReflectionMethod *method_info; - Il2CppReflectionMethod *original_method_info; - Il2CppObject *data; + uint8_t** method_code; + Il2CppReflectionMethod* method_info; + Il2CppReflectionMethod* original_method_info; + Il2CppObject* data; uint8_t method_is_virtual; } Il2CppDelegate; typedef struct Il2CppMulticastDelegate { Il2CppDelegate delegate; - Il2CppArray *delegates; + Il2CppArray* delegates; } Il2CppMulticastDelegate; typedef struct Il2CppMarshalByRefObject { Il2CppObject obj; - Il2CppObject *identity; + Il2CppObject* identity; } Il2CppMarshalByRefObject; typedef struct Il2CppAppDomain { Il2CppMarshalByRefObject mbr; - Il2CppDomain *data; + Il2CppDomain* data; } Il2CppAppDomain; typedef struct Il2CppStackFrame { @@ -1970,11 +1970,11 @@ typedef struct Il2CppStackFrame int32_t native_offset; uint64_t methodAddress; uint32_t methodIndex; - Il2CppReflectionMethod *method; - Il2CppString *filename; + Il2CppReflectionMethod* method; + Il2CppString* filename; int32_t line; int32_t column; - Il2CppString *internal_method_name; + Il2CppString* internal_method_name; } Il2CppStackFrame; typedef struct Il2CppDateTimeFormatInfo { @@ -2071,32 +2071,32 @@ typedef struct Il2CppNumberFormatInfo typedef struct Il2CppCultureData { Il2CppObject obj; - Il2CppString *AMDesignator; - Il2CppString *PMDesignator; - Il2CppString *TimeSeparator; - Il2CppArray *LongTimePatterns; - Il2CppArray *ShortTimePatterns; + Il2CppString* AMDesignator; + Il2CppString* PMDesignator; + Il2CppString* TimeSeparator; + Il2CppArray* LongTimePatterns; + Il2CppArray* ShortTimePatterns; uint32_t FirstDayOfWeek; uint32_t CalendarWeekRule; } Il2CppCultureData; typedef struct Il2CppCalendarData { Il2CppObject obj; - Il2CppString *NativeName; - Il2CppArray *ShortDatePatterns; - Il2CppArray *YearMonthPatterns; - Il2CppArray *LongDatePatterns; - Il2CppString *MonthDayPattern; - Il2CppArray *EraNames; - Il2CppArray *AbbreviatedEraNames; - Il2CppArray *AbbreviatedEnglishEraNames; - Il2CppArray *DayNames; - Il2CppArray *AbbreviatedDayNames; - Il2CppArray *SuperShortDayNames; - Il2CppArray *MonthNames; - Il2CppArray *AbbreviatedMonthNames; - Il2CppArray *GenitiveMonthNames; - Il2CppArray *GenitiveAbbreviatedMonthNames; + Il2CppString* NativeName; + Il2CppArray* ShortDatePatterns; + Il2CppArray* YearMonthPatterns; + Il2CppArray* LongDatePatterns; + Il2CppString* MonthDayPattern; + Il2CppArray* EraNames; + Il2CppArray* AbbreviatedEraNames; + Il2CppArray* AbbreviatedEnglishEraNames; + Il2CppArray* DayNames; + Il2CppArray* AbbreviatedDayNames; + Il2CppArray* SuperShortDayNames; + Il2CppArray* MonthNames; + Il2CppArray* AbbreviatedMonthNames; + Il2CppArray* GenitiveMonthNames; + Il2CppArray* GenitiveAbbreviatedMonthNames; } Il2CppCalendarData; typedef struct Il2CppCultureInfo { @@ -2172,8 +2172,8 @@ typedef struct Il2CppSocketAddress typedef struct Il2CppSortKey { Il2CppObject base; - Il2CppString *str; - Il2CppArray *key; + Il2CppString* str; + Il2CppArray* key; int32_t options; int32_t lcid; } Il2CppSortKey; @@ -2185,27 +2185,27 @@ typedef struct Il2CppErrorWrapper typedef struct Il2CppAsyncResult { Il2CppObject base; - Il2CppObject *async_state; - Il2CppWaitHandle *handle; - Il2CppDelegate *async_delegate; + Il2CppObject* async_state; + Il2CppWaitHandle* handle; + Il2CppDelegate* async_delegate; void* data; - Il2CppAsyncCall *object_data; + Il2CppAsyncCall* object_data; uint8_t sync_completed; uint8_t completed; uint8_t endinvoke_called; - Il2CppObject *async_callback; - Il2CppObject *execution_context; - Il2CppObject *original_context; + Il2CppObject* async_callback; + Il2CppObject* execution_context; + Il2CppObject* original_context; } Il2CppAsyncResult; typedef struct Il2CppAsyncCall { Il2CppObject base; - Il2CppMethodMessage *msg; - MethodInfo *cb_method; - Il2CppDelegate *cb_target; - Il2CppObject *state; - Il2CppObject *res; - Il2CppArray *out_args; + Il2CppMethodMessage* msg; + MethodInfo* cb_method; + Il2CppDelegate* cb_target; + Il2CppObject* state; + Il2CppObject* res; + Il2CppArray* out_args; } Il2CppAsyncCall; typedef struct Il2CppExceptionWrapper Il2CppExceptionWrapper; typedef struct Il2CppExceptionWrapper @@ -2942,14 +2942,14 @@ namespace app { struct DelegateBridge__Fields fields; }; - struct MMLHJDIKHGO__VTable { + struct MoleMole_MiNetClient__VTable { VirtualInvokeData Equals; VirtualInvokeData Finalize; VirtualInvokeData GetHashCode; VirtualInvokeData ToString; }; - struct MMLHJDIKHGO__StaticFields { + struct MoleMole_MiNetClient__StaticFields { struct DelegateBridge* FBPNECEFLOE; struct DelegateBridge* PHCOGNGOLIB; struct DelegateBridge* OMMFGIEPLNB; @@ -2976,35 +2976,35 @@ namespace app { struct DelegateBridge* FMLKIDOAAGM; }; - struct MMLHJDIKHGO__Class { + struct MoleMole_MiNetClient__Class { Il2CppClass_0 _0; Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets; - struct MMLHJDIKHGO__StaticFields* static_fields; + struct MoleMole_MiNetClient__StaticFields* static_fields; const Il2CppRGCTXData* rgctx_data; Il2CppClass_1 _1; - struct MMLHJDIKHGO__VTable vtable; + struct MoleMole_MiNetClient__VTable vtable; }; - enum class MMLHJDIKHGO_PJOIODIAPNK__Enum : int32_t { + enum class MoleMole_MiNetClient_PJOIODIAPNK__Enum : int32_t { UDP = 0x00000000, TCP = 0x00000001, }; - struct MMLHJDIKHGO_PJOIODIAPNK__Enum__Boxed { - struct MMLHJDIKHGO_PJOIODIAPNK__Enum__Class* klass; + struct MoleMole_MiNetClient_PJOIODIAPNK__Enum__Boxed { + struct MoleMole_MiNetClient_PJOIODIAPNK__Enum__Class* klass; MonitorData* monitor; - MMLHJDIKHGO_PJOIODIAPNK__Enum value; + MoleMole_MiNetClient_PJOIODIAPNK__Enum value; }; - struct __declspec(align(8)) MMLHJDIKHGO__Fields { + struct __declspec(align(8)) MoleMole_MiNetClient__Fields { void* MEOGCAMBLHJ; - MMLHJDIKHGO_PJOIODIAPNK__Enum JAAAEGMMPIF; + MoleMole_MiNetClient_PJOIODIAPNK__Enum JAAAEGMMPIF; }; - struct MMLHJDIKHGO { - struct MMLHJDIKHGO__Class* klass; + struct MoleMole_MiNetClient { + struct MoleMole_MiNetClient__Class* klass; MonitorData* monitor; - struct MMLHJDIKHGO__Fields fields; + struct MoleMole_MiNetClient__Fields fields; }; struct ConfigChannel__VTable { @@ -3366,7 +3366,7 @@ namespace app { }; struct __declspec(align(8)) NetworkManager_1__Fields { - struct MMLHJDIKHGO* _client; + struct MoleMole_MiNetClient* _client; bool useJobThread; struct ConfigChannel* channelConfig; void* _DispatchSeverData_k__BackingField; @@ -3417,10 +3417,10 @@ namespace app { struct __declspec(align(8)) MessageBase_1__Fields { int32_t count; uint8_t _flag; - int32_t JABMLLBAOLE; + int32_t recycleVersionStamp; }; - struct GKOJAICIOPA__Fields { + struct PlayerLoginReq__Fields { struct MessageBase_1__Fields _; struct String* string_1; struct String* string_2; @@ -3466,7 +3466,7 @@ namespace app { struct GKOJAICIOPA { void* klass; MonitorData* monitor; - struct GKOJAICIOPA__Fields fields; + struct PlayerLoginReq__Fields fields; }; struct Array__VTable { @@ -4508,11 +4508,11 @@ namespace app { void* m_Corners; }; - /*struct MaskableGraphic { - struct MaskableGraphic__Class* klass; - MonitorData* monitor; - struct MaskableGraphic__Fields fields; - };*/ + /*struct MaskableGraphic { + struct MaskableGraphic__Class* klass; + MonitorData* monitor; + struct MaskableGraphic__Fields fields; + };*/ struct Text__Fields { struct MaskableGraphic__Fields _; @@ -5049,12 +5049,12 @@ namespace app { struct MonoMapMark__Fields fields; }; - struct LBBCJFOEBGD { - uint32_t PDELCHOIIIE; - uint32_t EHOMJENLOLF; - bool JHNLKEHCJDM; - uint32_t NKFGELEMFHG; - bool MCBNNKODMDP; + struct OJJLLNFBGDE { + uint32_t configID; + uint32_t ONMGIDKKDNL; + bool DINCAJOGCMN; + uint32_t BOFJCMIBPLN; + bool DMDDLCKONOD; }; struct __declspec(align(8)) GeneralMarkData__Fields { @@ -5063,13 +5063,13 @@ namespace app { uint32_t markID; struct Vector3 position; MoleMole_Config_MarkIconType__Enum iconType; - void* entity; + struct MoleMole_BaseEntity* entity; bool hideOnMove; bool hideIcon; bool hideUnderMist; - void* mapMarkPoint; + struct Proto_MapMarkPoint* mapMarkPoint; struct Vector3 positionOffset; - struct LBBCJFOEBGD sceneId; + struct OJJLLNFBGDE groupId; bool hideOnMapAndRadar; float radius; bool tracking; @@ -5108,7 +5108,7 @@ namespace app { uint32_t vector[32]; }; - enum class NHDFENBMHPA_GAGCILANNJC__Enum : int32_t { + enum class MoleMole_LoadingTask_MoleMole_LoadingTask_LoadState__Enum : int32_t { Invalid = 0x00000000, Queuing = 0x00000001, EnterScene = 0x00000002, @@ -5122,49 +5122,49 @@ namespace app { LoadingFinish = 0x0000000a, }; - enum class NHDFENBMHPA_MOEOFNOOJDP__Enum : int32_t { + enum class MoleMole_LoadingTask_MoleMole_LoadingTask_LoadType__Enum : int32_t { Invalid = 0x00000000, Scene = 0x00000001, Dungeon = 0x00000002, Goto = 0x00000003, }; - struct __declspec(align(8)) NHDFENBMHPA__Fields { - NHDFENBMHPA_GAGCILANNJC__Enum stage; - NHDFENBMHPA_MOEOFNOOJDP__Enum eventType; - uint32_t AJILLILMGOK; - uint32_t HCEFFGIAGAL; - uint32_t JKJOFMDGFOC; - struct Vector3 OAHPGCJNKEG; - bool MKMJCOFPIBC; - bool GBDNPJKAAEG; - bool FLMFNLGMMEB; - uint32_t DGLHAGFCIDA; - uint32_t GBJJEFLIFGH; - uint64_t DPCBAMGCCII; - struct String* DGJJIGNGDID; - void* FNGCPOCIAII; + struct __declspec(align(8)) MoleMole_LoadingTask__Fields { + MoleMole_LoadingTask_MoleMole_LoadingTask_LoadState__Enum stage; + MoleMole_LoadingTask_MoleMole_LoadingTask_LoadType__Enum eventType; + uint32_t token; + uint32_t sceneID; + uint32_t dungeonId; + struct Vector3 initPos; + bool isLoadNewScene; + bool isFirstEnterScene; + bool isReLogin; + uint32_t tryToEnterWorldType; + uint32_t tryToEnterSceneID; + uint64_t loginTimeStamp; + struct String* sceneTransaction; + struct Coroutine* _timeOutCoroutine; }; - struct NHDFENBMHPA { - struct NHDFENBMHPA__Class* klass; + struct MoleMole_LoadingTask { + struct MoleMole_LoadingTask__Class* klass; MonitorData* monitor; - struct NHDFENBMHPA__Fields fields; + struct MoleMole_LoadingTask__Fields fields; }; - struct NHDFENBMHPA__Array { + struct MoleMole_LoadingTask__Array { void* klass; MonitorData* monitor; Il2CppArrayBounds* bounds; il2cpp_array_size_t max_length; - struct NHDFENBMHPA* vector[32]; + struct MoleMole_LoadingTask* vector[32]; }; - struct __declspec(align(8)) Dictionary_2_System_UInt32_NHDFENBMHPA___Fields { + struct __declspec(align(8)) Dictionary_2_System_UInt32_MoleMole_LoadingTask___Fields { struct Int32__Array* table; struct Link__Array* linkSlots; struct UInt32__Array* keySlots; - struct NHDFENBMHPA__Array* valueSlots; + struct MoleMole_LoadingTask__Array* valueSlots; int32_t touchedSlots; int32_t emptySlot; int32_t count; @@ -5174,10 +5174,10 @@ namespace app { int32_t generation; }; - struct Dictionary_2_System_UInt32_NHDFENBMHPA_ { + struct Dictionary_2_System_UInt32_MoleMole_LoadingTask_ { void* klass; MonitorData* monitor; - struct Dictionary_2_System_UInt32_NHDFENBMHPA___Fields fields; + struct Dictionary_2_System_UInt32_MoleMole_LoadingTask___Fields fields; }; struct Vector_1__Fields { @@ -5193,35 +5193,24 @@ namespace app { struct Vector_1__Fields fields; }; - struct __declspec(align(8)) HNNKHOOAPAC_System_UInt32___Fields { - struct UInt32__Array* COJDHBJAFNE; - int32_t OHALFFMCMLN; - }; - - struct HNNKHOOAPAC_System_UInt32_ { - void* klass; - MonitorData* monitor; - struct HNNKHOOAPAC_System_UInt32___Fields fields; - }; - struct PlayerEnterSceneNotify__Fields { - struct MessageBase_1__Fields _; - uint32_t sceneId_; - struct Vector_1* pos_; - uint64_t sceneBeginTime_; - EnterType__Enum type_; - uint32_t targetUid_; + struct MessageBase_1__Fields _; uint32_t prevSceneId_; - struct Vector_1* prevPos_; uint32_t dungeonId_; + bool isSkipUi_; + uint32_t sceneId_; + EnterType__Enum type_; + uint64_t sceneBeginTime_; uint32_t worldLevel_; - uint32_t enterSceneToken_; + uint32_t worldType_; + uint32_t targetUid_; bool isFirstLoginEnterScene_; struct Google_Protobuf_Collections_RepeatedPrimitiveField_1_System_UInt32_* sceneTagIdList_; - bool isSkipUi_; - uint32_t enterReason_; - uint32_t worldType_; struct String* sceneTransaction_; + struct Vector_1* prevPos_; + uint32_t enterReason_; + struct Vector_1* pos_; + uint32_t enterSceneToken_; }; struct PlayerEnterSceneNotify { @@ -10555,10 +10544,10 @@ namespace app { struct GadgetInteractRsp__Fields { struct MessageBase_1__Fields _; - int32_t retcode_; uint32_t gadgetEntityId_; InteractType__Enum interactType_; InterOpType__Enum opType_; + int32_t retcode_; uint32_t gadgetId_; }; @@ -10708,17 +10697,22 @@ namespace app { NotifyBait = 0x00000007, }; + enum class Proto_FishBattleEndRsp_Proto_FishBattleEndRsp_Types_Proto_FishBattleEndRsp_Proto_FishBattleEndRsp_Types_FishNoRewardReason__Enum : int32_t { + FishNoRewardNone = 0x00000000, + FishNoRewardActivityLimit = 0x00000001, + FishNoRewardBagLimit = 0x00000002, + FishNoRewardPoolLimit = 0x00000003, + }; + struct FishBattleEndRsp__Fields { struct MessageBase_1__Fields _; - int32_t retcode_; - FishBattleResult__Enum battleResult_; - /* bool isGotReward_; - FishBattleEndRsp_DFMONJENODL_BCGICPPBNDK__Enum noRewardReason_; - struct JKGMNHEOCKM_Proto_ItemParam_* rewardItemList_; - struct JKGMNHEOCKM_Proto_ItemParam_* dropItemList_; - struct JKGMNHEOCKM_Proto_ItemParam_* talentItemList_; - */ + struct Google_Protobuf_Collections_RepeatedMessageField_1_Proto_ItemParam_* KNIFJPABHLH; + struct Google_Protobuf_Collections_RepeatedMessageField_1_Proto_ItemParam_* CPIOJKAIMFE; + struct Google_Protobuf_Collections_RepeatedMessageField_1_Proto_ItemParam_* HKGCOLOMEPO; + int32_t retcode_; + Proto_FishBattleEndRsp_Proto_FishBattleEndRsp_Types_Proto_FishBattleEndRsp_Proto_FishBattleEndRsp_Types_FishNoRewardReason__Enum noRewardReason_; + FishBattleResult__Enum battleResult_; }; struct FishBattleEndRsp { @@ -11248,12 +11242,12 @@ namespace app { struct PlayerCookRsp__Fields { struct MessageBase_1__Fields _; - int32_t retcode_; - struct CookRecipeData_1* recipeData_; - void* itemList_; - uint32_t qteQuality_; + struct Google_Protobuf_Collections_RepeatedMessageField_1_Proto_ItemParam_* extralItemList_; uint32_t cookCount_; - void* extralItemList_; + struct Google_Protobuf_Collections_RepeatedMessageField_1_Proto_ItemParam_* itemList_; + int32_t retcode_; + uint32_t qteQuality_; + struct CookRecipeData_1* recipeData_; }; struct PlayerCookRsp { @@ -11921,15 +11915,15 @@ namespace app { struct MoleMole_ActorModifier__Fields fields; }; - struct Button_1 { - struct Button_1__Class* klass; - MonitorData* monitor; - }; + struct Button_1 { + struct Button_1__Class* klass; + MonitorData* monitor; + }; - struct Slider_1 { - struct Slider_1__Class* klass; - MonitorData* monitor; - }; + struct Slider_1 { + struct Slider_1__Class* klass; + MonitorData* monitor; + }; struct Renderer__Fields { struct Component_1__Fields _; @@ -11981,6 +11975,29 @@ namespace app { struct Avatar__Fields fields; }; + struct MoleMole_ActorAbilityPlugin__Fields { + struct BaseComponentPlugin__Fields _; + struct Action_3_MoleMole_BaseEntity_MoleMole_Config_AddGlobalValue_MoleMole_ActorAbility_* _addGlobalValueHandlerClosureDelegate; + struct Action_3_MoleMole_BaseEntity_MoleMole_Config_SetGlobalValue_MoleMole_ActorAbility_* _setGlobalValueHandlerClosureDelegate; + struct Action_3_MoleMole_BaseEntity_MoleMole_Config_MultiplyGlobalValue_MoleMole_ActorAbility_* _multiplyGlobalValueHandlerClosureDelegate; + struct Action_4_MoleMole_BaseEntity_MoleMole_Config_MultiplyGlobalValue_MoleMole_ActorAbility_Single_* MEEAPCINNBE; + struct Action_4_MoleMole_BaseEntity_String_Single_CPKJHKOJDIF_* LLAIOCNHNPM; + struct List_1_MoleMole_MonoEffectProxyHandle_* _effectProxyListCache; + struct List_1_MoleMole_MonoEffectProxyHandle_* _effectProxyListCacheForChangFollowDampTime; + struct List_1_UnityEngine_Vector3_* _pushedPosList; + struct MoleMole_LCAbility* _owner; + struct List_1_MoleMole_ActorAbility_* _appliedAbilities; + struct Dictionary_2_System_UInt32_System_Int32_* _appliedAbilitiesIndex; + struct Dictionary_2_System_String_MoleMole_ActorAbility_* CKDBIBGCPOB; + uint32_t nextValidAbilityID; + }; + + struct MoleMole_ActorAbilityPlugin { + struct MoleMole_ActorAbilityPlugin__Class* klass; + MonitorData* monitor; + struct MoleMole_ActorAbilityPlugin__Fields fields; + }; + #if !defined(_GHIDRA_) && !defined(_IDA_) } #endif diff --git a/cheat-library/src/user/cheat/cheat.cpp b/cheat-library/src/user/cheat/cheat.cpp index 249b63a..1dbdcae 100644 --- a/cheat-library/src/user/cheat/cheat.cpp +++ b/cheat-library/src/user/cheat/cheat.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -41,6 +42,7 @@ #include #include +#include #include #include @@ -50,9 +52,10 @@ #include #include #include -#include +#include #include #include +#include #include "GenshinCM.h" @@ -91,6 +94,7 @@ namespace cheat FEAT_INST(VacuumLoot), FEAT_INST(DialogSkip), FEAT_INST(DumbEnemies), + FEAT_INST(FreezeEnemies), FEAT_INST(ElementalSight), FEAT_INST(KillAura), FEAT_INST(MobVacuum), @@ -107,6 +111,8 @@ namespace cheat FEAT_INST(AutoFish), FEAT_INST(AutoCook), + FEAT_INST(CustomWeather), + FEAT_INST(NoFog), FEAT_INST(FPSUnlock), FEAT_INST(CameraZoom), @@ -115,9 +121,10 @@ namespace cheat FEAT_INST(PaimonFollow), FEAT_INST(HideUI), FEAT_INST(Browser), - FEAT_INST(EnablePeaking), + FEAT_INST(EnablePeeking), FEAT_INST(TextureChanger), - FEAT_INST(FreeCamera) + FEAT_INST(FreeCamera), + FEAT_INST(AnimationChanger) }); #undef FEAT_INST diff --git a/cheat-library/src/user/cheat/debugger.cpp b/cheat-library/src/user/cheat/debugger.cpp index 25e098b..be93ca5 100644 --- a/cheat-library/src/user/cheat/debugger.cpp +++ b/cheat-library/src/user/cheat/debugger.cpp @@ -1,153 +1,15 @@ #include -enum THREADINFOCLASS { ThreadHideFromDebugger = 0x11 }; - -typedef NTSTATUS(WINAPI* NtQueryInformationThread_t)(HANDLE, THREADINFOCLASS, PVOID, ULONG, LPVOID); -typedef NTSTATUS(WINAPI* NtSetInformationThread_t)(HANDLE, THREADINFOCLASS, PVOID, ULONG); -typedef void(WINAPI* DbgUiRemoteBreakin_t)(); - -NtQueryInformationThread_t fnNtQueryInformationThread = nullptr; -NtSetInformationThread_t fnNtSetInformationThread = nullptr; -DbgUiRemoteBreakin_t fnDbgUiRemoteBreakin = nullptr; - -static void RunVEH(); -static void FindAPI(); -static bool Patch_NtSetInformationThread(); -static bool Patch_DbgUiRemoteBreakin(); - -static long WINAPI DebugHandler(PEXCEPTION_POINTERS exception); -static void WINAPI DbgUiRemoteBreakin_Hook(); -static NTSTATUS WINAPI NtSetInformationThread_Hook(HANDLE handle, THREADINFOCLASS infoClass, PVOID pValue, ULONG pSize); - void DebuggerBypassPre() { - if (!Patch_NtSetInformationThread()) - LOG_ERROR("Failed to patch NtSetInformationThread, so main thread will be hidden from debugger. ^("); +#ifdef _DEBUG + LOG_INFO("You have no implementation for anti-debugger bypass.\n\tSo if you try to attach VS debugger to process - game will crash."); +#endif + + // Sry, implementation is private for now } void DebuggerBypassPost() { - if (!Patch_DbgUiRemoteBreakin()) - LOG_ERROR("Failed to patch DbgUiRemoteBreakin, so when debugger will try to attach, game crash. ^("); - - RunVEH(); -} - -static void RunVEH() -{ - AddVectoredExceptionHandler(1, DebugHandler); -} - -static bool Patch_NtSetInformationThread() -{ - if (fnNtSetInformationThread == nullptr && (FindAPI(), fnNtSetInformationThread == nullptr)) - return false; - - HookManager::install(fnNtSetInformationThread, NtSetInformationThread_Hook); - LOG_DEBUG("NtSetInformationThread api hooked. Origin at 0x%p", HookManager::getOrigin(NtSetInformationThread_Hook)); - return true; -} - -static bool Patch_DbgUiRemoteBreakin() -{ - if (fnDbgUiRemoteBreakin == nullptr && (FindAPI(), fnDbgUiRemoteBreakin == nullptr)) - return false; - - HookManager::install(fnDbgUiRemoteBreakin, DbgUiRemoteBreakin_Hook); - LOG_DEBUG("DbgUiRemoteBreakin api hooked. Origin at 0x%p", HookManager::getOrigin(DbgUiRemoteBreakin_Hook)); - return true; -} - -static void FindAPI() -{ - HMODULE hNTDLL = GetModuleHandle("ntdll.dll"); - if (hNTDLL == NULL) - { - LOG_LAST_ERROR("Failed to get the 'ntdll.dll' handle"); - return; - } - - if (fnDbgUiRemoteBreakin == nullptr) - { - fnDbgUiRemoteBreakin = reinterpret_cast(GetProcAddress(hNTDLL, "DbgUiRemoteBreakin")); - if (fnDbgUiRemoteBreakin == nullptr) - LOG_LAST_ERROR("GetProcAddress(ntdll::DbgUiRemoteBreakin) failed"); - } - - if (fnNtQueryInformationThread == nullptr) - { - fnNtQueryInformationThread = reinterpret_cast(GetProcAddress(hNTDLL, "NtQueryInformationThread")); - if (fnNtQueryInformationThread == nullptr) - LOG_LAST_ERROR("GetProcAddress(ntdll::NtQueryInformationThread) failed"); - } - - if (fnNtSetInformationThread == nullptr) - { - fnNtSetInformationThread = reinterpret_cast(GetProcAddress(hNTDLL, "NtSetInformationThread")); - if (fnNtSetInformationThread == nullptr) - LOG_LAST_ERROR("GetProcAddress(ntdll::NtSetInformationThread) failed"); - } -} - -// Modified version of https://guidedhacking.com/threads/how-to-find-hidden-threads-threadhidefromdebugger-antidebug-trick.14281/ -static bool IsThreadHidden(DWORD threadID) -{ - if (fnNtQueryInformationThread == nullptr && - (FindAPI(), fnNtQueryInformationThread == nullptr)) // Yeah, seems like a shit ^) - return false; - - HANDLE hThread = OpenThread( - THREAD_QUERY_INFORMATION, - false, - threadID); - - if (hThread == NULL) { - std::cout << " - Error :" << util::GetLastErrorAsString(); - return false; - } - - unsigned char lHideThread = 0; - ULONG lRet = 0; - NTSTATUS errorCode = fnNtQueryInformationThread(hThread, (THREADINFOCLASS)0x11, &lHideThread, sizeof(lHideThread), &lRet); - WaitForSingleObject(hThread, INFINITE); - return static_cast(lHideThread); -} - -static long WINAPI DebugHandler(PEXCEPTION_POINTERS exception) { - PEXCEPTION_RECORD record = exception->ExceptionRecord; - PCONTEXT context = exception->ContextRecord; - - if (record->ExceptionCode == EXCEPTION_SINGLE_STEP) { - SuspendThread(GetCurrentThread()); - return EXCEPTION_CONTINUE_EXECUTION; - } - else if (record->ExceptionCode == EXCEPTION_BREAKPOINT) - { - CONTEXT ctx = {}; - ctx.ContextFlags = CONTEXT_DEBUG_REGISTERS; - - DWORD threadID = GetThreadId(GetCurrentThread()); - LOG_WARNING("Breakpoint exception! Thread: %d; Hidden: %s", threadID, IsThreadHidden(threadID) ? "true" : "false"); - return EXCEPTION_CONTINUE_EXECUTION; - } - else if (context->Rip == 0x8887777) - { - SuspendThread(GetCurrentThread()); - return EXCEPTION_CONTINUE_EXECUTION; - } - return EXCEPTION_CONTINUE_SEARCH; -} - -static void WINAPI DbgUiRemoteBreakin_Hook() -{ - return; -} - -static NTSTATUS WINAPI NtSetInformationThread_Hook(HANDLE handle, THREADINFOCLASS infoClass, PVOID pValue, ULONG pSize) -{ - if (infoClass == ThreadHideFromDebugger) - { - return 1; - } - return CALL_ORIGIN(NtSetInformationThread_Hook, handle, infoClass, pValue, pSize); + // Sry, implementation is privite for now } \ No newline at end of file diff --git a/cheat-library/src/user/cheat/esp/ESP.cpp b/cheat-library/src/user/cheat/esp/ESP.cpp index a81f445..43d5d0b 100644 --- a/cheat-library/src/user/cheat/esp/ESP.cpp +++ b/cheat-library/src/user/cheat/esp/ESP.cpp @@ -21,17 +21,17 @@ namespace cheat::feature ESP::ESP() : Feature(), NF(f_Enabled, "ESP", "ESP", false), - NF(f_DrawBoxMode, "Draw Mode", "ESP", DrawMode::Box), + NF(f_DrawBoxMode, "Draw Mode", "ESP", DrawMode::Box), NF(f_DrawTracerMode, "Tracer Mode", "ESP", DrawTracerMode::Line), - NF(f_Fill, "Fill Box/Rectangle/Arrows", "ESP", false), - NF(f_FillTransparency, "Fill Transparency", "ESP", 0.5f), + NF(f_Fill, "Fill Box/Rectangle/Arrows", "ESP", false), + NF(f_FillTransparency, "Fill Transparency", "ESP", 0.5f), NF(f_ArrowRadius, "Arrow Radius", "ESP", 100.0f), NF(f_OutlineThickness, "Outline Thickness", "ESP", 1.0f), NF(f_TracerSize, "Tracer Size", "ESP", 1.0f), NF(f_MiddleScreenTracer, "Middle Screen Tracer", "ESP", false), - NF(f_DrawDistance, "Draw Distance", "ESP", false), - NF(f_DrawName, "Draw Name", "ESP", false), + NF(f_DrawDistance, "Draw Distance", "ESP", false), + NF(f_DrawName, "Draw Name", "ESP", false), NF(f_FontSize, "Font Size", "ESP", 12.0f), NF(f_FontOutline, "Font outline", "ESP", true), @@ -69,7 +69,7 @@ namespace cheat::feature ConfigWidget(f_DrawBoxMode, "Select the mode of box drawing."); ConfigWidget(f_DrawTracerMode, "Select the mode of tracer drawing."); - + ConfigWidget(f_Fill); ConfigWidget(f_FillTransparency, 0.01f, 0.0f, 1.0f, "Transparency of filled part."); ConfigWidget(f_MiddleScreenTracer, "Draw tracer from middle part of the screen."); @@ -84,7 +84,7 @@ namespace cheat::feature } ImGui::EndGroupPanel(); } - + ImGui::Spacing(); ConfigWidget(f_DrawName, "Draw name of object."); ConfigWidget(f_DrawDistance, "Draw distance of object."); @@ -146,6 +146,150 @@ namespace cheat::feature return instance; } + void ESP::GetNpcName(std::string& name) + { + if (name.find("Avatar") != std::string::npos) + { + //cause name is like "Avatar_Catalyst_Boy_Heizo(Clone)" - We'll get name between 3rd underscore and 1st bracket + int j = 0; // j is the number of spaces before the name starts + int pos1 = 0; + int pos2 = 0; + for (int i = 0; i < name.length(); i++) + { + if (name[i] == '_') + { + j++; + if (j == 3) + { + pos1 = i; + } + + } + if (name[i] == '(') + { + pos2 = i; + break; + } + } + name = name.substr(pos1 + 1, pos2 - pos1 - 1); + } + else if (name.find("Animal") != std::string::npos) + { + int count = 0; + int j = 0; + int pos1 = 0; + int pos2 = 0; + for (int i = 0; i < name.length(); i++) + { + if (name[i] == '_') + { + count++; + } + } + //switch statement to determine how we will get name + switch (count) + { + case 3: + { + j = 0; // j is the number of spaces before the name starts + pos1 = 0; + pos2 = 0; + for (int i = 0; i < name.length(); i++) + { + if (name[i] == '_') + { + j++; + if (j == 3) + { + pos1 = i; + } + + } + if (name[i] == '(') + { + pos2 = i; + break; + } + } + name = name.substr(pos1, pos2 - pos1); + } + case 4: + { + j = 0; // j is the number of spaces before the name starts + pos1 = 0; + pos2 = 0; + for (int i = 0; i < name.length(); i++) + { + if (name[i] == '_') + { + j++; + if (j == 3) + { + pos1 = i; + } + if (j == 4) + { + pos2 = i; + break; + } + } + } + name = name.substr(pos1 + 1, pos2 - pos1 - 1); + } + default: + break; + } + return; + } + else if (name.find("Monster") != std::string::npos) + { + int j = 0; //number of underscores in the name + int pos1 = 0; //position of the first underscore in the name + int pos2 = 0; //position of the second underscore in the name + for (int i = 0; i < name.length(); i++) + { + if (name[i] == '_') + { + j++; + if (j == 3) + { + pos1 = i; + } + if (j == 4) + { + pos2 = i; + break; + } + } + } + name = name.substr(pos1 + 1, pos2 - pos1 - 1); + } + else + { + int j = 0; //number of underscores in the name + int pos1 = 0; //position of the first underscore in the name + int pos2 = 0; //position of the second underscore in the name + for (int i = 0; i < name.length(); i++) + { + if (name[i] == '_') + { + j++; + if (j == 4) + { + pos1 = i; + } + if (j == 5) + { + pos2 = i; + break; + } + } + } + name = name.substr(pos1 + 1, pos2 - pos1 - 1); + } + return; + } + void ESP::AddFilter(const std::string& section, const std::string& name, game::IEntityFilter* filter) { if (m_Sections.count(section) == 0) @@ -261,6 +405,16 @@ namespace cheat::feature if (!entry.m_Enabled || !m_FilterExecutor.ApplyFilter(entity, filter)) continue; + if (entry.m_Name == "Npc" || "AvatarOwn" || "AvatarTeammate") + { + if (entity->type() == app::EntityType__Enum_1::Avatar || entity->type() == app::EntityType__Enum_1::NPC) + { + std::string name = entity->name(); + GetNpcName(name); + esp::render::DrawEntity(name, entity, entry.m_Color, entry.m_ContrastColor); + break; + } + } esp::render::DrawEntity(entry.m_Name, entity, entry.m_Color, entry.m_ContrastColor); break; } @@ -420,19 +574,26 @@ namespace cheat::feature ADD_FILTER_FIELD(collection, WoodenCrate); ADD_FILTER_FIELD(collection, GeoSigil); + // Regular Chests ADD_FILTER_FIELD(chest, CommonChest); ADD_FILTER_FIELD(chest, ExquisiteChest); ADD_FILTER_FIELD(chest, PreciousChest); ADD_FILTER_FIELD(chest, LuxuriousChest); ADD_FILTER_FIELD(chest, RemarkableChest); + // Other Chests + ADD_FILTER_FIELD(chest, BuriedChest); ADD_FILTER_FIELD(chest, SearchPoint); + ADD_FILTER_FIELD(featured, Anemoculus); ADD_FILTER_FIELD(featured, CrimsonAgate); ADD_FILTER_FIELD(featured, Electroculus); + ADD_FILTER_FIELD(featured, Dendroculus); + ADD_FILTER_FIELD(featured, EchoingConch); ADD_FILTER_FIELD(featured, Electrogranum); ADD_FILTER_FIELD(featured, FishingPoint); ADD_FILTER_FIELD(featured, Geoculus); + ADD_FILTER_FIELD(featured, ImagingConch); ADD_FILTER_FIELD(featured, ItemDrops); ADD_FILTER_FIELD(featured, KeySigil); ADD_FILTER_FIELD(featured, Lumenspar); @@ -479,6 +640,7 @@ namespace cheat::feature ADD_FILTER_FIELD(living, Salamander); ADD_FILTER_FIELD(living, Squirrel); ADD_FILTER_FIELD(living, Starconch); + ADD_FILTER_FIELD(living, Tukan); ADD_FILTER_FIELD(living, Weasel); ADD_FILTER_FIELD(living, Wigeon); @@ -487,6 +649,7 @@ namespace cheat::feature ADD_FILTER_FIELD(mineral, CorLapis); ADD_FILTER_FIELD(mineral, CrystalChunk); ADD_FILTER_FIELD(mineral, CrystalMarrow); + ADD_FILTER_FIELD(mineral, DunlinsTooth); ADD_FILTER_FIELD(mineral, ElectroCrystal); ADD_FILTER_FIELD(mineral, IronChunk); ADD_FILTER_FIELD(mineral, NoctilucousJade); @@ -494,7 +657,6 @@ namespace cheat::feature ADD_FILTER_FIELD(mineral, ScarletQuartz); ADD_FILTER_FIELD(mineral, Starsilver); ADD_FILTER_FIELD(mineral, WhiteIronChunk); - ADD_FILTER_FIELD(mineral, DunlinsTooth); // Trounce. Arranged by appearance in-game. ADD_FILTER_FIELD(monster, Dvalin); @@ -506,6 +668,7 @@ namespace cheat::feature // Bosses. Arranged by "type" then alphabetical. // Regisvines. ADD_FILTER_FIELD(monster, CryoRegisvine); + ADD_FILTER_FIELD(monster, ElectroRegisvine); ADD_FILTER_FIELD(monster, PyroRegisvine); // Hypostases. ADD_FILTER_FIELD(monster, AnemoHypostasis); @@ -527,11 +690,14 @@ namespace cheat::feature // Others. ADD_FILTER_FIELD(monster, GoldenWolflord); ADD_FILTER_FIELD(monster, MaguuKenki); + // Sumeru + ADD_FILTER_FIELD(monster, JadeplumeTerrorshroom); // Regular. Alphabetical. ADD_FILTER_FIELD(monster, AbyssMage); ADD_FILTER_FIELD(monster, BlackSerpentKnight); ADD_FILTER_FIELD(monster, Cicin); ADD_FILTER_FIELD(monster, ElectroAbyssLector); + ADD_FILTER_FIELD(monster, Eremite); ADD_FILTER_FIELD(monster, EyeOfTheStorm); ADD_FILTER_FIELD(monster, FatuiAgent); ADD_FILTER_FIELD(monster, FatuiCicinMage); @@ -540,8 +706,10 @@ namespace cheat::feature ADD_FILTER_FIELD(monster, FloatingFungus); ADD_FILTER_FIELD(monster, Geovishap); ADD_FILTER_FIELD(monster, GeovishapHatchling); + ADD_FILTER_FIELD(monster, GroundedShroom); ADD_FILTER_FIELD(monster, Hilichurl); ADD_FILTER_FIELD(monster, HydroAbyssHerald); + ADD_FILTER_FIELD(monster, HydroBathysmalVishap); ADD_FILTER_FIELD(monster, HydroHypostasisSummon); ADD_FILTER_FIELD(monster, Kairagi); ADD_FILTER_FIELD(monster, Millelith); @@ -558,18 +726,26 @@ namespace cheat::feature ADD_FILTER_FIELD(monster, PyroAbyssLector); ADD_FILTER_FIELD(monster, Rifthound); ADD_FILTER_FIELD(monster, RifthoundWhelp); + ADD_FILTER_FIELD(monster, RishbolandTiger); + ADD_FILTER_FIELD(monster, RuinDrake); + ADD_FILTER_FIELD(monster, RuinGrader); ADD_FILTER_FIELD(monster, RuinGuard); ADD_FILTER_FIELD(monster, RuinHunter); ADD_FILTER_FIELD(monster, RuinSentinel); ADD_FILTER_FIELD(monster, Samachurl); ADD_FILTER_FIELD(monster, SangonomiyaCohort); ADD_FILTER_FIELD(monster, ShadowyHusk); + ADD_FILTER_FIELD(monster, ShaggySumpterBeast); ADD_FILTER_FIELD(monster, ShogunateInfantry); ADD_FILTER_FIELD(monster, Slime); ADD_FILTER_FIELD(monster, Specter); + ADD_FILTER_FIELD(monster, Spincrocodile); + ADD_FILTER_FIELD(monster, StretchyFungus); ADD_FILTER_FIELD(monster, TreasureHoarder); ADD_FILTER_FIELD(monster, UnusualHilichurl); + ADD_FILTER_FIELD(monster, WhirlingFungus); ADD_FILTER_FIELD(monster, Whopperflower); + ADD_FILTER_FIELD(monster, WingedShroom); ADD_FILTER_FIELD(plant, AmakumoFruit); ADD_FILTER_FIELD(plant, Apple); @@ -583,8 +759,10 @@ namespace cheat::feature ADD_FILTER_FIELD(plant, FlamingFlowerStamen); ADD_FILTER_FIELD(plant, FluorescentFungus); ADD_FILTER_FIELD(plant, GlazeLily); + ADD_FILTER_FIELD(plant, HarraFruit); ADD_FILTER_FIELD(plant, Horsetail); ADD_FILTER_FIELD(plant, JueyunChili); + ADD_FILTER_FIELD(plant, KalpalataLotus); ADD_FILTER_FIELD(plant, LavenderMelon); ADD_FILTER_FIELD(plant, LotusHead); ADD_FILTER_FIELD(plant, Matsutake); @@ -592,10 +770,13 @@ namespace cheat::feature ADD_FILTER_FIELD(plant, MistFlowerCorolla); ADD_FILTER_FIELD(plant, Mushroom); ADD_FILTER_FIELD(plant, NakuWeed); + ADD_FILTER_FIELD(plant, NilotpalaLotus); + ADD_FILTER_FIELD(plant, Padisarah); ADD_FILTER_FIELD(plant, PhilanemoMushroom); ADD_FILTER_FIELD(plant, Pinecone); ADD_FILTER_FIELD(plant, Qingxin); ADD_FILTER_FIELD(plant, Radish); + ADD_FILTER_FIELD(plant, RukkhashavaMushrooms); ADD_FILTER_FIELD(plant, SakuraBloom); ADD_FILTER_FIELD(plant, SangoPearl); ADD_FILTER_FIELD(plant, SeaGanoderma); @@ -603,12 +784,15 @@ namespace cheat::feature ADD_FILTER_FIELD(plant, SilkFlower); ADD_FILTER_FIELD(plant, SmallLampGrass); ADD_FILTER_FIELD(plant, Snapdragon); + ADD_FILTER_FIELD(plant, SumeruRose); ADD_FILTER_FIELD(plant, Sunsettia); ADD_FILTER_FIELD(plant, SweetFlower); ADD_FILTER_FIELD(plant, Valberry); ADD_FILTER_FIELD(plant, Violetgrass); + //ADD_FILTER_FIELD(plant, Viparyas); ADD_FILTER_FIELD(plant, WindwheelAster); ADD_FILTER_FIELD(plant, Wolfhook); + ADD_FILTER_FIELD(plant, ZaytunPeach); ADD_FILTER_FIELD(puzzle, AncientRime); ADD_FILTER_FIELD(puzzle, BakeDanuki); @@ -642,6 +826,11 @@ namespace cheat::feature ADD_FILTER_FIELD(puzzle, UniqueRocks); ADD_FILTER_FIELD(puzzle, WarmingSeelie); ADD_FILTER_FIELD(puzzle, WindmillMechanism); + ADD_FILTER_FIELD(puzzle, MelodicBloom); + ADD_FILTER_FIELD(puzzle, CloudleisureSteps); + ADD_FILTER_FIELD(puzzle, DreamForm); + ADD_FILTER_FIELD(puzzle, StarlightCoalescence); + ADD_FILTER_FIELD(puzzle, TheRavenForum); } #undef ADD_FILTER_FIELD } diff --git a/cheat-library/src/user/cheat/esp/ESP.h b/cheat-library/src/user/cheat/esp/ESP.h index e609e24..a517605 100644 --- a/cheat-library/src/user/cheat/esp/ESP.h +++ b/cheat-library/src/user/cheat/esp/ESP.h @@ -79,6 +79,8 @@ namespace cheat::feature void DrawSection(const std::string& section, const Filters& filters); void DrawFilterField(const config::Field& field); + void GetNpcName(std::string& name); + void OnKeyUp(short key, bool& cancelled); ESP(); diff --git a/cheat-library/src/user/cheat/game/Entity.cpp b/cheat-library/src/user/cheat/game/Entity.cpp index 71f564d..37c3747 100644 --- a/cheat-library/src/user/cheat/game/Entity.cpp +++ b/cheat-library/src/user/cheat/game/Entity.cpp @@ -205,6 +205,18 @@ namespace cheat::game SAFE_END(); } + app::Animator* Entity::animator() + { + if (!isLoaded()) + return nullptr; + + SAFE_BEGIN(); + return app::MoleMole_BaseEntity_get_animator(m_RawEntity, nullptr); + SAFE_ERROR(); + return nullptr; + SAFE_END(); + } + app::GameObject* Entity::gameObject() { if (!isLoaded()) diff --git a/cheat-library/src/user/cheat/game/Entity.h b/cheat-library/src/user/cheat/game/Entity.h index 65126ab..6a4e9b2 100644 --- a/cheat-library/src/user/cheat/game/Entity.h +++ b/cheat-library/src/user/cheat/game/Entity.h @@ -37,7 +37,8 @@ namespace cheat::game app::GameObject* gameObject(); app::Rigidbody* rigidbody(); - + app::Animator* animator(); + app::Vector3 forward(); app::Vector3 back(); app::Vector3 right(); diff --git a/cheat-library/src/user/cheat/game/filters.cpp b/cheat-library/src/user/cheat/game/filters.cpp index 6e6290e..3c23e4f 100644 --- a/cheat-library/src/user/cheat/game/filters.cpp +++ b/cheat-library/src/user/cheat/game/filters.cpp @@ -32,6 +32,7 @@ namespace cheat::game::filters ChestFilter SFrozen = ChestFilter(Chest::ChestState::Frozen); ChestFilter SBramble = ChestFilter(Chest::ChestState::Bramble); ChestFilter STrap = ChestFilter(Chest::ChestState::Trap); + SimpleFilter BuriedChest = { EntityType__Enum_1::Field, "_WorldArea_Operator" }; } namespace equipment @@ -49,9 +50,12 @@ namespace cheat::game::filters SimpleFilter Anemoculus = { EntityType__Enum_1::GatherObject, "WindCrystalShell" }; SimpleFilter CrimsonAgate = { EntityType__Enum_1::GatherObject, "Prop_Essence" }; SimpleFilter Electroculus = { EntityType__Enum_1::GatherObject, "Prop_ElectricCrystal" }; + SimpleFilter Dendroculus = { EntityType__Enum_1::GatherObject, "_XuMiCrystal" }; + SimpleFilter EchoingConch = { EntityType__Enum_1::EchoShell, "_Echoconch" }; SimpleFilter Electrogranum = { EntityType__Enum_1::Gadget, "ThunderSeedCreate" }; SimpleFilter FishingPoint = { EntityType__Enum_1::FishPool, "_FishingShoal" }; SimpleFilter Geoculus = { EntityType__Enum_1::GatherObject, "RockCrystalShell" }; + SimpleFilter ImagingConch = { EntityType__Enum_1::EchoShell, "_Dreamconch" }; WhitelistFilter ItemDrops = { {EntityType__Enum_1::GatherObject, EntityType__Enum_1::DropItem }, {"_Food_BirdMeat", "_Food_Meat", "_DropItem" } }; SimpleFilter Lumenspar = { EntityType__Enum_1::GatherObject, "CelestiaSplinter" }; SimpleFilter KeySigil = { EntityType__Enum_1::GatherObject, "RuneContent" }; @@ -88,16 +92,17 @@ namespace cheat::game::filters SimpleFilter Onikabuto = { EntityType__Enum_1::GatherObject, "Electrohercules" }; SimpleFilter Starconch = { EntityType__Enum_1::GatherObject, "_Shell" }; SimpleFilter Eel = { EntityType__Enum_1::EnvAnimal, "Eel_" }; - SimpleFilter Inu = { EntityType__Enum_1::EnvAnimal, "_Inu_Shihandai" }; + SimpleFilter Inu = { EntityType__Enum_1::Monster, "_Inu_Shihandai" }; SimpleFilter Boar = { EntityType__Enum_1::Monster, "Boar" }; SimpleFilter Fox = { EntityType__Enum_1::Monster, "Fox" }; SimpleFilter Squirrel = { EntityType__Enum_1::Monster, "Squirrel" }; - SimpleFilter Npc = { EntityType__Enum_1::NPC, { "_Liyue", "_Mengde", "_Inazuma", "_Coop", "_Quest", "_Enkanomiya", "_Animal", "_Guide", "_Homeworld" } }; + SimpleFilter Npc = { EntityType__Enum_1::NPC, { "_Liyue", "_Mengde", "_Inazuma", "_Enkanomiya", "_Sumeru", "_Fontaine", "_Natlan", "_Snezhnaya", "_Coop", "_Quest", "_Animal", "_Guide", "_Homeworld", "_Avatar", "_Kanban", "_Monster"} }; SimpleFilter Crane = { EntityType__Enum_1::Monster, "Crane" }; SimpleFilter Falcon = { EntityType__Enum_1::Monster, "Falcon" }; SimpleFilter LucklightFly = { EntityType__Enum_1::EnvAnimal, "Boltbug_" }; SimpleFilter Salamander = { EntityType__Enum_1::EnvAnimal, "Salamander" }; - SimpleFilter Pigeon = { EntityType__Enum_1::Monster, "Pigeon" }; + SimpleFilter Tukan = { EntityType__Enum_1::Monster, "Pigeon_Beak" }; + SimpleFilter Pigeon = { EntityType__Enum_1::Monster, "Pigeon_0" }; SimpleFilter Crow = { EntityType__Enum_1::Monster, "Crow" }; SimpleFilter Finch = { EntityType__Enum_1::Monster, "Tit" }; SimpleFilter Wigeon = { EntityType__Enum_1::Monster, "Wigeon" }; @@ -107,7 +112,7 @@ namespace cheat::game::filters SimpleFilter WeaselThief = { EntityType__Enum_1::Monster, "Thoarder_Weasel" }; SimpleFilter Kitsune = { EntityType__Enum_1::EnvAnimal, "Vulpes" }; SimpleFilter BakeDanuki = { EntityType__Enum_1::Monster, "Inu_Tanuki" }; - SimpleFilter Meat = { EntityType__Enum_1::GatherObject , { "_Food_BirdMeat", "_Food_Meat", "_Fishmeat" }}; + SimpleFilter Meat = { EntityType__Enum_1::GatherObject , { "_Food_BirdMeat", "_Food_Meat", "_Fishmeat" } }; } namespace mineral @@ -127,7 +132,7 @@ namespace cheat::game::filters SimpleFilter DunlinsTooth = { EntityType__Enum_1::GatherObject, "_DunlinsTooth" }; SimpleFilter AmethystLumpDrop = { EntityType__Enum_1::GatherObject, "_Thundercrystaldrop" }; - SimpleFilter CrystalChunkDrop = { EntityType__Enum_1::GatherObject,"_Drop_Crystal"}; + SimpleFilter CrystalChunkDrop = { EntityType__Enum_1::GatherObject,"_Drop_Crystal" }; SimpleFilter ElectroCrystalDrop = { EntityType__Enum_1::GatherObject, "_Drop_Ore_ElectricRock" }; SimpleFilter IronChunkDrop = { EntityType__Enum_1::GatherObject, "_Drop_Stone" }; SimpleFilter NoctilucousJadeDrop = { EntityType__Enum_1::GatherObject,"_NightBerth" }; @@ -140,6 +145,7 @@ namespace cheat::game::filters namespace monster { SimpleFilter AbyssMage = { EntityType__Enum_1::Monster, "_Abyss" }; + SimpleFilter Eremite = { EntityType__Enum_1::Monster, "_Eremite" }; SimpleFilter FatuiAgent = { EntityType__Enum_1::Monster, "_Fatuus" }; SimpleFilter FatuiCicinMage = { EntityType__Enum_1::Monster, "_Fatuus_Summoner" }; SimpleFilter FatuiMirrorMaiden = { EntityType__Enum_1::Monster, "_Fatuus_Maiden" }; @@ -150,14 +156,19 @@ namespace cheat::game::filters SimpleFilter Mitachurl = { EntityType__Enum_1::Monster, "_Brute" }; SimpleFilter Nobushi = { EntityType__Enum_1::Monster, "_Ronin" }; SimpleFilter Kairagi = { EntityType__Enum_1::Monster, "_Kairagi" }; + SimpleFilter RuinDrake = { EntityType__Enum_1::Monster, "_Gargoyle" }; SimpleFilter RuinGuard = { EntityType__Enum_1::Monster, "_Defender" }; SimpleFilter RuinHunter = { EntityType__Enum_1::Monster, "_Formathr" }; SimpleFilter RuinGrader = { EntityType__Enum_1::Monster, "_Konungmathr" }; SimpleFilter RuinSentinel = { EntityType__Enum_1::Monster, "_Apparatus_Enigma" }; SimpleFilter Samachurl = { EntityType__Enum_1::Monster, "_Shaman" }; - SimpleFilter ShadowyHusk = { EntityType__Enum_1::Monster, "ForlornVessel_Strong" }; + SimpleFilter ShadowyHusk = { EntityType__Enum_1::Monster, "ForlornVessel_Strong" }; SimpleFilter Slime = { EntityType__Enum_1::Monster, "_Slime" }; - SimpleFilter FloatingFungus = { EntityType__Enum_1::Monster, "_Fungus" }; + SimpleFilter FloatingFungus = { EntityType__Enum_1::Monster, "Fungus_Un_" }; + SimpleFilter StretchyFungus = { EntityType__Enum_1::Monster, "Fungus_Deux_" }; + SimpleFilter WhirlingFungus = { EntityType__Enum_1::Monster, "Fungus_Trois_" }; + SimpleFilter WingedShroom = { EntityType__Enum_1::Monster, "Fungus_Amanita_Unu" }; + SimpleFilter GroundedShroom = { EntityType__Enum_1::Monster, "Fungus_Amanita_Du" }; SimpleFilter Specter = { EntityType__Enum_1::Monster, "_Sylph" }; SimpleFilter TreasureHoarder = { EntityType__Enum_1::Monster, "_Thoarder" }; SimpleFilter UnusualHilichurl = { EntityType__Enum_1::Monster, "_Hili_Wei" }; @@ -204,9 +215,15 @@ namespace cheat::game::filters SimpleFilter SangonomiyaCohort = { EntityType__Enum_1::Monster, "_AahigaruTaisho_" }; SimpleFilter CryoRegisvine = { EntityType__Enum_1::Monster, "_Regisvine_Ice" }; SimpleFilter PyroRegisvine = { EntityType__Enum_1::Monster, "_Regisvine_Fire" }; + SimpleFilter ElectroRegisvine = { EntityType__Enum_1::Monster, "_Regisvine_Electric" }; SimpleFilter MaguuKenki = { EntityType__Enum_1::Monster, "_Ningyo" }; SimpleFilter Cicin = { EntityType__Enum_1::Monster, "_Cicin" }; SimpleFilter Beisht = { EntityType__Enum_1::Monster, "_Eldritch" }; + SimpleFilter JadeplumeTerrorshroom = { EntityType__Enum_1::Monster, "Fungus_Raptor" }; + SimpleFilter RishbolandTiger = { EntityType__Enum_1::Monster, "_Megamoth_" }; + SimpleFilter ShaggySumpterBeast = { EntityType__Enum_1::Monster, "_Panther" }; + SimpleFilter Spincrocodile = { EntityType__Enum_1::Monster, "_Gator" }; + SimpleFilter SentryTurrets = { EntityType__Enum_1::Field, "SentryTurrets_" }; } namespace plant @@ -252,6 +269,16 @@ namespace cheat::game::filters SimpleFilter Wheat = { EntityType__Enum_1::GatherObject, "_Plant_Wheat" }; SimpleFilter WindwheelAster = { EntityType__Enum_1::GatherObject, "_WindmilDaisy" }; SimpleFilter Wolfhook = { EntityType__Enum_1::GatherObject, "_GogoFruit" }; + SimpleFilter RadishDrop = { EntityType__Enum_1::GatherObject, "_Plant_Carrot02_Clear" }; + SimpleFilter CarrotDrop = { EntityType__Enum_1::GatherObject, "_Plant_Radish02_Clear" }; + SimpleFilter HarraFruit = { EntityType__Enum_1::GatherObject, "_Ligusticum" }; + SimpleFilter KalpalataLotus = { EntityType__Enum_1::GatherObject, "_Kalpalata" }; + SimpleFilter NilotpalaLotus = { EntityType__Enum_1::GatherObject, "_MoonLotus" }; + SimpleFilter Padisarah = { EntityType__Enum_1::GatherObject, "_Pasusalan" }; + SimpleFilter RukkhashavaMushrooms = { EntityType__Enum_1::GatherObject, "_HolyMushroom" }; + SimpleFilter SumeruRose = { EntityType__Enum_1::GatherObject, "_XumiRose" }; + //SimpleFilter Viparyas = { EntityType__Enum_1::GatherObject, "_" }; + SimpleFilter ZaytunPeach = { EntityType__Enum_1::GatherObject, "_Olea" }; } namespace puzzle @@ -259,7 +286,7 @@ namespace cheat::game::filters SimpleFilter AncientRime = { EntityType__Enum_1::Gadget, "_IceSolidBulk" }; SimpleFilter BakeDanuki = { EntityType__Enum_1::Monster, "Animal_Inu_Tanuki_" }; SimpleFilter BloattyFloatty = { EntityType__Enum_1::Field, "_Flower_PongPongTree_" }; - WhitelistFilter CubeDevices = { {EntityType__Enum_1::Gadget, EntityType__Enum_1::Platform }, {"_ElecStone", "_ElecSwitch" }}; + WhitelistFilter CubeDevices = { {EntityType__Enum_1::Gadget, EntityType__Enum_1::Platform }, {"_ElecStone", "_ElecSwitch" } }; SimpleFilter EightStoneTablets = { EntityType__Enum_1::Gadget, "_HistoryBoard" }; SimpleFilter ElectricConduction = { EntityType__Enum_1::Gear, "_ElectricPowerSource" }; SimpleFilter RelayStone = { EntityType__Enum_1::Worktop, "_ElectricTransfer_" }; @@ -288,6 +315,12 @@ namespace cheat::game::filters SimpleFilter UniqueRocks = { EntityType__Enum_1::Gadget, "_Chalcedony" }; SimpleFilter WarmingSeelie = { EntityType__Enum_1::Platform, "_FireSeelie" }; SimpleFilter WindmillMechanism = { EntityType__Enum_1::Gear, "Gear_Windmill" }; + WhitelistFilter MelodicBloom = { {EntityType__Enum_1::Worktop, EntityType__Enum_1::Gadget }, {"_TransferFlowerSmall", "_NotePlant" } }; + SimpleFilter CloudleisureSteps = { EntityType__Enum_1::Field, "_CloudPlatform" }; + WhitelistFilter DreamForm = { {EntityType__Enum_1::Field, EntityType__Enum_1::Platform }, "_AnimalSeelie" }; + SimpleFilter StarlightCoalescence = { EntityType__Enum_1::Field, "_PaperStar" }; + SimpleFilter TheRavenForum = { EntityType__Enum_1::Gadget, "_NightCrowStatue" }; + } namespace combined @@ -314,6 +347,13 @@ namespace cheat::game::filters mineral::Starsilver, mineral::WhiteIronChunk }; + SimpleFilter PlantDestroy = { + //plant::SakuraBloom, + plant::DandelionSeed, + plant::MistFlowerCorolla, + plant::FlamingFlowerStamen + }; + WhitelistFilter Doodads = { EntityType__Enum_1::Gadget, { @@ -353,7 +393,8 @@ namespace cheat::game::filters living::Fox, living::Squirrel, living::Boar, - living::Weasel + living::Weasel, + living::Tukan }; SimpleFilter AnimalPickUp = { living::CrystalCore, @@ -392,7 +433,15 @@ namespace cheat::game::filters monster::Kairagi, monster::Millelith, monster::ShogunateInfantry, - monster::SangonomiyaCohort + monster::SangonomiyaCohort, + monster::Eremite, + monster::StretchyFungus, + monster::WhirlingFungus, + monster::WingedShroom, + monster::GroundedShroom, + monster::ShaggySumpterBeast, + monster::RishbolandTiger, + monster::Spincrocodile }; SimpleFilter MonsterElites = { monster::Mitachurl, @@ -403,6 +452,7 @@ namespace cheat::game::filters monster::RifthoundWhelp, monster::Rifthound, monster::ShadowyHusk, + monster::RuinDrake, monster::RuinGuard, monster::RuinHunter, monster::RuinGrader, @@ -455,7 +505,11 @@ namespace cheat::game::filters monster::HydroHypostasis, monster::HydroHypostasisSummon, monster::CryoBathysmalVishap, - monster::ElectroBathysmalVishap + monster::ElectroBathysmalVishap, + // Sumeru + monster::ElectroRegisvine, + monster::JadeplumeTerrorshroom + }; SimpleFilter MonsterShielded = { // Taken from https://genshin-impact.fandom.com/wiki/Shields/Enemy. @@ -472,17 +526,19 @@ namespace cheat::game::filters monster::Whopperflower }; SimpleFilter MonsterEquips = { EntityType__Enum_1::MonsterEquip }; - BlacklistFilter Living = { - {EntityType__Enum_1::EnvAnimal, EntityType__Enum_1::Monster}, - { - // Environmental mobs - "Cat", "DogPrick", "Vulpues", "Inu_Tanuki", - // Overworld bosses - "Ningyo", "Regisvine", "Hypostasis", "Planelurker", "Nithhoggr" - } - }; + BlacklistFilter Living = { + {EntityType__Enum_1::EnvAnimal, EntityType__Enum_1::Monster}, + { + // Environmental mobs + "Cat", "DogPrick", "Vulpues", "Inu_Tanuki", + // Overworld bosses + "Ningyo", "Regisvine", "Hypostasis", "Planelurker", "Nithhoggr" + } + }; SimpleFilter OrganicTargets = { Monsters, Animals }; // Solael: Please don't mess around with this filter. //m0nkrel: We can choose the entities we need ourselves so as not to magnetize cats, dogs, etc. //AdvancedFilter Animals = { {EntityType__Enum_1::EnvAnimal, EntityType__Enum_1::Monster }, {"Crane", "Tit", "Boar", "Squirrel", "Fox", "Pigeon", "Wigeon", "Falcon" ,"Marten" } }; + + SimpleFilter Lightning = { EntityType__Enum_1::Lightning }; } } diff --git a/cheat-library/src/user/cheat/game/filters.h b/cheat-library/src/user/cheat/game/filters.h index 9553cf1..2edd84f 100644 --- a/cheat-library/src/user/cheat/game/filters.h +++ b/cheat-library/src/user/cheat/game/filters.h @@ -32,6 +32,8 @@ namespace cheat::game::filters extern ChestFilter SFrozen; extern ChestFilter SBramble; extern ChestFilter STrap; + + extern SimpleFilter BuriedChest; } namespace equipment @@ -49,9 +51,12 @@ namespace cheat::game::filters extern SimpleFilter Anemoculus; extern SimpleFilter CrimsonAgate; extern SimpleFilter Electroculus; + extern SimpleFilter Dendroculus; + extern SimpleFilter EchoingConch; extern SimpleFilter Electrogranum; extern SimpleFilter FishingPoint; extern SimpleFilter Geoculus; + extern SimpleFilter ImagingConch; extern WhitelistFilter ItemDrops; extern SimpleFilter Lumenspar; extern SimpleFilter KeySigil; @@ -97,6 +102,7 @@ namespace cheat::game::filters extern SimpleFilter LucklightFly; extern SimpleFilter Npc; extern SimpleFilter Salamander; + extern SimpleFilter Tukan; extern SimpleFilter Pigeon; extern SimpleFilter Crow; extern SimpleFilter Finch; @@ -139,6 +145,7 @@ namespace cheat::game::filters namespace monster { extern SimpleFilter AbyssMage; + extern SimpleFilter Eremite; extern SimpleFilter FatuiAgent; extern SimpleFilter FatuiCicinMage; extern SimpleFilter FatuiMirrorMaiden; @@ -146,16 +153,23 @@ namespace cheat::game::filters extern SimpleFilter Geovishap; extern SimpleFilter GeovishapHatchling; extern SimpleFilter Hilichurl; + extern SimpleFilter JadeplumeTerrorshroom; extern SimpleFilter Mitachurl; extern SimpleFilter Nobushi; extern SimpleFilter Kairagi; + extern SimpleFilter RuinDrake; extern SimpleFilter RuinGuard; + extern SimpleFilter RuinGrader; extern SimpleFilter RuinHunter; extern SimpleFilter RuinSentinel; extern SimpleFilter Samachurl; extern SimpleFilter ShadowyHusk; extern SimpleFilter Slime; extern SimpleFilter FloatingFungus; + extern SimpleFilter StretchyFungus; + extern SimpleFilter WhirlingFungus; + extern SimpleFilter WingedShroom; + extern SimpleFilter GroundedShroom; extern SimpleFilter Specter; extern SimpleFilter TreasureHoarder; extern SimpleFilter UnusualHilichurl; @@ -187,6 +201,7 @@ namespace cheat::game::filters extern SimpleFilter OceanidFalcon; extern SimpleFilter PerpetualMechanicalArray; extern SimpleFilter PrimoGeovishap; + extern SimpleFilter HydroBathysmalVishap; extern SimpleFilter CryoBathysmalVishap; extern SimpleFilter ElectroBathysmalVishap; extern SimpleFilter ThunderManifestation; @@ -201,9 +216,14 @@ namespace cheat::game::filters extern SimpleFilter SangonomiyaCohort; extern SimpleFilter CryoRegisvine; extern SimpleFilter PyroRegisvine; + extern SimpleFilter ElectroRegisvine; extern SimpleFilter MaguuKenki; extern SimpleFilter Cicin; extern SimpleFilter Beisht; + extern SimpleFilter RishbolandTiger; + extern SimpleFilter ShaggySumpterBeast; + extern SimpleFilter Spincrocodile; + extern SimpleFilter SentryTurrets; } namespace plant @@ -249,6 +269,16 @@ namespace cheat::game::filters extern SimpleFilter Wheat; extern SimpleFilter WindwheelAster; extern SimpleFilter Wolfhook; + extern SimpleFilter RadishDrop; + extern SimpleFilter CarrotDrop; + extern SimpleFilter HarraFruit; + extern SimpleFilter KalpalataLotus; + extern SimpleFilter NilotpalaLotus; + extern SimpleFilter Padisarah; + extern SimpleFilter RukkhashavaMushrooms; + extern SimpleFilter SumeruRose; + //extern SimpleFilter Viparyas; + extern SimpleFilter ZaytunPeach; } namespace puzzle @@ -257,7 +287,6 @@ namespace cheat::game::filters extern SimpleFilter BakeDanuki; extern SimpleFilter BloattyFloatty; extern WhitelistFilter CubeDevices; - extern SimpleFilter EightStoneTablets; extern SimpleFilter ElectricConduction; extern SimpleFilter RelayStone; @@ -286,6 +315,11 @@ namespace cheat::game::filters extern SimpleFilter UniqueRocks; extern SimpleFilter WarmingSeelie; extern SimpleFilter WindmillMechanism; + extern WhitelistFilter MelodicBloom; + extern SimpleFilter CloudleisureSteps; + extern WhitelistFilter DreamForm; + extern SimpleFilter StarlightCoalescence; + extern SimpleFilter TheRavenForum; } namespace combined @@ -293,6 +327,7 @@ namespace cheat::game::filters extern SimpleFilter Oculies; extern SimpleFilter Chests; extern SimpleFilter Ores; + extern SimpleFilter PlantDestroy; extern WhitelistFilter Doodads; extern SimpleFilter Animals; extern SimpleFilter AnimalDrop; @@ -304,7 +339,8 @@ namespace cheat::game::filters extern SimpleFilter MonsterBosses; extern SimpleFilter MonsterShielded; extern SimpleFilter MonsterEquips; - extern BlacklistFilter Living; + extern BlacklistFilter Living; extern SimpleFilter OrganicTargets; + extern SimpleFilter Lightning; } } \ No newline at end of file diff --git a/cheat-library/src/user/cheat/imap/InteractiveMap.cpp b/cheat-library/src/user/cheat/imap/InteractiveMap.cpp index ec255b4..e338c8f 100644 --- a/cheat-library/src/user/cheat/imap/InteractiveMap.cpp +++ b/cheat-library/src/user/cheat/imap/InteractiveMap.cpp @@ -1212,6 +1212,7 @@ namespace cheat::feature LoadSceneData(nlohmann::json::parse(ResourceLoader::Load("MapTeyvatData", RT_RCDATA)), 3); LoadSceneData(nlohmann::json::parse(ResourceLoader::Load("MapEnkanomiyaData", RT_RCDATA)), 5); LoadSceneData(nlohmann::json::parse(ResourceLoader::Load("MapUndegroundMinesData", RT_RCDATA)), 6); + LoadSceneData(nlohmann::json::parse(ResourceLoader::Load("MapGoldenAppleArchipelagoData", RT_RCDATA)), 9); LOG_INFO("Interactive map data loaded successfully."); } @@ -1280,6 +1281,10 @@ namespace cheat::feature APPLY_SCENE_OFFSETS(6, "Medaka", -649.27f, 776.9f, "SweetFlowerMedaka", -720.16f, 513.55f); + + APPLY_SCENE_OFFSETS(9, + "PaleRedCrab", -396.38f, -253.75f, + "GoldenCrab", 145.89f, 215.34f); #undef APPLY_SCENE_OFFSETS } @@ -1353,6 +1358,12 @@ namespace cheat::feature if (_monoMiniMap == nullptr) return false; + // Fix Exception in Console, when loading ptr null | RyujinZX#7832 + if (_monoMiniMap->fields._._._._.m_CachedPtr == 0) { + _monoMiniMap = nullptr; + return false; + } + SAFE_BEGIN(); return app::Behaviour_get_isActiveAndEnabled(reinterpret_cast(_monoMiniMap), nullptr); SAFE_ERROR(); diff --git a/cheat-library/src/user/cheat/player/NoCD.cpp b/cheat-library/src/user/cheat/player/NoCD.cpp index d18ffa0..d6dc429 100644 --- a/cheat-library/src/user/cheat/player/NoCD.cpp +++ b/cheat-library/src/user/cheat/player/NoCD.cpp @@ -11,14 +11,14 @@ namespace cheat::feature static bool LCAvatarCombat_OnSkillStart(app::LCAvatarCombat* __this, uint32_t skillID, float cdMultipler, MethodInfo* method); static bool LCAvatarCombat_IsSkillInCD_1(app::LCAvatarCombat* __this, app::LCAvatarCombat_LCAvatarCombat_SkillInfo* skillInfo, MethodInfo* method); - static void ActorAbilityPlugin_AddDynamicFloatWithRange_Hook(void* __this, app::String* key, float value, float minValue, float maxValue, + static void ActorAbilityPlugin_AddDynamicFloatWithRange_Hook(app::MoleMole_ActorAbilityPlugin* __this, app::String* key, float value, float minValue, float maxValue, bool forceDoAtRemote, MethodInfo* method); static std::list abilityLog; NoCD::NoCD() : Feature(), NF(f_AbilityReduce, "Reduce Skill/Burst Cooldown", "NoCD", false), - NF(f_TimerReduce, "Reduce Timer", "NoCD", 1.f), + NF(f_TimerReduce, "Reduce Timer", "NoCD", 1.f), NF(f_UtimateMaxEnergy, "Burst max energy", "NoCD", false), NF(f_Sprint, "No Sprint Cooldown", "NoCD", false), NF(f_InstantBow, "Instant bow", "NoCD", false) @@ -28,6 +28,7 @@ namespace cheat::feature HookManager::install(app::MoleMole_HumanoidMoveFSM_CheckSprintCooldown, HumanoidMoveFSM_CheckSprintCooldown_Hook); HookManager::install(app::MoleMole_ActorAbilityPlugin_AddDynamicFloatWithRange, ActorAbilityPlugin_AddDynamicFloatWithRange_Hook); + } const FeatureGUIInfo& NoCD::GetGUIInfo() const @@ -55,7 +56,7 @@ namespace cheat::feature if (f_InstantBow) { ImGui::Text("If Instant Bow Charge doesn't work:"); - TextURL("Please contribute to issue on GitHub.", "https://github.com/CallowBlack/genshin-cheat/issues/47", false, false); + TextURL("Please contribute to issue on GitHub.", "https://github.com/Akebi-Group/Akebi-GC/issues/281", false, false); if (ImGui::TreeNode("Ability Log [DEBUG]")) { if (ImGui::Button("Copy to Clipboard")) @@ -153,21 +154,26 @@ namespace cheat::feature // value - increase value // min and max - bounds of charge. // So, to charge make full charge m_Instantly, just replace value to maxValue. - static void ActorAbilityPlugin_AddDynamicFloatWithRange_Hook(void* __this, app::String* key, float value, float minValue, float maxValue, + static void ActorAbilityPlugin_AddDynamicFloatWithRange_Hook(app::MoleMole_ActorAbilityPlugin* __this, app::String* key, float value, float minValue, float maxValue, bool forceDoAtRemote, MethodInfo* method) { std::time_t t = std::time(nullptr); - auto logEntry = fmt::format("{:%H:%M:%S} | Key: {} value {}.", fmt::localtime(t), il2cppi_to_string(key), value); + auto logEntry = fmt::format("{:%H:%M:%S} | Key: {} value: {} | min: {} | max: {}.", fmt::localtime(t), il2cppi_to_string(key), value, minValue, maxValue); abilityLog.push_front(logEntry); if (abilityLog.size() > 50) abilityLog.pop_back(); - + NoCD& noCD = NoCD::GetInstance(); // This function is calling not only for bows, so if don't put key filter it cause various game mechanic bugs. // For now only "_Enchanted_Time" found for bow charging, maybe there are more. Need to continue research. if (noCD.f_InstantBow && il2cppi_to_string(key) == "_Enchanted_Time") + { value = maxValue; + __this->fields.nextValidAbilityID = 36; // HotFix Yelan, Fishl | It's essentially a game bug. | RyujinZX#7832 + } + CALL_ORIGIN(ActorAbilityPlugin_AddDynamicFloatWithRange_Hook, __this, key, value, minValue, maxValue, forceDoAtRemote, method); } + } diff --git a/cheat-library/src/user/cheat/player/NoClip.cpp b/cheat-library/src/user/cheat/player/NoClip.cpp index c32fa4c..9a97c26 100644 --- a/cheat-library/src/user/cheat/player/NoClip.cpp +++ b/cheat-library/src/user/cheat/player/NoClip.cpp @@ -7,37 +7,46 @@ #include #include -namespace cheat::feature +namespace cheat::feature { static void HumanoidMoveFSM_LateTick_Hook(app::HumanoidMoveFSM* __this, float deltaTime, MethodInfo* method); app::Vector3 zero; - NoClip::NoClip() : Feature(), - NF(f_Enabled, "No clip", "NoClip", false), - NF(f_NoAnimation, "No Animation", "NoClip", true), - NF(f_Speed, "Speed", "NoClip", 5.5f), - NF(f_CameraRelative, "Relative to camera", "NoClip", true), - NF(f_VelocityMode, "Velocity mode", "NoClip", false), - NF(f_FreeflightMode, "Freeflight mode", "NoClip", false), - NF(f_AltSpeedEnabled, "Alt speed enabled", "NoClip", false), - NF(f_AltSpeed, "Alt speed", "NoClip", 1.0f) - { + NoClip::NoClip() : Feature(), + NF(f_Enabled, "No clip", "NoClip", false), + NF(f_NoAnimation, "No Animation", "NoClip", true), + NF(f_UseCustomKeys, "Use Custom Hotkeys", "NoClip", false), + NF(f_ForwardKey, "Forward HotKey", "NoClip", Hotkey(ImGuiKey_W)), + NF(f_LeftKey, "Left HotKey", "NoClip", Hotkey(ImGuiKey_A)), + NF(f_BackKey, "Back HotKey", "NoClip", Hotkey(ImGuiKey_S)), + NF(f_RightKey, "Right HotKey", "NoClip", Hotkey(ImGuiKey_D)), + NF(f_AscendKey, "Ascend HotKey", "NoClip", Hotkey(ImGuiKey_Space)), + NF(f_DescendKey, "Descend HotKey", "NoClip", Hotkey(ImGuiKey_ModShift)), + NF(f_AltSpeedKey, "Alt Speed Hotkey", "NoClip", Hotkey(ImGuiKey_ModCtrl)), + NF(f_Speed, "Speed", "NoClip", 5.5f), + NF(f_CameraRelative, "Relative to camera", "NoClip", true), + NF(f_VelocityMode, "Velocity mode", "NoClip", false), + NF(f_FreeflightMode, "Freeflight mode", "NoClip", false), + NF(f_AltSpeedEnabled, "Alt speed enabled", "NoClip", false), + NF(f_AltSpeed, "Alt speed", "NoClip", 1.0f) + + { HookManager::install(app::MoleMole_HumanoidMoveFSM_LateTick, HumanoidMoveFSM_LateTick_Hook); events::GameUpdateEvent += MY_METHOD_HANDLER(NoClip::OnGameUpdate); events::MoveSyncEvent += MY_METHOD_HANDLER(NoClip::OnMoveSync); - } + } - const FeatureGUIInfo& NoClip::GetGUIInfo() const - { - static const FeatureGUIInfo info{ "No-Clip", "Player", true }; - return info; - } + const FeatureGUIInfo& NoClip::GetGUIInfo() const + { + static const FeatureGUIInfo info{ "No-Clip", "Player", true }; + return info; + } - void NoClip::DrawMain() - { + void NoClip::DrawMain() + { ConfigWidget("Enabled", f_Enabled, "Enables no-clip (fast speed + no collision).\n" \ - "To move, use WASD, Space (go up), and Shift (go down)."); + "To move, use WASD, Space (go up), and Shift (go down), or customize your own keys."); ConfigWidget("No Animation", f_NoAnimation, "Disables player animations."); @@ -51,36 +60,48 @@ namespace cheat::feature ConfigWidget("Alternate No-clip", f_AltSpeedEnabled, "Allows usage of alternate speed when holding down LeftCtrl key.\n" \ "Useful if you want to temporarily go faster/slower than the no-clip speed setting."); - + if (f_AltSpeedEnabled) { ConfigWidget("Alt Speed", f_AltSpeed, 0.1f, 2.0f, 100.0f, "Alternate no-clip move speed.\n" \ "Not recommended setting above 5.0."); - - ConfigWidget("Velocity mode", f_VelocityMode,"Use velocity instead of position to move."); - ConfigWidget("Freeflight mode", f_FreeflightMode,"Don't remove collisions"); + + ConfigWidget("Velocity mode", f_VelocityMode, "Use velocity instead of position to move."); + ConfigWidget("Freeflight mode", f_FreeflightMode, "Don't remove collisions"); } - } - bool NoClip::NeedStatusDraw() const -{ - return f_Enabled; - } + ConfigWidget("Use Custom Keys", f_UseCustomKeys, "Enable the Use of Custom HotKeys"); - void NoClip::DrawStatus() - { + if (f_UseCustomKeys) { + ConfigWidget("Forward HotKey", f_ForwardKey, "Set Forward Key"); + ConfigWidget("Left HotKey", f_LeftKey, "Set Left Key"); + ConfigWidget("Back HotKey", f_BackKey, "Set Back Key"); + ConfigWidget("Right HotKey", f_RightKey, "Set Right Key"); + ConfigWidget("Ascend HotKey", f_AscendKey, "Set Ascend Key"); + ConfigWidget("Descend HotKey", f_DescendKey, "Set Descend Key"); + ConfigWidget("Alt Speed Key", f_AltSpeedKey, "Set AltSpeed HotKey"); + } + } + + bool NoClip::NeedStatusDraw() const + { + return f_Enabled; + } + + void NoClip::DrawStatus() + { ImGui::Text("NoClip%s[%.01f%s%|%s]", f_AltSpeedEnabled ? "+Alt " : " ", f_Speed.value(), f_AltSpeedEnabled ? fmt::format("|{:.1f}", f_AltSpeed.value()).c_str() : "", f_CameraRelative ? "CR" : "PR"); - } + } - NoClip& NoClip::GetInstance() - { - static NoClip instance; - return instance; - } + NoClip& NoClip::GetInstance() + { + static NoClip instance; + return instance; + } // No clip update function. // We just disabling collision detect and move avatar when no clip moving keys pressed. @@ -89,7 +110,7 @@ namespace cheat::feature static bool isApplied = false; auto& manager = game::EntityManager::instance(); - + if (!f_Enabled && isApplied) { auto avatarEntity = manager.avatar(); @@ -98,7 +119,7 @@ namespace cheat::feature return; app::Rigidbody_set_detectCollisions(rigidBody, true, nullptr); - + isApplied = false; } @@ -118,36 +139,41 @@ namespace cheat::feature auto rigidBody = avatarEntity->rigidbody(); if (rigidBody == nullptr) return; + if (!f_FreeflightMode) + { + app::Rigidbody_set_collisionDetectionMode(rigidBody, app::CollisionDetectionMode__Enum::Continuous, nullptr); app::Rigidbody_set_detectCollisions(rigidBody, false, nullptr); - + } + if (!f_VelocityMode) - app::Rigidbody_set_velocity(rigidBody, zero,nullptr); + app::Rigidbody_set_velocity(rigidBody, zero, nullptr); auto cameraEntity = game::Entity(reinterpret_cast(manager.mainCamera())); auto relativeEntity = f_CameraRelative ? &cameraEntity : avatarEntity; float speed = f_Speed.value(); - if (f_AltSpeedEnabled && Hotkey(VK_LCONTROL).IsPressed()) - speed = f_AltSpeed.value(); + if (f_AltSpeedEnabled ? f_UseCustomKeys ? f_AltSpeedKey.value().IsPressed() : Hotkey(ImGuiKey_ModCtrl).IsPressed() : NULL) + speed = f_AltSpeed.value(); app::Vector3 dir = {}; - if (Hotkey('W').IsPressed()) + + if (f_UseCustomKeys ? f_ForwardKey.value().IsPressed() : Hotkey(ImGuiKey_W).IsPressed()) dir = dir + relativeEntity->forward(); - if (Hotkey('S').IsPressed()) + if (f_UseCustomKeys ? f_BackKey.value().IsPressed() : Hotkey(ImGuiKey_S).IsPressed()) dir = dir + relativeEntity->back(); - if (Hotkey('D').IsPressed()) + if (f_UseCustomKeys ? f_RightKey.value().IsPressed() : Hotkey(ImGuiKey_D).IsPressed()) dir = dir + relativeEntity->right(); - if (Hotkey('A').IsPressed()) + if (f_UseCustomKeys ? f_LeftKey.value().IsPressed() : Hotkey(ImGuiKey_A).IsPressed()) dir = dir + relativeEntity->left(); - if (Hotkey(VK_SPACE).IsPressed()) + if (f_UseCustomKeys ? f_AscendKey.value().IsPressed() : Hotkey(ImGuiKey_Space).IsPressed()) dir = dir + avatarEntity->up(); - - if (Hotkey(ImGuiKey_ModShift).IsPressed()) + + if (f_UseCustomKeys ? f_DescendKey.value().IsPressed() : Hotkey(ImGuiKey_ModShift).IsPressed()) dir = dir + avatarEntity->down(); app::Vector3 prevPos = avatarEntity->relativePosition(); diff --git a/cheat-library/src/user/cheat/player/NoClip.h b/cheat-library/src/user/cheat/player/NoClip.h index ecfc01d..a1b1e2e 100644 --- a/cheat-library/src/user/cheat/player/NoClip.h +++ b/cheat-library/src/user/cheat/player/NoClip.h @@ -13,6 +13,15 @@ namespace cheat::feature config::Field> f_Enabled; config::Field> f_NoAnimation; + config::Field f_UseCustomKeys; + config::Field f_ForwardKey; + config::Field f_LeftKey; + config::Field f_RightKey; + config::Field f_BackKey; + config::Field f_AscendKey; + config::Field f_DescendKey; + config::Field f_AltSpeedKey; + config::Field f_Speed; config::Field f_CameraRelative; config::Field> f_VelocityMode; diff --git a/cheat-library/src/user/cheat/player/RapidFire.cpp b/cheat-library/src/user/cheat/player/RapidFire.cpp index 4d5dcd2..bcad5ee 100644 --- a/cheat-library/src/user/cheat/player/RapidFire.cpp +++ b/cheat-library/src/user/cheat/player/RapidFire.cpp @@ -186,12 +186,13 @@ namespace cheat::feature bool IsValidByFilter(game::Entity* entity) { if (game::filters::combined::OrganicTargets.IsValid(entity) || + game::filters::monster::SentryTurrets.IsValid(entity) || game::filters::combined::Ores.IsValid(entity) || game::filters::puzzle::Geogranum.IsValid(entity) || game::filters::puzzle::LargeRockPile.IsValid(entity) || game::filters::puzzle::SmallRockPile.IsValid(entity)) return true; - return false; + return false; } // Raises when any entity do hit event. @@ -207,6 +208,7 @@ namespace cheat::feature auto& manager = game::EntityManager::instance(); auto originalTarget = manager.entity(targetID); + if (!IsValidByFilter(originalTarget)) return CALL_ORIGIN(LCBaseCombat_DoHitEntity_Hook, __this, targetID, attackResult, ignoreCheckCanBeHitInMP, method); @@ -236,6 +238,7 @@ namespace cheat::feature } for (const auto& entity : validEntities) { + if (rapidFire.f_MultiHit) { int attackCount = rapidFire.GetAttackCount(__this, entity->runtimeID(), attackResult); for (int i = 0; i < attackCount; i++) diff --git a/cheat-library/src/user/cheat/teleport/CustomTeleports.cpp b/cheat-library/src/user/cheat/teleport/CustomTeleports.cpp index e1bf6c2..e3d9984 100644 --- a/cheat-library/src/user/cheat/teleport/CustomTeleports.cpp +++ b/cheat-library/src/user/cheat/teleport/CustomTeleports.cpp @@ -17,14 +17,17 @@ namespace cheat::feature { CustomTeleports::CustomTeleports() : Feature(), - NF(f_DebugMode, "Debug Mode", "CustomTeleports", false), // Soon to be added NF(f_Enabled, "Custom Teleport", "CustomTeleports", false), NF(f_Next, "Teleport Next", "CustomTeleports", Hotkey(VK_OEM_6)), - NF(f_Previous, "Teleport Previous", "CustomTeleports", Hotkey(VK_OEM_4)) + NF(f_Previous, "Teleport Previous", "CustomTeleports", Hotkey(VK_OEM_4)), + NF(f_Interpolate, "Custom Teleport", "CustomTeleports", false), + NF(f_Speed, "Interpolation Speed", "CustomTeleports", 10.0f), + dir(util::GetCurrentPath() / "teleports") { f_Next.value().PressedEvent += MY_METHOD_HANDLER(CustomTeleports::OnNext); f_Previous.value().PressedEvent += MY_METHOD_HANDLER(CustomTeleports::OnPrevious); } + const FeatureGUIInfo& CustomTeleports::GetGUIInfo() const { static const FeatureGUIInfo info{ "Custom Teleports", "Teleport", true }; @@ -120,6 +123,42 @@ namespace cheat::feature return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2) + pow(a.z - b.z, 2)); } + void CustomTeleports::TeleportTo(app::Vector3 position, bool interpolate) + { + auto &manager = game::EntityManager::instance(); + auto avatar = manager.avatar(); + if (avatar->moveComponent() == nullptr) + { + LOG_ERROR("Avatar has no move component, Is scene loaded?"); + return; + } + if (interpolate) + { + float speed = this->f_Speed; + auto avatarPos = manager.avatar()->absolutePosition(); + auto endPos = position; + std::thread interpolate([avatarPos, endPos, &manager, speed]() + { + float t = 0.0f; + app::Vector3 zero = {0,0,0}; + auto newPos = zero; + while (t < 1.0f) { + newPos = app::Vector3_Lerp(avatarPos, endPos, t, nullptr); + manager.avatar()->setAbsolutePosition(newPos); + t += speed / 100.0f; + Sleep(10); + } }); + interpolate.detach(); + } + else + { + if (PositionDistance(position, app::ActorUtils_GetAvatarPos(nullptr)) > 60.0f) + MapTeleport::GetInstance().TeleportTo(position); + else + manager.avatar()->setAbsolutePosition(position); + } + } + void CustomTeleports::OnTeleportKeyPressed(bool next) { if (!f_Enabled || selectedIndex < 0) @@ -136,13 +175,14 @@ namespace cheat::feature else { std::vector list(checkedIndices.begin(), checkedIndices.end()); - if (selectedIndex == list.back() ? next : selectedIndex == list.front()) + if (next ? selectedIndex == list.back() : selectedIndex == list.front()) return; + auto index = std::distance(list.begin(), std::find(list.begin(), list.end(), selectedIndex)); - position = Teleports.at(list.at(index + (next ? 1 : -1))).position; selectedIndex = list.at(index + (next ? 1 : -1)); + position = Teleports.at(selectedIndex).position; } - mapTeleport.TeleportTo(position); + TeleportTo(position, this->f_Interpolate); UpdateIndexName(); } @@ -155,38 +195,28 @@ namespace cheat::feature OnTeleportKeyPressed(true); } + void itr(std::regex exp, std::string name, std::string s) + { + std::sregex_iterator itr(name.begin(), name.end(), exp); + while (itr != std::sregex_iterator()) + { + for (unsigned i = 0; i < itr->size(); i++) + s.append((*itr)[i]); + itr++; + } + } void CustomTeleports::UpdateIndexName() { - std::string name(selectedIndex == -1 || checkedIndices.empty() ? "" : Teleports.at(selectedIndex).name); - // abbreviate teleport names that are too long + std::string name(selectedIndex == -1 || checkedIndices.empty() ? "" : Teleports.at(selectedIndex).name); if (name.length() > 15) { std::string shortened; std::regex numsExp("[\\d]+"); std::regex firstCharsExp("\\b[A-Za-z]"); - - std::sregex_iterator wordItr(name.begin(), name.end(), firstCharsExp); - while (wordItr != std::sregex_iterator()) - { - for (unsigned i = 0; i < wordItr->size(); i++) - { - shortened.append((*wordItr)[i]); - } - wordItr++; - } - - std::sregex_iterator numItr(name.begin(), name.end(), numsExp); - while (numItr != std::sregex_iterator()) - { - for (unsigned i = 0; i < numItr->size(); i++) - { - shortened.append(" "); - shortened.append((*numItr)[i]); - } - numItr++; - } + itr(firstCharsExp, name, shortened); + itr(numsExp, name, shortened); name = shortened; } selectedIndexName = name; @@ -247,7 +277,9 @@ namespace cheat::feature "3. You can now press Next or Previous Hotkey to Teleport through the Checklist\n" "Initially it will teleport the player to the selection made\n" "Note: Double click or click the arrow to open teleport details"); - ImGui::SameLine(); + ConfigWidget("Enable Interpolation", f_Interpolate, "Enable interpolation between teleports when using keybinds"); + ConfigWidget("Interpolation Speed", f_Speed, 0.1f, 0.1f, 99.0f, + "Interpolation speed.\n recommended setting below or equal to 0.1."); if (ImGui::Button("Delete Checked")) { @@ -279,8 +311,8 @@ namespace cheat::feature { std::sort(Teleports.begin(), Teleports.end(), [](const auto &a, const auto &b) { return StrCmpLogicalW(std::wstring(a.name.begin(), a.name.end()).c_str(), std::wstring(b.name.begin(), b.name.end()).c_str()) < 0; }); - bool allChecked = checkedIndices.size() == Teleports.size() && !Teleports.empty(); - bool allSearchChecked = checkedIndices.size() == searchIndices.size() && !searchIndices.empty(); + bool allSearchChecked = std::includes(checkedIndices.begin(), checkedIndices.end(), searchIndices.begin(), searchIndices.end()) && !searchIndices.empty(); + bool allChecked = (checkedIndices.size() == Teleports.size() && !Teleports.empty()) || allSearchChecked; ImGui::Checkbox("All", &allChecked); if (ImGui::IsItemClicked()) { @@ -314,11 +346,10 @@ namespace cheat::feature maxNameLength = Teleport.name.length(); ImGui::BeginTable("Teleports", 4, ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_NoSavedSettings); ImGui::TableSetupColumn("#", ImGuiTableColumnFlags_WidthFixed, 20); - ImGui::TableSetupColumn("Commands", ImGuiTableColumnFlags_WidthFixed, 100); + ImGui::TableSetupColumn("Commands", ImGuiTableColumnFlags_WidthFixed, 130); ImGui::TableSetupColumn("Name", ImGuiTableColumnFlags_WidthFixed, maxNameLength * 8 + 10); ImGui::TableSetupColumn("Position"); ImGui::TableHeadersRow(); - ImGuiTreeNodeFlags nodeFlags = ImGuiTreeNodeFlags_OpenOnArrow | ImGuiTreeNodeFlags_OpenOnDoubleClick | ImGuiTreeNodeFlags_SpanAvailWidth; for (const auto &[name, position, description] : Teleports) { @@ -330,12 +361,13 @@ namespace cheat::feature bool checked = std::any_of(checkedIndices.begin(), checkedIndices.end(), [&index](const auto &i) { return i == index; }); bool selected = index == selectedIndex; + std::string stringIndex = std::to_string(index); ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::Text("%d", index); ImGui::TableNextColumn(); - ImGui::Checkbox(("##Index" + std::to_string(index)).c_str(), &checked); + ImGui::Checkbox(("##Index" + stringIndex).c_str(), &checked); if (ImGui::IsItemClicked(0)) { if (checked) @@ -350,37 +382,29 @@ namespace cheat::feature } ImGui::SameLine(); - if (ImGui::Button(("TP##Button" + std::to_string(index)).c_str())) + if (ImGui::Button(("TP##Button" + stringIndex).c_str())) { - auto &manager = game::EntityManager::instance(); - auto avatar = manager.avatar(); - if (avatar->moveComponent() == nullptr) - { - LOG_ERROR("Avatar has no move component, Is scene loaded?"); - return; - } - if (PositionDistance(position, app::ActorUtils_GetAvatarPos(nullptr)) > 60.0f) - MapTeleport::GetInstance().TeleportTo(position); - else - manager.avatar()->setAbsolutePosition(position); + TeleportTo(position, false); } ImGui::SameLine(); - if (ImGui::Button(("Select##Button" + std::to_string(index)).c_str())) + if (ImGui::Button(("Lerp##Button" + stringIndex).c_str())) + { + TeleportTo(position, true); + } + ImGui::SameLine(); + + if (ImGui::Button(("Select##Button" + stringIndex).c_str())) { selectedIndex = index; selectedByClick = true; UpdateIndexName(); } - ImGui::SameLine(); - ImGui::PushStyleColor(ImGuiCol_Text, selected ? IM_COL32(40, 90, 175, 255) : IM_COL32(255, 255, 255, 255)); - - if (selected) - nodeFlags |= ImGuiTreeNodeFlags_Selected; - ImGui::PopStyleColor(); ImGui::TableNextColumn(); + ImGui::PushStyleColor(ImGuiCol_Text, selected ? IM_COL32(40, 90, 175, 255) : ImGui::ColorConvertFloat4ToU32(ImGui::GetStyle().Colors[ImGuiCol_Text])); ImGui::Text("%s", name.c_str()); + ImGui::PopStyleColor(); if (ImGui::IsItemHovered()) { ImGui::BeginTooltip(); diff --git a/cheat-library/src/user/cheat/teleport/CustomTeleports.h b/cheat-library/src/user/cheat/teleport/CustomTeleports.h index eb03b34..6b2de3c 100644 --- a/cheat-library/src/user/cheat/teleport/CustomTeleports.h +++ b/cheat-library/src/user/cheat/teleport/CustomTeleports.h @@ -25,8 +25,9 @@ namespace cheat::feature class CustomTeleports : public Feature { public: - config::Field> f_DebugMode; config::Field> f_Enabled; + config::Field> f_Interpolate; + config::Field f_Speed; config::Field f_Next; config::Field f_Previous; static CustomTeleports& GetInstance(); @@ -45,7 +46,7 @@ namespace cheat::feature void DrawStatus() override; std::vector Teleports; - std::filesystem::path dir = std::filesystem::current_path() / "teleports"; + std::filesystem::path dir; private: std::set checkedIndices; @@ -55,6 +56,7 @@ namespace cheat::feature std::string selectedName; std::string selectedIndexName; CustomTeleports(); + void TeleportTo(app::Vector3 position, bool interpolate); void OnTeleportKeyPressed(bool next); void OnPrevious(); void OnNext(); diff --git a/cheat-library/src/user/cheat/visuals/AnimationChanger.cpp b/cheat-library/src/user/cheat/visuals/AnimationChanger.cpp new file mode 100644 index 0000000..37f36e0 --- /dev/null +++ b/cheat-library/src/user/cheat/visuals/AnimationChanger.cpp @@ -0,0 +1,301 @@ +#include "pch-il2cpp.h" +#include "AnimationChanger.h" + +#include +#include +#include +#include + +namespace cheat::feature +{ + static std::string animations[] = { + // All characters + "SlipFaceWall", + "SlipBackWall", + "DropDown", + "JumpOffWall", + "Jump", + "JumpForRun", + "JumpForWalk", + "Fly", + "FlyStart", + "JumpForSprint", + "SwimIdle", + "SwimMove", + "SwimDash", + "ClimbMove1", + "ClimbIdle", + "ClimbJump", + "ClimbMove0", + "FallToGroundRun", + "FallOnGroundLit", + "FallOnGround", + "FallToGroundRunHard", + "FallToGroundSprint", + "Walk", + "Run", + "Standby", + "RunToIdle", + "RunToWalk", + "WalkToIdle", + "WalkToRun", + "Sprint", + "SprintToIdle", + "SprintToRun", + "ClimbDownToGround", + "SprintBS", + "ShowUp", + "CrouchToStandby", + "CrouchIdle", + "CrouchRoll", + "CrouchMove", + "SkiffNormal", + "Upstairs", + "JumpUpWallForStandby", + "JumpUpWallReady", + "Standby2ClimbA", + "SwimJump", + "SwimJumpDrop", + "SwimJumpToWater", + "Standby2ClimbB", + "CrouchDrop", + "TurnDir", + "StandbyWeapon", + "StandbyPutaway", + "StandbyPutawayOver", + "Icespine_Out", + "Icespine", + "LiquidStrike_MoveStandby", + "LiquidStrike_AS", + "LiquidStrike_BS", + "LiquidStrike_BS1", + "LiquidStrike_Move", + "LiquidStrike_Strike", + "LiquidStrike_FatalStandby", + "LiquidStrike_FatalMove", + "LiquidStrike_AS_OnWater", + "LiquidStrike_BS_0", + "FrozenWindmill", + "FrozenWindmill_AS", + "Attack03", + "Attack04", + "Attack05", + "Attack01", + "Attack02", + "ExtraAttack", + "ExtraAttack_AS", + "FallingAnthem_Loop", + "FallingAnthem_AS_2", + "FallingAnthem_BS_1", + "FallingAnthem_BS_2", + "FallingAnthem_AS_1", + "FallingAnthem_Loop_Low", + "SitBDown", + "SitBLoop", + "SitBUp", + "SitDown", + "SitLoop", + "SitUp", + "StandbyShow_01", + "StandbyShow_02", + "StandbyVoice", + "Think01BS", + "Think01Loop", + "Think01AS", + "Akimbo02BS", + "Akimbo02Loop", + "Akimbo02AS", + "ChannelBS", + "ChannelLoop", + "ChannelAS", + "PlayMusic_Lyre_AS", + "PlayMusic_Lyre_BS", + "PlayMusic_Lyre_Loop", + "PlayMusic_Qin_BS", + "PlayMusic_Qin_AS", + "PlayMusic_Qin_Loop", + "ActivitySkill_ElectricCoreFly", + "Hit_H", + "Hit_L", + "Hit_Throw", + "Hit_Throw_Ground", + "Hit_ThrowAir", + "Struggle", + "NormalDie", + "SwimDie", + "HitGroundDie", + "FallDie_AS", + "FallDie", + // Main Character only + "UziExplode_AS", + "UziExplode_BS", + "UziExplode_Charge_01", + "UziExplode_Strike_02", + "UziExplode_Charge_02", + "UziExplode_Strike_01", + "UziExplode_BS_1", + "WindBreathe_AS", + "WindBreathe", + "Hogyoku_AS", + "Hogyoku_BS", + "Hogyoku", + "Hogyoku_Charge", + "Hogyoku_Charge_AS", + "Hogyoku_Charge_2", + "RockTide_AS", + "RockTide", + "CrouchThrowBS", + "CrouchThrowLoop", + "CrouchThrowAS", + "FindCatThrowBS", + "FindCatThrowLoop", + "FindCatThrowAS", + "Player_Electric_ElementalArt", + "Player_Electric_ElementalArt_AS", + "Player_Electric_ElementalBurst", + "Player_Electric_ElementalBurst_AS", + "PutHand01BS", + "PutHand01Loop", + "PutHand01AS", + "Akimbo01BS", + "Backrake01BS", + "Forerake01BS", + "StrikeChest01BS", + "Akimbo01Loop", + "Akimbo01AS", + "Backrake01Loop", + "Backrake01AS", + "Forerake01Loop", + "Forerake01AS", + "StrikeChest01Loop", + "StrikeChest01AS", + "HoldHead01BS", + "HoldHead01Loop", + "HoldHead01AS", + "Clap01", + "Turn01_90LBS", + "Turn01_90RBS", + "Turn01_90LAS", + "Turn01_90RAS", + "Alert01BS", + "Alert01Loop", + "Alert01AS", + "Fishing01_BS", + "Fishing01Loop", + "Fishing01AS", + "Think01_BS", + "Think01_Loop", + "Think01_AS", + "Channel01BS", + "Channel01Loop", + "Channel01AS", + "Fishing_Battle_BS", + "Fishing_Cast_AS", + "Fishing_Cast_BS", + "Fishing_Cast_Loop", + "Fishing_Choose", + "Fishing_Choose_Loop", + "Fishing_End", + "Fishing_Pull_01", + "Fishing_Pull_02", + "Fishing_Wait", + "Fishing_Pull_Fail", + "Bartender_MixingStandby", + "Bartender_MixingStart", + "Bartender_MixingToPour", + "Bartender_Pour", + "Bartender_PourFinish", + "Bartender_PourStandby", + "Bartender_AddLoop", + "Bartender_PrepareStart", + "Bartender_Standby", + "Bartender_AddStandby", + "Bartender_PrepareToStandby", + "Bartender_StandbyFinish", + "Blocking_BS", + "Blocking_Loop", + "Blocking_Back", + "Blocking_Bounce", + "Blocking_Hit", + "Blocking_AS" + }; + + AnimationChanger::AnimationChanger() : Feature(), + NF(f_Enabled, "Animation Changer", "Visuals::AnimationChanger", false), + NF(f_Animation, "Animation", "Visuals::AnimationChanger", "ExtraAttack"), + NF(f_ApplyKey, "Apply Animation", "Visuals::AnimationChanger", Hotkey('Y')), + NF(f_ResetKey, "Reset Animation", "Visuals::AnimationChanger", Hotkey('R')) + { + events::GameUpdateEvent += MY_METHOD_HANDLER(AnimationChanger::OnGameUpdate); + } + + const FeatureGUIInfo& AnimationChanger::GetGUIInfo() const + { + static const FeatureGUIInfo info{ "AnimationChanger", "Visuals", false }; + return info; + } + + void AnimationChanger::DrawMain() + { + ImGui::BeginGroupPanel("Animation Changer"); + { + ConfigWidget(f_Enabled, "Changes active character's animation.\nNot all animations work for every character except Main Character."); + if (f_Enabled) + { + if (ImGui::BeginCombo("Animations", f_Animation.value().c_str())) + { + for (auto &animation : animations) + { + bool is_selected = (f_Animation.value().c_str() == animation); + if (ImGui::Selectable(animation.c_str(), is_selected)) + f_Animation.value() = animation; + + if (is_selected) + ImGui::SetItemDefaultFocus(); + } + ImGui::EndCombo(); + } + + ConfigWidget("Apply Key", f_ApplyKey, true); + ConfigWidget("Reset Key", f_ResetKey, true); + } + } + ImGui::EndGroupPanel(); + } + + bool AnimationChanger::NeedStatusDraw() const + { + return f_Enabled; + } + + void AnimationChanger::DrawStatus() + { + ImGui::Text("AnimationChanger"); + } + + AnimationChanger& AnimationChanger::GetInstance() + { + static AnimationChanger instance; + return instance; + } + + void AnimationChanger::OnGameUpdate() + { + if (!f_Enabled) + return; + + // Taiga#5555: Maybe need to add separate option to change delay value if user feels like it's too fast or slow. + UPDATE_DELAY(400); + + auto& manager = game::EntityManager::instance(); + auto avatar = manager.avatar(); + if (avatar->animator() == nullptr) + return; + + if (f_ApplyKey.value().IsPressed()) + app::Animator_Play(avatar->animator(), string_to_il2cppi(f_Animation.value().c_str()), 0, 0, nullptr); + + if (f_ResetKey.value().IsPressed()) + app::Animator_Rebind(avatar->animator(), nullptr); + } +} diff --git a/cheat-library/src/user/cheat/visuals/AnimationChanger.h b/cheat-library/src/user/cheat/visuals/AnimationChanger.h new file mode 100644 index 0000000..b8f9d0c --- /dev/null +++ b/cheat-library/src/user/cheat/visuals/AnimationChanger.h @@ -0,0 +1,27 @@ +#pragma once +#include +#include + +namespace cheat::feature +{ + + class AnimationChanger : public Feature + { + public: + config::Field> f_Enabled; + config::Field f_Animation; + config::Field f_ApplyKey; + config::Field f_ResetKey; + + const FeatureGUIInfo& GetGUIInfo() const override; + void DrawMain() override; + virtual bool NeedStatusDraw() const override; + void DrawStatus() override; + static AnimationChanger& GetInstance(); + void OnGameUpdate(); + + private: + AnimationChanger(); + }; +} + diff --git a/cheat-library/src/user/cheat/visuals/EnablePeaking.cpp b/cheat-library/src/user/cheat/visuals/EnablePeeking.cpp similarity index 59% rename from cheat-library/src/user/cheat/visuals/EnablePeaking.cpp rename to cheat-library/src/user/cheat/visuals/EnablePeeking.cpp index edf40bd..3d9a72d 100644 --- a/cheat-library/src/user/cheat/visuals/EnablePeaking.cpp +++ b/cheat-library/src/user/cheat/visuals/EnablePeeking.cpp @@ -1,5 +1,5 @@ #include "pch-il2cpp.h" -#include "EnablePeaking.h" +#include "EnablePeeking.h" #include @@ -7,43 +7,43 @@ namespace cheat::feature { static void MoleMole_VCBaseSetDitherValue_set_ManagerDitherAlphaValue_Hook(app::MoleMole_VCBaseSetDitherValue* __this, float value, MethodInfo* method); - EnablePeaking::EnablePeaking() : Feature(), - NF(f_Enabled, "Enable Peaking", "Visuals::EnablePeaking", false) + EnablePeeking::EnablePeeking() : Feature(), + NF(f_Enabled, "Enable Peeking", "Visuals::EnablePeeking", false) { HookManager::install(app::MoleMole_VCBaseSetDitherValue_set_ManagerDitherAlphaValue, MoleMole_VCBaseSetDitherValue_set_ManagerDitherAlphaValue_Hook); } - const FeatureGUIInfo& EnablePeaking::GetGUIInfo() const + const FeatureGUIInfo& EnablePeeking::GetGUIInfo() const { - static const FeatureGUIInfo info{ "EnablePeaking", "Visuals", false }; + static const FeatureGUIInfo info{ "EnablePeeking", "Visuals", false }; return info; } - void EnablePeaking::DrawMain() + void EnablePeeking::DrawMain() { ConfigWidget(f_Enabled, ";)"); } - bool EnablePeaking::NeedStatusDraw() const + bool EnablePeeking::NeedStatusDraw() const { return f_Enabled; } - void EnablePeaking::DrawStatus() + void EnablePeeking::DrawStatus() { - ImGui::Text("Enable Peaking"); + ImGui::Text("Enable Peeking"); } - EnablePeaking& EnablePeaking::GetInstance() + EnablePeeking& EnablePeeking::GetInstance() { - static EnablePeaking instance; + static EnablePeeking instance; return instance; - } + } static void MoleMole_VCBaseSetDitherValue_set_ManagerDitherAlphaValue_Hook(app::MoleMole_VCBaseSetDitherValue* __this, float value, MethodInfo* method) { - EnablePeaking& EnablePeaking = EnablePeaking::GetInstance(); - if (EnablePeaking.f_Enabled) + EnablePeeking& EnablePeeking = EnablePeeking::GetInstance(); + if (EnablePeeking.f_Enabled) value = 1; CALL_ORIGIN(MoleMole_VCBaseSetDitherValue_set_ManagerDitherAlphaValue_Hook, __this, value, method); diff --git a/cheat-library/src/user/cheat/visuals/EnablePeeking.h b/cheat-library/src/user/cheat/visuals/EnablePeeking.h new file mode 100644 index 0000000..50b414f --- /dev/null +++ b/cheat-library/src/user/cheat/visuals/EnablePeeking.h @@ -0,0 +1,25 @@ +#pragma once +#include +#include + +namespace cheat::feature +{ + + class EnablePeeking : public Feature + { + public: + config::Field> f_Enabled; + + static EnablePeeking& GetInstance(); + + const FeatureGUIInfo& GetGUIInfo() const override; + void DrawMain() override; + + virtual bool NeedStatusDraw() const override; + void DrawStatus() override; + + private: + EnablePeeking(); + }; +} + diff --git a/cheat-library/src/user/cheat/visuals/FreeCamera.cpp b/cheat-library/src/user/cheat/visuals/FreeCamera.cpp index eaa297f..b39819f 100644 --- a/cheat-library/src/user/cheat/visuals/FreeCamera.cpp +++ b/cheat-library/src/user/cheat/visuals/FreeCamera.cpp @@ -3,6 +3,7 @@ #include #include +#include namespace cheat::feature { @@ -20,6 +21,7 @@ namespace cheat::feature FreeCamera::FreeCamera() : Feature(), NF(f_Enabled, "Free Camera", "Visuals::FreeCamera", false), + NF(f_FreezeAnimation, "Freeze Character Animation", "Visuals::FreeCamera", false), NF(f_Speed, "Speed", "Visuals::FreeCamera", 1.0f), NF(f_LookSens, "Look Sensitivity", "Visuals::FreeCamera", 1.0f), NF(f_RollSpeed, "Roll Speed", "Visuals::FreeCamera", 1.0f), @@ -50,6 +52,7 @@ namespace cheat::feature void FreeCamera::DrawMain() { ConfigWidget("Enable", f_Enabled); + ConfigWidget("Freeze Character Animation", f_FreezeAnimation, "Freezes the active character's animation.\nAfter disabling, jump to un-freeze your character."); if (ImGui::BeginTable("FreeCameraDrawTable", 1, ImGuiTableFlags_NoBordersInBody)) { ImGui::TableNextRow(); @@ -245,5 +248,25 @@ namespace cheat::feature } else DisableFreeCam(); + + // Taiga#5555: There's probably be a better way of implementing this. But for now, this is just what I came up with. + auto& manager = game::EntityManager::instance(); + auto animator = manager.avatar()->animator(); + auto rigidBody = manager.avatar()->rigidbody(); + if (animator == nullptr && rigidBody == nullptr) + return; + + if (f_FreezeAnimation) + { + //auto constraints = app::Rigidbody_get_constraints(rigidBody, nullptr); + //LOG_DEBUG("%s", magic_enum::enum_name(constraints).data()); + app::Rigidbody_set_constraints(rigidBody, app::RigidbodyConstraints__Enum::FreezePosition, nullptr); + app::Animator_set_speed(animator, 0.f, nullptr); + } + else + { + app::Rigidbody_set_constraints(rigidBody, app::RigidbodyConstraints__Enum::FreezeRotation, nullptr); + app::Animator_set_speed(animator, 1.f, nullptr); + } } } \ No newline at end of file diff --git a/cheat-library/src/user/cheat/visuals/FreeCamera.h b/cheat-library/src/user/cheat/visuals/FreeCamera.h index 9f0ea7e..1084b4a 100644 --- a/cheat-library/src/user/cheat/visuals/FreeCamera.h +++ b/cheat-library/src/user/cheat/visuals/FreeCamera.h @@ -8,6 +8,7 @@ namespace cheat::feature { public: config::Field> f_Enabled; + config::Field> f_FreezeAnimation; config::Field f_Speed; config::Field f_LookSens; config::Field f_RollSpeed; diff --git a/cheat-library/src/user/cheat/world/AutoDestroy.cpp b/cheat-library/src/user/cheat/world/AutoDestroy.cpp index 65d26a3..3f873e2 100644 --- a/cheat-library/src/user/cheat/world/AutoDestroy.cpp +++ b/cheat-library/src/user/cheat/world/AutoDestroy.cpp @@ -9,31 +9,32 @@ #include #include -namespace cheat::feature +namespace cheat::feature { static void LCAbilityElement_ReduceModifierDurability_Hook(app::LCAbilityElement* __this, int32_t modifierDurabilityIndex, float reduceDurability, app::Nullable_1_Single_ deltaTime, MethodInfo* method); - AutoDestroy::AutoDestroy() : Feature(), - NF(f_Enabled, "Auto Destroy", "AutoDestroy", false), - NF(f_DestroyOres, "Destroy Ores", "AutoDestroy", false), - NF(f_DestroyShields, "Destroy Shields", "AutoDestroy", false), - NF(f_DestroyDoodads, "Destroy Doodads", "AutoDestroy", false), - NF(f_Range, "Range", "AutoDestroy", 10.0f) - { + AutoDestroy::AutoDestroy() : Feature(), + NF(f_Enabled, "Auto Destroy", "AutoDestroy", false), + NF(f_DestroyOres, "Destroy Ores", "AutoDestroy", false), + NF(f_DestroyShields, "Destroy Shields", "AutoDestroy", false), + NF(f_DestroyDoodads, "Destroy Doodads", "AutoDestroy", false), + NF(f_DestroyPlants, "Destroy Plants", "AutoDestroy", false), + NF(f_Range, "Range", "AutoDestroy", 10.0f) + { HookManager::install(app::MoleMole_LCAbilityElement_ReduceModifierDurability, LCAbilityElement_ReduceModifierDurability_Hook); } - const FeatureGUIInfo& AutoDestroy::GetGUIInfo() const - { - static const FeatureGUIInfo info { "Auto Destroy Objects", "World", true }; - return info; - } + const FeatureGUIInfo& AutoDestroy::GetGUIInfo() const + { + static const FeatureGUIInfo info{ "Auto Destroy Objects", "World", true }; + return info; + } - void AutoDestroy::DrawMain() - { + void AutoDestroy::DrawMain() + { ImGui::TextColored(ImColor(255, 165, 0, 255), "Note. This feature is not fully tested detection-wise.\n" "Not recommended for main accounts or used with high values."); - + ConfigWidget("Enabled", f_Enabled, "Instantly destroys non-living objects within range."); ImGui::Indent(); ConfigWidget("Ores", f_DestroyOres, "Ores and variants, e.g. electro crystals, marrows, etc."); @@ -43,30 +44,32 @@ namespace cheat::feature ConfigWidget("Doodads", f_DestroyDoodads, "Barrels, boxes, vases, etc."); ImGui::SameLine(); ImGui::TextColored(ImColor(255, 165, 0, 255), "Extremely risky!"); + ConfigWidget("Plants", f_DestroyPlants, "Dandelion Seeds, Sakura Bloom, etc."); ImGui::Unindent(); ConfigWidget("Range (m)", f_Range, 0.1f, 1.0f, 15.0f); - } + } - bool AutoDestroy::NeedStatusDraw() const + bool AutoDestroy::NeedStatusDraw() const { - return f_Enabled; - } + return f_Enabled; + } - void AutoDestroy::DrawStatus() - { - ImGui::Text("Destroy [%.01fm%s%s%s%s]", + void AutoDestroy::DrawStatus() + { + ImGui::Text("Destroy [%.01fm%s%s%s%s%s]", f_Range.value(), - f_DestroyOres || f_DestroyShields || f_DestroyDoodads ? "|" : "", + f_DestroyOres || f_DestroyShields || f_DestroyDoodads || f_DestroyPlants ? "|" : "", f_DestroyOres ? "O" : "", f_DestroyShields ? "S" : "", - f_DestroyDoodads ? "D" : ""); - } + f_DestroyDoodads ? "D" : "", + f_DestroyPlants ? "P" : ""); + } - AutoDestroy& AutoDestroy::GetInstance() - { - static AutoDestroy instance; - return instance; - } + AutoDestroy& AutoDestroy::GetInstance() + { + static AutoDestroy instance; + return instance; + } // Thanks to @RyujinZX // Every ore has ability element component @@ -79,17 +82,17 @@ namespace cheat::feature auto& manager = game::EntityManager::instance(); auto& autoDestroy = AutoDestroy::GetInstance(); auto entity = __this->fields._._._entity; - if (autoDestroy.f_Enabled && + if (autoDestroy.f_Enabled && autoDestroy.f_Range > manager.avatar()->distance(entity) && ( - (autoDestroy.f_DestroyOres && game::filters::combined::Ores.IsValid(manager.entity(entity))) || - (autoDestroy.f_DestroyDoodads && game::filters::combined::Doodads.IsValid(manager.entity(entity))) || + (autoDestroy.f_DestroyOres && game::filters::combined::Ores.IsValid(manager.entity(entity))) || + (autoDestroy.f_DestroyDoodads && (game::filters::combined::Doodads.IsValid(manager.entity(entity)) || game::filters::chest::SBramble.IsValid(manager.entity(entity)))) || (autoDestroy.f_DestroyShields && !game::filters::combined::MonsterBosses.IsValid(manager.entity(entity)) && ( - game::filters::combined::MonsterShielded.IsValid(manager.entity(entity)) || // For shields attached to monsters, e.g. abyss mage shields. - game::filters::combined::MonsterEquips.IsValid(manager.entity(entity)) // For shields/weapons equipped by monsters, e.g. rock shield. - )) + game::filters::combined::MonsterShielded.IsValid(manager.entity(entity)) || // For shields attached to monsters, e.g. abyss mage shields. + game::filters::combined::MonsterEquips.IsValid(manager.entity(entity)))) || // For shields/weapons equipped by monsters, e.g. rock shield. + (autoDestroy.f_DestroyPlants && game::filters::combined::PlantDestroy.IsValid(manager.entity(entity))) // For plants e.g dandelion seeds. + ) ) - ) { // This value always above any ore durability reduceDurability = 1000; diff --git a/cheat-library/src/user/cheat/world/AutoDestroy.h b/cheat-library/src/user/cheat/world/AutoDestroy.h index 14e0985..d4c47a0 100644 --- a/cheat-library/src/user/cheat/world/AutoDestroy.h +++ b/cheat-library/src/user/cheat/world/AutoDestroy.h @@ -12,6 +12,7 @@ namespace cheat::feature config::Field> f_DestroyOres; config::Field> f_DestroyShields; config::Field> f_DestroyDoodads; + config::Field> f_DestroyPlants; config::Field f_Range; static AutoDestroy& GetInstance(); diff --git a/cheat-library/src/user/cheat/world/CustomWeather.cpp b/cheat-library/src/user/cheat/world/CustomWeather.cpp new file mode 100644 index 0000000..960a873 --- /dev/null +++ b/cheat-library/src/user/cheat/world/CustomWeather.cpp @@ -0,0 +1,114 @@ +#include "pch-il2cpp.h" +#include "CustomWeather.h" +#include +#include +#include +#include +#include + +namespace cheat::feature +{ + const char* WeatherType[]{ "ClearSky", "Cloudy", "Foggy", "Storm", "RainHeavy", "FountainRain", "SnowLight", "EastCoast" }; + std::string CustomWeather::GetWeather() { + switch (current_weather) + { + case 0: + return "Data/Environment/Weather/BigWorld/Weather_ClearSky"; + + case 1: + return "Data/Environment/Weather/BigWorld/Weather_Cloudy"; + + case 2: + return "Data/Environment/Weather/BigWorld/Weather_Foggy"; + + case 3: + return "Data/Environment/Weather/BigWorld/Weather_Storm"; + + case 4: + return "Data/Environment/Weather/BigWorld/Weather_Dq_Tabeisha_Rain_Heavy"; + + case 5: + return "Data/Environment/Weather/BigWorld/Weather_LY_Fountain_Rain"; + + case 6: + return "Data/Environment/Weather/BigWorld/Weather_Snowmountain_Snow_Light"; + + case 7: + return "Data/Environment/Weather/BigWorld/Weather_Snowmountain_EastCoast"; + + default: + return "Data/Environment/Weather/BigWorld/Weather_ClearSky"; + } + } + + CustomWeather::CustomWeather() : Feature(), + NF(f_Enabled, "Custom Weather", "World", false), + NF(f_Lightning, "Lightning", "World", false), + toBeUpdate(), nextUpdate(0) + { + events::GameUpdateEvent += MY_METHOD_HANDLER(CustomWeather::OnGameUpdate); + } + + const FeatureGUIInfo& CustomWeather::GetGUIInfo() const + { + static const FeatureGUIInfo info{ "CustomWeather", "Visuals", true }; + return info; + } + + void CustomWeather::DrawMain() + { + ConfigWidget(f_Enabled, "Custom Weather."); + if (f_Enabled) { + ImGui::Combo(("Weather Type"), ¤t_weather, WeatherType, ARRAYSIZE(WeatherType)); + } + ConfigWidget(f_Lightning, "Lightning target enemy, works with RainHeavy weather."); + } + + bool CustomWeather::NeedStatusDraw() const + { + return f_Enabled; + } + + void CustomWeather::DrawStatus() + { + ImGui::Text("Custom Weather"); + if (f_Lightning) + ImGui::Text("Lightning"); + } + + CustomWeather& CustomWeather::GetInstance() + { + static CustomWeather instance; + return instance; + } + + void CustomWeather::OnGameUpdate() + { + if (!f_Enabled) + return; + + auto currentTime = util::GetCurrentTimeMillisec(); + if (currentTime < nextUpdate) + return; + + auto Enviro = app::EnviroSky_get_Instance(nullptr); + if (Enviro != nullptr) { + app::EnviroSky_ChangeWeather(Enviro, string_to_il2cppi(GetWeather()), 1, 1, nullptr); + + if (f_Lightning && current_weather == 4) { + auto& manager = game::EntityManager::instance(); + + for (auto& Monsters : manager.entities(game::filters::combined::Monsters)) { + if (manager.avatar()->distance(Monsters) >= 30) + continue; + + for (auto& entity : manager.entities(game::filters::combined::Lightning)) { + entity->setRelativePosition(Monsters->relativePosition()); + } + } + } + } + + nextUpdate = currentTime + (int)f_DelayUpdate; + } +} \ No newline at end of file diff --git a/cheat-library/src/user/cheat/world/CustomWeather.h b/cheat-library/src/user/cheat/world/CustomWeather.h new file mode 100644 index 0000000..738b38a --- /dev/null +++ b/cheat-library/src/user/cheat/world/CustomWeather.h @@ -0,0 +1,28 @@ +#pragma once +#include +#include +#include + +namespace cheat::feature +{ + class CustomWeather : public Feature + { + public: + config::Field> f_Enabled; + config::Field> f_Lightning; + + static CustomWeather& GetInstance(); + const FeatureGUIInfo& GetGUIInfo() const override; + void DrawMain() override; + bool NeedStatusDraw() const override; + void DrawStatus() override; + private: + int current_weather; + std::string GetWeather(); + SafeQueue toBeUpdate; + SafeValue nextUpdate; + int f_DelayUpdate = 1; + void OnGameUpdate(); + CustomWeather(); + }; +} \ No newline at end of file diff --git a/cheat-library/src/user/cheat/world/DialogSkip.cpp b/cheat-library/src/user/cheat/world/DialogSkip.cpp index 0d4814a..4e937a3 100644 --- a/cheat-library/src/user/cheat/world/DialogSkip.cpp +++ b/cheat-library/src/user/cheat/world/DialogSkip.cpp @@ -85,6 +85,8 @@ namespace cheat::feature if (f_FastDialog) app::Time_set_timeScale(f_TimeSpeedup, nullptr); + else + app::Time_set_timeScale(1.0f, nullptr); bool isImportant = false; if (f_ExcludeImportant) diff --git a/cheat-library/src/user/cheat/world/FreezeEnemies.cpp b/cheat-library/src/user/cheat/world/FreezeEnemies.cpp new file mode 100644 index 0000000..183b4d1 --- /dev/null +++ b/cheat-library/src/user/cheat/world/FreezeEnemies.cpp @@ -0,0 +1,79 @@ +#include "pch-il2cpp.h" +#include "FreezeEnemies.h" + +#include + +#include +#include +#include + +namespace cheat::feature +{ + + FreezeEnemies::FreezeEnemies() : Feature(), + NF(f_Enabled, "Freeze Enemies", "FreezeEnemies", false) + { + events::GameUpdateEvent += MY_METHOD_HANDLER(FreezeEnemies::OnGameUpdate); + } + + const FeatureGUIInfo& FreezeEnemies::GetGUIInfo() const + { + static const FeatureGUIInfo info{ "", "World", false }; + return info; + } + + void FreezeEnemies::DrawMain() + { + ConfigWidget(f_Enabled, "Freezes all enemies' animation speed."); + } + + bool FreezeEnemies::NeedStatusDraw() const + { + return f_Enabled; + } + + void FreezeEnemies::DrawStatus() + { + ImGui::Text("Freeze Enemies"); + } + + FreezeEnemies& FreezeEnemies::GetInstance() + { + static FreezeEnemies instance; + return instance; + } + + // Taiga#5555: There's probably be a better way of implementing this. But for now, this is just what I came up with. + void FreezeEnemies::OnGameUpdate() + { + auto& manager = game::EntityManager::instance(); + static bool change = false; + + for (const auto& monster : manager.entities(game::filters::combined::Monsters)) + { + auto animator = monster->animator(); + auto rigidBody = monster->rigidbody(); + if (animator == nullptr && rigidBody == nullptr) + return; + + if (f_Enabled) + { + //auto constraints = app::Rigidbody_get_constraints(rigidBody, nullptr); + //LOG_DEBUG("%s", magic_enum::enum_name(constraints).data()); + app::Rigidbody_set_constraints(rigidBody, app::RigidbodyConstraints__Enum::FreezeAll, nullptr); + app::Animator_set_speed(animator, 0.f, nullptr); + change = false; + } + else + { + app::Rigidbody_set_constraints(rigidBody, app::RigidbodyConstraints__Enum::FreezeRotation, nullptr); + if (!change) + { + app::Animator_set_speed(animator, 1.f, nullptr); + change = true; + } + } + } + } +} + diff --git a/cheat-library/src/user/cheat/visuals/EnablePeaking.h b/cheat-library/src/user/cheat/world/FreezeEnemies.h similarity index 68% rename from cheat-library/src/user/cheat/visuals/EnablePeaking.h rename to cheat-library/src/user/cheat/world/FreezeEnemies.h index 62604db..91741c4 100644 --- a/cheat-library/src/user/cheat/visuals/EnablePeaking.h +++ b/cheat-library/src/user/cheat/world/FreezeEnemies.h @@ -2,24 +2,26 @@ #include #include -namespace cheat::feature +namespace cheat::feature { - class EnablePeaking : public Feature - { + class FreezeEnemies : public Feature + { public: config::Field> f_Enabled; - static EnablePeaking& GetInstance(); + static FreezeEnemies& GetInstance(); + void OnGameUpdate(); + const FeatureGUIInfo& GetGUIInfo() const override; void DrawMain() override; virtual bool NeedStatusDraw() const override; void DrawStatus() override; - + private: - EnablePeaking(); + FreezeEnemies(); }; } diff --git a/cheat-library/src/user/cheat/world/VacuumLoot.cpp b/cheat-library/src/user/cheat/world/VacuumLoot.cpp index 851bc39..66d8bc6 100644 --- a/cheat-library/src/user/cheat/world/VacuumLoot.cpp +++ b/cheat-library/src/user/cheat/world/VacuumLoot.cpp @@ -9,10 +9,11 @@ namespace cheat::feature { VacuumLoot::VacuumLoot() : Feature(), - NF(f_Enabled, "Vacuum Loot", "VacuumLoot", false), + NF(f_Enabled, "Vacuum Loot", "VacuumLoot", false), NF(f_DelayTime, "Delay time (in ms)", "VacuumLoot", 1000), - NF(f_Distance, "Distance", "VacuumLoot", 1.5f), - NF(f_Radius, "Radius", "VacuumLoot", 20.0f), + NF(f_Distance, "Distance", "VacuumLoot", 1.5f), + NF(f_MobDropRadius, "Mob Drop Radius", "VacuumLoot", 20.0f), + NF(f_Radius, "Radius", "VacuumLoot", 20.0f), nextTime(0) { InstallFilters(); @@ -21,20 +22,21 @@ namespace cheat::feature const FeatureGUIInfo& VacuumLoot::GetGUIInfo() const { - static const FeatureGUIInfo info{ "", "World", true }; + static const FeatureGUIInfo info{ "Vacuum Loot", "World", true }; return info; } void VacuumLoot::DrawMain() { - if (ImGui::BeginGroupPanel("Vacuum Loot", false)) - { + ConfigWidget("Enabled", f_Enabled, "Vacuum Loot drops"); ImGui::SameLine(); ImGui::SetNextItemWidth(100.0f); ConfigWidget("Delay Time (ms)", f_DelayTime, 1, 0, 1000, "Delay (in ms) between loot vacuum."); - ConfigWidget("Radius (m)", f_Radius, 0.1f, 5.0f, 100.0f, "Radius of loot vacuum."); + ConfigWidget("Radius (m)", f_Radius, 0.1f, 5.0f, 100.0f, "Radius of common loot vacuum."); + ConfigWidget("Mob Drop Radius (m)", f_MobDropRadius, 0.1f, 5.0f, 100.0f, "Radius of mob drop vacuum.\n" + "(Item Drops and Equipments)"); ConfigWidget("Distance (m)", f_Distance, 0.1f, 1.0f, 10.0f, "Distance between the player and the loot.\n" "Values under 1.5 may be too intruding."); - if (ImGui::TreeNode(this, "Loot Types")) + if (ImGui::TreeNode("Loot Types")) { for (auto& [section, filters] : m_Sections) { @@ -44,8 +46,6 @@ namespace cheat::feature } ImGui::TreePop(); } - } - ImGui::EndGroupPanel(); } bool VacuumLoot::NeedStatusDraw() const @@ -55,7 +55,12 @@ namespace cheat::feature void VacuumLoot::DrawStatus() { - ImGui::Text("VacuumLoot"); + ImGui::Text("VacuumLoot\n[%dms|%.01fm|%.01fm|%.01fm]", + f_DelayTime.value(), + f_Radius.value(), + f_MobDropRadius.value(), + f_Distance.value() + ); } VacuumLoot& VacuumLoot::GetInstance() @@ -68,18 +73,22 @@ namespace cheat::feature { // Go through all sections. For each section, go through all filters. // If a filter matches the given entity and that filter is enabled, return true. + bool entityValid = std::any_of(m_Sections.begin(), m_Sections.end(), [entity](std::pair const& section) { return std::any_of(section.second.begin(), section.second.end(), [entity](const FilterInfo& filterInfo) { return filterInfo.second->IsValid(entity) && filterInfo.first; }); }); - if (!entityValid)return false; + if (!entityValid) return false; + + bool isMobDrop = std::any_of(m_MobDropFilter.begin(), m_MobDropFilter.end(), + [entity](const game::IEntityFilter* filter) { return filter->IsValid(entity); }); auto& manager = game::EntityManager::instance(); auto distance = manager.avatar()->distance(entity); - return distance <= f_Radius; + return distance <= (isMobDrop ? f_MobDropRadius : f_Radius); } void VacuumLoot::OnGameUpdate() @@ -93,7 +102,6 @@ namespace cheat::feature auto& manager = game::EntityManager::instance(); auto avatarEntity = manager.avatar(); - for (const auto& entity : manager.entities()) { if (!IsEntityForVac(entity)) @@ -120,13 +128,13 @@ namespace cheat::feature if (ImGui::BeginTable(section.c_str(), columns == 0 ? 1 : columns )) { int i = 0; for (std::pair, game::IEntityFilter*> filter : filters) { - + if (i % (columns == 0 ? 1 : columns) == 0) { ImGui::TableNextRow(); ImGui::TableSetColumnIndex(0); } - else + else ImGui::TableNextColumn(); ImGui::PushID(&filter); @@ -147,6 +155,7 @@ namespace cheat::feature info.first.FireChanged(); } } + } void VacuumLoot::AddFilter(const std::string& section, const std::string& name, game::IEntityFilter* filter) @@ -162,25 +171,15 @@ namespace cheat::feature #define ADD_FILTER_FIELD(section, name) AddFilter(util::MakeCapital(#section), util::SplitWords(#name), &game::filters::##section##::##name##) void VacuumLoot::InstallFilters() { - // Add more in the future - ADD_FILTER_FIELD(featured, ItemDrops); - // ADD_FILTER_FIELD(mineral, AmethystLump); - // ADD_FILTER_FIELD(mineral, ArchaicStone); - // ADD_FILTER_FIELD(mineral, CorLapis); - // ADD_FILTER_FIELD(mineral, CrystalChunk); - // ADD_FILTER_FIELD(mineral, CrystalMarrow); - // ADD_FILTER_FIELD(mineral, ElectroCrystal); - // ADD_FILTER_FIELD(mineral, IronChunk); - // ADD_FILTER_FIELD(mineral, NoctilucousJade); - // ADD_FILTER_FIELD(mineral, MagicalCrystalChunk); - // ADD_FILTER_FIELD(mineral, ScarletQuartz); - // ADD_FILTER_FIELD(mineral, Starsilver); - // ADD_FILTER_FIELD(mineral, WhiteIronChunk); - // ADD_FILTER_FIELD(mineral, DunlinsTooth); + ADD_FILTER_FIELD(equipment, Artifacts); + ADD_FILTER_FIELD(equipment, Bow); + ADD_FILTER_FIELD(equipment, Catalyst); + ADD_FILTER_FIELD(equipment, Claymore); + ADD_FILTER_FIELD(equipment, Sword); + ADD_FILTER_FIELD(equipment, Pole); - // Ores that drops as a loot when destroyed ADD_FILTER_FIELD(mineral, AmethystLumpDrop); ADD_FILTER_FIELD(mineral, CrystalChunkDrop); ADD_FILTER_FIELD(mineral, ElectroCrystalDrop); @@ -193,9 +192,9 @@ namespace cheat::feature ADD_FILTER_FIELD(plant, Apple); ADD_FILTER_FIELD(plant, Cabbage); - ADD_FILTER_FIELD(plant, Carrot); + ADD_FILTER_FIELD(plant, CarrotDrop); ADD_FILTER_FIELD(plant, Potato); - ADD_FILTER_FIELD(plant, Radish); + ADD_FILTER_FIELD(plant, RadishDrop); ADD_FILTER_FIELD(plant, Sunsettia); ADD_FILTER_FIELD(plant, Wheat); @@ -204,13 +203,7 @@ namespace cheat::feature ADD_FILTER_FIELD(living, Crab); ADD_FILTER_FIELD(living, Eel); ADD_FILTER_FIELD(living, LizardTail); - - ADD_FILTER_FIELD(equipment, Artifacts); - ADD_FILTER_FIELD(equipment, Bow); - ADD_FILTER_FIELD(equipment, Catalyst); - ADD_FILTER_FIELD(equipment, Claymore); - ADD_FILTER_FIELD(equipment, Sword); - ADD_FILTER_FIELD(equipment, Pole); + ADD_FILTER_FIELD(living, Fish); } #undef ADD_FILTER_FIELD } diff --git a/cheat-library/src/user/cheat/world/VacuumLoot.h b/cheat-library/src/user/cheat/world/VacuumLoot.h index 007d4bb..8f56091 100644 --- a/cheat-library/src/user/cheat/world/VacuumLoot.h +++ b/cheat-library/src/user/cheat/world/VacuumLoot.h @@ -15,6 +15,7 @@ namespace cheat::feature config::Field> f_Enabled; config::Field f_Distance; config::Field f_Radius; + config::Field f_MobDropRadius; config::Field f_DelayTime; static VacuumLoot& GetInstance(); @@ -35,6 +36,16 @@ namespace cheat::feature Sections m_Sections; SafeValue nextTime; + const std::vector m_MobDropFilter = { + & game::filters::featured::ItemDrops, + & game::filters::equipment::Artifacts, + & game::filters::equipment::Bow, + & game::filters::equipment::Catalyst, + & game::filters::equipment::Claymore, + & game::filters::equipment::Pole, + & game::filters::equipment::Sword + }; + VacuumLoot(); void DrawSection(const std::string& section, const Filters& filters); void InstallFilters(); diff --git a/cheat-library/src/user/main.cpp b/cheat-library/src/user/main.cpp index 755daba..9afda85 100644 --- a/cheat-library/src/user/main.cpp +++ b/cheat-library/src/user/main.cpp @@ -14,16 +14,16 @@ void Run(HMODULE* phModule) { ResourceLoader::SetModuleHandle(*phModule); + util::SetCurrentPath(util::GetModulePath(*phModule)); // Init config - std::string configPath = (std::filesystem::current_path() / "cfg.json").string(); - config::Initialize(configPath); + config::Initialize((util::GetCurrentPath() / "cfg.json").string()); // Init logger auto& settings = cheat::feature::Settings::GetInstance(); if (settings.f_FileLogging) { - Logger::PrepareFileLogging((std::filesystem::current_path() / "logs").string()); + Logger::PrepareFileLogging((util::GetCurrentPath() / "logs").string()); Logger::SetLevel(Logger::Level::Trace, Logger::LoggerType::FileLogger); } @@ -55,5 +55,5 @@ void Run(HMODULE* phModule) cheat::Init(); - LOG_DEBUG("Config path is at %s", configPath.c_str()); + LOG_DEBUG("Config path is at %s", (util::GetCurrentPath() / "cfg.json").string().c_str()); } \ No newline at end of file diff --git a/cheat-library/vendor/protobuf b/cheat-library/vendor/protobuf deleted file mode 160000 index 6f99f12..0000000 --- a/cheat-library/vendor/protobuf +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6f99f12a6b3e2a38f444d9d052eb29822f885913