Table of Contents

Interface ILoreObject

Namespace
FishMMO.Shared.Core
Assembly
FishMMO.Shared.dll

Server-side interface for lore object interactables. Exposes the lore template needed for granting abilities, events, and items on interaction.

public interface ILoreObject : IInteractable, ISceneObject
Inherited Members

Properties

AchievementTemplate

Achievement template to increment when a player discovers this lore object.

AchievementTemplate AchievementTemplate { get; }

Property Value

AchievementTemplate

Template

The lore object template defining text content, granted abilities, events, and items.

LoreObjectTemplate Template { get; }

Property Value

LoreObjectTemplate

Methods

TryConsumeItemGrant(long)

Claims this character's one-time item grant, returning false if they already took it.

bool TryConsumeItemGrant(long characterID)

Parameters

characterID long

The character reading the lore object.

Returns

bool

True when the grant was unclaimed and is now recorded as taken.

Remarks

GrantItems had no repeat guard of any kind. The ability and ability-event grants beside it are idempotent because the controller already knows what the character has learned, but items have no such memory — so re-reading a lore object handed out the whole item list again, as fast as the one-second interaction debounce allowed. Any lore object with an item on it was an unbounded item source.

Scope: per character, per lore object, for the lifetime of the server process. The record lives on the lore object in the scene and is not written to the database, so a restart lets each character claim once more. That is the same latitude every other piece of interactable world state in this project already takes — gathering node charges, capture point ownership, shrine cooldowns — and it turns an unbounded faucet into a single grant per restart, which is not farmable. Making it survive restarts needs a per-character discovery table; when that exists this is the one call site to change.