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; }