# Function library index

## Master lists

- All SFO and SFO-LUA functions
- All SFO functions
- All SFO-LUA functions
- Function Index (includes internal/deprecated functions)

## SFO function libraries

- alter_effect (modified versions of WEIDU's DELETE/CLONE/ALTER_EFFECT functions)
- alter_script (Edits specific blocks of a BCS file)
- charset_wrapper (portable wrapper for HANDLE_CHARSETS)
- disjunctive_substitution (substitutes into BCS and DLG without breaking OR and NOT logic)
- ds (shared library to let AI detect various spells)
- lib_2da (functions for manipulating 2da files as WEIDU arrays)
- lib_2daq (simple speed-optimized 2da-editing functions)
- lib_3p (save and load third-party data for tweaking an SFO mod)
- lib_anim (functions related to creature animations)
- lib_anon (sets up the anonymous function construct)
- lib_are (functions for editing area files)
- lib_array (functions to manipulate WEIDU arrays)
- lib_bam (editors for BAM files)
- lib_class (edit class data as a WEIDU data structure)
- lib_cre (functions for editing cre files)
- lib_data (load game data into WEIDU structures)
- lib_dlg (edit DLG files as WEIDU structures)
- lib_eff (functions to edit .eff files)
- lib_fn (core utility functions)
- lib_funlib (documents WEIDU function libraries)
- lib_globalize (save and load global-scope arrays from within local-scope contexts.)
- lib_ids (functions to manipulate ids files and entries)
- lib_ietool (core IE-file manipulation tools)
- lib_immunity (apply immunity effects to CRE/ITM/SPL files)
- lib_include (the include and run functions)
- lib_indirect (manage namespace in large projects via lookups)
- lib_ini (functions to interact with ini files)
- lib_interject
- lib_iter (recursively iterate through game resources)
- lib_itm (functions for editing item files)
- lib_kit (functions to make and edit kits)
- lib_math (abstractly mathematical functions)
- lib_mos (functions to manipulate MOS files)
- lib_opcode (possibly-obsolete functions used to manage item/spell opcode blocks)
- lib_pro (functions to edit projectile files)
- lib_prof (functions to manipulate the proficiency system)
- lib_script (functions related to BCS scripts (see also alter_script))
- lib_sfo (functions tied to SFO's own core functioning)
- lib_spellstyle (match visual and sound style of a spell to standard templates)
- lib_spl (functions to make and edit spell files)
- lib_splconv (convert spells to different spell types)
- lib_ssl (functions for compiling ssl scripts)
- lib_sto (functions for editing store files)
- lib_strdoc (functions to document the 'struct' structures)
- lib_strref (apply a function to each strref in a file)
- lib_struct (core functions in the 'ie-struct' paradigm)
- lib_sugar (syntactic sugar, used by other libraries)
- lib_tools (functions to do simple IE-independent tasks)
- lib_ui (functions to patch the UI)
- lib_vtable (functions implementing SFO's 'virtual table' system)
- lib_vvc (functions for editing VVC files)
- lib_wed (functions for editing WED files, not currently fully functional)
- rebuild_spell_hotkeys (the 'rebuild_spell_hotkeys' function)
- resolve_spell (redefinitions of WEIDU's resolve-spell functions)

## SFO-LUA function libraries

- ui_add_portraits (add new portraits and integrate with the UI)
- ui_add_subraces (functions to add races, subraces, and pseudoraces)
- ui_bonus_spells (functions to add bonus spells to classes/kits)
- ui_deolvynize (move ClassSpellTool spells to the SFO system)
- ui_detect_class_kit (functions used by other SFO-LUA libraries to identify character's class/kit)
- ui_dual_class_kits (resources to enable dual-classing into a kit)
- ui_externalize_hlas (externalize the HLA system to the UI)
- ui_externalize_proficiencies (externalize the proficiency system to the UI)
- ui_externalize_usability_descriptions
- ui_extra_spells
- ui_hide_ability_button (hide an ability button for a class/kit)
- ui_inn_label (label inn choices in the UI so the game engine can detect them)
- ui_on_open (component of SFO-LUA's core structure)
- ui_ranger_favored_enemy (externalize the ranger favored-enemy system to the UI)
- ui_set_ini_globals (probably obsolete)
- ui_shared_code (functions used by multiple other SFO-LUA functions)
- ui_spell_system (set up and add to SFO-LUA's externalized spell system)
- ui_spell_system_elemental (set up elemental spell lists for ui_spell_system)
- ui_spell_system_schools (set up schools of magic for ui_spell_system)
- ui_spell_system_spheres (set up a system of spheres in ui_spell_system)
- ui_system_call (component of SFO-LUA's core structure)
- ui_virtual_class (introduce virtual classes and kits in chargen/on the character sheet)

## Function count

462 public functions, 288 internal functions