Expedition System

The expedition system enables the ability to create Dynamic Zone instances managed by the client's Expedition interface window. This system allows clients to add and remove members of a Dynamic Zone while providing built-in event lockout timer support.

The system is currently quest driven and provides quest APIs to create zone instances without the burden of manually tracking and validating lockout conflicts among characters. The system should have zero impact on servers that don't make use of it.

Expedition requests

When a non-solo expedition request occurs, the leader of the raid or group becomes the lockout authority. If any members of the party have a lockout for the expedition that the leader doesn't already have the expedition request is denied. Denied expedition requests message the party leader (not the member that requested it).

If the request is successful, all party members are added to the expedition and it internally inherits the leader's current lockouts. These inherited lockouts are not assigned to members of the expedition. They are used to determine if players may be added to the expedition later based on their lockouts and to allow quests to choose which expedition events should be enabled or disabled.

Dynamic Zones

Dynamic Zones are a wrapper for instances that extends then with some extra data. In the future these will probably be further modified for use by other systems that make use of dynamic zones.

Commands

The #dz command is provided for GMs and developers to perform various operations. Use the command without arguments in game to see usage (minimum 80 access level).

The #dzkickplayers command is provided for players so that expedition leaders using pre-RoF clients can have the /kickplayers exp functionality to remove all members of an expedition.

Rules

The following rules are available for server customization

Category

Rule Name

Type

Default

Description

Expedition

MinStatusToBypassPlayerCountRequirements

int

80

Minimum GM status to bypass minimum player requirements for Expedition creation

Expedition

EmptyDzShutdownEnabled

bool

true

Enable early instance shutdown after last member of expedition removed

Expedition

EmptyDzShutdownDelaySeconds

int

1500

Seconds to set dynamic zone instance expiration if early shutdown enabled

Expedition

WorldExpeditionProcessRateMS

int

6000

Timer interval (ms) that world checks expedition states

Expedition

AlwaysNotifyNewLeaderOnChange

bool

false

Always notify clients when made expedition leader (such as for going offline). If false (live-like) new leaders are only notified when made leader via /dzmakeleader

Expedition

LockoutDurationMultiplier

float

1.0

Multiplies lockout duration by this value when new lockouts are added

Expedition

EnableInDynamicZoneStatus

bool

false

Enables the 'In Dynamic Zone' member status in expedition window. If false (live-like) players inside the dz will show as 'Online'

DynamicZone

ClientRemovalDelayMS

int

60000

Delay (ms) until a client is teleported out of dynamic zone after being removed as member

Note: The DynamicZone::ClientRemovalDelayMS rule is in its own category for possible future systems that may make use of dynamic zones. The empty dz shutdown rules may be moved to this category in the future depending on design changes.

Known issues

  • Using /exit with an expedition invite window open may crash the client instead of exiting cleanly

  • Invoking the dynamic zone switch list window after reloading the UI may crash clients

    • client bug that still exists on live

    • this window is currently unused since expedition's are the only system that use dynamic zones