Fix Custom Jewels season 8
Add .h file code
Code:#pragma pack(push, 1)
struct ObjectItem //-> Size: 140
{
/*+0*/ DWORD Unknown0;
/*+4*/ DWORD ItemID;
/*+8*/ DWORD ItemInfo; //(ItemLevelUp >> 3) & 0xF
/*+12*/ short Unknown12;
/*+14*/ short Level;
//BYTE gap0001;
/*+16*/ //char Unknown6;
/*+13*/ char Unknown7;
/*+14*/ char Unknown84;
/*+15*/ short DamageMin;
/*+17*/ short DamageMax;
/*+19*/ char Unknown13;
//BYTE Unknown0w[2];
/*+20*/ short Unknown14;
/*+22*/ short Unknown16;
/*+24*/ char Unknown18;
/*+25*/ char Unknown19;
/*+26*/ short Unknown20;
/*+28*/ char Durability;
/*+29*/ char ExcellentOption;
/*+30*/ char AncientOption;
/*+31*/ short ReqStrenght;
/*+33*/ short ReqDextirity;
/*+35*/ short ReqEnergy;
/*+37*/ short ReqVitality;
/*+39*/ short ReqCommand;
/*+41*/ short ReqLevel;
/*+43*/ char SpecialCount;
/*+44*/ WORD SpecialType[8];
/*+54*/ BYTE SpecialValue[8];
/*+62*/ int UniqueID;
/*+66*/ char Unknown66;
/*+67*/ BYTE PosX;
/*+68*/ BYTE PosY;
/*+69*/ WORD HarmonyType;
/*+71*/ short HarmonyValue;
/*+73*/ char Is380Item;
/*+74*/ char SocketOption[5];
/*+79*/ char Unknown79;
/*+80*/ char SocketSeedIndex[5];
/*+85*/ char SocketSphereLevel[5];
/*+90*/ char SocketSet;
BYTE gap01[5];
/*+96*/ char DurabilityState;
/*+97*/ char PeriodItem;
/*+98*/ char ExpiredItem;
/*+99*/ int ExpireDateConvert;
/*+103*/ int Unknown103;
BYTE gap02[24];//maybe size 24
};
#pragma pack(pop)
#define UpgradeItem_Addr ((bool(__stdcall *)(ObjectItem *SourceItem, ObjectItem *TargetItem)) 0x009CDD38) //Original UpgradeItem address
Item.cpp
replace SetCompleteHook(0xE9,0x007C7C1A,&JewelCheckApplyItem); on
SetCompleteHook(0xE8,0x009CAB87,&UpgradeItem);
SetCompleteHook(0xE8,0x009CC76F,&UpgradeItem);
Function UpgradeItem
bool UpgradeItem(ObjectItem * SourceItem, ObjectItem * TargetItem)
{
if ( gCustomJewel.CheckCustomJewelByItem(SourceItem->ItemID)
&& gCustomJewel.CheckCustomJewelApplyItem(SourceItem->ItemID, TargetItem->ItemID) )
{
return true;
}
return UpgradeItem_Addr(SourceItem, TargetItem);
}

