fixes #118

- hacking attributes/skills/traits could case an edge case when
calculating roles. basically now it will try to perform the same role
calculations, but if there's a failure it will fall back to another
method. a little clunky, but this should be a very rare scenario.