I see 2 issues here:

1)
capabilities should not be pushed to the vector. use assign to replace the old content

2)
I don't think it is a good idea to derive capabilities from gui data. m_playerGUIData is just some object getting queried by the gui.