Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

New Wings

Newbie Spellweaver
Joined
Apr 4, 2013
Messages
6
Reaction score
0
Here is an src of new wings:
The owner of this src i believe to be DarkSim, but i am not sure, and with some mods, you can create the wings in Chaos Machine(with GS addon).
Wings.cpp
Code:
#include "stdafx.h"
#include "Wings.h"
#include "Item.h"
//---------------------------------------------------------------------------

#ifdef CLIENT_0
//---------------------------------------------------------------------------

/*005B0BCD - Options view call
005237AD - Wings can have excellent options
005239F1 - Wings can have luck option
0052457E - Wings can have 28 option
005AAA1D - Hide excellent status text
005AED4C - Show wings additionals (speed, damage, absorb)
005AF8C7 - Show durability
005A9C2C - Set golden name
005158FD - Show wings model on player
005E0984 - Set shine effect in inventory
005EF9A9 - Hide excellent status color in inventory
005EF9A9 - fix excellent glow effect
005B8667 - Set back color from durability
007927D0 - Allow jewel insert
005B2A3D - Set gold color name on repair
005B2DA1 - Hide "Excellent" status name on repair
005A7C3C - Set maximum durability to 255
0078CB36 - Allow teleport to Icarus in "M" list

005EE319 - Wings shine animation effect
+ 005EE364 - Pulse level
+ 005EE376 - Pulse speed
+ 005EE390 - Shine level
+ 005EE3A8 - Shine level 2

005EC320 - Transparent effect
005EEAA7 - Dark effect
00510E18 - Cool set effect (like esthus)
*/
//--------------------------------------------------------------------------

DWORD    WingsAddExcellentStatus_Pointer;
DWORD    WingsAddExcellentStatus_Buff;
// --
DWORD    WingsAddLuckOption_Pointer;
DWORD    WingsAddLuckOption_Buff;
// --
BYTE    WingsAdd28Option_OptionNumber;
BYTE    WingsAdd28Option_OptionValue;
BYTE    WingsAdd28Option_OptionStat;
DWORD    WingsAdd28Option_Pointer;
DWORD    WingsAdd28Option_NewOption;
DWORD    WingsAdd28Option_Buff;
// --
WORD    WingsHideExcellentStatusText_Pointer;
DWORD    WingsHideExcellentStatusText_Buff;
// --
WORD    WingsShowAdditionals_Pointer;
DWORD    WingsShowAdditionals_Buff;
DWORD    WingsShowAdditionals_Percent;
// --
WORD    WingsShowDur_Pointer;
DWORD    WingsShowDur_Buff;
DWORD    WingsShowDur_Set_Buff;
// --
WORD    WingsSetGoldName_Pointer;
DWORD    WingsSetGoldName_Buff;
// --
DWORD    WingsDisableLevelShine_Pointer;
DWORD    WingsDisableLevelShine_SubPointer;
DWORD    WingsDisableLevelShine_Buff;
// --
DWORD    WingsHideExcellentGlow_Pointer;
DWORD    WingsHideExcellentGlow_Buff;
// --
BYTE    WingsAddCharSet_CharSet16;
DWORD    WingsAddCharSet_CharSet16_Buff;
BYTE    WingsAddCharSet_CharSet9;
WORD    WingsAddCharSet_CharSet9_Pointer;
DWORD    WingsAddCharSet_CharSet9_Buff;
// --
DWORD    WingsSetInvisibleEffect_Pointer;
DWORD    WingsSetInvisibleEffect_Buff;
// --
DWORD    WingsAllowJewelsInsert_Pointer;
DWORD    WingsAllowJewelsInsert_Buff;
// --
DWORD    WingsAddSpecialEffect_Pointer;
DWORD    WingsAddSpecialEffect_Buff;
DWORD    WingsAddSpecialEffect_Arg2;
DWORD    WingsAddSpecialEffect_Arg3;
DWORD    WingsAddSpecialEffect_Arg4;
DWORD    WingsAddSpecialEffect_Arg5;
DWORD    WingsAddSpecialEffect_Arg6;
DWORD    WingsAddSpecialEffect_Arg7;
DWORD    WingsAddSpecialEffect_This;
// --
DWORD    WingsAllowListMove_Pointer;
DWORD    WingsAllowListMove_Buff;
//--------------------------------------------------------------------------

pSetEffect                MU_SetEffect        = (pSetEffect)0x6C9AE9;
//---------------------------------------------------------------------------

bool __cdecl WingsRepairSprite(int * ItemPointer)
{
    int ItemID = *(short*)ItemPointer;
    // ----
    //TDEBUG("[%s] Pointer: [%d:%d]", __FUNCTION__, ItemID / 512, ItemID % 512);
    // ----
    if( ItemID >= ITEM(12, 0) && ItemID <= ITEM(12, 6)
        || ItemID >= ITEM(12, 36) && ItemID <= ITEM(12, 43)
        || ItemID == ITEM(13, 30)
        || ItemID >= ITEM(12, 180) && ItemID <= ITEM(12, 185) )
    {
        return true;
    }
    else
    {
        return false;
    }
}
//---------------------------------------------------------------------------

Naked(WingsAddCharSet) // -> 57 -> 005158CF
{
    _asm
    {
        mov ecx, dword ptr ss:[ebp+0x0c]
        xor edx, edx
        mov dl, byte ptr ds:[ecx+0x08]
        and edx, 0x00000007
        mov byte ptr ss:[ebp-4], dl
        mov eax, dword ptr ss:[ebp-4]
        and eax, 0x000000FF
        mov WingsAddCharSet_CharSet9_Buff, eax
    }
    // ----
    if( WingsAddCharSet_CharSet9_Buff > 0 )
    {
        _asm
        {
            mov cl, byte ptr ss:[ebp-4]
            mov byte ptr ss:[ebp-0x3c], cl
            mov WingsAddCharSet_CharSet9, cl
        }
    }
    else
    {
        goto CHARSET16;
    }
    // ----
    //TDEBUG("[%s] CharSet[9] == %d", __FUNCTION__, WingsAddCharSet_CharSet9);
    // ----
    if( WingsAddCharSet_CharSet9 == 1 )
    {
        WingsAddCharSet_CharSet9_Pointer = ITEM2(12, 180);
    }
    else if( WingsAddCharSet_CharSet9 == 2 )
    {
        WingsAddCharSet_CharSet9_Pointer = ITEM2(12, 181);
    }
    else if( WingsAddCharSet_CharSet9 == 3 )
    {
        WingsAddCharSet_CharSet9_Pointer = ITEM2(12, 182);
    }
    else if( WingsAddCharSet_CharSet9 == 4 )
    {
        WingsAddCharSet_CharSet9_Pointer = ITEM2(12, 183);
    }
    else if( WingsAddCharSet_CharSet9 == 5 )
    {
        WingsAddCharSet_CharSet9_Pointer = ITEM2(12, 184);
    }
    else if( WingsAddCharSet_CharSet9 == 6 )
    {
        WingsAddCharSet_CharSet9_Pointer = ITEM2(12, 185);
    }
    // ----
    _asm
    {
        mov edx, dword ptr ss:[ebp-8]
        mov ax, WingsAddCharSet_CharSet9_Pointer
        mov word ptr ds:[edx+0x1c8], ax
    }
    // ----
CHARSET16:
    // ----
    _asm
    {
        mov ecx, dword ptr ss:[ebp+0x0c]
        xor edx, edx
        mov dl, byte ptr ds:[ecx+0x0f]
        sar edx, 2
        and edx, 0x00000007
        mov byte ptr ss:[ebp-4], dl
        mov eax, dword ptr ss:[ebp-4]
        and eax, 0x000000FF
        mov WingsAddCharSet_CharSet16_Buff, eax
    }
    // ----
    if( WingsAddCharSet_CharSet16_Buff > 0 )
    {
        _asm
        {
            mov cl, byte ptr ss:[ebp-4]
            mov byte ptr ss:[ebp-0x3c], cl
            mov WingsAddCharSet_CharSet16, cl
        }
    }
    else
    {
        _asm
        {
            mov WingsAddCharSet_CharSet16_Buff, 0x0051591F
            jmp WingsAddCharSet_CharSet16_Buff
        }
    }
    // ----
    //TDEBUG("[%s] CharSet[16] == %d", __FUNCTION__, WingsAddCharSet_CharSet16);
    // ----
    if( WingsAddCharSet_CharSet16 == 6 )
    {
        _asm
        {
            mov edx, dword ptr ss:[ebp-8]
            mov word ptr ds:[edx+0x1c8], 0x1ba2

            mov WingsAddCharSet_CharSet16_Buff, 0x0051591F
            jmp WingsAddCharSet_CharSet16_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsAddCharSet_CharSet16_Buff, 0x00515908
            jmp WingsAddCharSet_CharSet16_Buff
        }
    }
}
//--------------------------------------------------------------------------

Naked(WingsShowAdditionals) // -> 29 -> 005AED3E
{
    // If use ASM variant - all without bugs
    // If use C++ variant - rena don't show description & name
    // FUCKKKKKKKKKKKK
    _asm
    {
        // -- if( cx >= ITEM(12, 36) && cx <= ITEM(12, 40) )
        cmp cx, ITEM(12, 36)
        jl EXIT
        cmp cx, ITEM(12, 40)
        jle SET_ADD
        // -- else if( cx == ITEM(12, 43) )
        cmp cx, ITEM(12, 43)
        je SET_ADD
        // -- else if( cx >= ITEM(12, 180) && cx <= ITEM(12, 185) )
        cmp cx, ITEM(12, 180)
        jl EXIT
        cmp cx, ITEM(12, 185)
        jle SET_ADD_NEW
        // -- else
        JMP EXIT
        // ----
        SET_ADD:
        lea esi, [ebp+ebp+39] // WingsShowAdditionals_Percent = 39;
        mov WingsShowAdditionals_Buff, 0x005AED5B
        jmp WingsShowAdditionals_Buff
        // ----
        SET_ADD_NEW:
        lea esi, [ebp+ebp+45] // WingsShowAdditionals_Percent = 45;
        mov WingsShowAdditionals_Buff, 0x005AED5B
        jmp WingsShowAdditionals_Buff
        // ----
        EXIT:
        mov WingsShowAdditionals_Buff, 0x005AEDD8
        jmp WingsShowAdditionals_Buff
    }
    // ----
    /*
    WingsShowAdditionals_Percent = 0;
    // ----
    _asm
    {
        mov WingsShowAdditionals_Pointer, cx
    }
    // ----
    if( (WingsShowAdditionals_Pointer >= ITEM(12, 36) && (WingsShowAdditionals_Pointer <= ITEM(12, 40)) || WingsShowAdditionals_Pointer == ITEM(12, 43)) )
    {
        WingsShowAdditionals_Percent = 39;
    }
    else if( WingsShowAdditionals_Pointer >= ITEM(12, 180) && WingsShowAdditionals_Pointer <= ITEM(12, 185) )
    {
        WingsShowAdditionals_Percent = 45;
    }
    // ----
    if( WingsShowAdditionals_Percent > 0 )
    {
        _asm
        {
            lea esi, [ebp+ebp]
            mov ecx, WingsShowAdditionals_Percent
            add esi, ecx
            // ----
            mov WingsShowAdditionals_Buff, 0x005AED5B
            jmp WingsShowAdditionals_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsShowAdditionals_Buff, 0x005AEDD8
            jmp WingsShowAdditionals_Buff
        }
    }
    */
}
//--------------------------------------------------------------------------

Naked(WingsHideExcellentGlow) // -> 28 -> 005EF99A
{
    _asm
    {
        mov edx, dword ptr ss:[ebp+8]
        mov eax, dword ptr ds:[edx+0x30]
        mov WingsHideExcellentGlow_Pointer, eax
    }
    // ----
    if( WingsHideExcellentGlow_Pointer >= ITEM2(12, 36) && WingsHideExcellentGlow_Pointer <= ITEM2(12, 43) 
        || WingsHideExcellentGlow_Pointer >= ITEM2(12, 180) && WingsHideExcellentGlow_Pointer <= ITEM2(12, 185) )
    {
        _asm
        {
            mov WingsHideExcellentGlow_Buff, 0x005EFAF1
            jmp WingsHideExcellentGlow_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsHideExcellentGlow_Buff, 0x005EF9B6
            jmp WingsHideExcellentGlow_Buff
        }
    }
}
//--------------------------------------------------------------------------

Naked(WingsDisableLevelShine) // 19 -> 005EB1B0
{
    _asm
    {
        mov WingsDisableLevelShine_Pointer, edx
        sub edx, ITEM2(12, 15)
        mov WingsDisableLevelShine_SubPointer, edx
        mov dword ptr ss:[ebp-0x4d0], edx
    }
    // ----
    if( WingsDisableLevelShine_Pointer >= ITEM2(12, 180) && WingsDisableLevelShine_Pointer <= ITEM2(12, 185) )
    {
        _asm
        {
            mov dword ptr ss:[ebp-8], 0
        }
    }
    // ----
    if( WingsDisableLevelShine_SubPointer > 32 )
    {
        _asm
        {
            mov WingsDisableLevelShine_Buff, 0x005EB636
            jmp WingsDisableLevelShine_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsDisableLevelShine_Buff, 0x005EB1C9
            jmp WingsDisableLevelShine_Buff
        }
    }
}
//--------------------------------------------------------------------------

Naked(WingsSetGoldName) // -> 42 -> 005A9C08
{
    _asm
    {
        mov ax, word ptr ss:[ebp]
        mov WingsSetGoldName_Pointer, ax
    }
    // ----
    if(  WingsSetGoldName_Pointer >= ITEM(12, 3) && WingsSetGoldName_Pointer <= ITEM(12, 6) 
        || WingsSetGoldName_Pointer == ITEM(13, 30) 
        || WingsSetGoldName_Pointer >= ITEM(12, 36) && WingsSetGoldName_Pointer <= ITEM(12, 40) 
        || WingsSetGoldName_Pointer >= ITEM(12, 42) && WingsSetGoldName_Pointer == ITEM(12, 43) 
        || WingsSetGoldName_Pointer >= ITEM(12, 180) && WingsSetGoldName_Pointer <= ITEM(12, 185) )
    {
        _asm
        {
            mov WingsSetGoldName_Buff, 0x005A9C32
            jmp WingsSetGoldName_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsSetGoldName_Buff, 0x005A9C4D
            jmp WingsSetGoldName_Buff
        }
    }
}
//--------------------------------------------------------------------------

Naked(WingsShowDur) // -> 18 -> 005AF897
{
    _asm
    {
        mov WingsShowDur_Pointer, ax 
    }
    // ----
    if( WingsShowDur_Pointer < ITEM(12, 0)
        || (WingsShowDur_Pointer >= ITEM(12, 180) && WingsShowDur_Pointer <= ITEM(12, 185))
        || (WingsShowDur_Pointer >= ITEM(13, 0) && WingsShowDur_Pointer < ITEM(14, 0)) )
    {
        _asm
        {
            mov WingsShowDur_Buff, 0x005af8cd
            jmp WingsShowDur_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsShowDur_Buff, 0x005af8a9
            jmp WingsShowDur_Buff
        }
    }
}
//--------------------------------------------------------------------------

Naked(WingsHideExcellentStatusText) // -> 6 -> 005AAA94
{
    _asm
    {
        mov WingsHideExcellentStatusText_Pointer, ax
    }
    // ----
    if( WingsHideExcellentStatusText_Pointer == ITEM(13, 30) 
        || (WingsHideExcellentStatusText_Pointer >= ITEM(12, 180) 
        && WingsHideExcellentStatusText_Pointer <= ITEM(12, 185)) )
    {
        _asm
        {
            mov WingsHideExcellentStatusText_Buff, 0x005aaa9a
            jmp WingsHideExcellentStatusText_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsHideExcellentStatusText_Buff, 0x005aaad4
            jmp WingsHideExcellentStatusText_Buff
        }
    }
}
//--------------------------------------------------------------------------

Naked(WingsAddLuckOption) // -> 8 -> 005239F1
{
    _asm
    {
        mov WingsAddLuckOption_Pointer, edx
    }
    // ----
    if( WingsAddLuckOption_Pointer == ITEM(12, 43) || WingsAddLuckOption_Pointer >= ITEM(12, 180) && WingsAddLuckOption_Pointer <= ITEM(12, 185) )
    {
        _asm
        {
            mov WingsAddLuckOption_Buff, 0x005239f9
            jmp WingsAddLuckOption_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsAddLuckOption_Buff, 0x00523a18
            jmp WingsAddLuckOption_Buff
        }
    }
}
//--------------------------------------------------------------------------

Naked(WingsAddExcellentStatus) // -> 12 -> 005237AD
{
    _asm
    {
        mov WingsAddExcellentStatus_Pointer, edx
    }
    // ----
    if( WingsAddExcellentStatus_Pointer == ITEM(12, 43) || ( WingsAddExcellentStatus_Pointer >= ITEM(12, 180) && WingsAddExcellentStatus_Pointer <= ITEM(12, 185) ) )
    {
        _asm
        {
            mov WingsAddExcellentStatus_Buff, 0x005237b9
            jmp WingsAddExcellentStatus_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsAddExcellentStatus_Buff, 0x005238a4
            jmp WingsAddExcellentStatus_Buff
        }
    }
}
//--------------------------------------------------------------------------

Naked(WingsAdd28Option) // -> 199 -> 00524578
{
    _asm
    {
        mov edx, dword ptr ss:[ebp+8]
        // ----
        movsx eax, word ptr ds:[edx]
        mov WingsAdd28Option_Pointer, eax
        // ----
        mov edx, dword ptr ss:[ebp-0x14]
        mov WingsAdd28Option_NewOption, edx
        // ----
        mov cl, byte ptr ss:[ebp-0x10]
        mov WingsAdd28Option_OptionValue, cl
    }
    // ----
    //TDEBUG("[%s] Pointer: [%d:%d]", __FUNCTION__, WingsAdd28Option_Pointer / 512, WingsAdd28Option_Pointer % 512);
    // ----
    switch(WingsAdd28Option_Pointer)
    {
    case ITEM(12, 43):
        {
            if( (WingsAdd28Option_NewOption >> 4) & 1 )
            {
                WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                WingsAdd28Option_OptionNumber    = eItemOption::WizardryDamage;
            }
            else
            {
                if( (WingsAdd28Option_NewOption >> 5) & 1 )
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                    WingsAdd28Option_OptionNumber    = eItemOption::CurseSpell;
                }
                else
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue;
                    WingsAdd28Option_OptionNumber    = eItemOption::HPRecovery;
                }
            }
        }
        break;
        // --
    case ITEM(12, 180):
        {
            if( (WingsAdd28Option_NewOption >> 4) & 1 )
            {
                WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                WingsAdd28Option_OptionNumber    = eItemOption::WizardryDamage;
            }
            else
            {
                if( (WingsAdd28Option_NewOption >> 5) & 1 )
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                    WingsAdd28Option_OptionNumber    = eItemOption::Defense;
                }
                else
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue;
                    WingsAdd28Option_OptionNumber    = eItemOption::HPRecovery;
                }
            }
        }
        break;
        // --
    case ITEM(12, 181):
        {
            if( (WingsAdd28Option_NewOption >> 4) & 1 )
            {
                WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                WingsAdd28Option_OptionNumber    = eItemOption::Damage;
            }
            else
            {
                if( (WingsAdd28Option_NewOption >> 5) & 1 )
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                    WingsAdd28Option_OptionNumber    = eItemOption::Defense;
                }
                else
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue;
                    WingsAdd28Option_OptionNumber    = eItemOption::HPRecovery;
                }
            }
        }
        break;
        // --
    case ITEM(12, 182):
        {
            if( (WingsAdd28Option_NewOption >> 4) & 1 )
            {
                WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                WingsAdd28Option_OptionNumber    = eItemOption::Damage;
            }
            else
            {
                if( (WingsAdd28Option_NewOption >> 5) & 1 )
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                    WingsAdd28Option_OptionNumber    = eItemOption::Defense;
                }
                else
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue;
                    WingsAdd28Option_OptionNumber    = eItemOption::HPRecovery;
                }
            }
        }
        break;
        // --
    case ITEM(12, 183):
        {
            if( (WingsAdd28Option_NewOption >> 4) & 1 )
            {
                WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                WingsAdd28Option_OptionNumber    = eItemOption::Damage;
            }
            else
            {
                if( (WingsAdd28Option_NewOption >> 5) & 1 )
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                    WingsAdd28Option_OptionNumber    = eItemOption::WizardryDamage;
                }
                else
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue;
                    WingsAdd28Option_OptionNumber    = eItemOption::HPRecovery;
                }
            }
        }
        break;
        // --
    case ITEM(12, 184):
        {
            if( (WingsAdd28Option_NewOption >> 4) & 1 )
            {
                WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                WingsAdd28Option_OptionNumber    = eItemOption::Damage;
            }
            else
            {
                if( (WingsAdd28Option_NewOption >> 5) & 1 )
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                    WingsAdd28Option_OptionNumber    = eItemOption::Defense;
                }
                else
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue;
                    WingsAdd28Option_OptionNumber    = eItemOption::HPRecovery;
                }
            }
        }
        break;
        // --
    case ITEM(12, 185):
        {
            if( (WingsAdd28Option_NewOption >> 4) & 1 )
            {
                WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                WingsAdd28Option_OptionNumber    = eItemOption::WizardryDamage;
            }
            else
            {
                if( (WingsAdd28Option_NewOption >> 5) & 1 )
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue * 4;
                    WingsAdd28Option_OptionNumber    = eItemOption::CurseSpell;
                }
                else
                {
                    WingsAdd28Option_OptionStat        = WingsAdd28Option_OptionValue;
                    WingsAdd28Option_OptionNumber    = eItemOption::HPRecovery;
                }
            }
        }
        break;
        // --
    default:
        {
            _asm
            {
                mov WingsAdd28Option_Buff, 0x0052463F
                jmp WingsAdd28Option_Buff
            }
        }
        break;
    }
    // ----
    //TDEBUG("[%s] OptionNumber == %d", __FUNCTION__, WingsAdd28Option_OptionNumber);
    // ----
    _asm
    {
        mov edx, dword ptr ss:[ebp-0x10]
        shl edx, 2
        // ----
        mov eax, dword ptr ss:[ebp+8]
        xor ecx, ecx
        // ----
        mov cl, byte ptr ds:[eax+0x25]
        mov eax, dword ptr ss:[ebp+8]
        mov dl, WingsAdd28Option_OptionStat
        mov byte ptr ds:[ecx+eax+0x2e], dl
        // ----
        xor edx, edx
        mov dl, byte ptr ds:[eax+0x25]
        mov cl, WingsAdd28Option_OptionNumber
        mov byte ptr ds:[edx+eax+0x26], cl
        // ----
        add dl, 1
        mov byte ptr ds:[eax+0x25], dl
        // ----
        mov WingsAdd28Option_Buff, 0x0052463F
        jmp WingsAdd28Option_Buff
    }
}
//--------------------------------------------------------------------------

Naked(WingsSetInvisibleEffect) // -> 12 -> 005EC31D
{
    _asm
    {
        mov WingsSetInvisibleEffect_Buff, esi
        // ----
        mov ecx, dword ptr ss:[ebp+8]
        mov esi, dword ptr ds:[ecx+0x30]
        mov WingsSetInvisibleEffect_Pointer, esi
        // ----
        mov esi, WingsSetInvisibleEffect_Buff
    }
    // ----
    if( WingsSetInvisibleEffect_Pointer == 0x1D89 
        || WingsSetInvisibleEffect_Pointer == ITEM2(12, 182) 
        || WingsSetInvisibleEffect_Pointer == ITEM2(12, 183) )
    {
        _asm
        {
            mov WingsSetInvisibleEffect_Buff, 0x005EC329
            jmp WingsSetInvisibleEffect_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsSetInvisibleEffect_Buff, 0x005EC39F
            jmp WingsSetInvisibleEffect_Buff
        }
    }
}
//--------------------------------------------------------------------------

Naked(WingsAllowJewelsInsert) // -> 9 -> 007927BE
{
    _asm
    {
        mov WingsAllowJewelsInsert_Buff, eax
        // ----
        mov eax, dword ptr ss:[ebp-0x30]
        mov WingsAllowJewelsInsert_Pointer, eax
        // ----
        mov eax, WingsAllowJewelsInsert_Buff
    }
    // ----
    if( WingsAllowJewelsInsert_Pointer == ITEM(13, 30) 
        || (WingsAllowJewelsInsert_Pointer >= ITEM(12, 180) 
        && WingsAllowJewelsInsert_Pointer <= ITEM(12, 185)) )
    {
        _asm
        {
            mov WingsAllowJewelsInsert_Buff, 0x007927dd
            jmp WingsAllowJewelsInsert_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsAllowJewelsInsert_Buff, 0x007927c7
            jmp WingsAllowJewelsInsert_Buff
        }
    }
}
//---------------------------------------------------------------------------

Naked(WingsAddSpecialEffect) // -> 16 -> 00509621
{
    //7e04 - äûì÷àòûé øàð
    //7e6e - îãîíü
    //7e22 - õðåíü âî âñå ñòîðîíû (íîðì äëÿ ñóììîíåðà), îò âîäû
    //7e2c - ïóçûðèêè
    //7e72(70) - äûì (êàê íà áö, îò îãíÿ)
    //7e1f - ñòàíäàðòíàÿ
    //7d02 - øàð
    //7d30 - ìàëåíüêèå øàðèêè âî âñå ñòîðîíû[2]
    //7d36 - êðóòÿøèéñÿ ñèíèé êîìîê õóéíè (äëÿ ñì êðûëüåâ íîðì)
    //0 - ïîäñâåòêà
    //1 - øàð ñî ñëåäîì
    //2 - ñâåò
    //7d48 - øàð, êàê 7d4d, òîëüêî ìèãàåò
    //7d4d - êðàñíûé øàð ñî ñëåäîì (äëÿ áê êðûëüåâ íîðì)
    //0 - ñòîëá
    //1 - øàð ñî ñëåäîì
    //2 - øàð ìåãàþùèé
    //7d54 - áðûçãè êðîâè
    //7d65 - äûì çåëåíûé â ðàçíûå ñòîðîíû
    //7d66 - êîðè÷íåâûé ñëåä ïûëè
    //7D69 - äûì (÷åðíûé)
    //1 - ñëåä äûìà
    //2 - â ðàçíûå ñòîðîíû
    //7d71 - çâåçäî÷êè
    //0 = ïîëîñêà çà òîáîé
    //1 = ïî ìåíüøå
    //7d77 - çâåçäî àóðà (äëÿ ýëüô êðûëüåâ)
    //0 = òîëñòàÿ àóðà ñëåäóþùàÿ çà òîáîé
    //1 = ìåëêèå çâåçäî÷êè (åëè çàìåòíûå)
    //2 = ìåãàþùàÿ ïîäöâåòêà
    //7d83 - àóðà èç øàðèêîâ[3]
    //7dd6 - ïóçûðèêè
    // ----
    _asm
    {
        mov eax, dword ptr ss:[ebp+8]
        mov esi, dword ptr ds:[eax+0x1c8]
        mov WingsAddSpecialEffect_Pointer, esi
    }
    // ----
    //TDEBUG("[%s] Pointer: [%d:%d]", __FUNCTION__, (ItemPointer - ITEM_INTER) / 512, (ItemPointer - ITEM_INTER) % 512);
    // ----
    if( WingsAddSpecialEffect_Pointer == ITEM2(12, 180) || WingsAddSpecialEffect_Pointer == ITEM2(12 * 161, 180) ) // Complete
    {
        _asm
        {
            MOV DWORD PTR SS:[EBP-0x1C], 0xC1D00000
            MOV DWORD PTR SS:[EBP-0x18], 0x40A00000
            MOV DWORD PTR SS:[EBP-0x14], 0x428C0000
            // ----
            PUSH 1
            LEA EAX,[EBP-0x44]
            mov WingsAddSpecialEffect_Arg7, eax
            PUSH EAX
            LEA ECX,[EBP-0x1C]
            mov WingsAddSpecialEffect_Arg6, ecx
            PUSH ECX
            MOV EDX,DWORD PTR SS:[EBP+0x0C]
            MOV EAX,DWORD PTR DS:[EDX+0x1A4]
            mov WingsAddSpecialEffect_Arg5, eax
            PUSH EAX
            MOV ECX,DWORD PTR SS:[EBP-0x34]
            mov WingsAddSpecialEffect_This, ecx
            mov WingsAddSpecialEffect_Buff, 0x004E171E
            CALL WingsAddSpecialEffect_Buff
            // ----
            MOV ECX,DWORD PTR SS:[EBP+0x0C]
            ADD ECX, 0x9C
            mov WingsAddSpecialEffect_Arg4, ecx
            MOV EDX,DWORD PTR SS:[EBP+0x0C]
            ADD EDX, 0x1C8
            mov WingsAddSpecialEffect_Arg3, edx
            LEA EAX,[EBP-0x44]
            mov WingsAddSpecialEffect_Arg2, eax
        }
        MU_SetEffect(0x7d36, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 0, 3.0, 0);
    }
    else if( WingsAddSpecialEffect_Pointer == ITEM2(12, 181) || WingsAddSpecialEffect_Pointer == ITEM2(12 * 161, 181) ) // Complete
    {
        _asm
        {
            MOV DWORD PTR SS:[EBP-0x1C], 0xC1D00000
            MOV DWORD PTR SS:[EBP-0x18], 0x40A00000
            MOV DWORD PTR SS:[EBP-0x14], 0x418C0000
            // ----
            PUSH 1
            LEA EAX,[EBP-0x44]
            mov WingsAddSpecialEffect_Arg7, eax
            PUSH EAX
            LEA ECX,[EBP-0x1C]
            mov WingsAddSpecialEffect_Arg6, ecx
            PUSH ECX
            MOV EDX,DWORD PTR SS:[EBP+0x0C]
            MOV EAX,DWORD PTR DS:[EDX+0x1A4]
            mov WingsAddSpecialEffect_Arg5, eax
            PUSH EAX
            MOV ECX,DWORD PTR SS:[EBP-0x34]
            mov WingsAddSpecialEffect_This, ecx
            mov WingsAddSpecialEffect_Buff, 0x004E171E
            CALL WingsAddSpecialEffect_Buff
            // ----
            MOV ECX,DWORD PTR SS:[EBP+0x0C]
            ADD ECX, 0x9C
            mov WingsAddSpecialEffect_Arg4, ecx
            MOV EDX,DWORD PTR SS:[EBP+0x0C]
            ADD EDX, 0x1C8
            mov WingsAddSpecialEffect_Arg3, edx
            LEA EAX,[EBP-0x44]
            mov WingsAddSpecialEffect_Arg2, eax
        }
        MU_SetEffect(0x7d4d, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 2.0, 1);
        MU_SetEffect(0x7e6e, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 1.4, 1);
    }
    else if( WingsAddSpecialEffect_Pointer == ITEM2(12, 182) || WingsAddSpecialEffect_Pointer == ITEM2(12 * 161, 182) ) // Complete
    {
        _asm
        {
            MOV DWORD PTR SS:[EBP-0x1C], 0xC1D00000
            MOV DWORD PTR SS:[EBP-0x18], 0x40A00000
            MOV DWORD PTR SS:[EBP-0x14], 0x428C0000
            // ----
            PUSH 1 
            LEA EAX,[EBP-0x44]
            mov WingsAddSpecialEffect_Arg7, eax
            PUSH EAX
            LEA ECX,[EBP-0x1C]
            mov WingsAddSpecialEffect_Arg6, ecx
            PUSH ECX
            MOV EDX,DWORD PTR SS:[EBP+0x0C]
            MOV EAX,DWORD PTR DS:[EDX+0x1A4]
            mov WingsAddSpecialEffect_Arg5, eax
            PUSH EAX
            MOV ECX,DWORD PTR SS:[EBP-0x34]
            mov WingsAddSpecialEffect_This, ecx
            mov WingsAddSpecialEffect_Buff, 0x004E171E
            CALL WingsAddSpecialEffect_Buff
            // ----
            MOV ECX,DWORD PTR SS:[EBP+0x0C]
            ADD ECX, 0x9C
            mov WingsAddSpecialEffect_Arg4, ecx
            MOV EDX,DWORD PTR SS:[EBP+0x0C]
            ADD EDX, 0x1C8
            mov WingsAddSpecialEffect_Arg3, edx
            LEA EAX,[EBP-0x44]
            mov WingsAddSpecialEffect_Arg2, eax
        }
        MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 3.0, 1);
        MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 3.0, 1);
        MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 4.0, 1);
        MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 2.0, 1);
        MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 1.0, 1);
        MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 2, 2.0, 1);
        MU_SetEffect(0x7d83, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 3, 1.0, 1);
    }
    /*else if( ItemPointer == ITEM2(12, 183) || ItemPointer == ITEM2(12 * 161, 183) ) //
    {
        _asm
        {
            MOV DWORD PTR SS:[EBP-0x1C], 0xC1D00000
            MOV DWORD PTR SS:[EBP-0x18], 0x40A00000
            MOV DWORD PTR SS:[EBP-0x14], 0x428C0000
            // ----
            PUSH 1
            LEA EAX,[EBP-0x44]
            mov Arg77, eax
            PUSH EAX
            LEA ECX,[EBP-0x1C]
            mov Arg66, ecx
            PUSH ECX
            MOV EDX,DWORD PTR SS:[EBP+0x0C]
            MOV EAX,DWORD PTR DS:[EDX+0x1A4]
            mov Arg55, eax
            PUSH EAX
            MOV ECX,DWORD PTR SS:[EBP-0x34]
            mov This, ecx
            mov Buff, 0x004E171E
            CALL Buff
            // ----
            MOV ECX,DWORD PTR SS:[EBP+0x0C]
            ADD ECX, 0x9C
            mov Arg44, ecx
            MOV EDX,DWORD PTR SS:[EBP+0x0C]
            ADD EDX, 0x1C8
            mov Arg33, edx
            LEA EAX,[EBP-0x44]
            mov Arg22, eax
        }
        MU_SetEffect(0x7d36, Arg22, Arg33, Arg44, 2, 0.5, 0);
    }*/
    else if( WingsAddSpecialEffect_Pointer == ITEM2(12, 184) || WingsAddSpecialEffect_Pointer == ITEM2(12 * 161, 184) ) // Complete
    {
        _asm
        {
            MOV DWORD PTR SS:[EBP-0x1C], 0
            MOV DWORD PTR SS:[EBP-0x18], 0x41A00000
            MOV DWORD PTR SS:[EBP-0x14], 0x428C0000
            // ----
            PUSH 1
            LEA EAX,[EBP-0x44]
            mov WingsAddSpecialEffect_Arg7, eax
            PUSH EAX
            LEA ECX,[EBP-0x1C]
            mov WingsAddSpecialEffect_Arg6, ecx
            PUSH ECX
            MOV EDX,DWORD PTR SS:[EBP+0x0C]
            MOV EAX,DWORD PTR DS:[EDX+0x1A4]
            mov WingsAddSpecialEffect_Arg5, eax
            PUSH EAX
            MOV ECX,DWORD PTR SS:[EBP-0x34]
            mov WingsAddSpecialEffect_This, ecx
            mov WingsAddSpecialEffect_Buff, 0x004E171E
            CALL WingsAddSpecialEffect_Buff
            // ----
            MOV ECX,DWORD PTR SS:[EBP+0x0C]
            ADD ECX, 0x9C
            mov WingsAddSpecialEffect_Arg4, ecx
            MOV EDX,DWORD PTR SS:[EBP+0x0C]
            ADD EDX, 0x1C8
            mov WingsAddSpecialEffect_Arg3, edx
            LEA EAX, [EBP-0x44]
            mov WingsAddSpecialEffect_Arg2, eax
        }
        MU_SetEffect(0x7D69, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 2, 0.5, 0);
    }
    else if( WingsAddSpecialEffect_Pointer == ITEM2(12, 185) || WingsAddSpecialEffect_Pointer == ITEM2(12 * 161, 185) ) // Complete
    {
        _asm
        {
            MOV DWORD PTR SS:[EBP-0x1C],0xC1D00000
            MOV DWORD PTR SS:[EBP-0x18],0x40A00000
            MOV DWORD PTR SS:[EBP-0x14],0x428C0000
            // ----
            PUSH 1
            LEA EAX,[EBP-0x44]
            mov WingsAddSpecialEffect_Arg7, eax
            PUSH EAX
            LEA ECX,[EBP-0x1C]
            mov WingsAddSpecialEffect_Arg6, ecx
            PUSH ECX
            MOV EDX,DWORD PTR SS:[EBP+0x0C]
            MOV EAX,DWORD PTR DS:[EDX+0x1A4]
            mov WingsAddSpecialEffect_Arg5, eax
            PUSH EAX
            MOV ECX,DWORD PTR SS:[EBP-0x34]
            mov WingsAddSpecialEffect_This, ecx
            mov WingsAddSpecialEffect_Buff, 0x004E171E
            CALL WingsAddSpecialEffect_Buff
            // ----
            MOV ECX,DWORD PTR SS:[EBP+0x0C]
            ADD ECX, 0x9C
            mov WingsAddSpecialEffect_Arg4, ecx
            MOV EDX,DWORD PTR SS:[EBP+0x0C]
            ADD EDX, 0x1C8
            mov WingsAddSpecialEffect_Arg3, edx
            LEA EAX,[EBP-0x44]
            mov WingsAddSpecialEffect_Arg2, eax
        }
        MU_SetEffect(0x7e22, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 2.0, 1);
        MU_SetEffect(0x7d77, WingsAddSpecialEffect_Arg2, WingsAddSpecialEffect_Arg3, WingsAddSpecialEffect_Arg4, 1, 3.0, 1);
    }
    // ----
    _asm
    {
        mov eax, dword ptr ss:[ebp+0x0c]
        mov esi, dword ptr ds:[eax+0x30]
        mov WingsAddSpecialEffect_Pointer, esi
    }
    // ----
    if( WingsAddSpecialEffect_Pointer != 0x2b5 )
    {
        _asm
        {
            mov WingsAddSpecialEffect_Buff, 0x00509D2E
            jmp WingsAddSpecialEffect_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsAddSpecialEffect_Buff, 0x00509631
            jmp WingsAddSpecialEffect_Buff
        }
    }
}
//---------------------------------------------------------------------------

Naked(WingsAllowListMove) // -> 7 -> 0078CB1B
{
    _asm
    {
        mov WingsAllowListMove_Pointer, eax
    }
    // ----
    if( WingsAllowListMove_Pointer == ITEM(13, 30)
        || (WingsAllowListMove_Pointer >= ITEM(12, 180) 
        && WingsAllowListMove_Pointer <= ITEM(12, 185)) )
    {
        _asm
        {
            mov WingsAllowListMove_Buff, 0x0078CB59
            jmp WingsAllowListMove_Buff
        }
    }
    else
    {
        _asm
        {
            mov WingsAllowListMove_Buff, 0x0078CB22
            jmp WingsAllowListMove_Buff
        }
    }
}
//---------------------------------------------------------------------------

void cWingsPropertiesLoad()
{
    SetRange((LPVOID)0x0078CB1B, 7, ASM::NOP);
    SetJmp((LPVOID)0x0078CB1B, WingsAllowListMove);
    // ----
    SetRange((LPVOID)0x00509621, 16, ASM::NOP);
    SetJmp((LPVOID)0x00509621, WingsAddSpecialEffect);
    // ----
    SetRange((LPVOID)0x005EC31D, 12, ASM::NOP);
    SetJmp((LPVOID)0x005EC31D, WingsSetInvisibleEffect);
    // ----
    SetRange((LPVOID)0x005158CF, 57, ASM::NOP);
    SetJmp((LPVOID)0x005158CF, WingsAddCharSet);
    // ----
    SetRange((LPVOID)0x005EF99A, 28, ASM::NOP);
    SetJmp((LPVOID)0x005EF99A, WingsHideExcellentGlow);
    // ----
    SetRange((LPVOID)0x005EB1B0, 19, ASM::NOP);
    SetJmp((LPVOID)0x005EB1B0, WingsDisableLevelShine);
    // ----
    SetRange((LPVOID)0x00524578, 199, ASM::NOP);
    SetJmp((LPVOID)0x00524578, WingsAdd28Option);
    // ----
    SetRange((LPVOID)0x005A9C08, 42, ASM::NOP);
    SetJmp((LPVOID)0x005A9C08, WingsSetGoldName);
    // ----
    SetRange((LPVOID)0x005AED3E, 29, ASM::NOP);
    SetJmp((LPVOID)0x005AED3E, WingsShowAdditionals);
    // ----
    SetRange((LPVOID)0x005AF897, 18, ASM::NOP);
    SetJmp((LPVOID)0x005AF897, WingsShowDur);
    // ----
    SetRange((LPVOID)0x005AAA94, 6, ASM::NOP);
    SetJmp((LPVOID)0x005AAA94, WingsHideExcellentStatusText);
    // ----
    SetRange((LPVOID)0x005239F1, 8, ASM::NOP);
    SetJmp((LPVOID)0x005239F1, WingsAddLuckOption);
    // ----
    SetRange((LPVOID)0x005237AD, 12, ASM::NOP);
    SetJmp((LPVOID)0x005237AD, WingsAddExcellentStatus);
    // ----
    SetRange((LPVOID)0x007927BE, 9, ASM::NOP);
    SetJmp((LPVOID)0x007927BE, WingsAllowJewelsInsert);
    // ----
    SetHook((LPVOID)WingsRepairSprite, (LPVOID)0x0076BA9C, ASM::CALL);
}
#endif

Wings.h
Code:
#pragma once
#ifdef CLIENT_0

typedef int (__cdecl *pSetEffect)(DWORD a1, DWORD a2, DWORD a3, DWORD a4, DWORD a5, float a6, DWORD a7);
extern pSetEffect MU_SetEffect;

void cWingsPropertiesLoad();
#endif

I forget, the offsets are for main 1.03.25 Japan.
I hope this help you, good luck with your project.


About add new combination on Chaos Machine...
Can you lead me to a guide on how to do it?
 
Initiate Mage
Joined
Apr 22, 2009
Messages
3
Reaction score
0
please offset 1.04d of
Code:
#define SetItemSpecialStat        ((int(*)(short ItemID, int Arg2, BYTE SpecialOption, BYTE SpecialValue, int Arg5)) 0x5A6360) //5C0DC0 1.03Y+
#define oSetItemSpecialStat        0x005AF065	//005CA0B0 1.03Y+

thank you very much

sorry bad english
 
Newbie Spellweaver
Joined
Nov 7, 2011
Messages
11
Reaction score
1
someone would have the offsets below to 1:02:19 JPN version? '-'


#define iLoadModel 0x00
#define iLoadTexture 0x00
// ----
#define iLoadModel_Call 0x00
#define iLoadTexture_Call 0x00
// ----
#define iLoadModel_Void 0x00
#define iLoadTexture_Void 0x00
 
Newbie Spellweaver
Joined
May 10, 2006
Messages
48
Reaction score
19
ellow guyz, how can i add new line in mix.bmd? coz im using MagicHand from DarkSim and cant do that, when i edit all cells, the section "Used Items" back to 0 (zero). i cant add itens =/

can anybody help me?
 
Banned
Banned
Joined
Jan 1, 2014
Messages
793
Reaction score
81
It is possible if you use Premium tool kit which is Cracked.
 
Skilled Illusionist
Joined
Dec 9, 2009
Messages
373
Reaction score
42
Since this is thread about New Wing, I would like to ask about the Custom Wing as well.

I am using zTeam season 6 ep3 source, added New Wing, no problem on visual but the Wing just show 0% for damage % increase and absorb, where can I edit that? I have added the option for New Wing in ObjAttack.cpp like below but in client, it still not show any rather than 0%:

For damage % increase:
else if( Wing->m_Type >= ITEMGET(12,180) && Wing->m_Type <= ITEMGET(12,183)) //Cloak + Wing Lvl 2.5
{
AttackDamage = AttackDamage * (Wing->m_Level*2 + 135) / 100;
}

For damage % absorb:
else if( Wing->m_Type >= ITEMGET(12,180) && Wing->m_Type <= ITEMGET(12,183)) //Cloak + Wing Lvl 2.5
{
if( Wing->m_Type == ITEMGET(12,180))
{
float damage = AttackDamage * (82 - Wing->m_Level*2) / 100.0f;
AttackDamage = (int)damage;
}
else
{
float damage = AttackDamage * (70 - Wing->m_Level*2) / 100.0f;
AttackDamage = (int)damage;
}
 
Newbie Spellweaver
Joined
Jun 14, 2008
Messages
36
Reaction score
16
Since this is thread about New Wing, I would like to ask about the Custom Wing as well.

I am using zTeam season 6 ep3 source, added New Wing, no problem on visual but the Wing just show 0% for damage % increase and absorb, where can I edit that? I have added the option for New Wing in ObjAttack.cpp like below but in client, it still not show any rather than 0%:

For damage % increase:
else if( Wing->m_Type >= ITEMGET(12,180) && Wing->m_Type <= ITEMGET(12,183)) //Cloak + Wing Lvl 2.5
{
AttackDamage = AttackDamage * (Wing->m_Level*2 + 135) / 100;
}

For damage % absorb:
else if( Wing->m_Type >= ITEMGET(12,180) && Wing->m_Type <= ITEMGET(12,183)) //Cloak + Wing Lvl 2.5
{
if( Wing->m_Type == ITEMGET(12,180))
{
float damage = AttackDamage * (82 - Wing->m_Level*2) / 100.0f;
AttackDamage = (int)damage;
}
else
{
float damage = AttackDamage * (70 - Wing->m_Level*2) / 100.0f;
AttackDamage = (int)damage;
}

Have some problem too, i'm using main 1.04d. Anyone help?
 
Back
Top