Skip to content

Passivity

VersionStatus
v92Full
v90-
v86-

Passivity_{category}.xml defines passive abilities: core passive definitions with attributes controlling type, kind, method, condition, values, probabilities, and timing.

Passivity data is organized across multiple XML files by content category:

CategoryFileDescription
EquipmentPassivity_Equipment.xmlEquipment-based passives
CrystalPassivity_Crystal.xmlCrystal slot passives
AchievementPassivity_Achievement.xmlAchievement reward passives
SkillPolishingPassivity_SkillPolishing.xmlSkill enhancement passives
CrestPassivity_Crest.xmlCrest passives
PcSkillPassivity_PcSkill.xmlPlayer character skill passives
EpPerkPassivity_EpPerk.xmlEP perk passives
GuildPassivity_Guild.xmlGuild-related passives
CardPassivity_Card.xmlCard system passives
Equipment_6MPassivity_Equipment_6M.xmlEquipment passives (6M variant)

Entity: passivities Operations: create, update, delete, upsert Partitioning: category (required on all operations)


spec:
version: "1.0"
passivities:
create:
- category: Equipment
id: 100001
name: "critical_damage_boost"
kind: 1
type: 2
method: 3
condition: 5
conditionValue: 10.0
conditionCategory: "0"
value: 15.0
prob: 1.0
mobSize: "all"
judgmentOnce: false
tickInterval: 0
abnormalityCategory: 0
abnormalityKind: 0
spec:
version: "1.0"
passivities:
create:
- category: Crystal
id: 100002
name: "defense_aura"
kind: 1
type: 4
method: 2
condition: 0
conditionValue: 0
conditionCategory: "0"
value: 100.0
prob: 1.0
mobSize: "all"
judgmentOnce: true
tickInterval: 1000
abnormalityCategory: 0
abnormalityKind: 0
# Optional attributes
balancedByTargetCount: true
targetCategory: 1
isHidePassive: false
passivityCoolTime: 5000
spec:
version: "1.0"
passivities:
update:
- category: Equipment
id: 100001
changes:
value: 20.0
prob: 0.95

Creates the entry if it doesn’t exist, or updates it if it does.

spec:
version: "1.0"
passivities:
upsert:
- category: Achievement
id: 100003
name: "speed_boost"
kind: 1
type: 5
method: 2
condition: 0
conditionValue: 0
conditionCategory: "0"
value: 50.0
prob: 1.0
mobSize: "all"
judgmentOnce: false
tickInterval: 0
abnormalityCategory: 0
abnormalityKind: 0
spec:
version: "1.0"
passivities:
create:
- category: Equipment
id: 100001
name: "critical_damage_boost"
kind: 1
type: 2
method: 3
condition: 5
conditionValue: 10.0
conditionCategory: "0"
value: 15.0
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 the passivity and its display string in a single operation. The passivityStrings block generates a corresponding entry in StrSheet_Passivity.xml with the same ID. The name field is required for create and upsert; tooltip is optional.

spec:
version: "1.0"
passivities:
delete:
- category: Equipment
id: 100001

Operations can target different category files in a single spec:

spec:
version: "1.0"
passivities:
create:
- category: Equipment
id: 200001
name: "equipment_passive"
kind: 1
type: 1
method: 1
condition: 0
conditionValue: 0
conditionCategory: "0"
value: 10.0
prob: 1.0
mobSize: "all"
judgmentOnce: false
tickInterval: 0
abnormalityCategory: 0
abnormalityKind: 0
- category: Crystal
id: 200002
name: "crystal_passive"
kind: 2
type: 2
method: 2
condition: 0
conditionValue: 0
conditionCategory: "0"
value: 20.0
prob: 1.0
mobSize: "all"
judgmentOnce: false
tickInterval: 0
abnormalityCategory: 0
abnormalityKind: 0

PropertyTypeRequiredSinceDescription
categorystringYesv92Target file category. See category table above.
PropertyTypeRequiredSinceDescription
idintYesv92Unique passivity identifier
namestringYesv92Internal passivity name
kindintYesv92Passivity kind classification
typeintYesv92Passivity type code
methodintYesv92Application method
valuedecimalYesv92Effect value
probdecimalYesv92Probability (0.0-1.0)
PropertyTypeRequiredSinceDescription
conditionintYesv92Trigger condition code
conditionValuedecimalYesv92Condition threshold value
conditionCategorystringYesv92Condition category string
PropertyTypeRequiredSinceDescription
tickIntervalintYesv92Tick rate in milliseconds
startTimeintNov92Start time delay
passivityCoolTimeintNov92Cooldown duration in milliseconds
passivityChangeTimeintNov92Time before passivity changes
PropertyTypeRequiredSinceDescription
judgmentOncebooleanYesv92Whether effect triggers only once
balancedByTargetCountbooleanNov92Whether effect scales by target count. Defaults to false.
isHidePassivebooleanNov92Whether passivity is hidden from UI
PropertyTypeRequiredSinceDescription
targetCategoryintNov92Target category code
targetSpeciesIdintNov92Target species ID
mobSizestringYesv92Target mob size filter
PropertyTypeRequiredSinceDescription
abnormalityCategoryintYesv92Abnormality category code
abnormalityKindintYesv92Abnormality kind code
needHaveAbnormalIdintNov92Required abnormality ID
PropertyTypeRequiredSinceDescription
banSkillCategoryintNov92Banned skill category
mySkillCategoryintNov92Required skill category
passiveTransSkillIdTointNov92Skill ID to transform to
passiveTransSkillIdsFromintNov92Skill ID to transform from
PropertyTypeRequiredSinceDescription
prevPassivityIdintNov92Previous passivity in chain
passivityChangeIdintNov92Passivity to change into
vehicleLevelintNov92Required vehicle level
PropertyTypeRequiredSinceDescription
passivityStringsnestedNov92Inline passivity string block. Generates a StrSheet_Passivity entry with the same ID.

The passivityStrings block contains:

PropertyTypeRequiredDescription
namestringYes (create/upsert)Display name shown to players
tooltipstringNoTooltip description shown on hover

Available on create, update, and upsert operations. For update, place passivityStrings inside changes. The name field is required on create/upsert (E410 error if missing) but optional on updates.


Passivity_{category}.xml
└── Passivity (root)
└── Passive (0..∞)
@id (required)
@name (required)
@kind (required)
@type (required)
@method (required)
@condition (required)
@conditionValue (required)
@conditionCategory (required)
@value (required)
@prob (required)
@mobSize (required)
@judgmentOnce (required)
@tickInterval (required)
@abnormalityCategory (required)
@abnormalityKind (required)
@unionPassivity (hard default: false)
@balancedByTargetCount (soft default: false)
@banSkillCategory?
@isHidePassive?
@mySkillCategory?
@needHaveAbnormalId?
@passiveTransSkillIdTo?
@passiveTransSkillIdsFrom?
@passivityChangeId?
@passivityChangeTime?
@passivityCoolTime?
@prevPassivityId?
@startTime?
@targetCategory?
@targetSpeciesId?
@vehicleLevel?

  • Category is required: Every passivity operation must specify a category to target the correct file. There is no default category.
  • Delete format changed: Delete operations require an object with category and id, not just an ID value.
  • 14 required data attributes: Create and upsert operations must specify all 14 required attributes: id, name, kind, type, method, condition, conditionValue, conditionCategory, value, prob, mobSize, judgmentOnce, tickInterval, abnormalityCategory, abnormalityKind. Missing any produces an E200 error.
  • Smart defaults: unionPassivity is always set to false (hard default, not exposed in YAML). balancedByTargetCount defaults to false if omitted (soft default, overridable).
  • Probability range: The prob value should be between 0.0 and 1.0, where 1.0 means 100% chance.
  • Tick interval: A tickInterval of 0 means no periodic ticking; positive values indicate milliseconds between ticks.
  • String-based enums: Properties like mobSize and conditionCategory are strings, not integers.
  • ID uniqueness: Passivity IDs must be unique within each category file.
  • Companion schemas: PassivityIconData.xml and StrSheet_Passivity.xml use the same passivity IDs for icon mappings and player-facing text respectively. Use passivityStrings inline block to create both in a single operation.
  • passivityStrings name required (E410): The name field is required in passivityStrings for create and upsert operations. Omitting it produces an E410 error. Updates do not require name.
  • Inline within enchant categories: Passivities can also be defined inline within enchantPassivityCategories operations using the passivities block. See EquipmentEnchantData (Passivity Categories) documentation.