diff --git a/changelog.md b/changelog.md index 94c6d53..219b4f5 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,8 @@ +# 1.6.6 + +- Changed Safe Mode to show the endscreen instead of kicking out of the level +- Added **Editor Extension** + # 1.6.5 - Rewrote old bad code to help improve code readibility diff --git a/mod.json b/mod.json index 84a8987..77e48b8 100644 --- a/mod.json +++ b/mod.json @@ -1,6 +1,6 @@ { "geode": "3.7.1", - "version": "v1.6.5", + "version": "v1.6.6", "gd": { "win": "2.206", "android": "2.206", diff --git a/src/Client/ClientSetup.h b/src/Client/ClientSetup.h index 4a818c8..15477b4 100644 --- a/src/Client/ClientSetup.h +++ b/src/Client/ClientSetup.h @@ -269,7 +269,7 @@ class ClientUtils creator->modules.push_back(new Module("Editor Wave Trail", "editor-wave-trail", "Shows the wave trail in the editor")); creator->modules.push_back(new Module("Smooth Editor Trail", "smooth-editor-trail", "Updates the editor trail at your screen refresh rate instead of 30 fps")); - //creator->modules.push_back(new Module("Editor Extension", "editor-extension", "Editor Extension Help :)")); + creator->modules.push_back(new Module("Editor Extension", "editor-extension", "Increases the length of the editor by 17895 times :3")); //auto misc = new Module("Misc Bypasses", "misc-bypass", "Random Client Side bypasses / unlocks to random editor limits"); //misc->options.push_back(new Module("Zoom Limit", "zoom-limit", "Bypass the editor zoom limit", true)); @@ -603,6 +603,7 @@ class ClientUtils #ifdef GEODE_IS_ARM_MAC Client::GetModule("tps-bypass")->setIncompatible("This mod has not yet been ported to ARM Mac"); Client::GetModule("editor-wave-trail")->setIncompatible("This mod has not yet been ported to ARM Mac"); + Client::GetModule("editor-extension")->setIncompatible("This mod has not yet been ported to ARM Mac"); #endif #ifdef GEODE_IS_MACOS diff --git a/src/Hacks/Patches/EditorExtension.cpp b/src/Hacks/Patches/EditorExtension.cpp index 9c15381..12610a6 100644 --- a/src/Hacks/Patches/EditorExtension.cpp +++ b/src/Hacks/Patches/EditorExtension.cpp @@ -1,4 +1,4 @@ -/*#include +#include #include #include "../../Client/Client.h" @@ -6,15 +6,35 @@ using namespace geode::prelude; $execute { + // first address is found in CCPoint * EditorUI::getLimitedPosition(EditorUI *this,CCPoi nt *__return,CCPoint param_3) + // second address is found in void EditorUI::constrainGameLayerPosition(EditorUI *this,fl oat param_2,float param_3) + std::vector patches = {}; - //#ifdef GEODE_IS_WINDOWS - //patches.push_back(createPatchSafe(reinterpret_cast(geode::base::get() + 0x5ed33c), { 0x1, 0x0, 0x0, 0x0 })); - //#endif + #ifdef GEODE_IS_WINDOWS + patches.push_back(createPatchSafe(reinterpret_cast(geode::base::get() + 0x5ed33c), { 0xFF, 0xFF, 0xFF, 0xFF })); + patches.push_back(createPatchSafe(reinterpret_cast(geode::base::get() + 0x5ed340), { 0xFF, 0xFF, 0xFF, 0xFF })); + #endif + + #ifdef GEODE_IS_ANDROID32 + patches.push_back(createPatchSafe(reinterpret_cast(geode::base::get() + (0x37e678 - 0x10000)), { 0xFF, 0xFF, 0xFF, 0xFF })); + patches.push_back(createPatchSafe(reinterpret_cast(geode::base::get() + (0x37ea1c - 0x10000)), { 0xFF, 0xFF, 0xFF, 0xFF })); + #endif + + #ifdef GEODE_IS_ANDROID64 + patches.push_back(createPatchSafe(reinterpret_cast(geode::base::get() + (0x76cdb4 - 0x100000)), { 0xFF, 0xFF, 0xFF, 0xFF })); + patches.push_back(createPatchSafe(reinterpret_cast(geode::base::get() + (0x76d2fc - 0x100000)), { 0xFF, 0xFF, 0xFF, 0xFF })); + #endif + + #ifdef GEODE_IS_INTEL_MAC + patches.push_back(createPatchSafe(reinterpret_cast(geode::base::get() + 0x822770), { 0xFF, 0xFF, 0xFF, 0xFF })); + patches.push_back(createPatchSafe(reinterpret_cast(geode::base::get() + 0x82258c), { 0xFF, 0xFF, 0xFF, 0xFF })); + #endif - //#ifdef GEODE_IS_ANDROID32 - //patches.push_back(createPatchSafe(reinterpret_cast(geode::base::get() + 0x5ed33c), { 0x1, 0x0, 0x0, 0x0 })); - //#endif + #ifdef GEODE_IS_ARM_MAC + //patches.push_back(createPatchSafe(reinterpret_cast(geode::base::get() + ), { 0xFF, 0xFF, 0xFF, 0xFF })); + //patches.push_back(createPatchSafe(reinterpret_cast(geode::base::get() + ), { 0xFF, 0xFF, 0xFF, 0xFF })); + #endif Loader::get()->queueInMainThread([patches]{ for (auto patch : patches) @@ -25,4 +45,4 @@ using namespace geode::prelude; }; //win: //0x5ed33c -//0x*/ \ No newline at end of file +//0x \ No newline at end of file diff --git a/src/Hacks/SafeMode/SafeMode.cpp b/src/Hacks/SafeMode/SafeMode.cpp index 5cb9465..30813b7 100644 --- a/src/Hacks/SafeMode/SafeMode.cpp +++ b/src/Hacks/SafeMode/SafeMode.cpp @@ -150,13 +150,15 @@ void SafePlayLayer::resetLevel() void SafePlayLayer::levelComplete() { auto kick = SafeMode::get()->shouldKickFromLevel(); + SafeMode::get()->safeEndScreen = kick; + auto v = m_isTestMode; if (kick) - { - return this->onQuit(); - } + m_isTestMode = true; PlayLayer::levelComplete(); + + m_isTestMode = v; } void SafePlayLayer::showNewBest(bool p0, int p1, int p2, bool p3, bool p4, bool p5) @@ -169,4 +171,23 @@ void SafeGJGameLevel::savePercentage(int p0, bool p1, int p2, int p3, bool p4) { if (!SafeMode::get()->shouldKickFromLevel()) GJGameLevel::savePercentage(p0, p1, p2, p3, p4); +} + +void SafeEndLevelLayer::customSetup() +{ + EndLevelLayer::customSetup(); + + if (SafeMode::get()->safeEndScreen) + { + if (auto area = getChildOfType