CustomEventDrop.xml

Scheduled item-drop events. Each event drops a configured list of items at a specific map location over a short time window, with alarm and completion announcements. Up to 10 independent events can be scheduled per server.

File Location#

Data/Plugins/Events/CustomEventDrop.xml

Loaded once at GameServer startup. Supports hot reload via plugin admin command.

Schema#

<CustomEventDrop Enabled="...">
    <Messages>
        <Text Id="..." Value="..."/>
    </Messages>
    <Event Index="...">
        <Schedule>
            <Time Year="..." Month="..." Day="..." DayOfWeek="..." Hour="..." Minute="..." Second="..."/>
        </Schedule>
        <Rules Name="..." DropMap="..." DropX="..." DropY="..." DropRange="..."
               AlarmTime="..." EventTime="..." />
        <Items>
            <Item ItemIndex="..." ItemLevel="..." DropCount="..." DropDelay="..."/>
        </Items>
    </Event>
</CustomEventDrop>

Root Attributes#

AttributeTypeEffect
Enabled0 or 1Master toggle

Messages#

IdMeaningFormat args
1Alarm countdown%s=EventName, %d=MinutesLeft
2Event started%s=EventName
3Event finished%s=EventName

Keep the format specifiers or the broadcast text will be garbled.

Event#

Index is 0-9 (max 10 events per server). Each event can have multiple scheduled starts and its own drop list.

Schedule#

<Time Year="-1" Month="-1" Day="-1" DayOfWeek="-1" Hour="19" Minute="0" Second="0"/>

-1 = wildcard. DayOfWeek: same mapping as CustomArena.xml (1=Sunday through 7=Saturday). Multiple <Time> entries are allowed; each is evaluated as a separate occurrence and the earliest future one wins.

Rules#

AttributeDefaultEffect
NameemptyEvent display name used in announcements (max 31 characters)
DropMap0Map index where items spawn
DropX / DropY0Drop center coordinates
DropRange5Half-extent of the scatter box around the center. Each drop jitters X by up to +/- DropRange and Y by up to +/- DropRange
AlarmTime5Minutes before the event starts to announce (triggers Text 1 once per remaining minute)
EventTime3Duration in minutes the event stays active; all drops must fire within this window

Drop locations that land on a safe-zone tile or an obstacle tile are retried up to 50 times. If no free tile is found, the item drops at the exact center (DropX, DropY).

Items#

One <Item> per staged drop. The plugin iterates the list every tick during the Start state and fires any entries whose DropDelay has been reached.

AttributeDefaultEffect
ItemIndex0Item ID. Type * 512 + SubIndex per the Item.xml indexing convention
ItemLevel0Item +level, 0-15
DropCount1Number of copies dropped in one burst
DropDelay0Seconds after event start before this item drops. Use to stagger drops across the window

Each burst also triggers a fireworks packet to every user whose viewport includes the drop coordinates.

Example#

CustomEventDrop.xml fragment
<Event Index="0">
    <Schedule>
        <Time Year="-1" Month="-1" Day="-1" DayOfWeek="-1" Hour="19" Minute="0" Second="0"/>
        <Time Year="-1" Month="-1" Day="-1" DayOfWeek="-1" Hour="23" Minute="0" Second="0"/>
    </Schedule>
    <Rules Name="Drop de itens" DropMap="0" DropX="145" DropY="135" DropRange="5"
           AlarmTime="5" EventTime="3"/>
    <Items>
        <Item ItemIndex="6159" ItemLevel="0" DropCount="3" DropDelay="0"/>
        <Item ItemIndex="6159" ItemLevel="0" DropCount="3" DropDelay="10"/>
    </Items>
</Event>

Fires at 19:00 and 23:00 daily. Announces 5 minutes before start. Runs for 3 minutes at Lorencia coord (145, 135) with a 5-tile scatter radius. Drops 3 Jewels of Chaos at start and 3 more at T+10 seconds.

Cross-File Dependencies#

AttributeRelated in
ItemIndex, ItemLevelItem.xml
DropMapMapManager.xml
Event scheduling modelEvent overview
Pickup gateCommon.dat ItemDropTime controls how long drops stay on the ground

Common Issues#

  • Items never drop - Enabled="0", event Index outside 0-9, or <Schedule> has no future occurrence
  • Items always spawn on the exact center tile - scatter target tiles are all blocked (safe zone or obstacle); move DropX / DropY to open ground or widen DropRange
  • All drops pile on one tile - DropRange="0" was clamped to 1 internally but produces near-zero jitter; widen to scatter
  • Event name shows as literal %s - message Value missing the %s specifier
  • Same item seems to drop twice from one entry - it does not; check for duplicate <Item> rows with identical DropDelay
  • Multiple events overlap on the same map - intentional or unintentional; pay attention if two event indexes fire at the same coordinates close in time

Last updated April 21, 2026