void MagicInstance::Type6Cancel(bool bForceRemoval /* = false*/, uint32 iSkillID/* = 0*/)
{
// NPCs cannot transform.
if (pSkillCaster == nullptr
|| !pSkillCaster->isPlayer()
// Are we transformed? Note: if we're relogging, and we need to remove it, we should ignore this check.
|| (!bForceRemoval && !TO_USER(pSkillCaster)->isTransformed()))
return;
CUser* pUser = TO_USER(pSkillCaster);
_MAGIC_TYPE6* pType = g_pMain->m_Magictype6Array.GetData(iSkillID);
_MAGIC_TYPE6* pType2 = g_pMain->m_Magictype6Array.GetData(nSkillID);
if (pType == nullptr && pType2 == nullptr) // nSkillID null sonradan eklendi sc sildirme vs. için
return;
if (pUser->isSiegeTransformation())
pUser->m_bRegeneType = REGENE_NORMAL;
Packet result(WIZ_MAGIC_PROCESS, uint8(MagicOpcode::MAGIC_CANCEL_TRANSFORMATION));
// TODO: Reset stat changes, recalculate stats.
pUser->m_transformationType = Unit::TransformationType::TransformationNone;
pUser->m_sTransformHpchange = false;
pUser->m_sTransformMpchange = false;
g_pMain->SpecialTrans = false;
// yeni ekleme 18.06
if (isHeraScroll())
{
_MAGIC_TYPE4* pType4 = g_pMain->m_Magictype4Array.GetData(nSkillID);
if (pType4 != nullptr)
{
TO_USER(pSkillCaster)->m_bHeraNPBonus = 0;
TO_USER(pSkillTarget)->m_sHeraExpGainAmount = 100;
}
}
// yeni ekleme 18.06 end
pUser->Send(&result);
pUser->SetUserAbility();
pUser->RemoveSavedMagic(pUser->m_bAbnormalType);
pUser->StateChangeServerDirect(3, ABNORMAL_NORMAL);
}
aslında böyle olması gerekli sizler ne düşünüyorsunuz burda eksikler ve hatalar var gibi geldi böyle yapılsa daha mantıklı geliyor gibi ?