Jump to content

Hunker down keybind is still broken


Drakous79

Recommended Posts

Hunker down keybind is still broken. I hope it gets fixed soon, but meanwhile there's a way how to use reload keybind instead. Only downside is there's no key for reloading weapons after the change.

So ask yourself a question first: "Do I hunker down more than reload?".

File XComGame.upk, class XComTacticalInput, state ActiveUnit_Moving

function bool Key_R(int Actionmask)
{
    local XGUnit kActiveUnit;

    kActiveUnit = GetActiveUnit();
    if(kActiveUnit.IsPanicked())
    {
        return false;
    }
    if((Actionmask & 32) != 0)
    {
        if((kActiveUnit.GetAction() == none) || !kActiveUnit.GetAction().AllObjects('XGAction_Fire'))
        {
            kActiveUnit.PerformAbility(45);
            Outer.PlaySound(soundcue'MenuSelectCue', true);
            return true;
        }
    }
    return false;
}

Changing PerformAbility(45) to 38 does the job.

Search for: 2D 16 19 01 F5 F9 FF FF 09 00 00 00 00 00 00 1C 54 FC FF FF 20 A6
Replace with: 26 16 19 01 F5 F9 FF FF 09 00 00 00 00 00 00 1C 54 FC FF FF 20 A6

Start the game, bind a key to Reload and you're set to go. Soldiers will now hunker down instead of reloading weapon.

Tested functionality and works as supposed.

 

XCOM Enemy Within changes

First of all, hunker down was completely removed from options - keyboard bindings tactical shortcuts. That's what I call hot fix.

 

Key_R function didn't change much in XCOM Enemy Within. A conditional newly reflects strangle and the ability has different number.

if((kActiveUnit.IsPanicked() || kActiveUnit.IsStrangled()) || kActiveUnit.IsStrangling())

kActiveUnit.PerformAbility(33);

XCOM EW vanilla, Patch 1 - 19 00 1A 81 00 00 0C 00 00 00 00 00 00 1B 86 63 00 00 00 00 00 00 24 21 16

 

Replace 21 with 1B. The code will change to PerformAbility(27), which is eAbility_TakeCover.

 

 

Removing Menu Select sound

I don't like hearing Menu Select sound before Hunker Down sound (it is the same for overwatch) so I removed soundcue line.

Outer.PlaySound(soundcue'MenuSelectCue', true);

Here's hex for the change - use it instead of hex above:

// XCOM EW vanilla, Patch 1
Search for: 32 81 00 00 76 5F 00 00 00 00 00 00 19 81 00 00 E5 5B 00 00 00 00 00 00 1C 81 00 00 00 00 00 00 F8 03 00 00 93 80 00 00 52 01 00 00 02 01 00 00 0F 00 1A 81 00 00 1B F7 36 00 00 00 00 00 00 16 07 80 00 84 84 19 00 1A 81 00 00 0A 00 B2 3A 00 00 00 1B 43 45 00 00 00 00 00 00 16 18 20 00 19 00 1A 81 00 00 0A 00 39 C6 00 00 00 1B AC 45 00 00 00 00 00 00 16 16 18 20 00 19 00 1A 81 00 00 0A 00 3B C6 00 00 00 1B AD 45 00 00 00 00 00 00 16 16 04 28 07 45 01 9B 9C 00 1C 81 00 00 2C 20 16 25 16 07 45 01 84 72 19 00 1A 81 00 00 0A 00 07 C9 00 00 00 1B F0 36 00 00 00 00 00 00 16 2A 16 18 39 00 81 19 19 00 1A 81 00 00 0A 00 07 C9 00 00 00 1B F0 36 00 00 00 00 00 00 16 0B 00 CB FF FF FF 00 C5 21 D5 80 00 00 00 00 00 00 16 16 16 19 00 1A 81 00 00 0C 00 00 00 00 00 00 1B 86 63 00 00 00 00 00 00 24 21 16 19 01 BF F9 FF FF 09 00 00 00 00 00 00 1C 39 FC FF FF 20 73 DA 00 00 27 4A 4A 4A 4A 16 04 27 04 28 04 3A 1B 81 00 00 53 00 00 00 02 00 02 00 44 48 00 00 00 00 00 00
Replace with: 32 81 00 00 76 5F 00 00 00 00 00 00 19 81 00 00 E5 5B 00 00 00 00 00 00 1C 81 00 00 00 00 00 00 F8 03 00 00 93 80 00 00 42 01 00 00 02 01 00 00 0F 00 1A 81 00 00 1B F7 36 00 00 00 00 00 00 16 07 80 00 84 84 19 00 1A 81 00 00 0A 00 B2 3A 00 00 00 1B 43 45 00 00 00 00 00 00 16 18 20 00 19 00 1A 81 00 00 0A 00 39 C6 00 00 00 1B AC 45 00 00 00 00 00 00 16 16 18 20 00 19 00 1A 81 00 00 0A 00 3B C6 00 00 00 1B AD 45 00 00 00 00 00 00 16 16 04 28 07 18 01 9B 9C 00 1C 81 00 00 2C 20 16 25 16 07 45 01 84 72 19 00 1A 81 00 00 0A 00 07 C9 00 00 00 1B F0 36 00 00 00 00 00 00 16 2A 16 18 39 00 81 19 19 00 1A 81 00 00 0A 00 07 C9 00 00 00 1B F0 36 00 00 00 00 00 00 16 0B 00 CB FF FF FF 00 C5 21 D5 80 00 00 00 00 00 00 16 16 16 19 00 1A 81 00 00 0C 00 00 00 00 00 00 1B 86 63 00 00 00 00 00 00 24 1B 16 04 27 04 28 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 04 3A 1B 81 00 00 53 00 00 00 02 00 02 00 44 48 00 00 00 00 00 00

Remaining space was nulled and function's virtual size was updated.

 

 

Changing Reload string to Hunker Down in Options | Interface | Keyboard Bindings | Tactical Shortcuts

Edit XCom-Enemy-Unknown\XEW\XComGame\Localization\INT\XComGame.int and change:

m_arrTacticalBindableLabels[eTBC_AbilityReload]="RELOAD"
// to
m_arrTacticalBindableLabels[eTBC_AbilityReload]="HUNKER DOWN"

Funny m_arrTacticalBindableLabels[eTBC_AbilityHunkerDown] is still listed, but was removed from enum in XComGame.upk.

 

 

Future plans

I'd like to enable the key for Head Down (escorted civilian's version).

Edited by Drakous79
Link to comment
Share on other sites

Done. Wonder, if it would make XCOM EU modding community bigger :) if ppl see, they can play another way or fix stuff themselves.

 

Edit: Not sure, but I'm quite positive I posted the info in support section of 2K Forums, but the post disappeared without notification. So I reposted without link to Nexus forum... so much for modder friendly approach and appreciation of being helped. I want to be proven wrong on previous statement.

Edited by Drakous79
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...