Skip to content

Commit

Permalink
Full badget list, new colors & asuka
Browse files Browse the repository at this point in the history
  • Loading branch information
HAWGT committed May 25, 2023
1 parent 49890da commit 2bfa5d7
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 19 deletions.
3 changes: 3 additions & 0 deletions GGSTEnhancer/GGSTEnhancer/Badges.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#pragma once
//RED\Content\Shared\DataTable\Badges.uasset
int BADGES[] = {1000, 1001, 1002, 1003, 2010, 2021, 2031, 2041, 2052, 2062, 2072, 2083, 2093, 2103, 3009, 4001, 4002, 4003, 100009, 101009, 102009, 501000, 501001, 501002, 501003, 502019, 502029, 502039, 502049, 502059, 502069, 502079, 502089, 502099, 502109, 502119, 502129, 502139, 502149, 502159, 502169, 502179, 502189, 502199, 502209, 502219, 502229, 502239, 502249, 502259, 502269, 502279, 502289, 502299, 502309, 502319, 502329, 503009, 504000, 504001, 504002, 504003, 505001, 505002, 505003, 506011, 506012, 506013, 506021, 506022, 506023, 506031, 506032, 506033, 506041, 506042, 506043, 506051, 506052, 506053, 506061, 506062, 506063, 506071, 506072, 506073, 506081, 506082, 506083, 506091, 506092, 506093, 506101, 506102, 506103, 506111, 506112, 506113, 506121, 506122, 506123, 506131, 506132, 506133, 506141, 506142, 506143, 506151, 506152, 506153, 506161, 506162, 506163, 506171, 506172, 506173, 506181, 506182, 506183, 506191, 506192, 506193, 506201, 506202, 506203, 506211, 506212, 506213, 506221, 506222, 506223, 506231, 506232, 506233, 506241, 506242, 506243, 506251, 506252, 506253, 506261, 506262, 506263, 506271, 506272, 506273, 506281, 506282, 506283, 506291, 506292, 506293, 506301, 506302, 506303, 506311, 506312, 506313, 506321, 506322, 506323, 507001, 507002, 507003, 508001, 508002, 508003, 509001, 509002, 509003, 510001, 510002, 510003, 700019, 700029, 700039, 700049, 700059, 700069, 700079, 700089, 700099, 700109, 700119, 700129, 700139, 700149, 700159, 700169, 700179, 700189, 700199, 700209, 700219, 700229, 700239, 700249, 700259, 700269, 700279, 700289, 700299, 700309, 700319, 700329};
25 changes: 25 additions & 0 deletions GGSTEnhancer/GGSTEnhancer/Characters.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#pragma once
#define SOL 0
#define KY 1
#define MAY 2
#define AXL 3
#define CHIPP 4
#define POTEMPKIN 5
#define FAUST 6
#define MILLIA 7
#define ZATO 8
#define RAM 9
#define LEO 10
#define NAGO 11
#define GIOVANNA 12
#define ANJI 13
#define INO 14
#define GOLDLEWIS 15
#define JACKO 16
#define HC 17
#define BAIKEN 18
#define TESTAMENT 19
#define BRIDGET 20
#define SIN 21
#define BEDMAN 22
#define ASUKA 23
10 changes: 10 additions & 0 deletions GGSTEnhancer/GGSTEnhancer/Colors.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#pragma once
#define COLORMIN 0
#define COLORLIMIT 15
#define TESTCOLOR 23
#define BETACOLOR 27
#define ALTCOLOR 69
#define EXCOLOR 79
#define SPCOLOR 89
#define STORYCOLOR 98
#define COLORMAX 99
53 changes: 34 additions & 19 deletions GGSTEnhancer/GGSTEnhancer/Features.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
#include "Features.h"
#include "Helpers.h"
#include "Characters.h"
#include "Colors.h"
#include "Badges.h"

bool UnlockColorSelection()
{
Expand All @@ -15,9 +18,10 @@ bool UnlockColorSelection()
BYTE* MiniSelectionLimitIncrement = PatternScan("83 FA 4F 7E ? 89 B3 3C 04 00 00");
if (!MiniSelectionLimitIncrement) return false;

BYTE* Orig_IsSelectableCharaColorID = PatternScan("48 89 5C 24 08 48 89 74 24 10 55 57 41 54 41 56 41 57 48 8B EC 48 83 EC ? 33 DB");
BYTE* Orig_IsSelectableCharaColorID = PatternScan("48 89 5C 24 08 48 89 74 24 10 48 89 7C 24 20 55 41 54 41 55 41 56 41 57 48 8B EC 48 83 EC ? 45 33 ED 8B DA");
if (!Orig_IsSelectableCharaColorID) return false;


BYTE SelectionLimitIncrementPatch[] = { 0x83, 0x78, 0x0C, 0x62 }; //cmp dword ptr [rax+0Ch], 62h
Patch(SelectionLimitIncrementPatch, SelectionLimitIncrement, sizeof(SelectionLimitIncrementPatch));

Expand All @@ -41,11 +45,16 @@ bool UnlockColorSelection()

bool UncensorMuseum()
{
BYTE* MuseumFigureNSFWFlagSetter = PatternScan("0F B6 43 61 48 8B 5C 24 30");
if (!MuseumFigureNSFWFlagSetter) return false;
BYTE* MuseumFigureNSFWFlagSetterList = PatternScan("0F B6 43 61 48 8B 5C 24 30");
if (!MuseumFigureNSFWFlagSetterList) return false;

BYTE* MuseumFigureNSFWFlagSetterModal = PatternScan("0F B6 43 61 88 47 61 0F B6 43 68 88 47 68 0F B6 43 70 88 47 70 8B 43 74 89 47 74 8B 43 78 89 47 78 E8 ? ? ? ? 48 8B 83 90 00 00 00 48 89 87 90 00 00 00 48 8B 83 98 00 00 00 48 89 87 98 00 00 00 8B 83 A0 00 00 00 89 87 A0 00 00 00 8B 83 A4 00 00 00 89 87 A4 00 00 00 0F B6 83 A8 00 00 00 48 8B 5C 24 30 88 87 A8 00 00 00 48 8B C7 48 83 C4 ? 5F C3 CC CC CC CC CC 40 57");
if (!MuseumFigureNSFWFlagSetterModal) return false;

BYTE MuseumFigureNSFWFlagSetterPatch[] = { 0x30, 0xC0, 0x90, 0x90 }; //xor al, al (nop nop)
Patch(MuseumFigureNSFWFlagSetterPatch, MuseumFigureNSFWFlagSetter, sizeof(MuseumFigureNSFWFlagSetterPatch));

Patch(MuseumFigureNSFWFlagSetterPatch, MuseumFigureNSFWFlagSetterList, sizeof(MuseumFigureNSFWFlagSetterPatch));
Patch(MuseumFigureNSFWFlagSetterPatch, MuseumFigureNSFWFlagSetterModal, sizeof(MuseumFigureNSFWFlagSetterPatch));

return true;
}
Expand All @@ -72,14 +81,17 @@ bool UnlockAura()
BYTE* Orig_CheckRewardAura = PatternScan("48 89 5C 24 20 55 56 57 48 83 EC ? 48 8B D9 48 8D 4C 24 40");
if (!Orig_CheckRewardAura) return false;

//Find them with: 48 83 EC ? 8D 42 FF 45 8B D0
Orig_SetRewardAvatarAura = reinterpret_cast<SetRewardAvatarAura_t>(PatternScan("48 89 5C 24 10 57 48 83 EC ? 8B FA 48 8B D9 85 D2 0F 8E ? ? ? ? 48 8D 4C 24 40 48 89 74 24 30 E8 ? ? ? ? 48 8D 4C 24 40 E8 ? ? ? ? 8B F0 48 8D 4C 24 40 C1 E6 ? E8 ? ? ? ? 0B F0 48 8B 83 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 48 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 44 8B C7 48 8B 10 E8 ? ? ? ? 48 8B 83 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 48 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 44 8B C6 48 8B 10 E8 ? ? ? ? 48 8B 74 24 30 48 8B 5C 24 38 48 83 C4 ? 5F C3 48 8B 81 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 40 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 45 33 C0 48 8B 10 E8 ? ? ? ? 48 8B 83 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 40 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 45 33 C0 48 8B 10 E8 ? ? ? ? 48 8B 5C 24 38 48 83 C4 ? 5F C3 48 89 5C 24 10"));
if (!Orig_SetRewardAvatarAura) return false;
//Find them with: 48 83 EC ? 8D 42 FF 45 8B D0 (NetworkGiftManager::AddSaveDataParam)
//Case 2:
Orig_SetRewardAvatarAura = reinterpret_cast<SetRewardAvatarAura_t>(PatternScan("48 89 5C 24 10 57 48 83 EC ? 8B FA 48 8B D9 85 D2 0F 8E ? ? ? ? 48 8D 4C 24 40 48 89 74 24 30 E8 ? ? ? ? 48 8D 4C 24 40 E8 ? ? ? ? 8B F0 48 8D 4C 24 40 C1 E6 ? E8 ? ? ? ? 0B F0 48 8B 83 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 48 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 44 8B C7 48 8B 10 E8 ? ? ? ? 48 8B 83 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 48 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 44 8B C6 48 8B 10 E8 ? ? ? ? 48 8B 74 24 30 48 8B 5C 24 38 48 83 C4 ? 5F C3 48 8B 81 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 40 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 45 33 C0 48 8B 10 E8 ? ? ? ? 48 8B 83 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 40 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 45 33 C0 48 8B 10 E8 ? ? ? ? 48 8B 5C 24 38 48 83 C4 ? 5F C3 48 89 5C 24 08 44 89 44 24 18"));
if (!Orig_SetRewardAvatarAura) return false;;

Orig_SetRewardNameAura = reinterpret_cast<SetRewardNameAura_t>(PatternScan("48 89 5C 24 10 57 48 83 EC ? 8B FA 48 8B D9 85 D2 0F 8E ? ? ? ? 48 8D 4C 24 40 48 89 74 24 30 E8 ? ? ? ? 48 8D 4C 24 40 E8 ? ? ? ? 8B F0 48 8D 4C 24 40 C1 E6 ? E8 ? ? ? ? 0B F0 48 8B 83 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 48 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 44 8B C7 48 8B 10 E8 ? ? ? ? 48 8B 83 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 48 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 44 8B C6 48 8B 10 E8 ? ? ? ? 48 8B 74 24 30 48 8B 5C 24 38 48 83 C4 ? 5F C3 48 8B 81 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 40 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 45 33 C0 48 8B 10 E8 ? ? ? ? 48 8B 83 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 40 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 45 33 C0 48 8B 10 E8 ? ? ? ? 48 8B 5C 24 38 48 83 C4 ? 5F C3 48 89 5C 24 08"));
//Case 3:
Orig_SetRewardNameAura = reinterpret_cast<SetRewardNameAura_t>(PatternScan("48 89 5C 24 10 57 48 83 EC ? 8B FA 48 8B D9 85 D2 0F 8E ? ? ? ? 48 8D 4C 24 40 48 89 74 24 30 E8 ? ? ? ? 48 8D 4C 24 40 E8 ? ? ? ? 8B F0 48 8D 4C 24 40 C1 E6 ? E8 ? ? ? ? 0B F0 48 8B 83 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 48 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 44 8B C7 48 8B 10 E8 ? ? ? ? 48 8B 83 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 48 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 44 8B C6 48 8B 10 E8 ? ? ? ? 48 8B 74 24 30 48 8B 5C 24 38 48 83 C4 ? 5F C3 48 8B 81 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 40 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 45 33 C0 48 8B 10 E8 ? ? ? ? 48 8B 83 28 01 00 00 48 85 C0 74 ? 48 8B 15 ? ? ? ? 48 8D 4C 24 40 41 B8 ? ? ? ? E8 ? ? ? ? 48 8B 8B 28 01 00 00 45 33 C0 48 8B 10 E8 ? ? ? ? 48 8B 5C 24 38 48 83 C4 ? 5F C3 48 89 5C 24 08 4C 8B 91 28 04 00 00"));
if (!Orig_SetRewardNameAura) return false;

Orig_SetRewardBadge = reinterpret_cast<SetRewardBadge_t>(PatternScan("48 89 5C 24 10 55 56 41 54 41 56 41 57 48 83 EC"));
//Case 4:
Orig_SetRewardBadge = reinterpret_cast<SetRewardBadge_t>(PatternScan("48 89 5C 24 08 44 89 44 24 18 55 56 57 41 54 41 55 41 56 41 57 48 8B EC 48 83 EC ? 4C 8B E9"));
if (!Orig_SetRewardBadge) return false;

Detour64(Orig_CheckRewardAura, (BYTE*)hk_CheckRewardAura, 12);
Expand All @@ -91,15 +103,16 @@ char __fastcall hk_IsSelectableCharaColorID(unsigned int charaID, unsigned int c
{
if (bUnlockNonexistentColors)
{
return (colorID >= 0 && colorID < 99);
return (colorID >= COLORMIN && colorID < COLORMAX);
}
else {
return (colorID >= 0 && colorID < 12) || colorID == 89 || // Universal Colors
(charaID == 0 && colorID == 27) || // Color 28 for Sol
((charaID == 7 || charaID == 8 || charaID == 9 || charaID == 10) && colorID == 23) || // Test Color for Millia, Zato, Ramlethal and Leo
(charaID == 18 && colorID == 69) || // Color 70 for Baiken
((charaID == 0 || charaID == 1 || charaID == 14 || charaID == 18) && colorID == 79) || // EX Color for Sol, Ky, I-No and Baiken
((charaID == 11 || charaID == 14 || charaID == 16) && colorID == 98) // Story Color for Nagoriyuki, I-No and Jack-O
else
{
return (colorID >= COLORMIN && colorID < COLORLIMIT) || colorID == SPCOLOR ||
(charaID == SOL && colorID == BETACOLOR) ||
((charaID == MILLIA || charaID == ZATO || charaID == RAM || charaID == LEO) && colorID == TESTCOLOR) ||
(charaID == BAIKEN && colorID == ALTCOLOR) ||
((charaID == SOL || charaID == KY || charaID == INO || charaID == BAIKEN) && colorID == EXCOLOR) ||
((charaID == NAGO || charaID == INO || charaID == JACKO || charaID == ASUKA) && colorID == STORYCOLOR)
;
}
}
Expand All @@ -111,8 +124,10 @@ __int64 __fastcall hk_CheckRewardAura(__int64 UREDPlayerData)

if (bGetRewardBadges)
{
Orig_SetRewardBadge(UREDPlayerData, 3009, 1); //Times in top badge
Orig_SetRewardBadge(UREDPlayerData, 503009, 1); //Wins badge
for (int badgeID : BADGES)
{
Orig_SetRewardBadge(UREDPlayerData, badgeID, 1);
}
}

return 0;
Expand Down
3 changes: 3 additions & 0 deletions GGSTEnhancer/GGSTEnhancer/GGSTEnhancer.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,9 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="Badges.h" />
<ClInclude Include="Characters.h" />
<ClInclude Include="Colors.h" />
<ClInclude Include="Features.h" />
<ClInclude Include="Helpers.h" />
</ItemGroup>
Expand Down
9 changes: 9 additions & 0 deletions GGSTEnhancer/GGSTEnhancer/GGSTEnhancer.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,15 @@
<ClInclude Include="Helpers.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Badges.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Characters.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Colors.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="dllmain.cpp">
Expand Down

0 comments on commit 2bfa5d7

Please sign in to comment.