Skip to content

DungeonData

VersionStatus
v92Full
v90-
v86-

DungeonData files define dungeon instance configurations: entry conditions, event scripting, clear objectives, and recommendation data. Each continent has its own file using the naming convention DungeonData_{continentId}.xml. The continentId identifies both the file partition and the dungeon entity.


Entity: dungeonDatas Operations: create, update, delete, upsert Key attribute: continentId File organization: AttributePartitioned by continentId


spec:
version: "1.0"
schema: v92
dungeonDatas:
create:
- continentId: 9001
name: "@dungeon:9001"
exitContinentId: 7031
enterLimitCount: 5
coolTime: 3600
spec:
version: "1.0"
schema: v92
dungeonDatas:
create:
- continentId: 9001
name: "@dungeon:9001"
exitContinentId: 7031
startPos: [12345.5, 4336.25, 15047.75]
exitPos: [63475.03, 38629.24, -8876.56]
enterLimitCount: 5
coolTimeApplyType: "party"
coolTime: 3600
conditions:
- type: levelOver
value: 65
- type: minItemLevel
value: 439
clearConditions:
- huntingZoneId: 990
templateId: 3000
killCount: 1
eventGroups:
- type: enterTerritory
territoryId: "99001"
tasks:
- type: spawn
next: "none"
huntingZoneId: 990
templateId: 100
spec:
version: "1.0"
schema: v92
dungeonDatas:
update:
- continentId: 9001
changes:
enterLimitCount: 10
coolTime: 7200
spec:
version: "1.0"
schema: v92
dungeonDatas:
delete:
- 9001
spec:
version: "1.0"
schema: v92
dungeonDatas:
upsert:
- continentId: 9001
name: "@dungeon:9001"
exitContinentId: 7031
enterLimitCount: 5
coolTime: 3600

AttributeTypeSinceDescription
continentIdintv92Continent ID (partition key and entity identifier)
namestringv92Internal dungeon name or string reference
startPosdecimal[]v92Player spawn coordinates [x, y, z]
exitContinentIdintv92Continent ID for the dungeon exit
exitPosdecimal[]v92Exit teleport coordinates [x, y, z]
destroyWaitMinintv92Minutes to wait before destroying instance
startDirintv92Player facing direction on spawn (degrees)
exitDirintv92Player facing direction on exit (degrees)
enterLimitCountintv92Maximum entry count per cooldown period
coolTimeApplyTypestringv92Cooldown scope: party or individual
newbieBonusOffboolv92Disable newbie bonus for this dungeon
coolTimeintv92Re-entry cooldown in seconds
coolTimeForPartyMatchingintv92Cooldown override for party matching entries
needBattlePointintv92Required battle points to enter
matchingRoleIdintv92Party matching role requirement ID
startRandomPosdecimal[]v92Random spawn area coordinates [x, y, z]
allAoiWideBroadCasterboolv92Enable wide-area broadcast for all entities
overlapConsoleEventboolv92Allow overlapping console events
summonPcboolv92Allow player summoning inside dungeon
relatedDailyQuestintv92Associated daily quest ID
coolTimeWithContinentIdstringv92Shared cooldown continent ID group
scenarioUIOnboolv92Enable scenario UI overlay
scenarioQuestIdintv92Associated scenario quest ID
eventDungeonboolv92Mark as event (seasonal) dungeon
isPremiumDungeonboolv92Mark as premium dungeon
addClusterMarginintv92Additional cluster margin for instancing
ownershipGuaranteeSecintv92Ownership guarantee period in seconds
lazyBroadcastPartyMemberInfoboolv92Defer party member info broadcasting
ElementTypeDescriptionReference
conditionslistEntry requirement conditionsConditions
clearConditionslistDungeon clear objectivesConditions
restoreTargetQuestslistQuests restored on entryConditions
retrynestedRetry mechanismBelow
supportMatchingEffectslistSupport matching effectsBelow
dpsDisplaynestedDPS meter configurationBelow
visibleBGGroupnestedBackground visibility settingsBelow
abnormalityWhenResurrectionnestedResurrection abnormalityBelow
randomStartslistRandom spawn pointsBelow
recommendnestedRecommendation UI dataRecommend
restrictPassivityTypenestedPassivity restrictionsBelow
eventGroupslistEvent scripting groupsEvent Groups

PropertyTypeSinceDescription
retryIdstringv92Retry mechanism identifier

PropertyTypeSinceDescription
typeSupportMatchingEffectTypev92Effect type
valuestringv92Effect value parameter
stringstringv92String parameter
ValueSince
changeLevelv92
abnormalityv92

PropertyTypeSinceDescription
updateFrequencydecimalv92Update interval in seconds
cutDigitsintv92Decimal places to truncate
digitStringIdintv92Digit format string ID

PropertyTypeSinceDescription
defaultGroupIdintv92Default background group ID
visibleBGslistv92Background entries
PropertyTypeSinceDescription
groupIdintv92Background group ID
namestringv92Background name reference

PropertyTypeSinceDescription
idintv92Abnormality ID applied on resurrection
methodstringv92Application method

PropertyTypeSinceDescription
posdecimal[]v92Spawn coordinates [x, y, z]

PropertyTypeSinceDescription
typeIdListintv92Restricted passivity type ID

DungeonData_{continentId}.xml
└── Dungeon (root element = entity)
├── Scalar attributes (name, startPos, exitPos, coolTime, ...)
├── Condition [multiple]
├── ClearCondition [multiple]
├── RestoreTargetQuest [multiple]
├── Retry
├── SupportMatchingEffect [multiple]
├── DPSDisplay
├── VisibleBGGroup
│ └── VisibleBG [multiple]
├── AbnormalityWhenResurrection
├── RandomStart [multiple]
├── Recommend
│ ├── Category
│ └── DropItem
│ └── Class [multiple]
├── RestrictPassivityType
└── EventGroup [multiple]
└── Event [multiple]
└── EventTaskGroup [multiple]
└── EventTask [multiple]

Position attributes (startPos, exitPos, startRandomPos) use decimal[] arrays in YAML that serialize to comma-separated strings in XML:

startPos: [12345.5, 4336.25, 15047.75]

Produces: startPos="12345.5,4336.25,15047.75"

Several event task properties use composite NPC references. In YAML, use the NpcRef block:

targetNpcId:
huntingZone: 990
templateId: 1000

Produces: targetNpcId="990,1000"


  • Root-as-entity: The <Dungeon> root element IS the entity. There is no collection wrapper. Each file contains exactly one dungeon.

  • File partitioning: Files are partitioned by continentId. Creating a dungeon with continentId: 9001 targets DungeonData_9001.xml.

  • Flat vs nested events: 94% of dungeons use the flat tasks shorthand. The mapper automatically wraps flat tasks into the Event > EventTaskGroup > EventTask hierarchy. See Event Groups for details.

  • Element replacement: On upsert, nested collections (conditions, eventGroups, etc.) are fully replaced. You cannot patch individual entries.

  • vlaue typo: The attribute vlaue (not value) is preserved verbatim from the source data. This is intentional.

  • YAML reserved words: Some enum values (none, on, off, y) are YAML 1.1 reserved keywords. Quote them in YAML: next: "none", turn: "on".