Jump to content

Costume weapon effect bug


Recommended Posts

Hi,

When i equip a costume weapon, the sword +7 / +8 / +9 effect not disappear. 

If i ride a mount or relog, the effect disappear.

Can somebody give me a fix to the effect disappear immediately when i equip a costume weapon?

 

Edit: Figured out and solved UserInterface/InstanceBase.cpp

 

void CInstanceBase::RefreshState(DWORD dwMotIndex, bool isLoop)
{
	DWORD dwPartItemID = m_GraphicThingInstance.GetPartItemID(CRaceData::PART_WEAPON);

	BYTE byItemType = 0xff;
	BYTE bySubType = 0xff;

	CItemManager & rkItemMgr = CItemManager::Instance();
	CItemData * pItemData;
	
	if (rkItemMgr.GetItemDataPointer(dwPartItemID, &pItemData))
	{
		byItemType = pItemData->GetType();
		bySubType = pItemData->GetWeaponType();
	}

	if (IsPoly())
	{
		SetMotionMode(CRaceMotionData::MODE_GENERAL);
	}
	else if (IsWearingDress())
	{
		SetMotionMode(CRaceMotionData::MODE_WEDDING_DRESS);
	}
	else if (IsHoldingPickAxe())
	{
		if (m_kHorse.IsMounting())
		{
			SetMotionMode(CRaceMotionData::MODE_HORSE);
		}
		else
		{
			SetMotionMode(CRaceMotionData::MODE_GENERAL);
		}
	}
	else if (CItemData::ITEM_TYPE_ROD == byItemType)
	{
		if (m_kHorse.IsMounting())
		{
			SetMotionMode(CRaceMotionData::MODE_HORSE);
		}
		else
		{
			SetMotionMode(CRaceMotionData::MODE_FISHING);
		}
	}
	else if (m_kHorse.IsMounting())
	{
		switch (bySubType)
		{
			case CItemData::COSTUME_WEAPON_SWORD:
				__ClearWeaponRefineEffect();
			case CItemData::WEAPON_SWORD:
				SetMotionMode(CRaceMotionData::MODE_HORSE_ONEHAND_SWORD);
				break;

			case CItemData::COSTUME_WEAPON_TWO_HANDED:
				__ClearWeaponRefineEffect();
			case CItemData::WEAPON_TWO_HANDED:
				SetMotionMode(CRaceMotionData::MODE_HORSE_TWOHAND_SWORD); // Only Warrior
				break;

			case CItemData::COSTUME_WEAPON_DAGGER:
				__ClearWeaponRefineEffect();
			case CItemData::WEAPON_DAGGER:
				SetMotionMode(CRaceMotionData::MODE_HORSE_DUALHAND_SWORD); // Only Assassin
				break;

			case CItemData::COSTUME_WEAPON_FAN:
				__ClearWeaponRefineEffect();
			case CItemData::WEAPON_FAN:
				SetMotionMode(CRaceMotionData::MODE_HORSE_FAN); // Only Shaman
				break;

			case CItemData::COSTUME_WEAPON_BELL:
				__ClearWeaponRefineEffect();
			case CItemData::WEAPON_BELL:
				SetMotionMode(CRaceMotionData::MODE_HORSE_BELL); // Only Shaman
				break;

			case CItemData::COSTUME_WEAPON_BOW:
				__ClearWeaponRefineEffect();
			case CItemData::WEAPON_BOW:
				SetMotionMode(CRaceMotionData::MODE_HORSE_BOW); // Only Shaman
				break;

			default:
				SetMotionMode(CRaceMotionData::MODE_HORSE);
				break;
		}
	}
	else
	{
		switch (bySubType)
		{
			case CItemData::COSTUME_WEAPON_SWORD:
			__ClearWeaponRefineEffect();
			case CItemData::WEAPON_SWORD:
				SetMotionMode(CRaceMotionData::MODE_ONEHAND_SWORD);
				break;

			case CItemData::COSTUME_WEAPON_TWO_HANDED:
			__ClearWeaponRefineEffect();
			case CItemData::WEAPON_TWO_HANDED:
				SetMotionMode(CRaceMotionData::MODE_TWOHAND_SWORD); // Only Warrior
				break;

			case CItemData::COSTUME_WEAPON_DAGGER:
			__ClearWeaponRefineEffect();
			case CItemData::WEAPON_DAGGER:
				SetMotionMode(CRaceMotionData::MODE_DUALHAND_SWORD); // Only Assassin
				break;

			case CItemData::COSTUME_WEAPON_BOW:
			__ClearWeaponRefineEffect();
			case CItemData::WEAPON_BOW:
				SetMotionMode(CRaceMotionData::MODE_BOW); // Only Assassin
				break;

			case CItemData::COSTUME_WEAPON_FAN:
			__ClearWeaponRefineEffect();
			case CItemData::WEAPON_FAN:
				SetMotionMode(CRaceMotionData::MODE_FAN); // Only Shaman
				break;

			case CItemData::COSTUME_WEAPON_BELL:
			__ClearWeaponRefineEffect();
			case CItemData::WEAPON_BELL:
				SetMotionMode(CRaceMotionData::MODE_BELL); // Only Shaman
				break;

			case CItemData::WEAPON_ARROW:
			default:
				SetMotionMode(CRaceMotionData::MODE_GENERAL);
				break;
		}
	}

	if (isLoop)
		m_GraphicThingInstance.InterceptLoopMotion(dwMotIndex);
	else
		m_GraphicThingInstance.InterceptOnceMotion(dwMotIndex);

	RefreshActorInstance();
}

 

  • Love 1
Link to comment
Share on other sites

  • 2 years later...

 

Hi! It doesn't even disappear because you don't have to look there :)

bool CInstanceBase::SetWeapon(DWORD eWeapon)
{
    if (IsPoly())
        return false;

    if (__IsShapeAnimalWear())
        return false;

    if (__IsChangableWeapon(eWeapon) == false)
        eWeapon = 0;

    m_GraphicThingInstance.AttachWeapon(eWeapon);
    m_awPart[CRaceData::PART_WEAPON] = eWeapon;

    //Weapon Effect
    CItemData * pItemData;
    if (CItemManager::Instance().GetItemDataPointer(eWeapon, &pItemData))
        __GetRefinedEffect(pItemData);
    else
        __ClearWeaponRefineEffect();
    // Weapon Sword Effect
#ifdef ENABLE_COSTUME_WEAPON_SYSTEM
    if (pItemData->GetType() == CItemData::ITEM_TYPE_COSTUME)
        __ClearWeaponRefineEffect();
#endif

    return true;
}

BTW 

 
 
look good and it will go :)

Killer

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



  • Similar Content

  • Activity

    1. 13

      Metin2 Closed Beta Content (2003-2004)

    2. 25

      [SRC] Metin2 on LINUX - The Old Metin2 Project

    3. 2

      United/Club/Midgard serverfiles?

    4. 13

      Metin2 Closed Beta Content (2003-2004)

    5. 13

      Metin2 Closed Beta Content (2003-2004)

  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.