### Example Crafting Category Preview Data Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/formats/ObjectCategoriesItemComboPreviewData.md Examples of 'new CraftingPreviewData' entries for UI previews. These demonstrate how to define the category, icon (often 'unknown'), and tooltip for different crafting categories. ```txt new CraftingPreviewData "ALCH_Affinity_Air" type "ObjectCategories" data "Category" "ALCH_Affinity_Air" data "Icon" "unknown" data "Tooltip" "h5a9bf976g47e6g4e51ga980g8c1ca41b61a6;2" new CraftingPreviewData "ConstructPart" type "ObjectCategories" data "Category" "ConstructPart" data "Icon" "unknown" data "Tooltip" "..." ``` -------------------------------- ### Stats Entry Syntax and Examples in Lua Source: https://context7.com/nellsrelo/bg3-schema/llms.txt Demonstrates the custom key-value syntax for defining BG3 game data entries like weapons and spells. It shows basic structure and provides an example for a custom dagger weapon, including fields for root template, damage, rarity, and boosts. ```lua -- Basic Stats entry syntax new entry "EntryName" type "EntryType" using "ParentEntry" data "FieldName" "FieldValue" -- Example: Custom dagger weapon new entry "WPN_Dagger_Assassin" type "Weapon" using "WPN_Dagger" data "RootTemplate" "1eab180b-5bf9-48ea-aece-7ba20d1deb78" data "Damage" "1d4" data "Damage Type" "Piercing" data "Rarity" "Rare" data "DefaultBoosts" "WeaponEnchantment(2);WeaponProperty(Magical)" data "PassivesOnEquip" "Backstabber" data "BoostsOnEquipMainHand" "UnlockSpell(Target_Sneak_Attack)" ``` -------------------------------- ### Example Equipment Set Definition Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/formats/Equipment.md An example demonstrating the structure for defining a 'Barbarian' equipment set. It includes setting the initial weapon type, adding various equipment groups, and specifying items like weapons, potions, and armor by their stats entry names. ```plaintext new equipment "EQP_CC_Barbarian" add initialweaponset "Melee" add equipmentgroup add equipment entry "WPN_Greataxe" add equipmentgroup add equipment entry "OBJ_Potion_Healing" add equipmentgroup add equipment entry "OBJ_Potion_Healing" add equipmentgroup add equipment entry "OBJ_Scroll_Revivify" add equipmentgroup add equipment entry "ARM_Shoes_Barbarian" add equipmentgroup add equipment entry "ARM_Barbarian" add equipmentgroup add equipment entry "WPN_Handaxe" add equipmentgroup add equipment entry "WPN_Handaxe" add equipmentgroup add equipment entry "OBJ_Keychain" add equipmentgroup add equipment entry "OBJ_Bag_AlchemyPouch" add equipmentgroup add equipment entry "ARM_Camp_Body" add equipmentgroup add equipment entry "ARM_Camp_Shoes" add equipmentgroup add equipment entry "OBJ_Backpack_CampSupplies" ``` -------------------------------- ### TutorialEvent Action Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/reference/functors-boosts.md Triggers a specific tutorial event. Requires a unique GUID to identify the event. ```BG3Schema TutorialEvent: Arguments: Event: Guid ``` -------------------------------- ### Class Hierarchy Example Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/ClassDescriptions/ClassDescription.md This example demonstrates the hierarchical relationship between base classes and their subclasses. It shows a base class 'Barbarian' with several subclasses like 'BerserkerPath', 'WildMagicPath', and 'WildhearPath', linked via a 'ParentGuid'. ```text Barbarian (base class, UUID=...) +-- BerserkerPath (ParentGuid = Barbarian.UUID) +-- WildMagicPath (ParentGuid = Barbarian.UUID) +-- WildhearPath (ParentGuid = Barbarian.UUID) ``` -------------------------------- ### StepsType Sound Examples Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/Character.md Shows different values for the StepsType, which determines the footstep sound set played during movement. Examples include Bare, Leather, Metal, and Bone. ```text Bare ``` ```text Leather ``` ```text Metal ``` ```text Bone ``` -------------------------------- ### Saving Throw Syntax Examples Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/SpellData.md Provides examples of the saving throw syntax, which is used to define conditions for spell success or failure based on a target's saving throw. The 'not' prefix indicates that the spell succeeds if the save fails. ```BG3 Schema "not SavingThrow(Ability.Wisdom, SourceSpellDC())" "not SavingThrow(Ability.Constitution, SourceSpellDC(), AdvantageOnPoisoned())" "not SavingThrow(Ability.Dexterity, 13)" ``` -------------------------------- ### ActionResources Format Example Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/Character.md Demonstrates the syntax for ActionResources, which specifies resource types and their amounts. Common types include ActionPoint, BonusActionPoint, Movement, ReactionActionPoint, and SpellSlot. ```plaintext ResourceType:Amount;ResourceType:Amount;... Common resource types: - ActionPoint — Standard actions (usually 1) - BonusActionPoint — Bonus actions (usually 1) - Movement — Movement in meters (9 = 30ft, 10.5 = 35ft) - ReactionActionPoint — Reactions (usually 1) - SpellSlot:N:Level — Spell slot of level N (e.g., SpellSlot:2:1 = 2 level-1 slots) ``` -------------------------------- ### Boosts Format Examples Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/Progressions/Progression.md Illustrates the syntax for various boost types used in character progression, such as ActionResource, ProficiencyBonus, Proficiency, and Attribute. These are semicolon-delimited expressions. ```text ActionResource(Rage,2,0) ProficiencyBonus(SavingThrow,Strength) Proficiency(LightArmor) Attribute(UseMusicalInstrumentForCasting) ``` -------------------------------- ### Passives Configuration Example Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/Character.md Shows semicolon-separated passive ability IDs that define default features for characters. Common passives include AttackOfOpportunity and DarknessRules. ```text AttackOfOpportunity;DarknessRules ``` ```text ShortResting;NonLethal;WeaponThrow;Perform;AttackOfOpportunity;DarknessRules ``` ```text FeyAncestry;Darkvision;DarknessRules ``` -------------------------------- ### BG3 Functor and Boost Syntax Example Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/README.md Shows the syntax for functors (action expressions) and boosts (passive stat modifiers) used in BG3 stats files. ```plaintext ApplyStatus(BURNING,2,1) ``` ```plaintext Proficiency(LightArmor) ``` -------------------------------- ### GET /ruleset-selection-presets Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/RulesetSelectionPresets/RulesetSelectionPreset.md Retrieves the list of available difficulty presets used in the game's new-game difficulty picker. ```APIDOC ## GET /ruleset-selection-presets ### Description Retrieves a collection of RulesetSelectionPreset objects. These define the difficulty levels available to players. ### Method GET ### Endpoint /ruleset-selection-presets ### Parameters #### Query Parameters - **limit** (integer) - Optional - Number of presets to return ### Request Example GET /ruleset-selection-presets ### Response #### Success Response (200) - **UUID** (guid) - Primary key of the preset - **Name** (string) - Internal preset name (e.g., STORY, BALANCED) - **Asset** (string) - UI asset reference identifier - **DisplayName** (string) - Translated handle for UI display - **Description** (string) - Translated handle for UI description - **IsCustom** (bool) - Indicates if the preset is user-defined #### Response Example { "UUID": "43bb2d5b-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "Name": "BALANCED", "Asset": "difficulty_02", "DisplayName": "h1952...", "Description": "h0391...", "IsCustom": false } ``` -------------------------------- ### Difficulty Statuses Configuration Example Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/Character.md Demonstrates difficulty-conditional status application using a format of DIFFICULTY_TAG: STATUS_NAME. This allows different statuses based on game difficulty. ```text STATUS_EASY: HEALTHREDUCTION_EASYMODE; STATUS_HARD: HEALTHBOOST_HARDCORE ``` ```text STATUS_HARD: ORIN_HARDCORE ``` -------------------------------- ### Define Weapon Value and Pricing Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/Weapon.md Examples of how to define weapon value using UUID references for tiers or direct overrides for fixed-price quest items. ```text ValueUUID = "91696f37-5a03-4f10-b636-2e5e2096a594" ValueLevel = 1 ValueScale = 0.5 ValueOverride = 60 ``` -------------------------------- ### BG3 Stats Inheritance Example Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/README.md Illustrates the use of the 'using' keyword for inheritance in BG3 stats files, allowing for shallow merging and last-write-wins behavior. ```plaintext using "ParentEntry" ``` -------------------------------- ### Configure Tick System Functors Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/StatusData.md Examples of tick-based logic using functors. These execute periodically based on the TickType and support conditional logic and AI-specific overrides. ```text TickType: "EndTurn" TickFunctors: "IF(HasStatus('YOURFEARS_HEXED')):DealDamage(1d6,Necrotic);AI_ONLY:DealDamage(1,Slashing)" ``` -------------------------------- ### Define StatsFunctorContext Passive Events Source: https://context7.com/nellsrelo/bg3-schema/llms.txt Configures passive abilities that trigger based on specific game events like damage, status application, or turn start. It demonstrates how to map Source and Target contexts and includes a critical example of preventing infinite loops in damage triggers. ```lua new entry "SneakAttackDamage" type "PassiveData" data "StatsFunctorContext" "OnDamage" data "StatsFunctors" "DealDamage(2d6,MainMeleeWeaponDamageType)" data "Conditions" "IsWeaponAttack() and HasAdvantage() and not HasDamageEffectFlag(DamageFlags.Missed)" new entry "RetaliationStrike" type "PassiveData" data "StatsFunctorContext" "OnAttacked" data "StatsFunctors" "DealDamage(1d6,Fire)" data "Conditions" "IsWeaponAttack() and HasDamageEffectFlag(DamageFlags.Hit)" new entry "StatusReflection" type "PassiveData" data "StatsFunctorContext" "OnStatusApplied" data "StatsFunctors" "ApplyStatus(BURNING,100,2)" data "Conditions" "HasStatus('SG_Poisoned',context.Source)" new entry "TurnBasedHealing" type "PassiveData" data "StatsFunctorContext" "OnTurn" data "StatsFunctors" "RegainHitPoints(1d4)" data "Conditions" "HasHPPercentageWithoutTemporaryHPLessThan(50)" new entry "CastTrigger" type "PassiveData" data "StatsFunctorContext" "OnCast" data "StatsFunctors" "RestoreResource(SorceryPoint,1,0)" data "Conditions" "SpellId('Projectile_Fireball') or SpellId('Projectile_LightningBolt')" data "StatsFunctors" "DealDamage(1d6,Fire,,0,,true)" ``` -------------------------------- ### Personal Status Immunities Example Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/Character.md Provides an example of semicolon-separated status IDs and status group IDs for defining a creature's complete immunity list. Common on undead and constructs. ```text SG_Poisoned;EXHAUSTED;PARALYZED;HOLD_PERSON;PETRIFIED... ``` -------------------------------- ### Selectors Format Examples Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/Progressions/Progression.md Demonstrates the syntax for selector functions used to grant spells, skills, passives, and abilities. Parameter order is critical for correct functionality. ```text AddSpells(SpellListUUID, [SelectorId], [CastingAbility], [ActionResourceUUID], [PrepareType], [CooldownType]) SelectSpells(SpellListUUID, Amount, SwapAmount, [SelectorId], [CastingAbility], [ActionResourceUUID], [PrepareType], [CooldownType]) SelectSkills(SkillListUUID, Amount, [SelectorId]) SelectSkillsExpertise(SkillListUUID, Amount, [SelectorId], [LimitToProficiency]) SelectPassives(PassiveListUUID, [Amount], [SelectorId]) ReplacePassives(PassiveListUUID, [AmountToSwap], [SelectorId]) SelectAbilities(AbilityListUUID, Amount, AbilityAmount, [SelectorId]) SelectAbilityBonus(AbilityListUUID, [BonusType], SelectionAmount, [Amounts]) SelectEquipment(EquipmentListUUID, Amount, [SelectorId]) ``` -------------------------------- ### Example Data File Structure Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/formats/Modifiers.md Illustrates how data files reference the Modifiers.txt schema to define entries. It shows the 'new entry' and 'data' keywords used to specify item names, types, and their associated properties. ```txt new entry "Longsword" type "Weapon" data "Damage" "1d8" data "Damage Type" "Slashing" ``` -------------------------------- ### BG3 Stats File Format Example Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/README.md Demonstrates the basic structure of a Baldur's Gate 3 stats file, including entry definition, type declaration, inheritance, and data fields. ```plaintext new entry "EntryName" type "TypeName" using "ParentEntry" data "FieldName" "Value" ``` -------------------------------- ### Lock Modifier Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/reference/functors-boosts.md Applies a lock to an object, requiring a specific Guid. ```APIDOC ## Lock ### Description Applies a lock to an object that can only be opened with a specific Guid. ### Method N/A (This is a schema definition, not an API endpoint) ### Endpoint N/A ### Parameters #### Path Parameters N/A #### Query Parameters N/A #### Request Body - **DC** (Guid) - Required - The unique identifier for the lock. ### Request Example N/A ### Response #### Success Response (200) N/A #### Response Example N/A ``` -------------------------------- ### Ability Boosts Source: https://context7.com/nellsrelo/bg3-schema/llms.txt These examples show how to apply ability score boosts using the Ability functor in Boosts fields. It supports setting a flat bonus and an optional maximum value. ```lua data "Boosts" "Ability(Strength, 2)" -- +2 Strength data "Boosts" "Ability(Charisma, 1, 20)" -- +1 Charisma, max 20 ``` -------------------------------- ### Heal Stat Definition Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/StatusData.md Defines the resource that is healed, with 'Vitality' being a common example. ```schema { "type": "StatusHealType", "values": ["Vitality"] } ``` -------------------------------- ### ApplyStatus Syntax Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/reference/functors-boosts.md Illustrates the correct usage of ApplyStatus with percentage-based chances and positional argument skipping using commas. ```text ApplyStatus(BURNING,100,2,,,,not SavingThrow(...)) ``` -------------------------------- ### GET /schema/level-template Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/Templates/scan-gustavdev.md Retrieves the schema definition and attribute list for the LevelTemplate entity. ```APIDOC ## GET /schema/level-template ### Description Returns the structural definition of a LevelTemplate, including all required and optional attributes, their data types, and usage frequency. ### Method GET ### Endpoint /schema/level-template ### Parameters #### Query Parameters - **include_examples** (boolean) - Optional - Whether to include sample values for attributes. ### Request Example GET /schema/level-template?include_examples=true ### Response #### Success Response (200) - **attributes** (array) - List of field definitions including Name, Type, and Frequency. #### Response Example { "attributes": [ {"name": "LevelName", "type": "FixedString", "required": true}, {"name": "Scale", "type": "float", "required": false}, {"name": "IsCinematic", "type": "bool", "required": false} ] } ``` -------------------------------- ### Condition Syntax Examples Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/SpellData.md Illustrates the boolean DSL for defining conditions, using operators like `and`, `or`, and `not`, along with various helper functions to check character states, statuses, and equipment. ```BG3 Schema "not Self() and not Dead() and Character()" "Enemy() and not Dead()" "HasStatus('BURNING') or HasStatus('ENTANGLED')" "Tagged('YOURFEARS_TARGET') and not Dead()" "CanThrowWeight() and not Grounded() and not IsItemDisabled()" ``` -------------------------------- ### GET /ClassDescriptions Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/ClassDescriptions/ClassDescription.md Retrieves the schema definition and attribute specifications for the ClassDescription node. ```APIDOC ## GET /ClassDescriptions ### Description Returns the structural definition of a ClassDescription node, including all required and optional attributes used to define character classes and subclasses. ### Method GET ### Endpoint /ClassDescriptions ### Parameters #### Path Parameters - **UUID** (guid) - Required - The unique identifier for the specific class entry. ### Request Example GET /ClassDescriptions/d8cadb42-0ff9-4049-afaf-e5d78d06a399 ### Response #### Success Response (200) - **UUID** (guid) - Primary key of the class. - **Name** (FixedString) - Internal identifier (e.g., 'Barbarian'). - **ProgressionTableUUID** (guid) - Link to the associated progression table. - **SpellCastingAbility** (uint8) - Numeric code for the primary casting stat. #### Response Example { "UUID": "d8cadb42-0ff9-4049-afaf-e5d78d06a399", "Name": "Barbarian", "ProgressionTableUUID": "60bbcc97-5381-4898-bc15-908c072895de", "SpellCastingAbility": 0 } ``` -------------------------------- ### GET /schema/character-creation/hair-colors Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/CharacterCreationHairColors/CharacterCreationHairColor.md Retrieves the schema definition and attribute requirements for the CharacterCreationHairColor node. ```APIDOC ## GET /schema/character-creation/hair-colors ### Description Retrieves the structural definition for hair color entries used in the character creation interface. ### Method GET ### Endpoint /schema/character-creation/hair-colors ### Parameters #### Path Parameters - None #### Query Parameters - None ### Request Example GET /schema/character-creation/hair-colors ### Response #### Success Response (200) - **UUID** (guid) - Primary key for the hair color entry. - **Name** (FixedString) - Internal identifier (e.g., HAIR_Color_Blonde_0). - **DisplayName** (TranslatedString) - Localization handle for the UI. - **MaterialPresetUUID** (guid) - Reference to the material preset bank. - **UIColor** (LSString) - Hex ARGB color string for the UI swatch. #### Response Example { "UUID": "0206c920-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "Name": "HAIR_Color_Blonde_0", "DisplayName": "handle_h12345", "MaterialPresetUUID": "b6d28fbc-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "UIColor": "#FFFFD3AD" } ``` -------------------------------- ### Default Boosts Expression Examples Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/Character.md Illustrates semicolon-separated boost expressions that are always active. Includes universal boosts like BlockRegainHP and conditional boosts for skills or saving throws. ```text BlockRegainHP(Undead;Construct) ``` ```text Skill(Stealth, 6); BlockRegainHP(Undead;Construct) ``` ```text ProficiencyBonus(SavingThrow, Wisdom); BlockRegainHP(Undead;Construct) ``` -------------------------------- ### GET /schema/trigger Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/Templates/scan-shareddev.md Retrieves the schema definition and attribute specifications for the 'trigger' node type. ```APIDOC ## GET /schema/trigger ### Description Returns the full list of attributes and their data types for the 'trigger' node type used in the BG3 schema. ### Method GET ### Endpoint /schema/trigger ### Parameters None ### Request Example GET /schema/trigger ### Response #### Success Response (200) - **_OriginalFileVersion_** (int64) - File version identifier. - **CameraOffset** (fvec3) - Vector offset for the camera. - **Color4** (fvec4) - RGBA color value. - **CustomPointTransform** (mat4x4) - 4x4 transformation matrix. - **FadeGroupOnly** (bool) - Whether the trigger affects only fade groups. - **MapKey** (FixedString) - Unique identifier for the trigger instance. - **Name** (LSString) - Display name of the trigger. - **TriggerType** (FixedString) - The specific classification of the trigger (e.g., CrowdCharacterTrigger). #### Response Example { "MapKey": "00087155-70a0-405b-b59a-cceb0c7bccb0", "Name": "BLD_MF_Netherbrain_Crown_C", "TriggerType": "CrowdCharacterTrigger", "Scale": 0.7 } ``` -------------------------------- ### Define NPC and Player Equipment Sets Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/formats/Equipment.md This format defines starting equipment loadouts for NPCs and player character creation classes. It uses imperative 'add' commands to specify weapon sets, equipment groups, and individual item entries, referencing stats entries by exact name. Each 'add equipmentgroup' followed by 'add equipment entry' pair defines a single item slot. ```plaintext new equipment "NAME" add initialweaponset "Melee"|"Ranged" add equipmentgroup add equipment entry "STATS_ENTRY_NAME" ``` -------------------------------- ### GET /ItemThrowParams Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/ItemThrowParams/ItemThrowParams.md Retrieves the schema definitions and attribute configurations for item throwing parameters. ```APIDOC ## GET /ItemThrowParams ### Description Retrieves the configuration for item throwing behavior, including rotation axes and distance-based spin logic. ### Method GET ### Endpoint /ItemThrowParams ### Parameters #### Path Parameters - **UUID** (guid) - Required - The unique identifier for the specific throw parameter entry. ### Request Example GET /ItemThrowParams/07a075f8-xxxx-xxxx-xxxx-xxxxxxxxxxxx ### Response #### Success Response (200) - **UUID** (guid) - Primary key of the entry. - **Conditions** (LSString) - Condition expression matching items (e.g., Item() and Tagged('WPN_DAGGER')). - **Priority** (int32) - Evaluation priority. - **RotationAxis** (FixedString) - Axis of spin during throw. - **MaxDistForZeroRotations** (int32) - Max distance for no-spin throw. - **MaxDistForOneRotation** (int32) - Max distance for one-spin throw. - **MaxDistForTwoRotations** (int32) - Max distance for two-spin throw. #### Response Example { "UUID": "07a075f8-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "Conditions": "Item() and Tagged('WPN_DAGGER')", "Priority": 1, "RotationAxis": "YAxisNegative", "MaxDistForZeroRotations": 1, "MaxDistForOneRotation": 3, "MaxDistForTwoRotations": 9 } ``` -------------------------------- ### Voice Node Attributes Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/Voices/Voice.md Details the attributes of the Voice node, including their types, counts, and examples. ```APIDOC ## Node: `Voice` ### Attributes | Attribute | Type | Count | Examples | |---|---|---|---| | `UUID` | guid | 4/4 | `15ead9db-7a73-4681-8848-5f1487ad4c68` | | `DisplayName` | TranslatedString | 4/4 | handle + version | | `BodyType` | uint8 | 4/4 | `0`, `1` | | `SpeakerUUID` | guid | 4/4 | `24247531-c432-4f0f-8f35-6c90c4844aa8` | | `TableUUID` | guid | 4/4 | `5ee56242-d07c-482e-9260-24529d1473a3` | ``` -------------------------------- ### ActionResourceDefinition Attributes Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/ActionResourceDefinitions/ActionResourceDefinition.md Details the attributes available for the ActionResourceDefinition node, including their types, frequencies, and examples. ```APIDOC ## Node: `ActionResourceDefinition` ### Description Defines an in-game resource such as spell slots, rage, or inspiration. ### Attributes | Attribute | Type | Frequency | Examples | Notes | |---|---|---|---|---| | `UUID` | guid | always | | Primary key | | `Name` | FixedString | always | `ActionPoint`, `SpellSlot`, `Rage`, `BardicInspiration` | Internal resource name | | `DisplayName` | TranslatedString | always | handle + version | Localized name | | `Description` | TranslatedString | common | handle + version | Localized description | | `ReplenishType` | FixedString | always | `Turn`, `Rest`, `ShortRest`, `FullRest`, `Never` | When resource replenishes | | `MaxLevel` | uint32 | common | `0`, `9` (spell slots) | Highest level tier | | `MaxValue` | uint32 | rare | `4` (InspirationPoint), `1` (TidesOfChaos) | Hard cap | | `DiceType` | uint32 | rare | `6` (BardicInspiration), `8` (SuperiorityDie) | Die size for dice-based resources | | `ShowOnActionResourcePanel` | bool | common | true/false | Show in UI resource bar | | `IsSpellResource` | bool | rare | true/false | Spell-slot-like resource | | `UpdatesSpellPowerLevel` | bool | rare | true/false | Affects spell DC/attack | | `PartyActionResource` | bool | rare | `true` (InspirationPoint) | Shared across party | | `IsHidden` | bool | rare | true/false | Internal-only resource | | `Error` | TranslatedString | rare | error message handle | Message when exhausted | ``` -------------------------------- ### Define a SpellSet in SpellSet.txt Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/formats/SpellSet.md This snippet demonstrates the syntax for creating a new spell set and populating it with specific spell entries. The spell names must correspond exactly to entries defined in the game's SpellData files. ```Text new spellset "DEBUG_Common" add spell "Projectile_Jump" add spell "Shout_Dash" add spell "Target_Shove" add spell "Shout_Hide" add spell "Throw_Throw" add spell "Shout_RegainHP" add spell "Target_KnockOut_Person" ``` -------------------------------- ### Resource Node Attributes Source: https://github.com/nellsrelo/bg3-schema/blob/main/content-banks/SoundBank/Resource.md Details the attributes of the Resource node, including their types, descriptions, and examples. ```APIDOC ## Resource Node Attributes ### Description This section details the attributes of the `Resource` node, which represents an audio asset. ### Attributes | Attribute | Type | Description | Example | |---|---|---|---| | `ID` | FixedString | UUID primary key | `007cf46b-0179-4145-9765-a3f257e8f387` | | `Name` | LSString | Sound name | `Action_Loop_ArcaneArcher_GraspingArrow_Stop_01` | | `SoundEvent` | FixedString | Wwise event name | `Action_Loop_ArcaneArcher_GraspingArrow_Stop_01` | | `SoundEventID` | uint32 | Wwise event hash ID | `2998283788` | | `SoundEventUUID` | guid | Sound event UUID | `0e76e27e-4727-4ebe-8671-151056823e72` | | `SoundBank` | FixedString | Parent Wwise bank name | `ACTIONS` | | `SourceFile` | LSString | Wwise bank file (.bnk) | `Public/Shared/Assets/Sound/ACTIONS.bnk` | | `Duration` | float | Sound duration in seconds (-1 = looping) | `5.930666`, `-1` | | `MaxDistance` | float | Maximum audible distance (0 = unlimited) | `50`, `0` | | `SoundCategory` | int8 | Sound category enum | `0` | | `SoundCodec` | int8 | Audio codec enum | `7` | | `Preload` | bool | Pre-load audio data | `False` | | `Internal` | bool | Internal engine sound | `True` | | `DisplayName` | LSString | _(optional)_ UI display name | _(empty)_ | | `GMSoundCategory` | int8 | _(optional)_ Game Master category | `0` | | `GMSubSection` | LSString | _(optional)_ Game Master UI section | _(empty)_ | | `Localized` | bool | Localization flag | `False` | | `_OriginalFileVersion_` | int64 | Engine version stamp | `144115205255725357` | ### Notes - `SoundCodec` value `7` appears to be the standard codec. - `Duration = -1` indicates a looping sound. ``` -------------------------------- ### SpawnInInventory Action Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/reference/functors-boosts.md Spawns an item and places it directly into the inventory. Allows for equipping and specifying quantity. ```BG3Schema SpawnInInventory: Arguments: (Required) TemplateId: Guid Amount: Int PlaceInInventory: Boolean Equip: Boolean AllowOffHand: Boolean AiSpellOverride: String StatusToApply1: String StatusToApply2: String StatusToApply3: String StatusToApply4: String ``` -------------------------------- ### GET /schema/functors Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/SpellData.md Lists the available functors used within spell properties and their specific purposes. ```APIDOC ## GET /schema/functors ### Description Provides a list of supported functors (e.g., ApplyStatus, DealDamage) that can be utilized within spell property fields. ### Method GET ### Endpoint /schema/functors ### Parameters None ### Response #### Success Response (200) - **functors** (array) - List of available functor identifiers. #### Response Example { "functors": ["ApplyStatus", "DealDamage", "CreateSurface", "Summon"] } ``` -------------------------------- ### Configure Weapon Boosts and Spells Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/Weapon.md Demonstrates the syntax for applying static and conditional boosts, including enchantment levels, spell unlocking, and tag-based logic. ```text DefaultBoosts = "WeaponEnchantment(1);WeaponProperty(Magical)" Boosts = "IF(Tagged('APOSTLE_OF_MYRKUL',context.Source)):UnlockSpell(Target_Spell)" BoostsOnEquipMainHand = "UnlockSpell(Zone_Cleave);UnlockSpell(Target_Slash_New)" ``` -------------------------------- ### GET /boosts/matrix Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/reference/per-type-form-reference.md Retrieves the full matrix of boost types and their compatibility with different game entities. ```APIDOC ## GET /boosts/matrix ### Description Returns a comprehensive mapping of boost types (e.g., Ability, AC, Resistance) against supported entity categories (Weapon, Armor, Character, Object, Status, Passive). ### Method GET ### Endpoint /boosts/matrix ### Parameters #### Query Parameters - **entity_type** (string) - Optional - Filter results by a specific entity type (e.g., 'Weapon', 'Armor'). ### Request Example GET /boosts/matrix?entity_type=Weapon ### Response #### Success Response (200) - **boosts** (array) - A list of objects containing the boost name and a boolean map of supported entity types. #### Response Example { "boosts": [ { "name": "Ability", "supported": { "Armor": true, "Status": true, "Passive": true } } ] } ``` -------------------------------- ### GET /SkillList Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/SkillLists/SkillList.md Retrieves the definition and structure of the SkillList node used for character skill selection. ```APIDOC ## GET /SkillList ### Description Retrieves the schema definition for SkillList, which defines groups of skills available for selection in character progression. ### Method GET ### Endpoint /SkillList ### Parameters #### Path Parameters - **UUID** (guid) - Required - The unique identifier for the specific skill list. ### Request Example { "UUID": "7c3e89a1-5b2d-4f1a-9c8e-3d2b1a0f9e8d" } ### Response #### Success Response (200) - **UUID** (guid) - Primary key of the list. - **Name** (FixedString) - Descriptive name of the list. - **Skills** (LSString) - Comma-delimited list of skill identifiers. #### Response Example { "UUID": "7c3e89a1-5b2d-4f1a-9c8e-3d2b1a0f9e8d", "Name": "Barbarian Skill List", "Skills": "Acrobatics,AnimalHandling,Arcana" } ``` -------------------------------- ### GET /AnimationSetPriorities Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/AnimationSetPriorities/AnimationSetPriority.md Retrieves the definition of animation set priorities used for character animation overrides. ```APIDOC ## GET /AnimationSetPriorities ### Description Retrieves the AnimationSetPriority node definition, which defines the priority value for animation overrides and associates them with specific entities. ### Method GET ### Endpoint /AnimationSetPriorities ### Parameters #### Path Parameters - **UUID** (guid) - Required - The unique identifier for the priority set. ### Request Body N/A ### Response #### Success Response (200) - **UUID** (guid) - Primary key of the node. - **Name** (LSString) - The name of the priority set (e.g., Companion). - **Priority** (int32) - The numerical priority value for the animation override. - **ReferenceId** (guid) - Reference to the associated entity. - **AddidionalObjects** (node) - List of additional objects affected by this priority (Note: contains a typo in vanilla data). #### Response Example { "UUID": "b301afa2-e21e-47ea-84ec-eb9737afb82e", "Name": "Companion", "Priority": 30, "ReferenceId": "c87c64cd-0164-4b1a-8406-a5795f7cb070", "AddidionalObjects": [] } ``` -------------------------------- ### Weapon Functors and Conditions Examples Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/types/Weapon.md Illustrates the use of functors for applying effects and conditions for checking game states. Supports conditional logic and context-specific actions on weapon hits or surface interactions. ```string WeaponFunctors UseConditions ``` -------------------------------- ### SpellData Definition Examples in Lua Source: https://context7.com/nellsrelo/bg3-schema/llms.txt Provides examples of defining BG3 spell data using the Stats entry format. It includes a comprehensive definition for 'Hold Person' (a target spell) and 'Fireball' (an AoE damage spell), showcasing various fields like spell type, level, school, targeting conditions, damage, range, and sound effects. ```lua -- Complete spell definition example: Hold Person new entry "Target_HoldPerson" type "SpellData" data "SpellType" "Target" data "Level" "2" data "SpellSchool" "Enchantment" data "TargetConditions" "not Self() and not Dead() and Character()" data "SpellRoll" "not SavingThrow(Ability.Wisdom, SourceSpellDC())" data "SpellSuccess" "ApplyStatus(HOLD_PERSON,100,10)" data "SpellFail" "" data "TargetRadius" "1800" data "Range" "1800" data "Icon" "Spell_Enchantment_HoldPerson" data "DisplayName" "hd543b3c4g1c66g4f92g897eg4ac26f04b3f0;1" data "Description" "hb0e18e26gc0f7g495dg82c9g55a1c7a0b4e6;5" data "DescriptionParams" "ApplyStatus(HOLD_PERSON,100,10)" data "UseCosts" "ActionPoint:1;SpellSlotsGroup:1:1:2" data "SpellFlags" "HasVerbalComponent;HasSomaticComponent;IsConcentration;IsSpell;IsHarmful" data "PrepareSound" "Spell_Prepare_Control_Gen_L1to3" data "CastSound" "Spell_Cast_Control_Enchantment_L1to3" data "VerbalIntent" "Control" -- Fireball: AoE damage spell with surfaces new entry "Projectile_Fireball" type "SpellData" data "SpellType" "Projectile" data "Level" "3" data "SpellSchool" "Evocation" data "SpellRoll" "not SavingThrow(Ability.Dexterity, SourceSpellDC())" data "SpellSuccess" "DealDamage(8d6,Fire)" data "SpellFail" "DealDamage(8d6/2,Fire)" data "SpellProperties" "GROUND:CreateSurface(4,3,Fire)" data "AreaRadius" "4" data "ExplodeRadius" "4" data "Range" "4500" data "UseCosts" "ActionPoint:1;SpellSlotsGroup:1:1:3" data "SpellFlags" "HasVerbalComponent;HasSomaticComponent;IsSpell;IsHarmful" ``` -------------------------------- ### DLC Node Attributes Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/DLC/DLC.md Details the attributes associated with the DLC node, including their types, frequency, and examples. ```APIDOC ## Node: `DLC` ### Description Represents downloadable content (DLC) entries in the game, including store-specific API codes for activation and identification. ### Attributes | Attribute | Type | Frequency | Examples | Notes | |---|---|---|---|---| | `UUID` | guid | 4/4 | `43962845-...` | Primary key | | `Name` | LSString | 4/4 | `DLC_Gustav_DigitalDeluxe`, `DLC_Gustav_LarianNetworkSignUp` | Internal DLC identifier | | `GalaxyAPICode` | uint32 | 2/4 | `1157299235`, `1160386633` | GOG Galaxy store code | | `SteamAPICode` | uint32 | 2/4 | `2378500`, `2378510` | Steam store app ID | | `PS5APICode` | uint32 | 2/4 | `2`, `1` | PlayStation Store code | | `XLiveAPICode` | uint32 | 1/4 | `2741026280` | Xbox Live code | | `TwitchAPICode` | uint32 | 1/4 | `1000` | Twitch integration code | | `UnlockType` | uint8 | 1/4 | `1` | How the DLC is unlocked (e.g., account signup) | ### Patterns of Use - Most DLC entries have platform-specific API codes (Steam, GOG, PS5, Xbox). - `DLC_Gustav_LarianNetworkSignUp` uses `UnlockType` instead of store codes. - `DLC_Gustav_Twitch_Reward` only has `TwitchAPICode`. ### Caveats & Gotchas - Empty in Gustav pack; only GustavDev has entries. - Platform API codes are optional — each DLC only has codes for its relevant platforms. ``` -------------------------------- ### Boost Formatting Syntax Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/Progressions/Progression.md Demonstrates the required formatting for combining multiple boost functions. Note that no spaces are allowed between the semicolon delimiter and the next function. ```text Ability(Strength,1);Proficiency(LightArmor);Resistance(Fire,Resistant) ``` -------------------------------- ### DiffusionProfile Node Attributes Source: https://github.com/nellsrelo/bg3-schema/blob/main/content-banks/DiffusionProfileBank/DiffusionProfile.md Details the attributes available for the DiffusionProfile node, including their types, descriptions, and examples. ```APIDOC ## Node: `DiffusionProfile` ### Description Represents a diffusion profile used for defining surface material properties, often associated with skin, cloth, and organic surfaces. ### Attributes | Attribute | Type | Description | Example | |---|---|---|---| | `ID` | FixedString | UUID primary key | `d769c6b6-12e9-083e-35e3-02695252e44d` | | `Name` | LSString | Profile name | `BLD_Druids_Camp_Tent_A_SS` | | `Localized` | bool | Localization flag | `False` | | `ScatterColor` | fvec3 | Subsurface scatter color | `0.11926401 0.28012437 0.3636039` | | `ScatterDistance` | float | Scatter distance in world units | `200` | | `TransmissionTint` | fvec3 | Transmission color tint | `0.11657577 0.28445205 0.3636039` | | `ThickObjectTransmission` | bool | Enable thick object transmission | `False` | | `ThicknessRemapMin` | float | Thickness remap minimum | `0` | | `ThicknessRemapMax` | float | Thickness remap maximum | `1` | | `DualSpecularMix` | float | Dual specular lobe mix ratio | `0.85` | | `DualSpecularRoughnessA` | float | Primary specular roughness | `0.75` | | `DualSpecularRoughnessB` | float | Secondary specular roughness | `1.3` | | `_OriginalFileVersion_` | int64 | Engine version stamp | `144115198813274213` | ### Notes - 17 instances in Shared — typically for skin, cloth, and organic surface materials - Often co-located with [VirtualTextureBank](../VirtualTextureBank/_REGION.md) in the same file ``` -------------------------------- ### GameplayLight Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/reference/functors-boosts.md Configures gameplay lighting properties. ```APIDOC ## GameplayLight ### Description Adjusts parameters related to in-game lighting effects and visibility. ### Method N/A (Schema Component) ### Endpoint N/A (Schema Component) ### Parameters #### ``` -------------------------------- ### GET /data/interrupts Source: https://github.com/nellsrelo/bg3-schema/blob/main/stats/formats/Modifiers.md Retrieves the schema definition for InterruptData, which governs spell interrupts, conditions, and UI tooltips. ```APIDOC ## GET /data/interrupts ### Description Retrieves the structure and field definitions for the InterruptData schema used by Data/Interrupt.txt. ### Method GET ### Endpoint /data/interrupts ### Parameters #### Query Parameters - **format** (string) - Optional - The response format (json/xml). ### Request Example GET /data/interrupts ### Response #### Success Response (200) - **fields** (array) - List of 30+ fields including Conditions, Container, Cooldown, and Description handles. #### Response Example { "field": "Conditions", "type": "Conditions", "notes": "Trigger conditions" } ``` -------------------------------- ### GET /schema/spline-construction Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/Templates/scan-shared.md Retrieves the schema definition for the SplineConstruction object, including all required attributes and their data types. ```APIDOC ## GET /schema/spline-construction ### Description Returns the structural definition of a SplineConstruction node, used for managing game world objects like scenery, items, and projectiles. ### Method GET ### Endpoint /schema/spline-construction ### Parameters #### Query Parameters - **includeChildren** (boolean) - Optional - If true, includes the structure of LayerList, Tags, and tiles child nodes. ### Request Example GET /schema/spline-construction?includeChildren=true ### Response #### Success Response (200) - **_OriginalFileVersion_** (int64) - File version identifier. - **CameraOffset** (fvec3) - Vector offset for camera positioning. - **Flag** (int32) - Status flag for the object. - **GroupID** (uint32) - Identifier for object grouping. - **HasGameplayValue** (bool) - Indicates if the object has gameplay significance. - **MapKey** (FixedString) - Unique identifier for the object instance. - **Name** (LSString) - Display name of the object. - **ParentTemplateId** (FixedString) - Reference to the parent template. - **Type** (FixedString) - Category of the object (e.g., scenery, item). #### Response Example { "MapKey": "000093b1-d1e2-41dd-b91e-03b1589a3d4b", "Name": "BOOK_GEN_Scroll_Parchment_Pile_C", "Type": "item", "HasGameplayValue": false } ``` -------------------------------- ### GoldValue Node Attributes Source: https://github.com/nellsrelo/bg3-schema/blob/main/regions/GoldValues/GoldValue.md Details the attributes of the GoldValue node, including their types, frequency of use, and example values. ```APIDOC ## Node: `GoldValue` ### Attributes | Attribute | Type | Frequency | Examples | Notes | |-----------|------|-----------|----------|-------| | `UUID` | guid | 58/58 | `8b2ad47c-...` | Primary key | | `Name` | FixedString | 58/58 | `ZeroValue`, `Junk`, `Tools` | Item value category | | `ParentScale` | double | 58/58 | `1` | Multiplier applied to parent's gold values | | `ParentUUID` | guid | 53/58 | `7190ea94-...` | Parent category (hierarchical) | | `Level1` | uint32 | 5/58 | `0`, `1`, `25` | Gold value at level 1 | | `Level2` | uint32 | 2/58 | `1`, `13` | Gold value at level 2 | | `Level3` | uint32 | 2/58 | `1`, `16` | Gold value at level 3 | | `Level4` | uint32 | 2/58 | `1`, `20` | Gold value at level 4 | | `Level5` | uint32 | 2/58 | `1`, `25` | Gold value at level 5 | | `Level6` | uint32 | 2/58 | `1`, `32` | Gold value at level 6 | | `Level7` | uint32 | 2/58 | `1`, `45` | Gold value at level 7 | | `Level8` | uint32 | 2/58 | `1`, `60` | Gold value at level 8 | | `Level9` | uint32 | 2/58 | `1`, `80` | Gold value at level 9 | | `Level10` | uint32 | 2/58 | `1`, `100` | Gold value at level 10 | | `Level11` | uint32 | 1/58 | `120` | Gold value at level 11 | | `Level12` | uint32 | 1/58 | `150` | Gold value at level 12 | ```