void MasterSkillTree_4th::CGMasterSkillRecv(PMSG_FOR_MA STER_SKILL_RECV* lpMsg, int aIndex) // OK
{
//return; //disabled until full implementation and test of skills
LPOBJ lpObj = &gObj[aIndex];
if (gObjIsConnectedGP(aIndex) == 0)
{
return;
}
FOR_MASTER_SKILL_INFO ForMasterSkillTreeInfo;
if (this->GetInfo(lpObj->Class,lpMsg->ForMasterSkill,lpMsg->Group, &ForMasterSkillTreeInfo) == 0)
{
return;
}
if (lpObj->SkillEnhanceTreePoints < ForMasterSkillTreeInfo.m_ForMasterSkillData.NeedPo int)
{
return;
}
CSkill* lpForMasterSkill = gSkillManager.GetForMasterSkill(lpObj, ForMasterSkillTreeInfo.m_ForMasterSkillData.SkillI D,lpMsg->Group);
if (lpForMasterSkill == 0)
{
if (this->CheckParentSkill(lpObj, &ForMasterSkillTreeInfo)==0)
{
return ;
}
if (this->CheckForMasterSkillGroup(lpObj, lpMsg->Group, lpMsg->Line, &ForMasterSkillTreeInfo) == 0)
{
return;
}
if (this->ReplaceSkill(lpObj, ForMasterSkillTreeInfo.m_ForMasterSkillData.NeedPo int, &ForMasterSkillTreeInfo) == 0)
{
return;
}
gSkillManager.AddForMasterSkill(lpObj, ForMasterSkillTreeInfo.m_ForMasterSkillData.SkillI D, ForMasterSkillTreeInfo.m_ForMasterSkillData.NeedPo int, ForMasterSkillTreeInfo.m_ForMasterSkillData.Group) ;
}
else
{
if ((lpForMasterSkill->m_level+1) > ForMasterSkillTreeInfo.m_ForMasterSkillData.MaxPoi nt)
{
return;
}
if (this->ReplaceSkill(lpObj, lpForMasterSkill->m_level + 1, &ForMasterSkillTreeInfo) == 0)
{
return;
}
lpForMasterSkill->Set1(lpObj->Index, ForMasterSkillTreeInfo.m_ForMasterSkillData.SkillI D, (lpForMasterSkill->m_level + 1),ForMasterSkillTreeInfo.m_ForMasterSkillData.Gro up);
}
gSkillManager.GCSkillAddSend(lpObj->Index, gSkillManager.GetSkillSlot(lpObj, ForMasterSkillTreeInfo.m_ForMasterSkillData.SkillI D), ForMasterSkillTreeInfo.m_ForMasterSkillData.SkillI D, 0, 0);
gSkillManager.GCSkillListSend(lpObj, 0);
lpObj->SkillEnhanceTreePoints -= ForMasterSkillTreeInfo.m_ForMasterSkillData.NeedPo int;
this->GCAddForMasterSkill(lpObj, &ForMasterSkillTreeInfo);
gObjectManager.CharacterCalcAttribute(aIndex);
//this->GCMasterSkillSend(aIndex, 0, 0, lpObj->MasterPoint, lpMsg->MasterSkill, lpMsg->MasterEmpty);
//this->GCMasterInfoSend(lpObj);
}