Engine Lua globals

Applies to:
BGEE, BG2EE, IWDEE (patch 2.0 and later)

General Description
The user interface of the Enhanced Editions runs in one global Lua state that is shared by the MENU file, the game's own Lua files and the engine. This page lists the global variables and tables that the engine itself defines in that state, the structure of every table it fills, and the Lua functions it expects the game's Lua code to provide. The engine's Infinity_* C functions are not covered here; those that work on menus are described on the MENU Lua interface page.

The information comes from patches 2.6.6.0 and 2.7.3.0 of BGEE, BG2EE and IWDEE. All six builds define the same globals with the same structure; the only difference is listed under Version differences. Descriptions marked † are inferred from the names of the engine functions that write or read the value; the code that uses them was not traced in detail.

Start-up order.
  1. bootstrapLua creates the Lua state, opens the standard libraries _G, table, string, bit32, math and debug (but not io, os or package), replaces print, and runs the small Lua chunks that define options, SetPrivateProfileString, getOptionsSection, languages and setLanguageVisible.
  2. CLUAConsole::LuaInit registers the engine's C++ classes (tolua++ bindings), runs the binding's embedded Lua chunk that creates the engine objects, runs C = CLUAConsole:new() and then executes the file luaAuto.cfg.
  3. Later, during resource initialisation, dimmInit registers the Infinity_* functions, runs the Lua resource INCLUDES and loads UI.MENU.
  4. While the game runs, engine code sets single values with lua_setglobal, fills the data tables and calls the functions provided by the game's Lua.

These globals are created by the Lua chunk embedded in the tolua++ bindings, which runs once at start-up:

e = g_pBaldurChitin
startEngine = e:GetEngineStart()
createCharScreen = e:GetEngineCreateChar()
characterScreen = e:GetEngineCharacter()
connectionScreen = e:GetEngineConnection()
mageScreen = e:GetEngineWizSpell()
priestScreen = e:GetEnginePriestSpell()
worldScreen = e:GetEngineWorld()
mapScreen = e:GetEngineMap()
worldMapScreen = e:GetEngineWorldMap()
journalScreen = e:GetEngineJournal()
inventoryScreen = e:GetEngineInventory()
optionsScreen = e:GetEngineOptions()
multiplayerScreen = e:GetEngineMultiPlayer()
chapterScreen = e:GetEngineChapter()
loadScreen = e:GetEngineLoad()
saveScreen = e:GetEngineSave()
storeScreen = e:GetEngineStore()
moviesScreen = e:GetEngineMovies()
createPartyScreen = e:GetEngineCreateParty()
dlcScreen = e:GetEngineDLC()
projector = e:GetEngineProjector()
mixer = e:GetSoundMixer()
game = e:GetObjectGame()
buttonArray = game:GetButtonArray()
timer = game:GetWorldTimer()
gameOptions = game:GetOptions() 
Each object is a userdata of a bound C++ class; its methods are called with : (for example timer:GetCurrentHour()). C is created separately by CLUAConsole::LuaInit. The binding also defines the global variable g_pBaldurChitin (the engine application, readable and writable) and a few constants.

Global Class Meaning
eCBaldurChitinThe engine application object (same value as the bound global variable g_pBaldurChitin).
startEngineCScreenStartStart screen. †
createCharScreenCScreenCreateCharCharacter creation screen. †
characterScreenCScreenCharacterCharacter record screen. †
connectionScreenCScreenConnectionMultiplayer connection screen. †
mageScreenCScreenWizSpellMage spellbook screen. †
priestScreenCScreenPriestSpellPriest spellbook screen. †
worldScreenCScreenWorldMain game (world) screen. †
mapScreenCScreenMapArea map screen. †
worldMapScreenCScreenWorldMapWorld map screen. †
journalScreenCScreenJournalJournal screen. †
inventoryScreenCScreenInventoryInventory screen. †
optionsScreenCScreenOptionsOptions screen. †
multiplayerScreenCScreenMultiPlayerMultiplayer party screen. †
chapterScreenCScreenChapterChapter and text screens (chapter text, dreams, epilogues). †
loadScreenCScreenLoadLoad game screen. †
saveScreenCScreenSaveSave game screen. †
storeScreenCScreenStoreStore screen. †
moviesScreenCScreenMoviesMovies screen. †
createPartyScreenCScreenCreatePartyParty creation / import screen. †
dlcScreenCScreenDLCDLC screen. †
projectorCBaldurProjectorMovie player (projector) engine. †
mixerCSoundMixerSound mixer. †
gameCInfGameThe game object (party, areas, options, timers). †
buttonArrayCInfButtonArrayThe action bar of the main screen. †
timerCTimerWorldThe world timer (game time). †
gameOptionsCGameOptionsThe current game options; its fields are the option values. †
CCLUAConsoleLua console object, created by the engine with CLUAConsole:new() when the console is initialised.

Bound classes. Methods, fields and base classes as registered by luaopen_BaldurLUA. Fields marked * are read-only.

Class Members
CLUAConsoleMethods: AddGold, AddSpell, AdvanceRealTime, CreateCreature, CreateEngine, CreateItem, CreateVEFVidCell, DisplayAllBAMFiles, DisplayText, EnableCheatKeys, Eval, Exec, ExploreArea, GetGlobal, LogMessages, LogSet, MoveToArea, new, PickDialog, PlayMovie, PlaySound, ResetAchievements, SetCurrentXP, SetGlobal, SetWaterAlpha, SetWeather, StartStore, StrrefOff, StrrefOn, TestAllDialog, WorkshopUpload, WriteScript
CLUACheatsMethods: CowKill, CriticalItems, DrizztAttacks, DrizztDefends, ExploreArea, FirstAid, Hans, Midas, new, TheGreatGonzo
CTimerWorldMethods: AdvanceCurrentTime, GetCurrentHour, GetCurrentTime
Fields: TIME_DAWN*, TIME_DAY*, TIME_DUSK*, TIME_NIGHT*, TIMESCALE_HOUR_PER_DAY* (constants, see Constants)
CInfButtonArrayMethods: GetButtonBam, GetButtonEnabled, GetButtonSequence, GetButtonType, OnLButtonPressed, OnRButtonPressed
CInfGameMethods: CenterOnGroupLeader, GetButtonArray, GetCharacterOverflowCount, GetJournalOpenable, GetMissionPackInfo, GetMissionPackInfo25, GetMissionPackInfoTBP, GetOptions, GetPaletteSize, GetPartyAI, GetPartyGold, GetWorldTimer, IsClient, RestParty, SelectAll, SetCampaign, ToggleAI
CChitinMethods: HasDirectX, IsHosting, IsMultiplayer
CBaldurChitinBase class: CChitin
Methods: CheckGUISong, FullScreen, GetActiveEngine, GetEngineChapter, GetEngineCharacter, GetEngineConnection, GetEngineCreateChar, GetEngineCreateParty, GetEngineDLC, GetEngineInventory, GetEngineJournal, GetEngineLoad, GetEngineMap, GetEngineMovies, GetEngineMultiPlayer, GetEngineOptions, GetEnginePriestSpell, GetEngineProjector, GetEngineSave, GetEngineStart, GetEngineStore, GetEngineWizSpell, GetEngineWorld, GetEngineWorldMap, GetObjectGame, GetSoundMixer, GetVersionString, IsAndroid, IsIOS, IsTouchUI, SelectEngine, SetDisableBrightest
CWarp–
CBaldurEngineBase class: CWarp
Methods: OnLeftPanelButtonClick, OnRestButtonClick
CGameOptionsFields: m_bAlwaysDither, m_bAutoPauseCenter, m_bCheatsEnabled, m_bConfirmDialog, m_bCriticalHitScreenShake, m_bDebugMode, m_bDisableCastingGlows, m_bDisableDisplayText, m_bDisableVEFVidCells, m_bDisplayExtraCombatInfo, m_bDuplicateFloatingText, m_bEnvironmentalAudio, m_bForceDialogPause, m_bHotkeysOnToolTips, m_bHPOverHead, m_bInfravision, m_bLowMemSounds1, m_bLowMemSounds2, m_bRenderFrameTimes, m_bRestHealParty, m_bStupidQuickItemStuff, m_bTerrainHugging, m_bUse3dAnimations, m_bVeryLowPerformance, m_bWeatherEnabled, m_displayVerbalText, m_gore, m_graphicsForceMirroringOff, m_graphicsTranslucentEffects, m_graphicsTranslucentShadows, m_guiFeedBackLevel, m_nAreaEffectsDensity, m_nAreaEffectsRefreshProb, m_nAttackSounds, m_nAutoPauseState, m_nBoredTime, m_nCommandSoundsFrequency, m_nDifficultyMultiplier, m_nEffectTextLevel, m_nKeyBoardScrollAmount, m_nMPDifficultyMultiplier, m_nTutorialState, m_scrollSpeed, m_soundDialogVolume, m_soundFootStepsOn, m_soundFXVolume, m_soundMovieVolume, m_soundMusicVolume, m_soundVoicesNo, m_toolTips
CSoundMixerMethods: StartSong
CBaldurProjectorBase class: CBaldurEngine
Methods: PlayMovie
CScreenStartBase class: CBaldurEngine
Methods: DismissChooseCampaignPopup, GetCampaign, GetEngineState, HasGameToContinue, OnCampaignButtonClick, OnContinueGame, OnCreatePartyButtonClick, OnDLCImageClick, OnImportCharacterButtonClick, OnLoadGameButtonClick, OnMultiPlayerButtonClick, OnNewGameButtonClick, OnOptionsButtonClick, OnPreGenerateButtonClick, OnPregenSelectButtonClick, OnQuitButtonClick, OnSoAButtonClick, OnTBPButtonClick, OnToBButtonClick, OnTutorialButtonClick, SetEngineState
CScreenDLCBase class: CBaldurEngine
Methods: DecrementDLCIndex, GetDLCBought, GetDLCCount, GetDLCDescription, GetDLCImage, GetDLCIndex, GetDLCName, GetDLCState, GetDLCTitle, GetDownloadString, IncrementDLCIndex, OnBuyButtonClick, OnDoneButtonClick, OnErrorButtonClick, RestorePurchases, SetDLCIndex, UpdateDLCState
CScreenCharacterBase class: CBaldurEngine
Methods: GetTempSmartScriptLocal, IsAppearanceButtonClickable, IsCharacterViewable, IsDoneButtonClickable, IsDualClassButtonClickable, IsExportButtonClickable, IsInGame, IsLevelUpButtonClickable, IsMultiPlayerModifyable, IsReformPartyButtonClickable, OnAppearanceButtonClick, OnCancelButtonClick, OnCusomizeBiographyButtonClick, OnCustomizeButtonClick, OnDoneButtonClick, OnDualClassButtonClick, OnErrorButtonClick, OnExportButtonClick, OnHairSkinButtonClick, OnLevelUpButtonClick, OnPlayButtonClick, OnReformPartyButtonClick, OnScriptButtonClick, OnSoundsButtonClick, SetTempSmartScriptLocal
CScreenStoreBase class: CBaldurEngine
Methods: GetGroupCost, GetIdentifyCost, GetMenuName, GetPanelButtonEnabled, GetPanelButtonId, GetPanelButtonPanelId, GetPanelButtonSequence, GetPanelButtonToolTip, GetRoomCost, GetRoomType, GetSpellCost, GetStoreCost, GetStoreName, IsBuyItemButtonClickable, IsBuySpellButtonClickable, IsCloseBagButtonClickable, IsContainer, IsDonateButtonClickable, IsDoneButtonClickable, IsIdentifyItemButtonClickable, IsMainCancelButtonClickable, IsMainDoneButtonClickable, IsRentRoomButtonClickable, IsRoomTypeClickable, IsSellItemButtonClickable, IsSpriteOrderable, IsStealEnabled, IsStealItemButtonClickable, OnBuyDrinkButtonClick, OnBuyItemButtonClick, OnBuySpellButtonClick, OnCloseBagButtonClick, OnDonateButtonClick, OnIdentifyItemButtonClick, OnMainDoneButtonClick, OnRentRoomButtonClick, OnSellItemButtonClick, OnStealItemButtonClick, OpenBag, RestParty, SelectGroupItem, SelectIdentifyItem, SelectSpellItem, SelectStoreItem, SetGroupItemCount, SetRoomType, SetStoreItemCount, UpdateBuyDrinksPanel, UpdateBuySellPanel, UpdateBuySpellPanel, UpdateDonatePanel, UpdateIdentifyPanel, UpdateRentRoomPanel, UpdateStealPanel
CScreenConnectionBase class: CBaldurEngine
Methods: CancelJoinGame, ClearSessions, HasServiceProvider, IsValidAddress, JoinGame, JoinGameIPAddress, OnJoinGameButtonClick, OnLoadGameButtonClick, OnMainCancelButtonClick, OnNewGameButtonClick, SelectServiceProvider, SetPlayerName, StopConnectingToProvider
CScreenWizSpellBase class: CBaldurEngine
Methods: CancelSequencingSpells, DoneSequencingSpells, EraseKnownSpell, GetSpellLevel, MemorizeSpell, OnDispellButtonClick, OnEraseButtonClick, SequenceSpell, SetSpellLevel, SpellAllowedForContingency, SpellSwappedInContingency, UnmemorizeSpell, UnSequenceSpell
CScreenPriestSpellBase class: CBaldurEngine
Methods: GetSpellLevel, MemorizeSpell, SetSpellLevel, UnmemorizeSpell
CScreenWorldBase class: CBaldurEngine
Methods: CheckIfPaused, ContainerScrollEnabled, GetCurrentTimeString, GetHardPaused, GetInControlOfDialog, GetPickPartyCharacterId, GetPickPartyPortrait, GetPickPartyRemoveCharacterId, GetTopContainerItem, GetTopGroundItem, GetTopGroupItem, GroundScrollEnabled, GroupScrollEnabled, IsPickPartyDoneButtonClickable, IsPickPartyRemoveButtonClickable, OnContainerButtonClick, OnContainerScroll, OnDeathLoad, OnDeathQuit, OnDialogReplyClick, OnGroundButtonClick, OnGroundScroll, OnGroupScroll, OnHelpButtonClick, OnPickPartyDoneButtonClick, OnPickPartyPortraitButtonClick, OnQuickSaveButtonClick, OnSelectionButtonClick, RemoveCharacterFromParty, SetHighlightEnabled, StartGroundItems, StepDialog, StopGroundItems, SwapPortraits, TakeAllFromContainer, TogglePauseGame
CScreenMapBase class: CBaldurEngine
Methods: DisplayExploredMap, GetColorChoice, IsNoteVisible, OnColorChoice, OnMapAddNote, OnUserNoteClick, OnUserNoteDeleteButtonClick, OnUserNoteDoneButtonClick, ToggleDisplayExploredMap
CScreenWorldMapBase class: CBaldurEngine
Methods: CenterMarker, IsTravelButtonClickable, IsTravelButtonVisible, OnCancelButtonClick, OnMapMouseDown, OnMapMouseMove, OnMapMouseUp, StartWorldMap, TravelToSelected
CScreenJournalBase class: CBaldurEngine
CScreenInventoryBase class: CBaldurEngine
Methods: IsMultiPlayerViewable, IsSpriteOrderable
CScreenOptionsBase class: CBaldurEngine
Methods: LoadGame, QuitGame, SaveGame, SetEngineState
CScreenMultiPlayerBase class: CBaldurEngine
Methods: GetEngineState, KickPlayer, Logout, ModifyCharacters, OnCancelButtonClick, OnDoneButtonClick, OnKickPlayerButtonClick, OnLogoutButtonClick, OnMainDoneButtonClick, OnModifyButtonClick, OnModifyCharacterDelete, OnPermissionButtonClick, OnPlayerSelection, OnPortraitButtonClick, OnReadyButtonClick, SetCharacterSlot, SetImportSetting, SetModifiedCharacterSlot, ToggleAllowReformParty, ToggleListenToJoin, UpdateModifyCharacterPanel
CScreenChapterBase class: CBaldurEngine
Methods: IsDoneButtonClickable, IsReplayButtonClickable, OnDoneButtonClick, OnReplayButtonClick, StartTextScreen
CScreenLoadBase class: CBaldurEngine
Methods: DeleteGame, LoadGame, OnMainCancelButtonClick
CScreenSaveBase class: CBaldurEngine
Methods: DeleteGame, OnMainCancelButtonClick, RefreshGameSlots, SaveGame
CScreenCreateCharBase class: CBaldurEngine
Methods: AcceptCharacter, DecCurrentPortrait, GetCurrentPortrait, GetCurrentStep, GetEngineState, GetImportableCharacters, GetImportState, HasMoreMageLevels, IncCurrentPortrait, IsAbilityRecallButtonClickable, IsAdvancedButtonClickable, IsChargenComplete, IsDoneButtonClickable, IsHighLevelAbilitiesButtonClickable, IsMainBackButtonClickable, IsThiefSkillPlusMinusButtonClickable, OnAbilityPlusMinusButtonClick, OnAbilityRecallButtonClick, OnAbilityReRollButtonClick, OnAbilityStoreButtonClick, OnAdvancedButtonClick, OnAlignmentSelectButtonClick, OnBiographyButtonClick, OnCancelButtonClick, OnCharacterExportItemSelect, OnCheatyMcCheaterson, OnClassSelectButtonClick, OnDoneButtonClick, OnGenderSelectButtonClick, OnHighLevelAbilitiesButtonClick, OnHLAButtonClick, OnImportCharacterButtonClick, OnImportCharacterFileButtonClick, OnImportSaveButtonClick, OnKitSelectButtonClick, OnLearnMageSpellButtonClick, OnMainBackButtonClick, OnMainCancelButtonClick, OnMemorizeMageSpellButtonClick, OnMemorizePriestSpellButtonClick, OnMenuButtonClick, OnPlayButtonClick, OnPrerollCancelButtonClick, OnPrerollCharacterPick, OnProficiencyPlusMinusButtonClick, OnRaceSelectButtonClick, OnRacialEnemySelectButtonClick, OnSoundItemSelect, OnThiefSkillPlusMinusButtonClick, SetAbilityHelpInfo, SetEngineState, SetSpriteId, ShowPortraitPanel
CScreenCreatePartyBase class: CBaldurEngine
Methods: OnBackButtonClick, OnCreateDeleteButtonClick, OnDoneButtonClick, OnPortraitButtonClick
CInfToolTipMethods: FormatTooltipPrefix
CScreenMoviesBase class: CBaldurEngine
Methods: IsPlayButtonClickable, OnCreditsButtonClick, OnDoneButtonClick, OnMovieItemSelect, OnPlayButtonClick

These are all the constants the engine defines in Lua. The global ones are plain numbers registered by the bindings. The CTimerWorld ones are read-only static members of the class: they can be read through the class table (CTimerWorld.TIME_DAWN) or through the timer object (timer.TIME_DAWN), and they have no setter. Game time is counted in ticks: 15 ticks per second, 4500 per game hour and 108000 per day. timer:GetCurrentTime() returns the timer's tick counter, and timer:GetCurrentHour() returns (that counter modulo 108000) divided by 4500, i.e. the hour of the day (0–23).

Name Value Meaning
CINFINITY_WEATHER_TYPE_NOWEATHER0Weather type: none. Argument of C:SetWeather(type).
CINFINITY_WEATHER_TYPE_RAIN1Weather type: rain. Argument of C:SetWeather(type).
CINFINITY_WEATHER_TYPE_SNOW2Weather type: snow. Argument of C:SetWeather(type).
CTimerWorld.TIME_DAWN27000Start of dawn: 27000 ticks into the day = 06:00.
CTimerWorld.TIME_DAY31500Start of day: 31500 ticks into the day = 07:00.
CTimerWorld.TIME_DUSK94500Start of dusk: 94500 ticks into the day = 21:00.
CTimerWorld.TIME_NIGHT99000Start of night: 99000 ticks into the day = 22:00.
CTimerWorld.TIMESCALE_HOUR_PER_DAY24Hours in a game day.
CGAMEOPTIONS_GUIFEEDBACK_LOWEST1Feedback level “lowest”, a value of gameOptions.m_guiFeedBackLevel. †
CGAMEOPTIONS_GUIFEEDBACK_LOW2Feedback level “low”. †
CGAMEOPTIONS_GUIFEEDBACK_MEDIUM3Feedback level “medium”. †
CGAMEOPTIONS_GUIFEEDBACK_HIGH4Feedback level “high”. †
CGAMEOPTIONS_GUIFEEDBACK_HIGHEST6Feedback level “highest”. Note that the value is 6; no constant has the value 5. †

These tables are created or filled by engine code. Each structure lists the keys the engine writes and the Lua type it stores. [n] stands for a numeric index (lists start at 1), [string] for a key the engine builds at run time (for example an equipment slot name). A table written by “assigned by” functions is replaced as a whole; the others are created by the game's Lua and only filled by the engine. Fields called strRef, name, desc, description and helpStrRef that hold numbers are string references into dialog.tlk.

characters – Character sheet data for the record, inventory, spellbook and party screens, keyed by character id. Rebuilt by CGameSprite::UpdateLuaStats (with UpdateLuaEquipment and UpdateLuaSpells) whenever a screen requests it (e.g. Infinity_UpdateLuaStats).
Filled by: CGameSprite::UpdateLuaStats.
Note: proficiencies.weapons and proficiencies.fightingstyles are first set to the list of proficiencies and then, by the next statement, replaced with a single {current, strRef, helpStrRef} record of the same name; only the record remains.
characters
  [n]: table
    AC: table
      crushing: number
      current: number
      details: string
      missile: number
      piercing: number
      slashing: number
    alignment: number
    attr: table
      cha: table
        base: number
        current: number
        extra: number (key 'str' only)
        extraBase: number (key 'str' only)
        strRef: number
      con: table
        base: number
        current: number
        extra: number (key 'str' only)
        extraBase: number (key 'str' only)
        strRef: number
      dex: table
        base: number
        current: number
        extra: number (key 'str' only)
        extraBase: number (key 'str' only)
        strRef: number
      int: table
        base: number
        current: number
        extra: number (key 'str' only)
        extraBase: number (key 'str' only)
        strRef: number
      str: table
        base: number
        current: number
        extra: number (key 'str' only)
        extraBase: number (key 'str' only)
        strRef: number
      wis: table
        base: number
        current: number
        extra: number (key 'str' only)
        extraBase: number (key 'str' only)
        strRef: number
    biography: number
    class: string
    colors: table
      hair: number
      major: number
      minor: number
      skin: number
    contingencySpells: table
      [n]: table
        condition: number
        dispellable: boolean
        resref: string
        spells: table
          [n]: table
            castableCount: number
            description: number
            icon: string
            index: number
            level: number
            masterResref: string
            memorizedCount: number
            memorizedIndex: number
            name: number
            resref: string
        target: number
    damage: table
      details: string
      detailsOffhand: string
      max: number
      maxOffhand: number or nil
      min: number
      minOffhand: number or nil
    equipment: table
      [string]: table
        abilities: table
          [n]: table
            icon: string
            itemNum: number
            selected: number
            text: string
        abilityMode: number
        empty: number
        highlight: number
        id: number
        item: table
          icon: string
        slotName: string
        tooltip: string
        useMode: number
        valid: number
    gender: number
    gold: number
    hasClericBook: boolean
    hasMageBook: boolean
    hasShamanBook: boolean
    hasSorcererBook: boolean
    HP: table
      current: number
      details: string
      max: number
    kitDesc: string
    mageDetails: table
      [n]: table
        maxMemorized: number
        slotsRemaining: number
    mageSpells: table
      [n]: table
        [n]: table
          castableCount: number
          description: number
          icon: string
          index: number
          level: number
          masterResref: string
          memorizedCount: number
          memorizedIndex: number
          name: number
          resref: string
    name: string
    PC: number
    portrait: string
    priestDetails: table
      [n]: table
        maxMemorized: number
        slotsRemaining: number
    priestSpells: table
      [n]: table
        [n]: table
          castableCount: number
          description: number
          icon: string
          index: number
          level: number
          masterResref: string
          memorizedCount: number
          memorizedIndex: number
          name: number
          resref: string
    proficiencies: table
      ability: table
        [n]: table
          current: string
          helpStrRef: number
          strRef: number
      baseTHAC0: table
        current: string
        helpStrRef: number
        strRef: number
      class_skills: table
        [n]: table
          current: string
          helpStrRef: number
          strRef: number
      crushingACMod: table
        current: string
        helpStrRef: number
        strRef: number
      currentScript: string
      details: string
      fightingstyles: table
        current: string
        helpStrRef: number
        strRef: number
        [n]: table
          current: string
          helpStrRef: number
          strRef: number
      lore: table
        current: string
        helpStrRef: number
        strRef: number
      missileACMod: table
        current: string
        helpStrRef: number
        strRef: number
      numAttacks: table
        current: string
        helpStrRef: number
        strRef: number
      piercingACMod: table
        current: string
        helpStrRef: number
        strRef: number
      reputation: table
        current: string
        helpStrRef: number
        strRef: number
      resistances: string
      saveBreath: table
        current: string
        helpStrRef: number
        strRef: number
      saveDeath: table
        current: string
        helpStrRef: number
        strRef: number
      savePoly: table
        current: string
        helpStrRef: number
        strRef: number
      saveSpell: table
        current: string
        helpStrRef: number
        strRef: number
      saveWand: table
        current: string
        helpStrRef: number
        strRef: number
      savingThrows: string
      slashingACMod: table
        current: string
        helpStrRef: number
        strRef: number
      THAC0Left: table
        current: string
        helpStrRef: number
        strRef: number
      THAC0Right: table
        current: string
        helpStrRef: number
        strRef: number
      weapons: table
        current: string
        helpStrRef: number
        strRef: number
        [n]: table
          current: string
          helpStrRef: number
          strRef: number
      weaponStyleBonus: string or nil
    race: number
    sequencerSpells: table
      [n]: table
        dispellable: boolean
        resref: string
        spells: table
          [n]: table
            castableCount: number
            description: number
            icon: string
            index: number
            level: number
            masterResref: string
            memorizedCount: number
            memorizedIndex: number
            name: number
            resref: string
    Stats: table
      bestenemy: table
        current: string
        helpStrRef: number
        strRef: number
      chapkills: table
        current: string
        helpStrRef: number
        strRef: number
      chapxpvalue: table
        current: string
        helpStrRef: number
        strRef: number
      favspell: table
        current: string
        helpStrRef: number
        strRef: number
      favweapon: table
        current: string
        helpStrRef: number
        strRef: number
      gamekills: table
        current: string
        helpStrRef: number
        strRef: number
      gamexpvalue: table
        current: string
        helpStrRef: number
        strRef: number
      partychapkills: table
        base: number
        current: number
        extra: number (key 'str' only)
        extraBase: number (key 'str' only)
        strRef: number
      partychapxp: table
        base: number
        current: number
        extra: number (key 'str' only)
        extraBase: number (key 'str' only)
        strRef: number
      partygamekills: table
        base: number
        current: number
        extra: number (key 'str' only)
        extraBase: number (key 'str' only)
        strRef: number
      partygamexp: table
        base: number
        current: number
        extra: number (key 'str' only)
        extraBase: number (key 'str' only)
        strRef: number
      timespent: table
        current: string
        helpStrRef: number
        strRef: number
    statusEffects: table
      [string]: table
        bam: string
        current: number
        strRef: number
    THAC0: table
      current: number
      details: string
      detailsOffhand: string
      offhand: number or nil
    weaponName: string
chargen – State of the character creation screen: the option lists of each creation step and the current selection details. †
Filled by: CScreenCreateChar::OnAbilityPlusMinusButtonClick, CScreenCreateChar::OnDoneButtonClick, CScreenCreateChar::OnMenuButtonClick, CScreenCreateChar::OnPrerollCharacterPick, CScreenCreateChar::ResetGenderPanel, CScreenCreateChar::ResetMemorizeMagePanel, CScreenCreateChar::ResetMemorizePriestPanel, CScreenCreateChar::UpdateAbilitiesPanel, CScreenCreateChar::UpdateChooseMagePanel, CScreenCreateChar::UpdateClassPanel, CScreenCreateChar::UpdateHatedRacePanel, CScreenCreateChar::UpdateHighLevelAbilitiesPanel, CScreenCreateChar::UpdateMainPanel, CScreenCreateChar::UpdateMemorizeMagePanel, CScreenCreateChar::UpdateMemorizePriestPanel, CScreenCreateChar::UpdateProficienciesPanel.
chargen
  ability: table
    [n]: table
      roll: string
  abilityReachedMax: boolean
  abilityReachedMin: boolean
  alignment: table
    [n]: table
      desc: number
      id: number
      name: number
  charInfo: string
  choose_spell: table
    [n]: table
      count: number
      enabled: boolean
      key: string
  class: table
    [n]: table
      desc: number
      id: number
      name: number
  currentSpellLevelChoice: number
  customSound: table
    [n]: string
  extraAbilityPoints: number
  extraProficiencySlots: number
  extraSkillPoints: number
  extraSpells: number
  hatedRace: table
    [n]: table
      desc: number
      id: number
      name: number
  helpText: string
  HLAs: table
    [n]: table
      canAdd: boolean
      canSubtract: boolean
      count: number
      description: number
      icon: string
      name: number
      resref: string
  information: string
  kit: table
    [n]: table
      desc: number
      id: number
      name: number
  levelInfo: string
  levelingUp: boolean
  name: string
  numHLAs: number
  portrait: string
  proficiency: table
    [n]: table
      desc: number
      id: number
      max: number
      min: number
      name: number
      value: number
  races: table
    [n]: table
      desc: number
      id: number
      name: number
  thief_skill: table
    [n]: table
      description: number
      id: number
      name: number
      value: number
  title: string
  totalRoll: number
store – State of the store screen panels (drinks, healing spells, room text, donation). †
Assigned by: CScreenStore::OnDonateButtonClick.
Filled by: CScreenStore::EngineActivated, CScreenStore::OnDonateButtonClick, CScreenStore::RestParty, CScreenStore::UpdateBuyDrinksPanel, CScreenStore::UpdateBuySpellPanel, CScreenStore::UpdateIdentifyPanel, CScreenStore::UpdateRentRoomPanel.
store
  donateText: table or string
  drinks: table
    [n]: table
      name: string
      valid: number
      value: number
  drinkText: string
  groupItems: table
    [n]: table
      count: number or nil
      highlight: number
      item: table
        count: number
        descPicture: string
        description: string
        icon: string
        identified: number
        isBag: number
        name: string
        res: string
        tint: string
        usages: number
      label: string
      numInStock: number
      valid: number
      value: number
  hasDonated: number
  healingSpells: table
    [n]: table
      description: number
      highlight: number
      icon: string
      label: string
      name: number
      tint: string
      valid: number
      value: number
  icon: string
  identifyItems: table
    [n]: table
      highlight: number
      item: table
        count: number
        descPicture: string
        description: string
        icon: string
        identified: number
        isBag: number
        name: string
        res: string
        tint: string
        usages: number
      label: string
      valid: number
      value: number
  identifyText: table or string
  qualityIcon: string
  roomText: string
  spellText: string
  storeItems: table
    [n]: table
      amountSelected: number
      clickable: number
      highlight: number
      item: table
        count: number
        descPicture: string
        description: string
        icon: string
        identified: number
        isBag: number
        name: string
        res: string
        stackSize: number
        tint: string
        usages: number
      label: string
      maxCount: number
      valid: number
      value: number
loot – Container, group and ground items shown by the main screen's loot panels; each item is a CItem::PushToLua record. †
Assigned by: CScreenWorld::UpdateLua.
Filled by: CGameSprite::UpdateVisibleGroundItems, CScreenWorld::AsynchronousUpdate, CScreenWorld::StartContainer, CScreenWorld::UpdateLua.
loot
  containerIcon: string
  containerItems: table
    [n]: table
      item: table or nil
        count: number
        descPicture: string
        description: string
        icon: string
        identified: number
        isBag: number
        name: string
        res: string
        tint: string
        usages: number
  groundItems: table
    [n]: table
      containerId: number
      item: table
        count: number
        descPicture: string
        description: string
        icon: string
        identified: number
        isBag: number
        name: string
        res: string
        tint: string
        usages: number
      slotId: number
  groupItems: table
    [n]: table
      item: table or nil
        count: number
        descPicture: string
        description: string
        icon: string
        identified: number
        isBag: number
        name: string
        res: string
        tint: string
        usages: number
multiplayer – State of the multiplayer party screen (character and player slots, permissions, button states). †
Filled by: CScreenMultiPlayer::UpdateLuaTables.
multiplayer
  allowreformparty: boolean
  character: table
    [n]: table
      controlled: string
      controlledclickable: boolean
      name: string
      nameclickable: boolean
      portrait: string
      portraitclickable: boolean
      ready: boolean
      readyclickable: boolean
  donebuttonclickable: boolean
  importsetting: number
  listentojoin: boolean
  modifybuttonclickable: boolean
  player: table
    [n]: table
      name: string
      permissions: table
        [n]: boolean
connection – Players currently connected (multiplayer connection screen). †
Filled by: CScreenConnection::UpdateLuaTables.
connection
  currentPlayers: table
    [n]: table
      name: string
partyImport – Party creation slots (multiplayer/party import screen). †
Filled by: CScreenCreateParty::UpdateLuaTables.
partyImport
  character: table
    [n]: table
      createdelete: string
      name: string
      portrait: string
  playbuttonclickable: boolean
gameSaves – Saved games listed on the load/save screens. †
Assigned by: CScreenLoad::RefreshGameSlots, CScreenSave::RefreshGameSlots.
gameSaves
  currentGameInfo: table
    chapter: string
    time: string
  files: table
    [n]: table
      chapter: string
      fileName: string
      fileTime: number
      hasPortrait0: number
      hasPortrait1: number
      hasPortrait2: number
      hasPortrait3: number
      hasPortrait4: number
      hasPortrait5: number
      hasScreenShot: number
      portrait0: light userdata
      portrait1: light userdata
      portrait2: light userdata
      portrait3: light userdata
      portrait4: light userdata
      portrait5: light userdata
      screenshot: light userdata
      slotIndex: number
      slotName: string
      sName: string
      time: string
  isImporting: number
mapnoteSettings – Map notes of the current area, keyed by note id. †
Filled by: CGameAreaNotes::PushNoteToLua.
mapnoteSettings
  [n]: table
    screenCoord: table
      x: number
      y: number
    sequence: number
    text: number
    worldCoord: table
      x: number
      y: number
areaNoteGrid – Grid lookup of map notes by position, used by the engine to find a note at a point. †
Assigned by: CGameAreaNotes::IntrnlInitialize.
areaNoteGrid
  [n]: table
    [n]: table or nil
worldPlayerDialogChoices – Player response choices of the current dialog. †
Assigned by: CGameDialogSprite::EnterDialog, CScreenWorld::EndDialog.
Filled by: CScreenWorld::DisplayText.
worldPlayerDialogChoices
  [n]: table
    marker: number
    text: string
tempStats – Character stats with and without a candidate item equipped, used for item comparison. †
Filled by: CGameSprite::GetRatingWithItem.
tempStats
  [n]: table
    AC: number
    currentHP: number
    dmgMax: number
    dmgMin: number
    equippedItem: string
    maxHP: number
    tempItem: string
    THAC0: number
character_select – Pre-rolled characters offered by character creation. †
Assigned by: CScreenCreateChar::ResetPrerollPanel.
character_select
  [n]: table
    desc: string
    id: number
    name: string
    portrait: string
prerollCharacters – Importable characters (character creation). †
Assigned by: CScreenCreateChar::GetImportableCharacters.
prerollCharacters
  [n]: table
    description: string
    file: string
    image: string
    name: string
mageSpells – Mage spells per level offered by character creation. †
Assigned by: CScreenCreateChar::ResetSpellTables.
mageSpells
  [n]: table
priestSpells – Priest spells per level offered by character creation. †
Assigned by: CScreenCreateChar::ResetSpellTables.
priestSpells
  [n]: table
spellBook – Spell selection state of character creation (learn spells). †
Assigned by: CScreenCreateChar::UpdateChooseMagePanel.
spellBook
  choose_spell: table
  extraSpells: number
  [n]: table
contingencyConditions – Conditions offered when creating a contingency. †
Assigned by: CScreenWizSpell::UpdateMainPanel.
contingencyConditions
  [n]: table
    desc: number
    strref: number
contingencyTargets – Targets offered when creating a contingency. †
Assigned by: CScreenWizSpell::UpdateMainPanel.
contingencyTargets
  [n]: table
    desc: number
    strref: number
mp_sessions – Known multiplayer sessions. †
Assigned by: DPWrapper::Close, DPWrapper::CloseSession.
Filled by: ?0DPProviderEnet.
mp_sessions
  [n]: table
    flags: table or number
    name: string
    players: number
    type: number
    updated_at: number
    version: string
mp_sessions_jid – Multiplayer sessions keyed by Jabber ID (online play). †
Assigned by: DPWrapper::Close, DPWrapper::CloseSession.
Filled by: DPProviderJingle::AddRoom.
mp_sessions_jid
  [string]: table or number
sidebarVisible – Visibility of the LEFT and RIGHT side bars, saved with the game. †
Filled by: CInfGame::Unmarshal.
sidebarVisible
  LEFT: table or number
  RIGHT: table or number
OverrideStrings – TLK override strings (user journal entries and similar), keyed by string reference. †
Assigned by: CTlkFileOverride::Open.
Filled by: CTlkFileOverride::Add, CTlkFileOverride::AddUserEntry, CTlkFileOverride::Open, CTlkFileOverride::Remove.
OverrideStrings
  [n]: nil or string
actionBarTooltip – Action bar tooltip texts, keyed by button. †
Filled by: CInfButtonArray::SetTooltip.
actionBarTooltip
  [n]: string
scriptList – AI script names listed on the record screen. †
Assigned by: CScreenCharacter::RefreshScripts.
scriptList
  [n]: string
list_GUIREC_20_5 – Sound set names listed on the record screen. †
Assigned by: CScreenCharacter::OnSoundsButtonClick.
list_GUIREC_20_5
  [n]: string
list_GUIMOVIE_0_0 – Movies listed on the movies screen. †
Assigned by: CScreenMovies::EngineActivated.
list_GUIMOVIE_0_0
  [n]: table
    description: string
    movieCode: string
combatLog – Combat log lines (emptied when a game starts). †
Assigned by: CInfGame::InitGame.
combatLog
  [n]: string
sequencerSpells – Spells chosen for the sequencer or contingency being built; set to nil when done. †
Assigned by: CScreenWizSpell::DoneSequencingSpells, CScreenWizSpell::OnContingency.
sequencerSpells
  [n]: table
    castableCount: number
    description: number
    icon: string
    index: number
    level: number
    masterResref: string
    memorizedCount: number
    memorizedIndex: number
    name: number
    resref: string

Global Type Set by Meaning
aiButtonTogglenumberCInfGame::InitGame, CInfGame::ToggleAI, CInfGame::UnmarshalState of the party AI button. †
areaNamestringCScreenMultiPlayer::SetMultiplayerScreenInformationArea name shown on the multiplayer screen. †
bookModenumberCScreenWizSpell::UpdateMainPanelMode of the mage spellbook screen. †
cellNumbernumbersetListRowCellSelectedColumn of the list cell that was clicked. †
chapternumberCScreenMultiPlayer::SetMultiplayerScreenInformationCurrent chapter (multiplayer screen); also read by the journal. †
chapterBackgroundstringCScreenChapter::StartDream, CScreenChapter::StartTextScreenBackground image of the chapter/text screen. †
characterExportCharacterEditstringCScreenCharacter::OnCharacterItemSelect, CScreenCharacter::OnExportButtonClickFile name edit field of character export (record screen). †
chargenExportCharacterEditstringCScreenCreateChar::AcceptCharacter, CScreenCreateChar::OnCharacterExportItemSelectFile name edit field of character export (character creation). †
chargenProficiencyHelpTextnumberCScreenCreateChar::OnProficiencyPlusMinusButtonClickHelp text of the proficiency step (character creation). †
charNameEditstringCScreenCreateChar::OnMainBackButtonClickText of the character name edit field (character creation). †
chatboxScrollToBottomnumberCGameDialogSprite::AsynchronousUpdate, CScreenWorld::DisplayChatMessage, CScreenWorld::DisplayTextRequest to scroll the dialog/chat box to the bottom. †
Chitin_GetSectionCallbackC functionbootstrapLuaEngine callback used by getOptionsSection to hand INI entries back to the engine.
combatLogtableCInfGame::InitGameCombat log lines (emptied when a game starts). †
CONNECTION_ERROR_MESSAGEnumberCScreenConnection::SetPlayerNameError message of the connection screen (string reference). †
connectionPlayerNameEditstringCScreenConnection::HandleJoinCompletion, CScreenConnection::InitializeSessionDataPlayer name edit field (connection screen). †
connectionSessionNameEditstringCScreenConnection::InitializeSessionDataSession name edit field (connection screen). †
contingencyMaxSpellsnumberCScreenWizSpell::UpdateMainPanelNumber of spells the contingency holds. †
contingencyResRefstringCScreenWizSpell::UpdateMainPanelResource of the contingency spell being cast. †
contingencySwapTabletableCScreenWizSpell::SpellSwappedInContingencySpells swapped while building a contingency. †
createBioEditstringCScreenCreateChar::OnBiographyButtonClickText of the biography edit field (character creation). †
createCharGenderHelpnumberCScreenCreateChar::OnGenderSelectButtonClickHelp text of the gender step (character creation). †
currentChargenCustomSoundnumberCScreenCreateChar::OnDoneButtonClickSelected custom sound set (character creation). †
currentChargenHatedRacenumberCScreenCreateChar::UpdateHatedRacePanelSelected hated race (character creation). †
currentChargenKitnumberCScreenCreateChar::UpdateKitPanelSelected kit (character creation). †
currentIDnumberCScreenCharacter::UpdateMainPanel, CScreenCreateChar::UpdateProficienciesPanel, CScreenCreateParty::OnPortraitButtonClick, CScreenMultiPlayer::OnPortraitButtonClickId of the selected character. †
currentPanelIDnumberCScreenCharacter::OnCharacterExport, CScreenCharacter::OnErrorButtonClickCurrent panel of the character record screen. †
debugResponseTablecopy of a value or nilCGameDialogSprite::AsynchronousUpdate, CLUAConsole::PickDialogDialog responses offered by the console's dialog debugging. †
dialogButtonTextstringCGameDialogEntry::DisplayText of the dialog continue/end button. †
epilogueImagestringCScreenChapter::StartDream, CScreenChapter::StartTextScreen, CScreenChapter::TimerAsynchronousUpdateImage of the epilogue/dream screen. †
eventXCoordnumbercontinueMapCapture, startItemCaptureX coordinate of the current mouse event, relative to the item. †
eventYCoordnumbercontinueMapCapture, startItemCaptureY coordinate of the current mouse event, relative to the item. †
getOptionsSectionfunction–Defined by the engine's bootstrap Lua: calls Chitin_GetSectionCallback for every key of options[sectionName].
groundItemsButtonTogglenumberCInfGame::Unmarshal, CScreenCreateChar::AcceptCharacter, CScreenWorld::OnKeyDownState of the ground items button. †
highlightButtonTogglenumberCInfGame::Unmarshal, CScreenCreateChar::AcceptCharacter, CScreenWorld::EngineGameInit, CScreenWorld::OnKeyDown, CScreenWorld::OnKeyUpState of the highlight button. †
idnumberCScreenInventory::OnPortraitLClick, CScreenPriestSpell::UpdateMainPanel, CScreenWizSpell::UpdateMainPanel, Infinity_OnPortraitLClick, Infinity_UpdateLuaStatsId of the character the current screen shows. †
instanceIdnumbercontinueButtonCapture, drawItem, drawTooltipFromItem, eventMenu, isPointOverMenu, lastItemUnderPoint, pushButton, uiIsPointOverMenuSee the MENU Lua interface page.
iotable–Stub replacing the standard io library (output() does nothing), installed only with test-automation support.
key_pressednil or numbercontinueEditCaptureKey code typed into an edit field (nil when none). †
languagestable–Available languages; created by the engine's bootstrap Lua, filled through setLanguageVisible.
letter_pressednil or stringcontinueEditCaptureCharacter typed into an edit field (nil when none). †
list_GUIREC_20_5_idxnumberCScreenCharacter::OnSoundsButtonClickIndex of the selected sound set. †
luaEditstringCScreenWorld::OnKeyDown, Infinity_LuaConsoleInputText of the Lua console edit field. †
luaEditDebugDumpnumberCScreenWorld::OnKeyDownSet by the console key handler. †
luaEditObjectIdlight userdataCScreenWorld::OnKeyDownObject under the cursor when the console was opened. †
mageBookEnabledbooleanCScreenWizSpell::UpdateMainPanelWhether the mage book is available. †
mageNamestringCScreenWizSpell::UpdateMainPanelCharacter name shown on the mage spellbook screen. †
mapNoteEditstringCScreenMap::OnMapAddNote, CScreenMap::OnUserNoteClickText of the map note edit field. †
maxMagePagenumberCScreenWizSpell::UpdateMainPanelNumber of mage spellbook pages. †
maxPriestPagenumberCScreenPriestSpell::UpdateMainPanelNumber of priest spellbook pages. †
messageScreenTextnumberCInfinity::RenderText of the full-screen message. †
motionXnumbercontinueHandleCaptureHorizontal movement while dragging a handle. †
motionYnumbercontinueHandleCaptureVertical movement while dragging a handle. †
mouseoverRownumbereventMenuList row under the mouse. †
mp_shownSessionstable–Multiplayer sessions currently listed (emptied by the engine). †
mpChatboxScrollToBottomnumberCScreenWorld::DisplayChatMessageRequest to scroll the multiplayer chat box to the bottom. †
mpChatLengthnumberCScreenWorld::ClearChatMessagesNumber of multiplayer chat lines. †
mpChatTabletableCScreenWorld::ClearChatMessagesMultiplayer chat lines (emptied by the engine). †
mpChatTextstringCScreenWorld::ClearChatMessagesMultiplayer chat text. †
mpErrorStatenumberCScreenMultiPlayer::OnKickPlayerButtonClick, CScreenMultiPlayer::OnLogoutButtonClick, CScreenMultiPlayer::OnModifyButtonClick, CScreenMultiPlayer::OnPlayerSelection, CScreenMultiPlayer::TimerAsynchronousUpdateError state of the multiplayer screen. †
mpErrorTextnumberCScreenMultiPlayer::OnKickPlayerButtonClick, CScreenMultiPlayer::OnLogoutButtonClick, CScreenMultiPlayer::OnModifyButtonClick, CScreenMultiPlayer::OnPlayerSelection, CScreenMultiPlayer::TimerAsynchronousUpdateError message of the multiplayer screen (string reference). †
multiplayerFromInGamebooleanCMultiplayerSettings::SetArbitrationLockStatusWhether the multiplayer screen was opened from a running game. †
multiplayerLocalPlayerIDnumberCScreenMultiPlayer::SetMultiplayerScreenInformationId of the local player. †
nameToItemPointerlight userdatainitNameMapSee the MENU Lua interface page.
oldOverlayMenuNamenilCBaldurChitin::ConfirmQuitCleared by the quit confirmation before it shows QuitMenu. †
optionstable–INI options by section and key; created by the engine's bootstrap Lua and filled through SetPrivateProfileString.
ostable–Stub replacing the standard os library (getenv() returns nil), installed only with test-automation support.
priestBookEnabledbooleanCScreenPriestSpell::UpdateMainPanelWhether the priest book is available. †
priestNamestringCScreenPriestSpell::UpdateMainPanelCharacter name shown on the priest spellbook screen. †
printC functionbootstrapLuaReplacement for Lua's print, registered by the engine's Lua bootstrap. †
recBioEditstringCScreenCharacter::OnCusomizeBiographyButtonClickText of the biography edit field (record screen). †
rowNumbercopy of a valueInfinity_GetListHeight, Infinity_SelectDialogueOption, Infinity_SelectListItem, RenderListCallbackSee the MENU Lua interface page.
rowSelectednumberInfinity_GetListHeight, Infinity_SelectDialogueOption, Infinity_SelectListItem, RenderListCallbackSee the MENU Lua interface page.
scriptDescriptionstringCScreenCharacter::OnScriptItemSelectDescription of the selected AI script. †
scriptList_idxnumberCScreenCharacter::RefreshScriptsIndex of the selected AI script. †
scrollDirectionnumbereventMenuDirection of the last mouse-wheel event. †
selectedSlotstringCInfButtonArray::OnRButtonPressedSlot name of the action bar button that was right-clicked. †
selectionButtonTogglebooleanCGameArea::OnActionButtonUpState of the selection button. †
sequencerSpellsnil or tableCScreenWizSpell::DoneSequencingSpells, CScreenWizSpell::OnContingencySpells chosen for the sequencer or contingency being built; set to nil when done. †
setLanguageVisiblefunction–Defined by the engine's bootstrap Lua: languages[locale] = {0, 0, locale}. Called by the engine for every language found.
SetPrivateProfileStringfunction–Defined by the engine's bootstrap Lua: stores options[section][key] = value.
showContingencybooleanCScreenWizSpell::UpdateMainPanelWhether the contingency panel is shown. †
showJournalnumberCBaldurEngine::OnLeftPanelButtonClick, CBaldurEngine::SelectEngine, CScreenWorld::EngineGameUninitWhether the journal is open. †
showMpChatnumberCScreenWorld::OnKeyDown, CScreenWorld::ToggleChatEditBoxWhether the multiplayer chat is shown. †
showNotesnumberCScreenMap::UpdateMainPanelWhether map notes are shown. †
storeDonateAmountEditstringCScreenStore::OnDonateButtonClickDonation amount edit field (store). †
text_CHAPTERSCROLLstringCScreenChapter::SwitchMainPanelText of the scrolling chapter screen. †
text_CHAPTERSCROLL_autonumberCScreenChapter::OnMixerInitialize, CScreenChapter::OnReplayButtonClick, CScreenChapter::SwitchMainPanelWhether the chapter text scrolls automatically. †
text_CHAPTERSCROLL_timeStartnumberCScreenChapter::OnMixerInitialize, CScreenChapter::OnReplayButtonClick, CScreenChapter::SwitchMainPanelStart time of the chapter text scrolling. †
TEXT_inventoryErrorstringCScreenInventory::SetErrorStringInventory error message. †
TEXT_popup_infonumber or stringCScreenConnection::ShowSessionTerminatedMessage, CScreenInventory::OnUseButtonClick, CScreenInventory::TimerAsynchronousUpdate, CScreenJournal::OnRestButtonClick, CScreenOptions::SaveGame, CScreenStart::TimerAsynchronousUpdate, uiPushDialogMessage for the information popup (string reference or text). †
textflashestableCScreenWorld::EngineGameUninitFloating text entries (emptied when the game screen closes). †
uiTranslationFilenildimmInitCleared at start-up. †
worldDeathStrnumberCScreenWorld::AsynchronousUpdateDeath message, also logged by the engine. †
worldMessageBoxClickedOncenumberCInfGame::LoadOptionsMessage box state, saved with the options. †
worldMessageBoxLengthnumberCScreenWorld::EngineGameUninitNumber of message box lines. †
worldMessageBoxTextstringCScreenWorld::EngineGameUninitMessage box text. †
worldMessageBoxTopnumberCInfGame::LoadOptionsMessage box scroll position, saved with the options. †
worldNPCDialogTextstringCScreenWorld::DisplayText, CScreenWorld::EndDialogText of the current NPC dialog line. †

The engine calls these global Lua functions but does not define them; the game's own Lua code (UI.MENU and the Lua resources it loads) has to. Arguments are listed in order with the Lua type the engine pushes; where several argument lists are shown, different call sites pass different types.

Function Arguments Called by Meaning
buildQuestsTable()CBaldurChitin::Init, CInfGame::UpdateTokensRebuild the quest list (journal). †
chapterText()CScreenMultiPlayer::SetMultiplayerScreenInformationCalled for the chapter text of the multiplayer screen. †
checkDoubleClickScheduled(string)CMessageContainerAddItem::RunCalled when an item is added to a container, with the item's resource name. †
checkEntryComplete(number, number)CGameJournal::AddEntryCalled when a journal entry is added (entry string reference and type). †
clearCharacterSlot(number, boolean)CInfGame::ClearCharacterSlot, CNetwork::OnCloseSession, CScreenMultiPlayer::SetMultiplayerScreenInformationClear a character slot of the multiplayer screen. †
clearPlayerSlot(number, boolean)CNetwork::OnCloseSession, CScreenMultiPlayer::SetMultiplayerScreenInformationClear a player slot of the multiplayer screen. †
clearSessionsBefore(number)DPProviderJingle::PumpForget multiplayer sessions older than the given time. †
connectionBuildGameList()XmppHandler::PumpRebuild the list of online games. †
destroyMemorizationSparkle(number)CScreenPriestSpell::TimerAsynchronousUpdate, CScreenWizSpell::TimerAsynchronousUpdateRemove the memorisation effect of a spellbook slot. †
getDialogButtonEnabled()CScreenWorld::OnKeyDownWhether the dialog continue/end button is enabled (result read as a number/boolean). †
getUiString(string)CGameOptions::SetDifficulty, CGameOptions::SetStoryMode, CGameSprite::UpdateLuaStats, CScreenCharacter::OnDoneButtonClick, CScreenCharacter::OnScriptItemSelect, CScreenCharacter::RefreshScripts, CScreenMap::UpdateMainPanel, CScreenMultiPlayer::SetMultiplayerScreenInformation, CScreenStore::OnRentRoomButtonClick, translateString, yy_reduceTranslate a UI string key (2.7.3.0; the key is passed as a string and the translated text is returned).
keyExists(string, number)CInfButtonArray::UpdateButtonsWhether a key binding exists (action bar). †
log(string)Infinity_LogCalled by Infinity_Log with the message.
matchMultiplayerGameType(string)CScreenMultiPlayer::SetMultiplayerScreenInformationSelect the multiplayer game type entry. †
popSidebars()CScreenWizSpell::EngineDeactivated, CScreenWorld::EngineDeactivatedHide the side bars when the spellbook or game screen deactivates. †
popupDetails(number, number, number, string)CInfButtonArray::OnRButtonPressedShow the details popup of an action bar item. †
popupInfo(number)CScreenCharacter::OnRestButtonClick, CScreenCreateChar::OnDoneButtonClick, CScreenSave::SaveGame, CScreenStore::OnBuyDrinkButtonClick, CScreenStore::OnBuyItemButtonClick, CScreenStore::OnBuySpellButtonClick, CScreenStore::OnIdentifyItemButtonClick, CScreenStore::OnRentRoomButtonClick, CScreenStore::OnSellItemButtonClickShow an information popup with a string reference. †
printIni(light userdata)chWriteInifileWrite the INI options out (called while saving the INI, with the file handle). †
pushSidebars()CScreenWizSpell::EngineActivated, CScreenWorld::EngineActivatedShow the side bars when the spellbook or game screen activates. †
refreshMageBook()CScreenWizSpell::SequenceSpell, CScreenWizSpell::UnSequenceSpell, CScreenWizSpell::UpdateMainPanelRefresh the mage spellbook screen. †
refreshMageContingency()CScreenWizSpell::OnDispellButtonClickRefresh the contingency display. †
refreshPriestBook()CScreenPriestSpell::UpdateMainPanelRefresh the priest spellbook screen. †
removeUserEntry(number)CGameJournal::ChangeEntryRemove a user journal entry. †
resizeDialog()CScreenWorld::DisplayTextResize the dialog panel after new text. †
setChapterBackground(number)CScreenChapter::SwitchMainPanelSet the background of the chapter screen. †
showItemDescription(number)CInfButtonArray::OnRButtonPressedShow the description of an action bar item. †
storeRest()CScreenStore::OnRentRoomButtonClickRest at the inn (store screen). †
t(string)CGameOptions::SetDifficulty, CGameOptions::SetStoryMode, CGameSprite::UpdateLuaStats, CScreenCharacter::OnDoneButtonClick, CScreenCharacter::OnScriptItemSelect, CScreenCharacter::RefreshScripts, CScreenMap::UpdateMainPanel, CScreenMultiPlayer::SetMultiplayerScreenInformation, CScreenStore::OnRentRoomButtonClick, translateString, yy_reduceTranslation function used by the MENU parser in 2.6.6.0 (same role as getUiString).
tick_cucumber()CChitin::UpdatePer-frame hook of the test-automation support (only with that support enabled). †
toggleSidebar(string)CScreenWorld::OnKeyUpToggle a side bar (LEFT or RIGHT). †
unmemorizingMageSpell(string)CScreenWizSpell::UnmemorizeSpellCalled when a mage spell is unmemorised. †
unmemorizingPriestSpell(string)CScreenPriestSpell::UnmemorizeSpellCalled when a priest spell is unmemorised. †
updateJournalEntry(number, number, number, number, string)CGameJournal::UpdateJournalEntryUpdate a journal entry. †
updateMPChatPreview(string)CScreenWorld::DisplayChatMessageShow a new multiplayer chat line. †
updateMultiplayerCharacterSlot(number, string, boolean) | (number, string, number) | (number, string, string)CScreenMultiPlayer::SetMultiplayerScreenInformationUpdate a character slot of the multiplayer screen. †
updateMultiplayerPlayerSlot(number, string, number) | (number, string, string)CScreenMultiPlayer::SetMultiplayerScreenInformationUpdate a player slot of the multiplayer screen. †
updateMultiplayerSessionData(string, string, string, string, number)CScreenMultiPlayer::SetMultiplayerScreenInformationUpdate the session information of the multiplayer screen. †
autopickMageSpellsrun as a Lua statementCScreenCreateChar::UpdateChooseMagePanelPick the initial mage spells automatically (character creation). †
initQuestsrun as a Lua statementCInfGame::InitGameInitialise the quest list when a game starts. †
loadBindingsrun as a Lua statementCInfGame::InitGame, CInfGame::LoadKeymapLoad key bindings. †
removeStringTokenLuarun as a Lua statementCScreenDLC::GetDownloadStringRemove a string token. †
resetStatsDisplayrun as a Lua statementCScreenInventory::SwapWithPortrait, CScreenInventory::SwapWithSlotRefresh the inventory stats after an equipment change. †
sortSavesrun as a Lua statementCScreenLoad::RefreshGameSlots, CScreenSave::RefreshGameSlotsSort gameSaves. †
updateAttrTablerun as a Lua statementCInfGame::ChangeBiography, CScreenCharacter::UpdateMainPanel, Infinity_OnPortraitLClickRefresh the attribute table of the record screen. †
updateChatViewedrun as a Lua statementCScreenWorld::DisplayChatMessageMark multiplayer chat as viewed. †

The engine also reads these globals, which the game's Lua code sets (for example the variables of MENU edit fields):

connectionIsHosting (CScreenConnection::JoinGame, CScreenConnection::TimerAsynchronousUpdate), currentAnimationID (Infinity_InstanceAnimation), currentChargenAlignment (CScreenCreateChar::IsDoneButtonClickable), currentContingencyCondition (CScreenWizSpell::DoneSequencingSpells), currentContingencyTarget (CScreenWizSpell::DoneSequencingSpells), debugResponseIndex (CGameDialogSprite::AsynchronousUpdate), draggedPortrait (CGameArea::AIUpdate), engine_mode (initEngineSettings), engine_name (initEngineSettings), font_colors (CVidFont::SetResRef), fontcolors (drawLetters, fontIsCommandLetter), languages (dimmInit), length (?0DPProviderEnet), list_GUICG_18_2 (CScreenCreateChar::IsDoneButtonClickable), list_GUICG_18_4 (CScreenCreateChar::IsDoneButtonClickable), listMetaInfo (RenderListCallback), loc_screenshot (CChitin::ProcessEvents), mouseOverPortrait (CScreenWorld::AsynchronousUpdate, eventMenu), mouseOverQuicklootContainer (CScreenWorld::AsynchronousUpdate), mulitplayerPreexistingDifficulty (CScreenConnection::HandleEMEvent), nameToItem (findItemByName), options (BGDefaultPrivateProfileString, BGRemovePrivateProfileObject), package (enableCucumberSupport), popup2Button (CScreenStore::OnRentRoomButtonClick), purchasedDLC (CPlatform::HasDLC, CPlatform::HasDLCContent), standalone (initEngineSettings), storeCurMenuId (CScreenStore::IsBuySpellButtonClickable, CScreenStore::IsCharacterInRange), styles (yy_reduce), uiMenuStack (restoreMenuStack), usingSODStartMenu (CScreenStart::TimerAsynchronousUpdate).

The bindings, the embedded chunk, the constants and their values, the globals set by the engine and the table structures are identical in all six examined builds. The only difference is the translation function the engine calls: t in 2.6.6.0 and getUiString in 2.7.3.0 (see also the MENU page).