diff --git a/src/il2cpp_resolver.cpp b/src/il2cpp_resolver.cpp index 8a883fd..44ef4b5 100644 --- a/src/il2cpp_resolver.cpp +++ b/src/il2cpp_resolver.cpp @@ -553,7 +553,14 @@ int Il2CppResolver::fabricateOwnership(){ char* s=strrchr(exe,'\\'); if(!s) s=strrchr(exe,'/'); if(s){ std::ofstream f(std::string(exe,s-exe)+"\\DevourUnlocker.log",std::ios::app); - f<<"[own] fabricate: catalog="<0){ + loggedCatalog=true; + f<<"[own] catalog ids:"; + for(int i=0;i true", connectionId, itemDef); logPatch(b); - return true; + // MUST stay pass-through: forcing true desyncs lobby validation vs injected + // userItems and UNLOCKS REGRESS (pets locked again). See v2.1.1 regression. + char b[128]; snprintf(b,sizeof(b),"[trace] PlayerHasItem(conn=%d def=%llu)", connectionId, (unsigned long long)itemDef); logPatch(b); + if (oPlayerHasItem) return oPlayerHasItem(thiz, connectionId, itemDef, method); + return false; } // Inventory-retrieved flag: pass through — forcing true with an empty userItems made some // flows treat items as definitively NOT owned; original behavior is safer now