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!

Disable Armor Awake / Disable Weapon Piercing

Junior Spellweaver
Joined
Feb 25, 2014
Messages
163
Reaction score
40
Hello, not sure if this has been released before but here it is.

DISABLING AWAKES

Since in my opinion this is overpowered and awakening pets/fashions should never have existed, here is how I disabled awakes on everything but suits, weapons and shield.

randomoption.cpp -> Change CRandomOptionProperty::GetRandomOptionKind to:
Code:
int CRandomOptionProperty::GetRandomOptionKind( CItemElem* pItemElem )
{
    ItemProp* pProp  = pItemElem->GetProp();
    switch( pProp->dwParts )
    {
  case PARTS_UPPER_BODY:
  case PARTS_RWEAPON:
  case PARTS_SHIELD:
#ifndef __ONLY_SUIT_AWAKES
#if __VER >= 12 // __J12_0
  // °¢¼º °¡´É ÆÄÃ÷ Ãß°¡
  case PARTS_HAND:    // ¼Õ
  case PARTS_FOOT:    // ¹ß
  case PARTS_CAP:  // ¸Ó¸®
#endif    // __J12_0
  case PARTS_CLOTH:
  case PARTS_CLOAK:
#if __VER >= 12 // __J12_0
  case PARTS_HAT:  // °Ñ¿Ê ¸Ó¸®
  case PARTS_GLOVE:    // °Ñ¿Ê ¼Õ
  case PARTS_BOOTS:    // °Ñ¿Ê ¹ß
#endif    // __J12_0
   return static_cast<int>( eBlessing );
#if __VER >= 12 // __PET_0519
  default:
   {
    // C±Þ ÀÌ»óÀÇ ½Ã½ºÅÛ ÆêÀΰ¡?
    if( pProp->dwItemKind3 == IK3_EGG && pItemElem->m_pPet && pItemElem->m_pPet->GetLevel() >= PL_C )
     return static_cast<int>( eSystemPet );
    // ¸ÔÆêÀΰ¡?
    else if( pProp->dwItemKind3 == IK3_PET )
     return static_cast<int>( eEatPet );
    break;
   }
#endif    // __PET_0519

#endif
  return static_cast<int>(eAwakening);
    }
    return -1;
}

DISABLING WEAPON PIERCING

This is also something that should have never existed in my opinion, this will disable the possibility to pierce weapons.

This is how I did it and seems to work, if you have a better solution feel free to comment below.

Item.cpp -> In the function BOOL CItemElem::IsPierceAble

Search for:

Code:
if( GetProp()->dwItemKind3 == IK3_SUIT )
    {
  if( nPiercedSize <= MAX_PIERCING_SUIT )
  {
   if( dwTargetItemKind3 == NULL_ID )
    return TRUE;
   else if( dwTargetItemKind3 == IK3_SOCKETCARD )
     return TRUE;
  }
    }

Add below:

Code:
#ifndef  __ONLY_SUIT_PIERCING
    else if (GetProp()->dwItemKind3 == IK3_SHIELD
  || GetProp()->dwItemKind2 == IK2_WEAPON_DIRECT
  || GetProp()->dwItemKind2 == IK2_WEAPON_MAGIC
  )
    {
  if (nPiercedSize <= MAX_PIERCING_WEAPON)
  {
   if (dwTargetItemKind3 == NULL_ID)
    return TRUE;
   else if (dwTargetItemKind3 == IK3_SOCKETCARD2)
    return TRUE;
  }
    }
#endif // !__ONLY_SUIT_PIERCING

Lastly, add the defines in your ServerCommon.h or whatever file you use to define stuff.

Code:
#define __ONLY_SUIT_AWAKES
#define __ONLY_SUIT_PIERCING
 
Back
Top