One method i've tried would be to take the multiplier and alter it when the X/Y returns a pure diagonal value such as [1,1],[1,-1],[-1,1],[-1,-1] however this would need specific fine tuning for each character class i have in mind (that's the main crux... I have to juggle this between close to 9 character classes so finding that "sweet spot" would be tricky.) Also, this leads to a lot of overhead since it's only really looking for a value specifically such as "if x is greater than .8" or something like that which though okay for keyboard control, kinda makes this inapplicable for an analog stick (i'm working on trying to make a standard console controller work with this so that players if they want to can use a console controller like a PS3 or XBox joypad... or a third-party one but i only have a 10+yr old logitech wingman that's missing some buttons so I can't reliably use that to test with.)