Код
typedef struct
{
char *name;
int cost;
int slot;
int rank;
char *desc;
int partof;
int combonum;
int spellflag;
} ART_RECORD;
#define OPCODE_JUMP 0xE9
#define OPCODE_CALL 0xE8
#define OPCODE_NOP 0x90
#define HOOKTYPE_JUMP 0
#define HOOKTYPE_CALL 1
#define HOOK_SIZE 5
int(__thiscall *HasArtifact)(void *hero, int art) =
(int(__thiscall *)(void*, int))(0x4D9460);
//проверка на наличие артефакта
int(__thiscall *HasArtifactInBackpack)(void *hero, int art) =
(int(__thiscall *)(void*, int))(0x4D9420);
//проверка на наличие артефакта
ART_RECORD* GetArtifactRecord(int number)
{
return (ART_RECORD*)((*(int*)0x660B68)+number*sizeof(ART_RECORD));
}
void WriteHook( void *pOriginal, void *pNew, char type )
{
*(char*)pOriginal = (type==HOOKTYPE_JUMP)?OPCODE_JUMP:OPCODE_CALL;
*(void**)( (char*)pOriginal + 1 ) = (void*)( (char*)pNew - (char*)pOriginal - HOOK_SIZE );
}
...
int __fastcall HasArtifact_Hook(char *hero, int edx, int art)
{
//здесь мы клонируем книжку и не только
int ret = HasArtifact((void*)hero, art);
if(art==ARTIFACT_WATERBOOTS) ret|=HasArtifact((void*)hero, ARTIFACT_WETSUIT); //скафандр дублирует тапки левитации
//if(GetArtifactRecord(art)->slot==14) ret|=HasArtifact((void*)hero, 0);
if(art==0) ret|=(hero[0x1B5]!=-1)
return ret;
}
int __fastcall HasArtifactInBackpack_Hook(char *hero, int edx, int art)
{
//здесь мы клонируем книжку
int ret = HasArtifactInBackpack((void*)hero, art);
if(art==0) ret|=(hero[0x1B5]!=-1)
return ret;
}
int __fastcall TakeSpellBook(char *hero, int edx, int* book, int a2, int a3)
{
//здесь мы выдаем книжку
char* currTown = *(int*)(*(int*)0x69954C+0x38);
int towntype = currTown[4];
book[0] = ARTIFACT_NEWSPELLBOOK;
//char(__thiscall *sub_5A43E0)(void* combatManager, int a2, int a3, int a4, int a5, int a6)=
int ret = ((int(__fastcall *)(char* ,int , int* , int , int))(0x4E32E0))(hero, edx, book, a2, a3);
return ret;
}
void Duplicate_Hook()
{
WriteHook((void*)0x005CEAE5, (void*)(TakeSpellBook), HOOKTYPE_CALL);
WriteHook((void*)0x004028D3, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00407C46, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00407CCC, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00407CEE, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00407E9B, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00407ECC, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0041C88A, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0041C967, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0041E756, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0041E76F, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0041FA50, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0041FA6C, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0041FA88, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0041FB82, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0041FB9B, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0041FBB4, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00420CF3, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00420D17, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00420D2F, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0042143B, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00421454, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00423012, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0042302B, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00423044, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00423F50, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00423F65, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00423FEC, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00425C0D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00425C23, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00427028, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004301FC, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0043024D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0043026B, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00431CFA, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00433CD6, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0043C49D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0043C4B3, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0043DC5F, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0043DC77, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0043DDEA, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0043DE03, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0043F71A, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004428CB, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00442C08, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00445234, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004454CB, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00446C1E, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00447808, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00447A69, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00447B3B, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044871C, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00448965, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044A1F5, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044A219, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044A277, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044A2EC, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044A398, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044A426, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044A43E, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044A46C, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044AF14, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044AFBF, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044AFD3, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044BCC9, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044BCDB, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044BEFB, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0044BF0F, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0046338D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004633FB, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0046345D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0046719B, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004671B0, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00467218, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00469BF8, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00471C2A, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00478046, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00478DAE, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00478DC3, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00478EC8, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00478EDD, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0047FA4F, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0048047C, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0048071D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00480873, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00480C85, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00480D94, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00480E2E, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0048157D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0048161D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0048168C, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0049204D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0049E316, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004A01BB, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004A0CDA, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004A2639, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004A264A, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004A402C, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004A4A8C, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004A5415, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004AC7B4, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004B1737, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004B1749, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004B299F, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004B29E5, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004BA9AA, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004BAA10, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004C6B07, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004C7F57, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004D94AF, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004DC63E, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004DC698, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004DC6F1, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004DC74B, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004DC7A4, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004DCDDE, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004DCE38, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004DCE91, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004DCEEB, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004DCF44, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3991, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E39D5, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3A7D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3ABB, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3AF9, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3B36, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3B46, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3CD7, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3D17, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3D55, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3D94, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3DD2, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3F0B, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E3FD9, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E401F, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4066, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4169, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4252, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E428D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E42CB, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4381, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E43BD, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4468, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E44AE, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E44F6, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4728, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E476E, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E47B6, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4884, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E48CA, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4912, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E49E4, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4A2A, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4A72, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4CDA, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4DAE, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4F81, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E4FC4, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E505E, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E509D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E50DB, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E511B, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5337, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5504, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5A33, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5A7E, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5AC6, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5B09, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5D4E, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5D8D, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5DC9, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5E37, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5E78, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5EB6, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E5F16, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E642E, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E662A, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E663C, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E664A, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E66A9, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E66BE, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E66CC, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004E66FF, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x004F5045, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00524F99, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00525163, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005259EB, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0052725F, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00527270, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00527AA7, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00527FB6, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0052883A, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00529DE2, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0052A991, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0052B739, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0056B781, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0056B796, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0056B92A, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0056B989, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0056BB51, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0056BB7A, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0057420A, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0059ECDB, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0059EE7F, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005A841B, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005A8430, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005A86F3, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005BE4C0, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005BFE32, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005BFE4E, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005BFE6F, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005BFE8B, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005BFEA9, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005BFEC1, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005BFEE2, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005BFEF9, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005BFF17, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005BFF2C, (void*)(HasArtifact_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0040254E, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00402574, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0040259A, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0052560E, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005258C5, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00526195, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0052B209, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0052B2CE, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0052B385, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x00550906, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0056F993, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x0056FA5F, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005CE9D3, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005D1D93, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005D3526, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F1BB0, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F1D16, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F1E0E, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F2D0A, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F2DA9, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F2F12, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F2F1F, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F2F2C, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F2F39, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F2F46, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F2F53, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F2F7C, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F2FC2, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
WriteHook((void*)0x005F3010, (void*)(HasArtifactInBackpack_Hook), HOOKTYPE_CALL);
}