Sign in to follow this  
Nereithr

MOD:Finesse: Melee Weapons and misc. fixes

Recommended Posts

Finesse: Melee Weapons and misc. fixes


This adds functional Melee Weapon Finesse (melee weapon Attack increasing with either STR or DEX modifier, depending on which is higher) to KoTOR 1. It also works for unarmed attacks. Additionally, since this is a k_ai_master.ncs replacer, it restores the extra attack of repeating blasters. Another fix or two are underway (trying to restore the non-functional damage boost from Battle Stimulants at the moment). 

Melee Finesse does not currently require a feat to be taken (since I consider it a pointless fun tax for DEX builds), but if there is interest a feat-restricted version would be easy to make. The feat is currently purely cosmetic and is given to the player (at level 2 because of reasons outlined in the installer) and all party members. A version without the pointless cosmetic feat is also available in the same download.

Note that due to the (hacky) way this is implemented (ai_scripts) the finesse effect updates every 0.5 seconds (for the player and party only) and cannot update while your inventory is open, so don't panic if your bonus doesn't instantly change when you are swapping weapons. Close the inventory, wait a moment, reopen and the bonus will change. If interested, read the Limitations/Technical details section below.

Installation

Grab the file, read the readme and either run Install.exe and follow the instructions or drop k_ai_master.ncs from Optional Manual Install into your Override folder. The TSLPatcher installer contains additional instructions for disabling either extra repeater attacks or finesse, as well as instructions for installing this with other mods that modify k_ai_master.ncs.

Uninstallation

This is safe to uninstall mid-playthrough (if you follow the instructions). Go to Ebon Hawk/Taris hideout (so all of your party members are loaded). Equip a lightsaber or a regular non-repeating blaster on all of your party members who are currently wielding a repeating blaster or a melee weapon (while suffering from a case of very high dex). You can now uninstall the mod by removing k_ai_master.ncs and (if using the full version) restoring the modified .utc and .2da files from the backup folder. Note that the restoring the utc/2da files from backup should only be done if this is the last mod you installed that patched those files.

Compatibility

Incompatible with any mods that outright replace k_ai_master.ncs:

  • Repeating blaster attacks restoration: includes its main functionality. The optional power shot/sniper shot fix is compatible.
  • KOTOR 1 Improved AI:  Should work if you compile k_ai_master.ncs with Improved AI’s files. To do so download K1 Improved AI, take the files from the Source folder and drop them in tslpatchdata\Full (or tslpatchdata\ScriptOnly if installing that version), then install this mod normally.
  • Content Pack - Feats and Powers: Incompatible. Since both mods modify k_ai_master.nss, a manual patch would need to be created.

Otherwise it should be compatible with pretty much everything else.

Known Issues/Limitations/Technical details

As ai script execution is paused in the inventory, there is no way to instantly update the attack bonus display when swapping items, meaning that if you are switching from a melee weapon to a ranged weapon (or vice-versa) the attack bonus from dex (if active) won't be added/removed until after you close the inventory and reopen it after a short delay (~0.5 seconds).

Since there is no way (without hacking apart the executable) to "natively" implement this functionality, the Attack from DEX is applied as an Attack Bonus Increase effect. This means it's subject to the maximum +20 feat and effects Attack Bonus cap, which most people likely haven't heard of before since it's basically unreachable in vanilla KoTOR. The bonus is applied as a difference between DEX and STR modifiers, which means that even late game fully buffed-up builds won't be hamstrung by the cap.

Additionally, this attack bonus is applied based on the mainhand weapon. This means that on a high DEX build, compared to a build where all of the attack bonus comes from STR, a mainhand vibroblade/offhand lightsaber will result in a higher offhand attack bonus (offhand lightsaber will benefit from dex bonus twice, since lightsabers are already finesse in the vanilla game), while a mainhand lightsaber/offhand vibroblade will result on a lower offhand attack (offhand vibroblade won't benefit from the dex bonus). I don't consider either of these big issues (since the offhand only attacks once per round) and it would be impossible to fix since there is no effect that only grants offhand/mainhand attack bonus.

Effects (repeater attacks and the finesse bonus) are checked/updated/removed every 0.5 seconds (pseudo-heartbeat that only runs between regular onHeartbeat calls) for the 9 party members and the player and only on certain perception/combat round end/damage events for all other entities (which automatically excludes all friendly NPCs that don't participate in combat). This should make the effects react very quickly to changing stats/weapons (if the player pops a Hyper-Adrenal Alacrity or switches from a repeating blaster to a vibroblade for example) without introducing any potential lag for NPCs.

Tools used
Holocron Toolset
TSLPatcher

Credits
R2-X2 for their Repeater Restoration script, which gave me an idea on how to implement finesse. 


  • Submitter
  • Submitted
    05/18/2024
  • Category
  • K1R Compatible
    No

 

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this