Well, it appears possible to kill the radial entirely by modding some of the interface Lua scripts. Modding this may cause some issues with selecting weapons while in a vehicle, but otherwise looks(*) like it should mostly work. (*This is pretty hacktacular, so I can't guarantee it will work or won't introduce some bugs, but worth a shot)
First off, anytime the radial is opened, code just so happens to make sure this Lua function is defined before actually attempting to open the radial ->
hud_inventory_show(). So, if you mod
hud.lua and rename that function, the radial will no longer open and the game will not pause, effectively killing the radial menu completely. All your weapon scrolling and hotkeys will stop functioning as well, since the weapon selection happens from the radial script.... But wait, there's more!!
Next, we're going to intercept some Lua functions that get called on PC when a weapon hotkey or cycle input is detected. Mainly,
hud_inventory_set_selected_weapon() &
hud_inventory_set_selected_grenade(). The grenade is actually for super powers (since they replaced grenade selection), it just never got renamed (sigh). If you look at those two functions in
hud.lua, they currently just update which weapon is selected. We want to make this actually select the weapon instead, so we're going to copy some script out of
hud_inventory_hide(). The main thing we're interested in is this routine that does the actual selection...
Code:
if aborted == false then
Hud_weapon_radial:game_equip_selected_slots()
end
Now we've changed the flow from:
(Press hotkey) -> (Open radial and pause game) -> (Set selected weapon on radial) -> (Set timer to close radial) -> (Close radial when timer expires and unpause) -> (Actually select weapon)
To:
(Press hotkey) -> (Actually select weapon)
Bonus!
Now for a bonus, you could re-enable the radial via some other mechanism by calling the renamed
hud_inventory_show() function in a new UI Lua thread. You'd have to find a good place to add a hook somewhere in the UI Lua scripts. You could potentially register for an unused input event (are there any unused inputs?) in
hud_init(), or something similar. I'll leave it up to the community to track down a good place to put this hook.
Potential problems-
1) The game will not pause (that happens in code)
2) If you do the bonus, code will have no idea the radial menu is open, which can result in some bugs/glitches. One thing I noticed is the input processing for weapon selecting in vehicles checks to see if the radial is open, so this may interfere with that code.
3) Who knows what other minor bugs this may introduce, or if this will even actually work correctly. Only one way to find out, though.