void CGroupSkills::CSkillsObs::update (ICDBNode *node) { CInterfaceManager *pIM = CInterfaceManager::getInstance(); CCDBNodeLeaf *leaf = NLMISC::safe_cast<CCDBNodeLeaf *>(node); // Rebuild all only if new skill (previously level 0) if (leaf->getOldValue32() == 0) Owner->_MustRebuild= true; // Popup a message if previous was not 0 if ((leaf->getOldValue32() != 0) && (leaf->getValue32() != 0)) // prevent displaying FX when resetData() is called during a Far TP { CGroupSkills::InhibitSkillUpFX = false; ICDBNode *skill = node->getParent(); if (skill) { ICDBNode *skillParent = skill->getParent(); if (skillParent) { uint skillId; if (skillParent->getNodeIndex (skill, skillId)) { CAHManager::getInstance()->runActionHandler("skill_popup", NULL, "skillId="+toString(skillId)+"|delta="+toString(leaf->getValue32()-leaf->getOldValue32())); // Context help contextHelp ("skill"); } } } } else { if( !CGroupSkills::InhibitSkillUpFX ) // TODO: couldn't this be replaced by IngameDbMngr.initInProgress()? { UserEntity->skillUp(); } } // Check if this skill canunblock title CSkillManager *pSM = CSkillManager::getInstance(); string sTmp = leaf->getFullName(); sTmp = sTmp.substr(0, sTmp.rfind(':')); sTmp = sTmp.substr(sTmp.rfind(':')+1,sTmp.size()); sint32 eSkills; fromString(sTmp, eSkills); pSM->tryToUnblockTitleFromSkill((SKILLS::ESkills)eSkills, leaf->getValue32()); }