@@ -74,12 +74,6 @@ Java_com_android_support_Menu_valueChange(
7474 }
7575}
7676
77- BNM::Class UserCharacterFactory{};
78- BNM::Class CharacterStaticUsecase{};
79- BNM::Class UserCharactersUsecase{};
80- BNM::Class CharacterStatic{};
81- BNM::Class List{};
82-
8377void (*old_AddItem)(void *instance, void *item, int count);
8478
8579void new_AddItem (void *instance, void *item, int count) {
@@ -94,31 +88,46 @@ void new_AddCharacterTemptation(void *instance, void *character, int added) {
9488
9589void (*old_Load)(void *instance);
9690
97- void new_Load (void *instance) {
91+ void new_Load (BNM::IL2CPP::Il2CppObject *instance) {
9892 old_Load (instance);
9993 if (feature.characters ) {
100- auto userCharacterFactory = static_cast <BNM::Field<BNM::IL2CPP::Il2CppObject *>>(UserCharactersUsecase.GetField (
101- " userCharacterFactory" ))[instance]();
102- auto characterStaticUsecase = static_cast <BNM::Field<BNM::IL2CPP::Il2CppObject *>>(UserCharacterFactory.GetField (
103- " characterStaticUsecase" ))[userCharacterFactory]();
104- auto characters = static_cast <BNM::Property<BNM::IL2CPP::Il2CppObject *>>(CharacterStaticUsecase.GetProperty (
105- " Characters" ))[characterStaticUsecase]();
106- auto CharactersList = List.GetGeneric (
107- {CharacterStatic});
108- auto count = static_cast <BNM::Property<int >>(CharactersList.GetProperty (
109- " Count" ))[characters]();
110- auto getItem = static_cast <BNM::Method<BNM::IL2CPP::Il2CppObject *>>(CharactersList.GetMethod (
111- " get_Item" ))[characters];
112- BNM::Method<void > AddCharacterOrExperience = UserCharactersUsecase.GetMethod (
113- " AddCharacterOrExperience" )[instance];
114- BNM::Property<int > Id = CharacterStatic.GetProperty (" Id" );
94+ auto userCharacterFactory = GetField<BNM::IL2CPP::Il2CppObject *>(instance,
95+ " userCharacterFactory" );
96+ auto characterStaticUsecase = GetField<BNM::IL2CPP::Il2CppObject *>(userCharacterFactory,
97+ " characterStaticUsecase" );
98+ auto characters = GetProperty<BNM::IL2CPP::Il2CppObject *>(characterStaticUsecase,
99+ " Characters" );
100+
101+ auto count = GetProperty<int >(characters, " Count" );
102+ auto getItem = GetMethod<BNM::IL2CPP::Il2CppObject *>(characters, " get_Item" );
103+ auto AddCharacterOrExperience = GetMethod<void >(instance,
104+ " AddCharacterOrExperience" );
115105 for (int i = 0 ; i < count; ++i) {
116- AddCharacterOrExperience (Id[getItem (i)](), 100 );
106+ auto character = getItem (i);
107+ int id = GetProperty<int >(character, " Id" );
108+ AddCharacterOrExperience (id, 100 );
117109 }
118110 }
119111}
120112
121113
114+ int (*old_GetLocationCurrentLevel)(void *instance, void *config);
115+
116+ int new_GetLocationCurrentLevel (BNM::IL2CPP::Il2CppObject *instance,
117+ BNM::IL2CPP::Il2CppObject *config) {
118+ int level = old_GetLocationCurrentLevel (instance, config);
119+ if (level > 5 ) {
120+ auto staticItems = GetProperty<BNM::IL2CPP::Il2CppObject *>(config, " LocationKey" );
121+ auto userInventoryUsecase = GetField<BNM::IL2CPP::Il2CppObject *>(instance,
122+ " userInventoryUsecase" );
123+ auto RemoveItem = GetMethod<void >(userInventoryUsecase, " RemoveItem" );
124+ RemoveItem (staticItems, level - 5 );
125+ level = 5 ;
126+ }
127+ return level;
128+ }
129+
130+
122131// [Wet Wealth](https://www.nutaku.net/games/wet-wealth/)
123132void OnLoaded () {
124133 LOGI (" OnLoaded" );
@@ -128,20 +137,20 @@ void OnLoaded() {
128137 AssemblyCSharp);
129138 auto AddItem = UserInventoryUsecase.GetMethod (" AddItem" );
130139
131- UserCharacterFactory = BNM::Class (" WetWealth.Characters" , " UserCharacterFactory" ,
132- AssemblyCSharp);
133- CharacterStaticUsecase = BNM::Class (" WetWealth.Characters" , " CharacterStaticUsecase" ,
134- AssemblyCSharp);
135- CharacterStatic = BNM::Class (" WetWealth.Characters" , " CharacterStatic" ,
136- AssemblyCSharp);
137- UserCharactersUsecase = BNM::Class (" WetWealth.Characters" , " UserCharactersUsecase" ,
138- AssemblyCSharp);
139- List = BNM::Class (" System.Collections.Generic" , " List`1" , BNM::Image (" mscorlib" ));
140+ auto UserCharactersUsecase = BNM::Class (" WetWealth.Characters" , " UserCharactersUsecase" ,
141+ AssemblyCSharp);
140142 auto AddCharacterTemptation = UserCharactersUsecase.GetMethod (" AddCharacterTemptation" );
141143 auto Load = UserCharactersUsecase.GetMethod (" Load" );
142144
145+ auto CityPaidLocationsUsecase = BNM::Class (" WetWealth.PaidLocations" ,
146+ " CityPaidLocationsUsecase" ,
147+ AssemblyCSharp);
148+ auto GetLocationCurrentLevel = CityPaidLocationsUsecase.GetMethod (" GetLocationCurrentLevel" );
149+
143150
144151 BNM::BasicHook (AddItem, new_AddItem, old_AddItem);
145152 BNM::BasicHook (AddCharacterTemptation, new_AddCharacterTemptation, old_AddCharacterTemptation);
146153 BNM::BasicHook (Load, new_Load, old_Load);
154+ BNM::BasicHook (GetLocationCurrentLevel, new_GetLocationCurrentLevel,
155+ old_GetLocationCurrentLevel);
147156}
0 commit comments