How-To: Bind Your Team System (Optional)

Goal: connect the ally/enemy filter toggles to your project's team logic. The plugin has no team dependency of its own - it asks one overridable query, IsInstigatorFriendly, for every third-party event. While no hook is provided, every instigator counts as an ally, so bShowAllyDamageDealt governs all third-party events.

Prerequisites
A UCrimsonNumberPopPlayerSettings component on your PlayerController (How-To: Filter Pops Per Player) and some team system that can answer 'are these two actors friendly?'.

Provide the team hook

IsInstigatorFriendly(LocalPawn, Instigator) is a BlueprintNativeEvent on the component: return true when the instigator is friendly to the local pawn. Blueprint projects override it on a component subclass; C++ projects can instead bind the IsActorFriendly delegate, which the native implementation falls back to.

Create a Blueprint subclass of Crimson Number Pop Player Settings -> override Is Instigator Friendly (query your team system, return true for friendlies) -> add that subclass to the PlayerController instead of the base component.

Make a Blueprint child of UCrimsonNumberPopPlayerSettings, override Is Instigator Friendly, and add the subclass to your PlayerController in place of the base component.

Precedence
A Blueprint override of IsInstigatorFriendly takes precedence over the IsActorFriendly delegate - the delegate is only consulted by the native implementation, so it runs when nothing overrides the event (or when the Blueprint override calls the parent function).
Null instigators
On a client where the instigating actor is not net-relevant, Instigator resolves to null and the event is treated as third-party - your hook receives Instigator = nullptr, so handle that case (returning true keeps the default everyone-is-friendly behavior).
Verify
With bShowEnemyDamageDealt off, damage dealt by an enemy-team actor to a third party no longer pops for this player, while an ally's damage still does. The dev tools Filters tab reports which team hook is active (Blueprint override / C++ delegate / none).

See also

  • How-To: Filter Pops Per Player - the toggles this hook feeds.
  • How-To: Test Pops with the Dev Tools - broadcast enemy-instigated test events to exercise the hook.
  • API Reference - IsInstigatorFriendly and the FCrimsonIsActorFriendlyDelegate signature.