Code:
#include <windows.h>
/* 0 - show achievement boxes **
** 1 - hide achievement boxes */
#define HIDE_ACHIEVEMENTS 0
//ship unlock
int (__cdecl *sub_42CC5E)(int a1, int a2, unsigned int a3, char a4, char a5) = (int (__cdecl *)(int,int,unsigned int,char,char))0x0042CC5E;
//achievement functions
void *(__cdecl *sub_668058)(int *a1, const char *a2) = (void *(__cdecl *)(int *,const char *))0x668058;
int (__cdecl *sub_4151D2)(int a1, int *a2, char a3) = (int (__cdecl *)(int,int*,char))0x4151D2;
// achievement list
char *achievementList[] = {
"ACH_WIN_EASY",
"ACH_WIN_NORMAL",
"ACH_SCRAP",
"ACH_SHIPS",
"ACH_SECTOR_5",
"ACH_SECTOR_8",
"ACH_UNLOCK_ALL",
"ACH_PACIFIST",
"ACH_NO_UPGRADES",
"ACH_NO_REPAIR",
"ACH_NO_MISSILES",
"ACH_NO_DRONES",
"ACH_NO_BUYING",
"ACH_NO_DEATH",
"ACH_BURNING",
"ACH_BAD_DODGING",
"ACH_BOARDING_DRONE",
"ACH_ONE_VOLLEY",
"ACH_INVADE_SHIP",
"ACH_SLICE_DICE",
"ACH_SUFFOCATE",
"ACH_ROCK_CRYSTAL",
"ACH_NO_UPGRADES",
"ACH_PACIFIST",
"ACH_ENERGY_MANPOWER",
"ACH_FED_UPGRADE",
"ACH_SECTOR_8",
"ACH_STEALTH_TACTICAL",
"ACH_SLUG_NEBULA",
"ACH_MANTIS_SURVIVOR",
"ACH_MANTIS_CREW_DEAD",
"ACH_FED_PATIENCE",
"ACH_ONLY_DRONES",
"ACH_STEALTH_DESTROY",
"ACH_ENERGY_SHIELDS",
"ACH_ROCK_MISSILES",
"ACH_CRYSTAL_CLASH",
"ACH_MANTIS_SLAUGHTER",
"ACH_FED_DIPLOMACY",
"ACH_ROCK_FIRE",
"ACH_UNITED_FEDERATION",
"ACH_CRYSTAL_LOCKDOWN",
"ACH_SLUG_VISION",
"ACH_TOUGH_SHIP",
"ACH_STEALTH_AVOID",
"ACH_FULL_ARSENAL",
"ACH_IONED",
"ACH_ENERGY_POWER",
"ACH_SLUG_BIO",
"ACH_CRYSTAL_SHARD",
"ACH_ROBOTIC"
};
void UnlockAll(void)
{
for(int i = 0; i < 9; i++)
{
sub_42CC5E(0x007033E0, i, 0, 1, HIDE_ACHIEVEMENTS);
//sub_42CC5E(0x007033E0, i, 1, 1, 0); // unlocks Type B of the ship, pointless as they'll also unlock with the achievements below.
}
for(int i = 0; achievementList[i] != NULL; i++)
{
int result;
sub_668058(&result, achievementList[i]);
sub_4151D2(0x7029C0, &result, HIDE_ACHIEVEMENTS);
}
}
BOOL APIENTRY DllMain(HMODULE hDll, DWORD dwReason, LPVOID lpReserved)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
UnlockAll();
break;
}
return TRUE;
}