Change attribute modifiers to use integers.

Adds the bits needed for #6079 and #6202.  I have left de-floating the rest of the speed and firepower plumbing as TODOs, as their required changes rapidly balloon out into a much larger patch.
This should be `var a = (decimal)number;` - decimal is another type aliasing keyword.