void CParty::RefreshSync() { CCharEntity* sync = (CCharEntity*)m_PSyncTarget; uint8 syncLevel = sync->jobs.job[sync->GetMJob()]; if (syncLevel < 10) { SetSyncTarget(NULL, 554); } for (uint32 i = 0; i < members.size(); ++i) { if(members.at(i)->objtype != TYPE_PC) continue; CCharEntity* member = (CCharEntity*)members.at(i); uint8 NewMLevel = 0; if (syncLevel < member->jobs.job[member->GetMJob()]) { NewMLevel = syncLevel; }else{ NewMLevel = member->jobs.job[member->GetMJob()]; } if (member->GetMLevel() != NewMLevel) { charutils::RemoveAllEquipMods(member); member->SetMLevel(NewMLevel); member->SetSLevel(member->jobs.job[member->GetSJob()]); charutils::ApplyAllEquipMods(member); blueutils::ValidateBlueSpells(member); charutils::BuildingCharSkillsTable(member); charutils::CalculateStats(member); charutils::BuildingCharTraitsTable(member); charutils::BuildingCharAbilityTable(member); charutils::CheckValidEquipment(member); // Handles rebuilding weapon skills as well. } member->pushPacket(new CMessageBasicPacket(member, member, 0, syncLevel, 540)); } m_PSyncTarget = sync; }
void CLatentEffectContainer::CheckLatentsPartyJobs() { for (uint16 i = 0; i < m_LatentEffectList.size(); ++i) { if(m_LatentEffectList.at(i)->GetConditionsID() == LATENT_JOB_IN_PARTY) { if(m_POwner->PParty == NULL) { if(m_LatentEffectList.at(i)->IsActivated() == true) { m_LatentEffectList.at(i)->Deactivate(); } } bool ActivateLatent = false; if(m_POwner->PParty != NULL) { for(uint8 m = 0; m < m_POwner->PParty->members.size(); m++) { CCharEntity* PMember = (CCharEntity*)m_POwner->PParty->members[m]; if(PMember->id != m_POwner->id) { if(PMember->GetMJob() == m_LatentEffectList.at(i)->GetConditionsValue()) { ActivateLatent = true; break; } } } if(ActivateLatent == true) m_LatentEffectList.at(i)->Activate(); } if(ActivateLatent == false) m_LatentEffectList.at(i)->Deactivate(); } } m_POwner->UpdateHealth(); }