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