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

HelperPayloadChannelDrives
ReportUnitKilledFCrimsonUnitKilledMessage (Killer, Victim, VictimTags)Quest.Channel.UnitKilledKill Event
ReportItemCollectedFCrimsonItemCollectedMessage (Collector, ItemTags, Count)Quest.Channel.ItemCollectedCollect Items Event
ReportInteractionOccurredFCrimsonInteractionOccurredMessage (Instigator, Interactable, InteractableTags)Quest.Channel.InteractionOccurredInteract Event
ReportDialogueCompletedFCrimsonDialogueCompletedMessage (Speaker, Listener, NpcTags, ChoiceTag)Quest.Channel.DialogueCompletedTalk To NPC Event
ReportLocationReachedFCrimsonLocationReachedMessage (Traveler, LocationTag)Quest.Channel.LocationReachedReach 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