#include "Stdafx.h"
char* Custom = "Data\\Custom\\Items\\";
char* CustomFolder = "Custom\\Items\\";
//============================================================================
// Custom Jewels Description Text
//============================================================================
char * JewelofSkill = "It is used to add to your item a skill";
char * JewelofExcellent = "It is used to make your item to excellent item";
char * JewelofLevel = "It is used to make your item level directly to up to +15";
char * JewelofLuck = "It is used to make your item to luck item";
char * JewelofOption = "It is used to make your item option directly to up to +28";
char * JewelofAncient = "It is used to make your item to ancient item";
char * JewelofSocket = "It is used to add to your item to five socket slots";
//============================================================================
// Custom Conditional Text of Jewels
//============================================================================
char * SkillCond = "Only can be used for items that may have an skill";
char * SocketCond = "Only can be used for items that may be socket";
char * AncientCond = "Only can be used for items that may be ancient";
//============================================================================
// Restore Normal Items with Golden Color Name
//============================================================================
char * JewelofSoul = "It is used to make your item level to up to 7,8,9";
char * JewelofLife = "Increase item option by 1 level";
char * JewelofCreation = "Use to create fruits that increase stats";
char * SymbolofKundun = "Must have 5 for create lost map.";
char * JewelofGuardian = "Create and improve items for siege";
char * Gemstone = "Jewel with impurities";
char * JewelofHarmony = "Jewel for item reinforcement";
char * LowerRefiningStone = "Grant actual power to reinforced item.";
char * HigherRefiningStone = "Grant actual power to reinforced item.";
char * JewelofChaos = "It is used to combine Chaos items";
char * RemedyofLove = "Increase damage and attack speed";
char * RenaA = "Can use for exchange for items";
char * RenaB = "Golden Archer Special Item";
char * PetUnicornA = "Increase Attack Speed";
char * PetUnicornB = "Increase Critical Damage";
char * PetUnicornC = "Increase Excellent Damage";
//============================================================================
BOOL APIENTRY DllMain(HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
Init();
break;
}
return TRUE;
}
void SetNop(DWORD dwOffset,int Size)
{
for(int n=0;n<Size;n++)
*(BYTE*)(dwOffset+n) = 0x90;
}
void HookThis(DWORD dwMyFuncOffset,DWORD dwJmpOffset)
{
*(DWORD*)(dwJmpOffset+1) = dwMyFuncOffset-(dwJmpOffset+5);
}
void LoadThisFuckingModelByITEMID(int ItemID,char* ModelName,char* FolderFrom,char* WayFrom)
{
_asm
{
PUSH -1
PUSH ModelName
PUSH WayFrom
PUSH ItemID
mov eax,BMDModelLoad
CALL eax
PUSH 1
PUSH 0x2600
PUSH 0x2901
PUSH FolderFrom
PUSH ItemID
mov eax,OpenTexture
CALL eax
}
}
__declspec(naked) void PatchMainForLoadModels()
{
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,200),"JewelOfLevel",CustomFolder,Custom);
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,201),"JewelOfLuck",CustomFolder,Custom);
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,202),"JewelOfSkill",CustomFolder,Custom);
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,203),"JewelOfOption",CustomFolder,Custom);
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,204),"JewelOfAncient",CustomFolder,Custom);
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,205),"JewelOfExcellent",CustomFolder,Custom);
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,206),"JewelOfSocket",CustomFolder,Custom);
_asm
{
//1.03Z+
PUSH -1
PUSH 0x009AD444
PUSH 0x009AD44C
PUSH 0x20B2
mov eax,BMDModelLoad
CALL eax
ADD ESP,0x10
mov eax,ReturnOffset
JMP eax
}
}
// Item SID ( (Section * 512) + ID = SID )
// Rena = 1C15
#define COLOR_ADR_ALLOW 0x005D5AED //1.03Z+
#define COLOR_ADR_RETURN 0x005D5966 //1.03Z+
void __declspec(naked) JewelsColor()
{
_asm
{
//Original Soul
cmp ax, 0x1C0E;
je AddColor;
//Jewel of Level
cmp ax, 0x1CC8;
je AddColor;
//Jewel of Luck
cmp ax, 0x1CC9;
je AddColor;
//Jewel of Skill
cmp ax, 0x1CCA;
je AddColor;
//Jewel of Option
cmp ax, 0x1CCB;
je AddColor;
//Jewel of Ancient
cmp ax, 0x1CCC;
je AddColor;
//Jewel of Excellent
cmp ax, 0x1CCD;
je AddColor;
//Jewel of Socket
cmp ax, 0x1CCE;
je AddColor;
mov edx, COLOR_ADR_RETURN
jmp edx;
AddColor:
mov edx, COLOR_ADR_ALLOW
jmp edx;
}
}
__declspec(naked) void JewelInfoText()//finished
{
// Color de la tabla:
//------------------------------------------------------------------------
// 0x00 = blanco
// 0x01 = azul
// 0x02 = rojo
// 0x03 = amarillo
// 0x04 = verde
// 0x05 = fondo azul, rojo
// 0x06 = magenta
// 0x07 = fondo blanco, azul
// 0x08 = fondo blanco, beige
// 0x09 = fondo verde, azul
// 0x0A = gris
// 0x0B = púrpura (oscuro)
_asm
{
//Restoring original item
CMP WORD PTR DS:[EDI],0x1C0E
JNZ Item1 //Next Item
PUSH 0x23E //Text Line
MOV ECX, 0x07C24858 //1.03Z+
mov esi, 0x00402470 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[EAX+4] //1.03Z+
CMP EAX,EBP
JNZ 0x005DB96A
MOV EAX, 0x0096A7B8
PUSH EAX
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],EBP //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item1:
CMP WORD PTR SS:[EDI],0x1CC8 //Item Number
JNZ Item2 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofLevel
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item2:
CMP WORD PTR SS:[EDI],0x1CC9 //Item Number
JNZ Item3 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofLuck
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item3:
CMP WORD PTR SS:[EDI],0x1CCA //Item Number
JNZ Item4 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofSkill
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH SkillCond
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0A //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item4:
CMP WORD PTR SS:[EDI],0x1CCB //Item Number
JNZ Item5 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofOption
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item5:
CMP WORD PTR SS:[EDI],0x1CCC //Item Number
JNZ Item6 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofAncient
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH AncientCond
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0A //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item6:
CMP WORD PTR SS:[EDI],0x1CCD //Item Number
JNZ Item7 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofExcellent
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item7:
CMP WORD PTR SS:[EDI],0x1CCE //Item Number
JNZ Item8 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofSocket
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH SocketCond
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0A //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item8:
CMP WORD PTR SS:[EDI],0x1C10 //Item Number
JNZ Item9 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofLife
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item9:
CMP WORD PTR SS:[EDI],0x1C16 //Item Number
JNZ Item10 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofCreation
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item10:
CMP WORD PTR SS:[EDI],0x1C1F //Item Number
JNZ Item11 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofGuardian
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item11:
CMP WORD PTR SS:[EDI],0x1C29 //Item Number
JNZ Item12 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH Gemstone
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item12:
CMP WORD PTR SS:[EDI],0x1C2A //Item Number
JNZ Item13 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofHarmony
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item13:
CMP WORD PTR SS:[EDI],0x1C2B //Item Number
JNZ Item14 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH LowerRefiningStone
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item14:
CMP WORD PTR SS:[EDI],0x1C2C //Item Number
JNZ Item15 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH HigherRefiningStone
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item15:
CMP WORD PTR SS:[EDI],0x1C1D //Item Number
JNZ Item16 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH SymbolofKundun
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x07 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item16:
CMP WORD PTR SS:[EDI],0x1C14 //Item Number
JNZ Item17 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH RemedyofLove
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x06 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item17:
CMP WORD PTR SS:[EDI],0x1C15 //Item Number
JNZ Item18 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH RenaA
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0B //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH RenaB
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x02 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item18:
CMP WORD PTR SS:[EDI],0x180F //Item Number
JNZ Item19 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofChaos
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item19:
CMP WORD PTR SS:[EDI],0x1A6A //Item Number
JNZ Return //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH PetUnicornA
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0B //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH PetUnicornB
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0B //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH PetUnicornC
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0B //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Return:
mov edi, 0x005DB99F //1.03Z+
jmp edi;
}
}
__declspec(naked) void JewelsSwitcher()
{
_asm
{
//Original
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1C0D
JE ItemAllowed
//Jewel of Level
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CC8
JE ItemAllowed
//Jewel of Luck
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CC9
JE ItemAllowed
//Jewel of Skill
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCA
JE ItemAllowed
//Jewel of Option
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCB
JE ItemAllowed
//Jewel of Ancient
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCC
JE ItemAllowed
//Jewel of Excellent
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCD
JE ItemAllowed
//Jewel of Socket
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCE
JE ItemAllowed
mov eax,0x007EE833 //1.03Z+
jmp eax
ItemAllowed:
mov eax,0x007EE897 //1.03Z+
jmp eax
}
}
__declspec(naked) void JewelMoveOnItem2()
{
_asm
{
//Original
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1C0E
JNZ Next1
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next1
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next1
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next1:
//Jewel of Level
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CC8
JNZ Next2
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next2
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next2
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next2:
//Jewel of Luck
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CC9
JNZ Next3
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next3:
//Jewel of Skill
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCA
JNZ Next4
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next4:
//Jewel of Option
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCB
JNZ Next5
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next5:
//Jewel of Ancient
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCC
JNZ Next6
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next6:
//Jewel of Excellent
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCD
JNZ Next7
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next7:
//Jewel of Socket
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCE
JNZ Next
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next:
mov edi, 0x0079A4CC
jmp edi
}
}
__declspec(naked) void JewelMoveOnItem1()
{
_asm
{
//Original
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1C0E //Item
JNZ Next1
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
Next1:
//Jewel of Level
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CC8 //Item
JNZ Next2
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next2:
//Jewel of Luck
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CC9 //Item
JNZ Next3
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next3:
//Jewel of Skill
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCA //Item
JNZ Next4
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next4:
//Jewel of Option
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCB //Item
JNZ Next5
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next5:
//Jewel of Ancient
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCC //Item
JNZ Next6
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next6:
//Jewel of Excellent
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCD //Item
JNZ Next7
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next7:
//Jewel of Socket
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCE //Item
JNZ Next
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next:
mov esi, 0x007A9230 //1.03Z+
jmp esi
}
}
void HookOffset(DWORD my, DWORD tohook, BYTE type)
{
*(BYTE*)tohook = type;
*(DWORD*)(tohook+1) = my - (tohook+5);
}
void Init()
{
//Hook JewelColor
BYTE JewelsColors[] = { 0xFF, 0x25, 0xE0, 0x9F, 0x96, 0x00, 0x90, 0x90, 0x90, 0x90 };
memcpy((int*)0x005D595C,JewelsColors,sizeof(JewelsColors)); //1.03Z+
*(unsigned int*)0x00969FE0 = (unsigned int)JewelsColor; //1.03Z+ (Offset y en BYTE)
//Hook JewelText
BYTE JewelText[] = { 0xFF, 0x25, 0x20, 0x9F, 0x96, 0x00, 0x90, 0x90, 0x90, 0x90 };
SetNop(0x005DB953,62); //1.03Z+
memcpy((int*)0x005DB94D,JewelText,sizeof(JewelText)); //1.03Z+
*(unsigned int*)0x00969F20 = (unsigned int)JewelInfoText; //1.03Z+ (Offset y en BYTE)
//Hook JewelMoveItem1
BYTE JewelMove1[] = { 0xFF, 0x25, 0xD5, 0x9F, 0x96, 0x00, 0x90, 0x90, 0x90, 0x90 };
memcpy((int*)0x007A9202,JewelMove1,sizeof(JewelMove1)); //1.03Z+
*(unsigned int*)0x00969FD5 = (unsigned int)JewelMoveOnItem1; //1.03Z+ (Offset y en BYTE)
//Hook JewelMoveItem2
BYTE JewelMove2[] = { 0xFF, 0x25, 0xB0, 0x9F, 0x96, 0x00, 0x90, 0x90, 0x90, 0x90 };
memcpy((int*)0x007AAA3D,JewelMove2,sizeof(JewelMove2)); //1.03Z+
*(unsigned int*)0x00969FB0 = (unsigned int)JewelMoveOnItem2; //1.03Z+ (Offset y en BYTE)
//Hook JewelsSwitcher
BYTE JewelsSwitchers[] = { 0xFF, 0x25, 0x00, 0x9F, 0x96, 0x00, 0x90, 0x90, 0x90, 0x90 };
memcpy((int*)0x007EE826,JewelsSwitchers,sizeof(JewelsSwitchers)); //1.03Z+
*(unsigned int*)0x00969F00= (unsigned int)JewelsSwitcher; //1.03Z+ (Offset y en BYTE)
DataJMP ModelJMP;
SetNop(LoadModel_Offset,25);
ModelJMP.Command=0xE9;
ModelJMP.PointerToFunc=(DWORD)&PatchMainForLoadModels;
memcpy((int*)LoadModel_Offset,&ModelJMP,sizeof(ModelJMP));
HookThis((DWORD)&PatchMainForLoadModels,LoadModel_Offset);
}