ItemDrop Configuration

This configuration file defines specific items that can drop from monsters with full control over their options. This is a separate system from normal monster drops (MonsterItem.txt).

File Location#

Data/Item/ItemDrop.xml

Dependencies#

Depends OnPurpose
ItemOptionRate.xmlOption indices reference rate tables here
ExcellentOptionRate.xmlDetermines which excellent bits apply to each item range
Item.xmlItem definitions that can be dropped
ItemOption.xmlStat effects of the rolled options

How It Works#

When a monster dies, the server:

  1. Filters by map - RuleDrop MapNumber (-1 = all maps)
  2. Filters by monster - MonsterIndex (-1 = any monster)
  3. Filters by monster level - MonsterMinLevel/MonsterMaxLevel
  4. Rolls against DropRate - Chance out of 1,000,000
  5. Selects item - If multiple items pass, weighted random by inverse DropRate
  6. Resolves options - Uses ItemOptionRate.xml for each option type
  7. Drops item - Creates the item on the ground

Structure#

<ItemDrop>
    <RuleDrop MapNumber="-1">
        <Item Cat="14" Index="13" Level="0"
              LevelOption="-1" SkillOption="-1" LuckOption="-1"
              JoLOption="-1" ExcOption="-1" SetOption="-1" SocketOption="-1"
              Duration="0" MonsterIndex="-1"
              MonsterMinLevel="25" MonsterMaxLevel="-1"
              DropRate="100" />
    </RuleDrop>
</ItemDrop>

Attributes#

RuleDrop Container#

AttributeTypeValuesDescription
MapNumberint/*-1 or map IDMap filter (-1 or * = all maps)

Item Attributes#

Item Identification#

AttributeTypeDescription
CatintItem category (0-15)
IndexintItem index within category (0-511)
LevelintItem level (0-15), used when LevelOption=-1

Option Indices#

These reference sections in ItemOptionRate.xml. Use -1 to disable that option type.

AttributeTypeDescription
LevelOptionintLevel rate table index (-1 = use Level directly)
SkillOptionintSkill option rate table index
LuckOptionintLuck option rate table index
JoLOptionintJoL (additional damage/defense) rate table index
ExcOptionintExcellent options count rate table index
SetOptionintSet tier rate table index
SocketOptionintSocket count rate table index

Common Option Index Values#

ValueEffect
-1Disabled - no option or use default value
0Common rates (from Index 0 in ItemOptionRate)
1Excellent rates (typically guaranteed/high quality)
2Set rates
12-15Guaranteed 1-4 excellent options (for ExcOption)

Drop Filters#

AttributeTypeDefaultDescription
Durationint0Item duration in seconds (0 = permanent)
MonsterIndexint/*-1Monster class ID (-1 or * = any monster)
MonsterMinLevelint/*-1Minimum monster level (-1 or * = no minimum)
MonsterMaxLevelint/*-1Maximum monster level (-1 or * = no maximum)
DropRateint/*RequiredChance out of 1,000,000. -1 or * skips the rate roll (always passes) and contributes the smallest possible weight (1) to the weighted selection, so the entry is only picked when no weighted entry passes.
DropRateBonusAL1int0Percent bonus to DropRate when the looter's AccountLevel is VIP tier 1. Final rate is capped at 1,000,000. Ignored when DropRate is -1/*.
DropRateBonusAL2int0Percent bonus to DropRate for VIP tier 2. Same rules as DropRateBonusAL1.
DropRateBonusAL3int0Percent bonus to DropRate for VIP tier 3. Same rules as DropRateBonusAL1.

Stack Quantity (stackable items only)#

A single drop can spawn a stack (for example 2-5 Jewels) instead of one item. All attributes are optional; omitting them all drops a single item (the original behavior). These apply only to items flagged stackable in ItemStack.xml. On a non-stackable item they are ignored at load time and the item drops singly.

AttributeTypeRangeDefaultEffect
QuantityMinint1+1Stack floor. Values below 1 are raised to 1.
QuantityMaxintQuantityMin+= QuantityMinStack ceiling. The dropped count is a random roll between QuantityMin and QuantityMax inclusive. For a fixed amount set both equal (or set only QuantityMin). Values below QuantityMin are raised to QuantityMin.
QuantityPerMonsterLevelint0+0Flat amount added per monster level above MonsterMinLevel. Adds value * (monsterLevel - MonsterMinLevel), never negative. When MonsterMinLevel is -1 the base is treated as 0.
QuantityBonusAL1int0+0Flat amount added when the looter's AccountLevel is VIP tier 1. 0 = no bonus.
QuantityBonusAL2int0+0Flat amount added for VIP tier 2.
QuantityBonusAL3int0+0Flat amount added for VIP tier 3.

The final stack is roll(QuantityMin..QuantityMax) + QuantityPerMonsterLevel * max(0, monsterLevel - MonsterMinLevel) + QuantityBonusAL[looter tier], then clamped to the item's max stack size in ItemStack.xml and to 255.

DropRate Scale#

DropRatePercentageExample Use
1000000100%Testing / guaranteed drops
10000010%Very common drops
100001%Common drops
10000.1%Uncommon drops
1000.01%Rare drops
100.001%Very rare drops

Examples#

<!-- Jewel of Bless from monsters level 25+ -->
<Item Cat="14" Index="13" Level="0"
      LevelOption="-1" SkillOption="-1" LuckOption="-1"
      JoLOption="-1" ExcOption="-1" SetOption="-1" SocketOption="-1"
      Duration="0" MonsterIndex="-1"
      MonsterMinLevel="25" MonsterMaxLevel="-1"
      DropRate="100" />

<!-- Jewel of Chaos from level 12+ -->
<Item Cat="12" Index="15" Level="0"
      LevelOption="-1" SkillOption="-1" LuckOption="-1"
      JoLOption="-1" ExcOption="-1" SetOption="-1" SocketOption="-1"
      Duration="0" MonsterIndex="-1"
      MonsterMinLevel="12" MonsterMaxLevel="-1"
      DropRate="100" />

All option indices are -1 because jewels don't have options.

Important Behavior#

Common Issues#

Last updated July 2, 2026