-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9941b65
commit 9bc9cad
Showing
22 changed files
with
696 additions
and
336 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
{ | ||
"geode": "2.0.0", | ||
"version": "v1.2.2", | ||
"version": "v1.3.0", | ||
"gd": { | ||
"win": "2.204", | ||
"android": "2.205" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
#include "../hacks.hpp" | ||
#include <Geode/Geode.hpp> | ||
using namespace geode::prelude; | ||
|
||
#include <Geode/modify/GameManager.hpp> | ||
#include <Geode/modify/CCTextInputNode.hpp> | ||
|
||
// Icon Bypass | ||
class $modify(GameManager) { | ||
bool isIconUnlocked(int _id, IconType _type) { | ||
if (!Hacks::isHackEnabled("Icon Bypass") || Hacks::isHackEnabled("Enable Patching")) return GameManager::isIconUnlocked(_id, _type); | ||
return true; | ||
} | ||
bool isColorUnlocked(int _id, UnlockType _type) { | ||
if (!Hacks::isHackEnabled("Icon Bypass") || Hacks::isHackEnabled("Enable Patching")) return GameManager::isColorUnlocked(_id, _type); | ||
return true; | ||
} | ||
}; | ||
|
||
// Text Length, Character Filter | ||
class $modify(CCTextInputNode) { | ||
void updateLabel(gd::string p0) { | ||
if (Hacks::isHackEnabled("Character Filter") && !Hacks::isHackEnabled("Enable Patching")) this->setAllowedChars("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,-!?:;)(/\\\"\'`*= +-_%[]<>|@&^#{}%$~"); | ||
if (Hacks::isHackEnabled("Text Length") && !Hacks::isHackEnabled("Enable Patching")) this->m_maxLabelLength = -1; | ||
CCTextInputNode::updateLabel(p0); | ||
} | ||
}; | ||
|
||
/* | ||
class $modify(GameStatsManager) { | ||
// Almost all bypass | ||
int getStat(char const* type) { // isnt this supposed to be int | ||
int ret = GameStatsManager::getStat(type); | ||
int typeInt = std::stoi(type); | ||
//std::cout << fmt::format("type = {}, ret = {}", type, ret) << std::endl; | ||
if (typeInt == 8 && Hacks::isHackEnabled("Main Levels") && !Hacks::isHackEnabled("Enable Patching")) { // main level | ||
return 30; | ||
} | ||
if (typeInt == 12 && Hacks::isHackEnabled("Guard Vault") && !Hacks::isHackEnabled("Enable Patching")) { // guard vault | ||
return 10; | ||
} | ||
if (typeInt == 13 && Hacks::isHackEnabled("Keymaster Vault") && !Hacks::isHackEnabled("Enable Patching")) { // keymaster vault | ||
return 100; | ||
} | ||
if (typeInt == 21 && Hacks::isHackEnabled("Treasure Room") && !Hacks::isHackEnabled("Enable Patching")) { // treasure room | ||
return 5; | ||
} | ||
if (typeInt == 14 && Hacks::isHackEnabled("Free Shop Items") && !Hacks::isHackEnabled("Enable Patching")) { // free shop items | ||
return 1000000; // lol what | ||
} | ||
if (typeInt == 6 && Hacks::isHackEnabled("Backup Stars Limit") && !Hacks::isHackEnabled("Enable Patching")) { // backup stars limit | ||
return 10; | ||
} | ||
return ret; | ||
} | ||
}; | ||
*/ | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
// Creator Hacks | ||
// These can include simple things like making the Editor experience better, or allowing users to copy levels that weren't copyable because they aren't uploaded from 2.2 and the creator chose to not allow copies. | ||
#include "../hacks.hpp" | ||
#include <Geode/Geode.hpp> | ||
using namespace geode::prelude; | ||
|
||
#include <Geode/modify/EditLevelLayer.hpp> | ||
#include <Geode/modify/LevelInfoLayer.hpp> | ||
|
||
class $modify(EditLevelLayer) { | ||
// Verify Hack, No (C) Mark | ||
void onShare(CCObject* sender) { | ||
if (!Hacks::isHackEnabled("Verify Hack") && !Hacks::isHackEnabled("No (C) Mark")) return EditLevelLayer::onShare(sender); | ||
if (Hacks::isHackEnabled("Verify Hack")) { | ||
auto isVerified = this->m_level->m_isVerified; | ||
this->m_level->m_isVerified = true; | ||
//this->m_level->m_isVerified = isVerified; | ||
} | ||
if (Hacks::isHackEnabled("No (C) Mark")) { | ||
auto isVerified = this->m_level->m_originalLevel; | ||
this->m_level->m_originalLevel = true; | ||
} | ||
EditLevelLayer::onShare(sender); | ||
} | ||
}; | ||
|
||
class $modify(LevelInfoLayer) { | ||
// Copy Hack | ||
bool init(GJGameLevel *p0, bool p1) { | ||
if (!LevelInfoLayer::init(p0, p1)) return false; | ||
if (Hacks::isHackEnabled("Copy Hack")) { | ||
auto gm = GameManager::sharedState(); | ||
if (gm->m_playerUserID == p0->m_userID) return true; | ||
if (m_cloneBtn == nullptr) return true; | ||
auto aCloneBtn = CCMenuItemSpriteExtra::create(CCSprite::createWithSpriteFrameName("GJ_duplicateBtn_001.png"), this, menu_selector(LevelInfoLayer::confirmClone)); | ||
aCloneBtn->setPosition(m_cloneBtn->getPosition()); | ||
m_cloneBtn->getParent()->addChild(aCloneBtn); | ||
m_cloneBtn->setVisible(false); | ||
} | ||
return true; | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
#include "../hacks.hpp" | ||
#include <Geode/Geode.hpp> | ||
using namespace geode::prelude; | ||
|
||
#include <Geode/modify/GameStatsManager.hpp> | ||
#include <Geode/modify/GameObject.hpp> | ||
#include <Geode/modify/GJGameLevel.hpp> | ||
#include <Geode/modify/CCTransitionFade.hpp> | ||
#include <Geode/modify/FMODAudioEngine.hpp> | ||
|
||
// Practice Music | ||
class $modify(GameStatsManager) { | ||
bool isItemUnlocked(UnlockType p0, int p1) { | ||
if (p0 != UnlockType::GJItem && p1 != 17) return GameStatsManager::isItemUnlocked(p0,p1); | ||
if (Hacks::isHackEnabled("Practice Music")) { | ||
return true; | ||
} else { | ||
return GameStatsManager::isItemUnlocked(p0,p1); | ||
} | ||
} | ||
}; | ||
|
||
// Layout Mode | ||
#ifndef GEODE_IS_ANDROID | ||
class $modify(GameObject) { | ||
void setVisible(bool v) { | ||
/*int aaa = *reinterpret_cast<int*>(reinterpret_cast<uintptr_t>(this) + 0x14E); // we do the funny because someone forgor pad for windows | ||
if (aaa > 1600000000) { | ||
//int targetValue = 44; | ||
GameObjectType targetValue = GameObjectType::Decoration; | ||
for (int offset = 0x0; ; offset += 0x1) { | ||
GameObjectType val = *reinterpret_cast<GameObjectType*>(reinterpret_cast<uintptr_t>(this) + offset); | ||
//int val = *reinterpret_cast<int*>(reinterpret_cast<uintptr_t>(this) + offset); | ||
//std::cout << "Offset: 0x" << std::hex << offset << std::dec << ", Value: " << val << std::endl; | ||
if (val == targetValue) { | ||
//std::cout << "Found target " << targetValue << " at offset 0x" << std::hex << offset << std::dec << std::endl; | ||
log::info(fmt::format("Found target at offset 0x{}", offset));; | ||
break; | ||
} | ||
} | ||
//}*/ | ||
// yes letes overwrite fields! | ||
// plesae commit add paddings for android64 and windows kthx | ||
if (!Hacks::isHackEnabled("Layout Mode")) return GameObject::setVisible(v); | ||
int objectID = -1; | ||
GameObjectType objectType; | ||
int objectTypeInt = -1; | ||
#ifdef GEODE_IS_WINDOWS | ||
objectID = *reinterpret_cast<int*>(reinterpret_cast<uintptr_t>(this) + 0x384); // absolutely cursed | ||
objectType = *reinterpret_cast<GameObjectType*>(reinterpret_cast<uintptr_t>(this) + 0x31c); | ||
#else | ||
objectID = this->m_objectID; | ||
objectType = this->m_objectType; | ||
#endif | ||
GameObject::setVisible(v); | ||
if (objectType == GameObjectType::Decoration && objectID != 44) { // 44 being practice mode checkpoint, because thats a "decoration" | ||
GameObject::setVisible(false); | ||
} else { | ||
GameObject::setVisible(v); | ||
} | ||
} | ||
/* | ||
void objectFromVector(gd::vector<gd::string> &p0, gd::vector<void *> &p1, GJBaseGameLayer *p2, bool p3) { | ||
return GameObject::objectFromVector(p0,p1,p2,p3); | ||
}*/ // someone got the wrong bindings! | ||
/* | ||
*/ | ||
}; | ||
#endif | ||
|
||
// Safe Mode (a just incase) | ||
class $modify(GJGameLevel) { | ||
void savePercentage(int p0, bool p1, int p2, int p3, bool p4) { | ||
if (!Hacks::isHackEnabled("Safe Mode") || Hacks::isHackEnabled("Enable Patching")) { | ||
GJGameLevel::savePercentage(p0, p1, p2, p3, p4); | ||
} | ||
} | ||
}; | ||
|
||
class $modify(CCTransitionFade) { | ||
// No Transition | ||
bool initWithDuration(float t, cocos2d::CCScene* scene, cocos2d::ccColor3B const& color) { | ||
if (!Hacks::isHackEnabled("No Transition") || Hacks::isHackEnabled("Enable Patching")) { | ||
return CCTransitionFade::initWithDuration(t, scene, color); | ||
} else { | ||
return CCTransitionFade::initWithDuration(0.0F, scene, color); | ||
} | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
#include "../hacks.hpp" | ||
#include <Geode/Geode.hpp> | ||
using namespace geode::prelude; | ||
|
||
#include <Geode/modify/PlayerObject.hpp> | ||
|
||
class $modify(PlayerObject) { | ||
#ifndef GEODE_IS_ANDROID // for whatever reason, fields arent found! | ||
// No Solids | ||
/* | ||
* + bool collidedWithObject(float, GameObject*, cocos2d::CCRect, bool) = win 0x2cc450; | ||
+ TodoReturn collidedWithObject(float, GameObject*) = win 0x2cc3d0; | ||
bool collidedWithObject(float p0, GameObject* obj, cocos2d::CCRect p2, bool p3) { // what is the point of not having p2, because this doesnt work without it | ||
if (Hacks::isHackEnabled("Enable Patching")) return PlayerObject::collidedWithObject(p0, obj, p2, p3); | ||
if (!Hacks::isHackEnabled("No Solids")) return PlayerObject::collidedWithObject(p0, obj, p2, p3); | ||
//return PlayerObject::collidedWithObject(p0, obj, p2, p3); | ||
return false; | ||
}*/ | ||
bool was_platformer; | ||
/*bool collidedWithObject(float fl, GameObject* obj, cocos2d::CCRect p0, bool p1) { | ||
return PlayerObject::collidedWithObject(fl, obj, p0, p1); | ||
}*/ | ||
// Freeze Player | ||
void update(float dt) { | ||
if (!m_fields->was_platformer) { | ||
m_fields->was_platformer = this->m_isPlatformer; | ||
} | ||
if (Hacks::isHackEnabled("Force Platformer Mode")) { | ||
togglePlatformerMode(true); | ||
} else { | ||
togglePlatformerMode(m_fields->was_platformer); | ||
} | ||
auto gravityHack = Hacks::getHack("Gravity Value"); | ||
if (Hacks::isHackEnabled("Change Gravity")) { // assume its enabled | ||
m_gravityMod = gravityHack->value.floatValue; | ||
} | ||
if (Hacks::isHackEnabled("Instant Complete")) return; | ||
if (Hacks::isHackEnabled("Enable Patching") || !Hacks::isHackEnabled("Freeze Player")) return PlayerObject::update(dt); | ||
} | ||
bool init(int p0, int p1, GJBaseGameLayer *p2, cocos2d::CCLayer *p3, bool p4) { | ||
if (!PlayerObject::init(p0,p1,p2,p3,p4)) return false; | ||
return true; | ||
} | ||
|
||
void playerDestroyed(bool p0) { | ||
m_fields->was_platformer = this->m_isPlatformer; | ||
PlayerObject::playerDestroyed(p0); | ||
} | ||
#endif | ||
void pushButton(PlayerButton p0) { | ||
if (!Hacks::isHackEnabled("Enable Patching") && Hacks::isHackEnabled("Jump Hack")) PlayerObject::boostPlayer(10.0F); // idk if i should make this customizable | ||
PlayerObject::pushButton(p0); | ||
} | ||
}; |
Oops, something went wrong.