EquipmentEnchantData (Passivity Categories)
Overview
Section titled “Overview”EquipmentEnchantData.xml defines enchant passivity category configurations: mappings between passivity category IDs and passivity system links. This page documents the PassivityCategoryData section containing Category elements. The same XML file also contains an EnchantData section documented separately.
Version Support
Section titled “Version Support”| Version | Status |
|---|---|
| v92 | Full |
| v90 | - |
| v86 | - |
DSL Support
Section titled “DSL Support”Entity: enchantPassivityCategories
Operations: create, update, delete, upsert
enchantPassivityCategories: create: - enchantPassivityCategoryId: 120314 passivityLink: PassivityLink1 unchangeable: "false"
update: - enchantPassivityCategoryId: 120314 changes: passivityLink: NewPassivityLink
delete: - 120314
upsert: - enchantPassivityCategoryId: 120315 passivityLink: PassivityLink2Quick Recipes
Section titled “Quick Recipes”Create a Basic Passivity Category
Section titled “Create a Basic Passivity Category”enchantPassivityCategories: create: - enchantPassivityCategoryId: 120314 passivityLink: PassivityLink1Creates a passivity category with ID 120314 linked to the passivity system via “PassivityLink1”.
Create with Inline Passivities
Section titled “Create with Inline Passivities”enchantPassivityCategories: create: - enchantPassivityCategoryId: 120314 passivities: create: - id: 99000001 category: Equipment name: "critical_damage_boost" kind: 1 type: 2 method: 2 condition: 0 conditionValue: 0 conditionCategory: "0" value: 100.5 prob: 1.0 mobSize: "all" judgmentOnce: false tickInterval: 0 abnormalityCategory: 0 abnormalityKind: 0 - id: 99000002 category: Equipment name: "defense_aura" kind: 3 type: 2 method: 2 condition: 0 conditionValue: 0 conditionCategory: "0" value: 200.0 prob: 1.0 mobSize: "all" judgmentOnce: false tickInterval: 0 abnormalityCategory: 0 abnormalityKind: 0Creates a passivity category and its linked passivities in a single operation. The passivityLink attribute is auto-assembled from the inline passivity IDs (produces "99000001,99000002"). Each inline passivity entry follows the same format as a standalone passivities create.
Create with Inline Passivities and Strings
Section titled “Create with Inline Passivities and Strings”enchantPassivityCategories: create: - enchantPassivityCategoryId: 120314 passivities: create: - id: 99000001 category: Equipment name: "critical_damage_boost" kind: 1 type: 2 method: 2 condition: 0 conditionValue: 0 conditionCategory: "0" value: 100.5 prob: 1.0 mobSize: "all" judgmentOnce: false tickInterval: 0 abnormalityCategory: 0 abnormalityKind: 0 passivityStrings: name: "Critical Damage Boost" tooltip: "Increases critical hit damage by 15%"Creates a passivity category, its passivity, and the passivity’s display string in a single operation. The passivityStrings block on each passivity entry creates a corresponding entry in StrSheet_Passivity.xml.
Create with Unchangeable Flag
Section titled “Create with Unchangeable Flag”enchantPassivityCategories: create: - enchantPassivityCategoryId: 120314 passivityLink: PassivityLink1 unchangeable: "true"Creates a passivity category marked as unchangeable, preventing modification by players or certain game systems.
Create Multiple Categories
Section titled “Create Multiple Categories”enchantPassivityCategories: create: - enchantPassivityCategoryId: 120314 passivityLink: PassivityLink1 - enchantPassivityCategoryId: 120315 passivityLink: PassivityLink2 unchangeable: "false" - enchantPassivityCategoryId: 120316 passivityLink: PassivityLink3Creates three passivity categories in a single operation, each with different configurations.
Update Passivity Link
Section titled “Update Passivity Link”enchantPassivityCategories: update: - enchantPassivityCategoryId: 120314 changes: passivityLink: NewPassivityLinkChanges the passivity link for category 120314 from its previous value to “NewPassivityLink”.
Update with Inline Passivity Changes
Section titled “Update with Inline Passivity Changes”enchantPassivityCategories: update: - enchantPassivityCategoryId: 120314 passivities: create: - id: 99000003 category: Equipment name: "new_passive" kind: 1 type: 2 method: 2 condition: 0 conditionValue: 0 conditionCategory: "0" value: 50.0 prob: 1.0 mobSize: "all" judgmentOnce: false tickInterval: 0 abnormalityCategory: 0 abnormalityKind: 0 update: - id: 99000001 category: Equipment changes: value: 250.0 delete: - 99000002Updates a category while simultaneously creating, updating, and deleting its linked passivities. The inline passivities block on updates supports create, update, upsert, and delete sub-operations.
Update Unchangeable Flag
Section titled “Update Unchangeable Flag”enchantPassivityCategories: update: - enchantPassivityCategoryId: 120314 changes: unchangeable: "true"Updates the unchangeable flag for category 120314, making it immutable.
Update Multiple Properties
Section titled “Update Multiple Properties”enchantPassivityCategories: update: - enchantPassivityCategoryId: 120314 changes: passivityLink: UpdatedLink unchangeable: "false"Updates both the passivity link and unchangeable flag in a single operation.
Delete Categories
Section titled “Delete Categories”enchantPassivityCategories: delete: - 120314 - 120315 - 120316Removes passivity categories with IDs 120314, 120315, and 120316 from the PassivityCategoryData section.
Upsert (Create or Replace)
Section titled “Upsert (Create or Replace)”enchantPassivityCategories: upsert: - enchantPassivityCategoryId: 120314 passivityLink: PassivityLink1 unchangeable: "false"Creates a new passivity category if ID 120314 doesn’t exist, or completely replaces the existing entry if it does.
Upsert with Inline Passivities
Section titled “Upsert with Inline Passivities”enchantPassivityCategories: upsert: - enchantPassivityCategoryId: 120314 passivities: create: - id: 99000001 category: Equipment name: "passive_one" kind: 1 type: 2 method: 2 condition: 0 conditionValue: 0 conditionCategory: "0" value: 100.0 prob: 1.0 mobSize: "all" judgmentOnce: false tickInterval: 0 abnormalityCategory: 0 abnormalityKind: 0 upsert: - id: 99000002 category: Equipment name: "passive_two" kind: 2 type: 2 method: 2 condition: 0 conditionValue: 0 conditionCategory: "0" value: 200.0 prob: 1.0 mobSize: "all" judgmentOnce: false tickInterval: 0 abnormalityCategory: 0 abnormalityKind: 0Upserts a category with inline passivities. The passivityLink is auto-assembled from all inline passivity IDs. The inline block for upsert supports create and upsert sub-operations.
Properties Reference
Section titled “Properties Reference”Category (Root)
Section titled “Category (Root)”| Property | Type | Since | Required | Default | Description |
|---|---|---|---|---|---|
enchantPassivityCategoryId | int | v92 | ✅ | — | Unique identifier for this passivity category |
passivityLink | string | v92 | Conditional | — | Passivity system link identifier. Required unless passivities inline block is present. |
unchangeable | bool | v92 | ❌ | — | Whether this passivity category can be modified by players or game systems |
passivities | nested | v92 | ❌ | — | Inline passivities block. Cannot be combined with passivityLink. |
Inline Passivities Block
Section titled “Inline Passivities Block”The passivities block defines passivity operations to execute alongside the category operation. The planner expands these into separate passivity operations and auto-assembles the category’s passivityLink from the inline passivity IDs.
For create/upsert categories:
| Property | Type | Description |
|---|---|---|
create | list[Passivity] | Passivities to create. Each entry follows the Passivity create format. |
upsert | list[Passivity] | Passivities to upsert. Each entry follows the Passivity create format. |
For update categories:
| Property | Type | Description |
|---|---|---|
create | list[Passivity] | New passivities to create |
update | list[PassivityUpdate] | Existing passivities to update (with id, category, changes) |
upsert | list[Passivity] | Passivities to upsert |
delete | list[int] | Passivity IDs to delete |
XML Structure
Section titled “XML Structure”EquipmentEnchantData uses flat structure for PassivityCategoryData:
<EquipmentEnchantData> <EnchantData> <!-- See Equipment Enchant Data documentation --> </EnchantData> <PassivityCategoryData> <Category id="120314" passivityLink="PassivityLink1" /> <Category id="120315" passivityLink="PassivityLink2" unchangeable="false" /> <Category id="120316" passivityLink="PassivityLink3" unchangeable="true" /> </PassivityCategoryData></EquipmentEnchantData>Key Structure:
Category: Identified byidattribute (mapped fromenchantPassivityCategoryIdin YAML)
Common Pitfalls
Section titled “Common Pitfalls”-
String Boolean Values: The
unchangeablefield expects string values “true” or “false”, not boolean literals. Useunchangeable: "true"in YAML, notunchangeable: true. -
Passivity Link References: The
passivityLinkvalue must match entries in the passivity system configuration. Invalid links may cause runtime errors when enchant effects attempt to activate. -
passivityLink vs passivities (E409): You cannot specify both
passivityLinkandpassivitieson the same create or upsert operation. Use one or the other. When usingpassivities, the link is auto-assembled. -
passivityLink or passivities required: For create operations, you must provide either
passivityLinkorpassivities. Omitting both raises a missing field error. Upsert allows omitting both (the category is created without a passivity link). -
Auto-assembled passivityLink: When using inline
passivities, thepassivityLinkattribute is automatically computed as a comma-separated list of all inline passivity IDs (from bothcreateandupsertentries). You do not set it manually. -
Inline passivity category field: Each passivity inside the
passivitiesblock must includecategory(e.g.,Equipment). This determines whichPassivity_{category}.xmlfile is targeted — it is independent of theenchantPassivityCategoryId. -
ID Mapping: In YAML, use
enchantPassivityCategoryIdas the property name, but the XML attribute will beid. The DSL handles this mapping automatically. -
XML Section Context: Category elements exist within the
<PassivityCategoryData>section of EquipmentEnchantData.xml. The DSL automatically targets the correct section - you don’t need to specify it. -
No Nested Elements: Unlike the EnchantData section, PassivityCategoryData has a flat structure with no nested child elements. Each Category is a standalone configuration.
-
Unchangeable Omission: If
unchangeableis omitted, the XML attribute will not be present (not defaulted to false). Ensure your game logic handles the absence of this attribute correctly. -
Update Replaces Properties: When using
update, only the properties specified inchangesare modified. Omitted properties retain their existing values, unlikeupsertwhich replaces the entire entry.