diff --git a/README.md b/README.md
index eb7481e..09748d8 100644
--- a/README.md
+++ b/README.md
@@ -58,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
@@ -66,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
@@ -92,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
@@ -135,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-library/cheat-library.vcxproj b/cheat-library/cheat-library.vcxproj
index d84be75..af6ba65 100644
--- a/cheat-library/cheat-library.vcxproj
+++ b/cheat-library/cheat-library.vcxproj
@@ -24,6 +24,7 @@
+
false
@@ -34,7 +35,7 @@
-
+
@@ -95,6 +96,7 @@
+
@@ -114,6 +116,7 @@
+
false
@@ -124,7 +127,7 @@
-
+
@@ -182,6 +185,7 @@
+
diff --git a/cheat-library/cheat-library.vcxproj.filters b/cheat-library/cheat-library.vcxproj.filters
index 494df5e..7392f94 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,12 @@
Header Files
+
+ Header Files
+
+
+ Header Files
+
@@ -417,7 +423,7 @@
Source Files
-
+
Source Files
@@ -450,6 +456,12 @@
Source Files
+
+ Source Files
+
+
+ Source Files
+
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/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/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/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/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/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/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/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/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/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/res.rc b/cheat-library/res/res.rc
index 5de49e3..3b9e066 100644
--- a/cheat-library/res/res.rc
+++ b/cheat-library/res/res.rc
@@ -768,6 +768,16 @@ HDYUMEMIRUWOOD PNG "iconsHD\\YumemiruWood.png"
HDZAYTUNPEACH PNG "iconsHD\\ZaytunPeach.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"
@@ -1470,6 +1480,15 @@ 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..f9ceaba 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,8 @@ 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(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 4988724..5fb7cd1 100644
--- a/cheat-library/src/appdata/il2cpp-types.h
+++ b/cheat-library/src/appdata/il2cpp-types.h
@@ -11975,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..5093d7f 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,7 +52,7 @@
#include
#include
#include
-#include
+#include
#include
#include
@@ -91,6 +93,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 +110,8 @@ namespace cheat
FEAT_INST(AutoFish),
FEAT_INST(AutoCook),
+ FEAT_INST(CustomWeather),
+
FEAT_INST(NoFog),
FEAT_INST(FPSUnlock),
FEAT_INST(CameraZoom),
@@ -115,7 +120,7 @@ namespace cheat
FEAT_INST(PaimonFollow),
FEAT_INST(HideUI),
FEAT_INST(Browser),
- FEAT_INST(EnablePeaking),
+ FEAT_INST(EnablePeeking),
FEAT_INST(TextureChanger),
FEAT_INST(FreeCamera)
diff --git a/cheat-library/src/user/cheat/esp/ESP.cpp b/cheat-library/src/user/cheat/esp/ESP.cpp
index 7edd9f5..98a8d30 100644
--- a/cheat-library/src/user/cheat/esp/ESP.cpp
+++ b/cheat-library/src/user/cheat/esp/ESP.cpp
@@ -822,6 +822,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/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 8f9523a..0827961 100644
--- a/cheat-library/src/user/cheat/game/filters.cpp
+++ b/cheat-library/src/user/cheat/game/filters.cpp
@@ -221,7 +221,8 @@ namespace cheat::game::filters
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 Spincrocodile = { EntityType__Enum_1::Monster, "_Gator" };
+ SimpleFilter SentryTurrets = { EntityType__Enum_1::Field, "SentryTurrets_" };
}
namespace plant
@@ -313,6 +314,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
@@ -523,5 +530,7 @@ namespace cheat::game::filters
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 39f6949..8a9f2a2 100644
--- a/cheat-library/src/user/cheat/game/filters.h
+++ b/cheat-library/src/user/cheat/game/filters.h
@@ -220,7 +220,8 @@ namespace cheat::game::filters
extern SimpleFilter Beisht;
extern SimpleFilter RishbolandTiger;
extern SimpleFilter ShaggySumpterBeast;
- extern SimpleFilter Spincrocodile;
+ extern SimpleFilter Spincrocodile;
+ extern SimpleFilter SentryTurrets;
}
namespace plant
@@ -284,7 +285,6 @@ namespace cheat::game::filters
extern SimpleFilter BakeDanuki;
extern SimpleFilter BloattyFloatty;
extern WhitelistFilter CubeDevices;
-
extern SimpleFilter EightStoneTablets;
extern SimpleFilter ElectricConduction;
extern SimpleFilter RelayStone;
@@ -313,6 +313,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
@@ -333,5 +338,6 @@ namespace cheat::game::filters
extern SimpleFilter MonsterEquips;
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 83c1ba8..0c6a973 100644
--- a/cheat-library/src/user/cheat/imap/InteractiveMap.cpp
+++ b/cheat-library/src/user/cheat/imap/InteractiveMap.cpp
@@ -1366,6 +1366,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 eec629a..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
@@ -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 6982c45..9a97c26 100644
--- a/cheat-library/src/user/cheat/player/NoClip.cpp
+++ b/cheat-library/src/user/cheat/player/NoClip.cpp
@@ -139,8 +139,12 @@ 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);
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/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/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..a9d8bed
--- /dev/null
+++ b/cheat-library/src/user/cheat/world/FreezeEnemies.cpp
@@ -0,0 +1,73 @@
+#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();
+
+ 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);
+ }
+ else
+ {
+ app::Rigidbody_set_constraints(rigidBody, app::RigidbodyConstraints__Enum::FreezeRotation, nullptr);
+ app::Animator_set_speed(animator, 1.f, nullptr);
+ }
+ }
+ }
+}
+
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();
};
}