# ui_externalize_hlas function library

Dependencies: alter_effect, ds, lib_2da, lib_2daq, lib_anon, lib_array, lib_class, lib_cre, lib_data, lib_eff, lib_fn, lib_ids, lib_ietool, lib_ini, lib_kit, lib_script, lib_sfo, lib_spl, lib_splconv, lib_ssl, lib_struct, lib_sugar, lib_tools, lib_ui, lib_vtable, resolve_spell, ui_add_subraces, ui_bonus_spells, ui_deolvynize, ui_detect_class_kit, ui_dual_class_kits, ui_externalize_proficiencies, ui_extra_spells, ui_on_open, ui_shared_code, ui_spell_system, ui_system_call, ui_virtual_class

## Description

Functions in this library develop an externalized version of the HLA (high-level ability) system, that permits (e.g.) gaining HLAs only every few levels, or various constraints on HLA availability.

## Public functions

hide_hla(resref:s)=() action

Given the resref of a HLA, that HLA is hidden (i.e., player-unselectable) for all players on the HLA screen. (Mostly used internally; in general it will be more sensible just to remove the HLA from the LU files.)

override_hla_description(strref:i, resref:s)=() action

This replaces the description shown on the HLA select screen for HLA 'resref' with the strref 'strref'. It requires ui_externalize_hlas to have been run.

override_hla_name(strref:i, resref:s)=() action

This replaces the name shown on the HLA select screen for HLA 'resref' with the strref 'strref'. It requires ui_externalize_hlas to have been run.

set_basic_hla_progression(min:i, step:i)=() action

This function sets the HLA progression (prior to crossing the threshold for 'genuine' HLAs, i.e. 3M XP in BG2, so that you start getting them at level min and then get another one every step levels.

ui_externalize_hlas(min:i, step:i, activate_feats:i=1)=() action

This (idempotent) function sets up the HLA system to grant HLAs every few levels (starting with level min, and then after every step levels) and to externalize requirements for various HLAs. In doing so it sets up an HLA menu if (as in IWD or BG) none is active; it also removes the icon column from the BG2 HLA menu, since that requires multiple icons for applied powers that aren't really needed and which push the art requirements.

If activate_feats=0, the low-level feats are not enabled (only the other externalizations are enabled).

## Internal functions

These should not be called from outside the library itself.

baseline_lua()=() action

bg2_hla_menu()=() action

bg2_hla_menu_leui()=() action

bg2_hla_menu_vanilla()=() action

bg_hla_menu()=() action

blank_luas()=() action

find_next_unused_lua(clone:i=1, try_next:i, root:s)=(lua_short:s) dimorphic

hide_hla_patch()=() patch

hide_hla_setup()=() action

info_button_move()=() patch

iwd_hla_menu()=() action

lightweight_hla_adder(min_level:i=1, max_level:i=99, num_allowed:i=99, apply:i=1, resref:s, lu_file:s)=() action

make_discard_hla()=() action

override_hla_name_description_setup()=() action

override_name_patch()=() patch

skip_hla_menu()=() action

skip_hla_patch()=() patch

sod_hla_menu()=() action

ui_activate_ability_select()=() patch

ui_info_button_wrap()=() patch

ui_info_replace_sod()=() patch