ProjectionEventSelector
An event-shaped partial selector. type chooses the event variant, and every
other field is an exact-match constraint on a scalar field of that variant.
Omitting a field leaves it unconstrained. With exact optional property types,
explicitly passing undefined is invalid; untyped callers that do so safely
fail to match instead of selecting events where the field happens to be
absent.
type ProjectionEventSelector = {
readonly type: "login" | "logout";
} | {
readonly afk?: boolean;
readonly entityId?: number;
readonly type: "player-afk";
readonly username?: string;
} | {
readonly type: "join-map";
} | {
readonly type: "item-drop";
} | {
readonly questId?: number;
readonly type: "quest-complete";
} | {
readonly monsterMapId?: number;
readonly type: "monster-death" | "monster-respawn";
} | {
readonly entityId?: number;
readonly type: "player-death";
readonly username?: string;
} | {
readonly entityId?: number;
readonly kind?: "cell" | "position" | "walk";
readonly type: "player-location";
readonly username?: string;
} | {
readonly type: "players-changed";
} | {
readonly duration?: number;
readonly icon?: string;
readonly name?: string;
readonly sourceId?: number;
readonly sourceType?: "monster" | "player";
readonly targetId?: number;
readonly targetType?: "monster" | "player";
readonly type: "aura-added" | "aura-removed";
} | {
readonly durationMs?: number;
readonly monsterMapId?: number;
readonly source?: "aura" | "message";
readonly triggerId?: string;
readonly triggerText?: string;
readonly type: "counter-attack-start";
} | {
readonly monsterMapId?: number;
readonly source?: "aura" | "message";
readonly triggerId?: string;
readonly triggerText?: string;
readonly type: "counter-attack-end";
} | {
readonly animation?: string;
readonly message?: string;
readonly monsterMapId?: number;
readonly source?: "animation" | "aura";
readonly type: "update-message";
} | {
readonly map?: string;
readonly type: "zone";
readonly zone?: string;
}
Defined in Event.ts:190