Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define oAddAdditionalLife_Hook 0x005090AA // 1.03H CHS
- #define oAddAdditionalLife_Default 0x00509171 // 1.03H CHS
- enum eItemOption
- {
- Damage = 80, //-> Additional Damage +<N>
- WizardryDamage = 81,
- CurseSpell = 82,
- Defense = 84, //-> Additional Defense +<N>
- Luck = 85, //-> Default: 0
- HPRecovery = 86,
- IncreaseDamage = 95, //-> Increase Damage +<N>%
- IncreaseSpeed = 98, //-> Increase Attacking(Wizardry)speed +<N>
- IgnorOpDefense = 103,
- ReturnAttack = 106, //-> Return's the enemy's attack power in <N>%
- CompleteLife = 107, //-> Complete recovery of life in <N>% rate
- CompleteMana = 108, //-> Complete recovery of Mana in <N>% rate
- };
- #pragma optimize("t"on)
- void MASM cWings::AddAdditionalOption()
- {
- static BYTE btAddAdditionalOption_Value;
- static BYTE btAddAdditionalOption_Stat;
- static BYTE btAddAdditionalOption_Number;
- // ----
- static DWORD dwAddAdditionalOption_Pointer;
- static DWORD dwAddAdditionalOption_NewOption;
- static DWORD dwAddAdditionalOption_Buffer;
- // ----
- _asm
- {
- MOV EDX,DWORD PTR SS:[EBP+0x8]
- // ----
- MOVSX EAX,WORD PTR DS:[EDX]
- MOV dwAddAdditionalOption_Pointer,EAX
- // ----
- MOV EDX,DWORD PTR SS:[EBP-0x14]
- MOV dwAddAdditionalOption_NewOption,EDX
- // ----
- MOV CL,BYTE PTR SS:[EBP-0x10]
- MOV btAddAdditionalOption_Value,CL
- }
- // ----
- switch(dwAddAdditionalOption_Pointer)
- {
- case GET_ITEM_INDEX(12,43):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = WizardryDamage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = CurseSpell;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,236):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = WizardryDamage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,237):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Damage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,238):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Damage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,239):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Damage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,240):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = WizardryDamage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,241):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Damage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,242):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Damage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,243):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Damage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = WizardryDamage;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,244):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Damage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,245):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = WizardryDamage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = CurseSpell;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,246):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = WizardryDamage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,247):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = WizardryDamage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,248):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = WizardryDamage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,249):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Damage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,250):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Damage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,251):
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = WizardryDamage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- case GET_ITEM_INDEX(12,252): // -> Deathless Wings (Added: 22-12-16)
- {
- if((dwAddAdditionalOption_NewOption >> 4) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Damage;
- }
- else
- {
- if((dwAddAdditionalOption_NewOption >> 5) & 1)
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value * 4;
- btAddAdditionalOption_Number = Defense;
- }
- else
- {
- btAddAdditionalOption_Stat = btAddAdditionalOption_Value;
- btAddAdditionalOption_Number = HPRecovery;
- }
- }
- }
- break;
- // ----
- default:
- {
- _asm
- {
- MOV dwAddAdditionalOption_Buffer,oAddAdditionalLife_Default
- JMP dwAddAdditionalOption_Buffer
- }
- }
- break;
- }
- _asm
- {
- MOV EDX,DWORD PTR SS:[EBP-0x10]
- SHL EDX,2
- // ----
- MOV EAX,DWORD PTR SS:[EBP+0x8]
- XOR ECX,ECX
- // ----
- MOV CL,BYTE PTR DS:[EAX+0x25]
- MOV EAX,DWORD PTR SS:[EBP+0x8]
- MOV DL,btAddAdditionalOption_Stat
- MOV BYTE PTR DS:[ECX+EAX+0x2E],DL
- // ----
- XOR EDX,EDX
- MOV DL,BYTE PTR DS:[EAX+0x25]
- MOV CL,btAddAdditionalOption_Number
- MOV BYTE PTR DS:[EDX+EAX+0x26],CL
- // ----
- ADD DL,1
- MOV BYTE PTR DS:[EAX+0x25],DL
- // ----
- MOV dwAddAdditionalOption_Buffer,oAddAdditionalLife_Default
- JMP dwAddAdditionalOption_Buffer
- }
- }
- #pragma optimize("t",off)
- void cWings::InitAddAdditionalOption()
- {
- gToolKit.SetRange((LPVOID)oAddAdditionalLife_Hook,199,ASM::NOP);
- gToolKit.SetJmp((LPVOID)oAddAdditionalLife_Hook,this->AddAdditionalOption);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement