As the title says. Let's begin:
1. Stat Stack Fix
Happens when you register 2 items and equip the weapon you want the look from.
In
DPSrvr.cpp
Search for:
Code:
pDest = pUser->m_Inventory.GetAtId(dwIdDest);
Add under:
Code:
if( pUser->m_Inventory.IsEquip(dwIdSrc) || pUser->m_Inventory.IsEquip(dwIdDest) )
{
pUser->AddDefinedText( TID_GAME_EQUIPPUT );
return;
}
if( pUser->HasActivatedEatPet() || pUser->HasPet() )
{
pUser->AddText( "Du musst dein aktives Pet einpacken." );
return;
}
2. 2H Weapon - 1H Weapon Fix
For example if you want to change the look of a Bloody Sword to a Bloody 2H Sword.
In
DPSrvr.cpp
Search for:
Code:
if((!pSrc->GetProp() || !pDest->GetProp()) || pDest->GetProp()->dwItemKind3 != pSrc->GetProp()->dwItemKind3 )
Change it to:
Code:
if( (!pSrc->GetProp() || !pDest->GetProp()) || pDest->GetProp()->dwItemKind3 != pSrc->GetProp()->dwItemKind3 || pDest->GetProp()->dwHanded != pSrc->GetProp()->dwHanded )
3. Shield Glow Effect Fix
Now it works like on official server.
non-glowing shield + glowing shield -> stays non-glowing
glowing shield + non-glowing shield -> becomes glowing
In
MoverRender.cpp
Search for:
Code:
#ifdef __LOOKCHANGE
DWORD dwLook = NULL_ID;
if( IsActiveMover() && pItemElem )
{
dwLook = pItemElem->GetLook();
}else if(!IsActiveMover() )
{
dwLook = m_aEquipInfo[PARTS_SHIELD].dwLook;
}
if( dwLook != NULL_ID )
{
ItemProp *pProp = prj.GetItemProp(dwLook);
if( pProp )
{
if( pProp->nReflect > 0)
pModel->SetEffect( PARTS_SHIELD, XE_REFLECT );
}
}else
#endif
Change it to:
Code:
#ifdef __LOOKCHANGE
DWORD dwLook = NULL_ID;
if( IsActiveMover() && pItemElem )
dwLook = pItemElem->GetLook();
else if( !IsActiveMover() )
dwLook = m_aEquipInfo[PARTS_SHIELD].dwLook;
if( dwLook == NULL_ID )
{
ItemProp *pProp = prj.GetItemProp(dwLook);
if( pProp )
{
if( pProp->nReflect > 0)
pModel->SetEffect( PARTS_SHIELD, XE_REFLECT );
}
}
#endif
4. Weapon Glow Effect Fix
Same goes for weapons...
In
MoverRender.cpp
Search for:
Code:
#ifdef __LOOKCHANGE
DWORD dwLook = NULL_ID;
if( IsActiveMover() && pItemElem )
{
dwLook = pItemElem->GetLook();
}else if(!IsActiveMover() )
{
dwLook = m_aEquipInfo[nParts].dwLook;
}
if( dwLook != NULL_ID )
{
pItemProp = prj.GetItemProp( dwLook );
}
#endif
Change it to:
Code:
#ifdef __LOOKCHANGE
DWORD dwLook = NULL_ID;
if( IsActiveMover() && pItemElem )
dwLook = pItemElem->GetLook();
else if( !IsActiveMover() )
dwLook = m_aEquipInfo[nParts].dwLook;
if( dwLook == NULL_ID )
{
ItemProp *pProp = prj.GetItemProp(dwLook);
if( pProp )
{
if( pItemProp->nReflect > 0 )
{
pModel->SetEffect( nParts, XE_REFLECT );
if( nParts == PARTS_RWEAPON && pItemProp->dwItemKind3 == IK3_YOYO )
pModel->SetEffect( PARTS_LWEAPON, XE_REFLECT );
}
}
}
#endif
5. Just a little message that makes more sense..
In
WndGold.cpp
Search for:
Code:
nMsg = TID_MMI_LOOKCHANGE;
Change it to:
Code:
nMsg = TID_MMI_ELLDINPOTION_TEXT02;
6. Transy Fix
Now you cannot change the sex of an item that has a changed look. You have to remove it first.
In
ItemUpgrade.cpp
Search for:
Code:
CItemElem* pItemElemTarget = pUser->m_Inventory.GetAtId( objidTarget );
Add under:
Code:
#ifdef __LOOKCHANGE
if( pItemElemTarget->IsChangedLook() )
{
pUser->AddDefinedText( TID_MMI_LOOKCHANGE01 );
return;
}
#endif
7. Cash Shop Hat Fix
It's a graphic bug in char selection, inventory, status and when viewing others equip. Happens when you change the model of a CS Hat that changes your hair to a CS Hat that doesn't.
To fix it just download my
WndField.cpp and
WndTitle.cpp and search for __LOOKCHANGE and copy it to your source.