Using player controller should work but not sure if it makes sense conceptually, it would probably be better in character class, unless you want ammo to persist across respawns.
What is the point of the “Current Ammo” and “Max Ammo” variables in character class? Why not access directly CurrentWeapon->MaxAmmo and CurrentWeapon->CurrentAmmo ?
You say it’s circling back to max ammo of the first weapon, but I don’t see anywhere you setting CurrentAmmo=MaxAmmo, maybe there is a timing issue when you do that, or maybe you are not reading from the right variable ?