How-To: Report Gameplay Events
Goal: drive quest objectives from your own combat, inventory, interaction and dialogue code.
Prerequisites
Quick Start steps 1-4.
1. Use the typed helper for built-in events
| Helper | Payload | Channel | Drives |
|---|---|---|---|
ReportUnitKilled | FCrimsonUnitKilledMessage (Killer, Victim, VictimTags) | Quest.Channel.UnitKilled | Kill Event |
ReportItemCollected | FCrimsonItemCollectedMessage (Collector, ItemTags, Count) | Quest.Channel.ItemCollected | Collect Items Event |
ReportInteractionOccurred | FCrimsonInteractionOccurredMessage (Instigator, Interactable, InteractableTags) | Quest.Channel.InteractionOccurred | Interact Event |
ReportDialogueCompleted | FCrimsonDialogueCompletedMessage (Speaker, Listener, NpcTags, ChoiceTag) | Quest.Channel.DialogueCompleted | Talk To NPC Event |
ReportLocationReached | FCrimsonLocationReachedMessage (Traveler, LocationTag) | Quest.Channel.LocationReached | Reach Location Event |
Report on the server
Quest events run on the server. Call these on the authority; a client-side trigger calls
UCrimsonQuestProgressionComponent::Server_ReportEvent(Channel) instead, which the server validates.Verify
With the Dev Tools open (
Crimson.Quest.DevTools), each report advances the matching objective.2. Report anything else
Report Event (Channel = your tag, Payload = Make Instanced Struct of any struct, or empty). Author a Channel Reported Event (Channel Tag, Match Child Channels, Required Count) on the stage.
Verify
The Channel Reported Event counts one per report.
See also
- How-To: React to Quest Changes
- API Reference