ok, thanks for looking into it. I’ll also add some logging and continue to see if there is something else weird on my end.
EDIT: I did verify that the PassiveChanged logic is the issue. It detects removals fine, just not adds.
Edit #2: @ " when we get a replication notification from the server for those fields." – I just re-read that. The problem is actually on the server side, not the client. The server doesn’t send the values to the client in the case I mentioned above. The passives go into m_PassiveAbilityInstances locally on the server, but nothing causes them to move into m_ServerPassiveAbilities unless it gets past the PassivesChanged check. It could also be that your cachedPassiveSize set is too late. I didn’t investigate that. I only added a bool that said passives changed that fram. The set of cached passive size does happen right after the active ability update, which is responsible for creating the passive, so perhaps the cache check should be above that?