Skip to content

FCompensationData

VersionStatus
v92Full
v90-
v86-

FCompensation_{zone}.xml defines fishing compensation data: reward tables for the fishing minigame including catch grades, result item sets, experience rewards, and fish shapes.


Entity: fCompensations Operations: create, update, delete, upsert File Organization: Zone-partitioned (one file per huntingZoneId)


spec:
version: "1.0"
fCompensations:
create:
- huntingZoneId: 9001
compensationId: 1
tables:
- id: 1
desc: "Common Fish Table"
probability: 0.7
grades:
- grade: 1
effectId: 100
weight: 50
resultItemSets:
- id: 1
actionScriptId: 1000
minigameLevel: 1
weight: 100
items:
- templateId: 70001
name: "Common Fish"
min: 1
max: 1

Creates a fishing compensation with a single table, grade, and result item set.

spec:
version: "1.0"
fCompensations:
create:
- huntingZoneId: 9001
compensationId: 2
tables:
- id: 1
desc: "Advanced Fish Table"
probability: 0.5
onlyByManual: false
grades:
- grade: 1
effectId: 100
weight: 60
resultItemSets:
- id: 1
actionScriptId: 1000
minigameLevel: 1
weight: 80
exp: 50
fishShape: 1
items:
- templateId: 70001
name: "Small Fish"
min: 1
max: 2
- grade: 2
effectId: 101
weight: 30
resultItemSets:
- id: 1
actionScriptId: 1001
minigameLevel: 2
weight: 100
exp: 100
fishShape: 2
items:
- templateId: 70002
name: "Medium Fish"
min: 1
max: 1
- grade: 3
effectId: 102
weight: 10
resultItemSets:
- id: 1
actionScriptId: 1002
minigameLevel: 3
weight: 100
exp: 200
fishShape: 3
items:
- templateId: 70003
name: "Large Fish"
min: 1
max: 1
notifyLevel: "rare"

Creates a fishing table with three quality grades and increasing rewards.

spec:
version: "1.0"
fCompensations:
update:
- huntingZoneId: 9001
compensationId: 1
changes:
tables:
- id: 1
probability: 0.8
desc: "Updated Fish Table"

Updates an existing fishing compensation’s table configuration.

spec:
version: "1.0"
fCompensations:
delete:
- huntingZoneId: 9001
compensationId: 1

Removes the fishing compensation entry.

spec:
version: "1.0"
fCompensations:
upsert:
- huntingZoneId: 9001
compensationId: 3
tables:
- id: 1
desc: "Event Fish Table"
probability: 1.0
grades:
- grade: 1
effectId: 200
weight: 100
resultItemSets:
- id: 1
actionScriptId: 2000
minigameLevel: 1
weight: 100
items:
- templateId: 80001
name: "Event Fish"
min: 1
max: 5

Creates or replaces the fishing compensation entry.

The DSL uses replace-all semantics for nested structures. There are no granular operations to add or remove individual tables, grades, result item sets, or items. Instead, use the update operation with a complete hierarchy.

Adding a new grade to an existing table:

spec:
version: "1.0"
fCompensations:
update:
- huntingZoneId: 9001
compensationId: 1
changes:
tables:
- id: 1
desc: "Updated Fish Table"
probability: 0.7
grades:
# Include existing grade you want to keep
- grade: 1
effectId: 100
weight: 50
resultItemSets:
- id: 1
actionScriptId: 1000
minigameLevel: 1
weight: 100
items:
- templateId: 70001
name: "Common Fish"
min: 1
max: 1
# Add the new grade
- grade: 2
effectId: 101
weight: 30
resultItemSets:
- id: 1
actionScriptId: 1001
minigameLevel: 2
weight: 100
items:
- templateId: 70002
name: "Rare Fish"
min: 1
max: 1

Removing a table/grade: Simply omit it from the respective list in your update.

Adding an item to a result item set: Include all existing items plus the new one in the items list.

Removing an item: Omit it from the items list.


PropertyTypeSinceRequiredDescription
huntingZoneIdintv92YesHunting zone ID (file partition key)
compensationIdintv92YesUnique compensation ID (primary key)
tableslistv92NoList of fishing reward tables
PropertyTypeSinceRequiredDescription
idintv92YesUnique table identifier
descstringv92YesDescription of the fishing table
probabilitydecimalv92YesTable selection probability (0.0 to 1.0)
onlyByManualbooleanv92NoOnly activated by manual trigger
gradeslistv92NoList of grade configurations
PropertyTypeSinceRequiredDescription
gradeintv92YesGrade level identifier
effectIdintv92YesVisual effect ID for this grade
weightintv92YesSelection weight (relative probability)
resultItemSetslistv92NoList of result item sets
PropertyTypeSinceRequiredDescription
idintv92YesUnique result item set identifier
actionScriptIdintv92YesAction script to execute on catch
minigameLevelintv92YesMinigame difficulty level
weightintv92YesSelection weight (relative probability)
expintv92NoExperience points awarded
fishShapeintv92NoVisual fish shape identifier
itemslistv92NoList of reward items
PropertyTypeSinceRequiredDescription
templateIdintv92YesItem template ID
namestringv92YesDisplay name for the item
minintv92YesMinimum drop quantity
maxintv92YesMaximum drop quantity
notifyLevelstringv92NoNotification level for rare catches

FCompensationData uses 5-level nesting:

FCompensationData (huntingZoneId)
└── Compensation (compensationId) [max 2]
└── Table (id, desc, probability, onlyByManual?)
└── Grade (grade, effectId, weight) [max 10]
└── ResultItemSet (id, actionScriptId, minigameLevel, weight, exp?, fishShape?)
└── Item (templateId, name, min, max, notifyLevel?) [max 3]

Notation:

  • attr? = optional attribute
  • [max N] = maximum occurrence count

  • Different Key Structure: FCompensation uses compensationId as primary key, NOT npcTemplateId like I/E/C compensations.

  • Weight-Based Selection: Grades and ResultItemSets use weight for relative probability, not absolute probability values. Higher weight = higher selection chance.

  • 5-Level Nesting: The deepest nesting of any compensation type. Ensure proper indentation in YAML.

  • Item Limits: Each ResultItemSet can contain at most 3 items. Each Table can contain at most 10 Grades.

  • ActionScriptId Required: Every ResultItemSet must have an actionScriptId to define the catch behavior.

  • NotifyLevel for Rare Catches: Use notifyLevel to trigger announcements for rare fish catches.

  • MinigameLevel Scaling: The minigameLevel should scale with grade to increase difficulty for better rewards.

  • Replace-All for Nested Structures: The DSL does not support granular add/remove for tables, grades, or items. When updating tables, the entire hierarchy is replaced. Include all tables, grades, result item sets, and items you want to preserve in your update operation.