Skip to content

EquipmentEnchantData (Passivity Categories)

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.

VersionStatus
v92Full
v90-
v86-

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: PassivityLink2
enchantPassivityCategories:
create:
- enchantPassivityCategoryId: 120314
passivityLink: PassivityLink1

Creates a passivity category with ID 120314 linked to the passivity system via “PassivityLink1”.

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: 0

Creates 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.

enchantPassivityCategories:
create:
- enchantPassivityCategoryId: 120314
passivityLink: PassivityLink1
unchangeable: "true"

Creates a passivity category marked as unchangeable, preventing modification by players or certain game systems.

enchantPassivityCategories:
create:
- enchantPassivityCategoryId: 120314
passivityLink: PassivityLink1
- enchantPassivityCategoryId: 120315
passivityLink: PassivityLink2
unchangeable: "false"
- enchantPassivityCategoryId: 120316
passivityLink: PassivityLink3

Creates three passivity categories in a single operation, each with different configurations.

enchantPassivityCategories:
update:
- enchantPassivityCategoryId: 120314
changes:
passivityLink: NewPassivityLink

Changes the passivity link for category 120314 from its previous value to “NewPassivityLink”.

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:
- 99000002

Updates 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.

enchantPassivityCategories:
update:
- enchantPassivityCategoryId: 120314
changes:
unchangeable: "true"

Updates the unchangeable flag for category 120314, making it immutable.

enchantPassivityCategories:
update:
- enchantPassivityCategoryId: 120314
changes:
passivityLink: UpdatedLink
unchangeable: "false"

Updates both the passivity link and unchangeable flag in a single operation.

enchantPassivityCategories:
delete:
- 120314
- 120315
- 120316

Removes passivity categories with IDs 120314, 120315, and 120316 from the PassivityCategoryData section.

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.

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: 0

Upserts 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.

PropertyTypeSinceRequiredDefaultDescription
enchantPassivityCategoryIdintv92Unique identifier for this passivity category
passivityLinkstringv92ConditionalPassivity system link identifier. Required unless passivities inline block is present.
unchangeableboolv92Whether this passivity category can be modified by players or game systems
passivitiesnestedv92Inline passivities block. Cannot be combined with passivityLink.

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:

PropertyTypeDescription
createlist[Passivity]Passivities to create. Each entry follows the Passivity create format.
upsertlist[Passivity]Passivities to upsert. Each entry follows the Passivity create format.

For update categories:

PropertyTypeDescription
createlist[Passivity]New passivities to create
updatelist[PassivityUpdate]Existing passivities to update (with id, category, changes)
upsertlist[Passivity]Passivities to upsert
deletelist[int]Passivity IDs to delete

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 by id attribute (mapped from enchantPassivityCategoryId in YAML)
  • String Boolean Values: The unchangeable field expects string values “true” or “false”, not boolean literals. Use unchangeable: "true" in YAML, not unchangeable: true.

  • Passivity Link References: The passivityLink value 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 passivityLink and passivities on the same create or upsert operation. Use one or the other. When using passivities, the link is auto-assembled.

  • passivityLink or passivities required: For create operations, you must provide either passivityLink or passivities. 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, the passivityLink attribute is automatically computed as a comma-separated list of all inline passivity IDs (from both create and upsert entries). You do not set it manually.

  • Inline passivity category field: Each passivity inside the passivities block must include category (e.g., Equipment). This determines which Passivity_{category}.xml file is targeted — it is independent of the enchantPassivityCategoryId.

  • ID Mapping: In YAML, use enchantPassivityCategoryId as the property name, but the XML attribute will be id. 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 unchangeable is 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 in changes are modified. Omitted properties retain their existing values, unlike upsert which replaces the entire entry.