A better alternative to https://github.com/OpenRA/OpenRA/pull/6014 plus able to be extended with other traits