HLAs are terrible. They were coded quickly, they are limited in number, scope, and imagination, and some of them just make no sense. Monks get fighter HLAs? Bards get traps? Huh?
Unfortunately, the extraordinary modding scene for BG2 has not produced much in the way of HLA mods. Off the top of my head I can think of Oversight for Monks, Rogue Rebalancing for rogues, maybe Divine Remix for priests (did DR include HLAs?), and of course, Refinements, the best HLA mod ever. AFAIK these mods all overwrite the HLA tables, they are largely incompatible, and they still only leave each class with like 10-12 HLAs. Other modders have, for whatever reasons, stayed away from modding HLAs. I aim to fix that.
If you have any interest in modding HLAs, keep reading.
First, grab the "source code (zip)" from this Github project.
Open it up and you'll see a little mod with a .tp2 file, a /lib folder, and a file inside that called "hla_actions.tpa." This .tpa file contains some Weidu patch functions and action functions, which are designed to help modders add HLAs to the game in a way that is completely compatible with any other mods that use the same tool. I'll explain how they work. But for newbies, let's first talk about HLA basics.
HLAs are just spells. Some of them are actual spells that go in your wizard spell scroll (like Dragon's Breath) or priest spell scroll (like Globe of Blades). Others are spells that become innate abilities when you choose them (like Whirlwind, or the paladin version of Summon Deva). And others are spells that are cast on you
when you choose them, resulting in some permanent effect (like bonus wizard spells). In the game engine, these are all just .SPL files. The HLA tables work just like clab tables for kit abilities: those first three categories I just mentioned are listed with "GA_" in front of them, and the last category is listed with "AP_" in front of them.
So, makign an HLA is exactly like making a spell. It is
making a spell, a spell that is either given to the player to cast, or is cast on the player. Before going any further, if you don't know how to make spells, go learn that.
Back? Okay. Now, on to the functions in this download.
First, grab that hla_actions.tpa file and put it somewhere in your mod, and add an INCLUDE line referring to it in your .tp2 file:
...The first function
is "add_hla." This function accepts a number of variables, which conveniently correspond to the column headings in an HLA .2da table. The variables are pre-set to default values of "*" - except min_lev and max_level, which are pre-set to 1 and 99, respectively. You don't need to enter all variables; just the ones that you would need to put in a line in an HLA table if you were adding the HLA manually in Near Infinity, or something.
So, for example, to add the paladin's Summon Deva to the trueclass fighter's HLA table, you would do this:
COPY_EXISTING ~lufi0.2da~ ~override~
LPF add_hla STR_VAR ability = ~GA_SPCL923~ num_allowed = ~20~ END
That will have the effect of adding this row to the fighter's HLA table:
1 GA_SPCL923 * * 1 99 20 * * *
And now fighters can summon devas!
Basically, to add your HLA with this function, open up the HLA table and add variables that match the columns you would fill out manually. Hopefully that is pretty simple.