How-To: Bind Your Team System (Optional)
Goal: connect the Self / Ally / Enemy relationship rules to your project's team logic. The plugin has no team dependency of its own - it asks one overridable query, IsActorFriendly, at most twice per event. While no hook is provided every actor counts as an ally, so ShowAllyEffects governs every third-party event and ShowEnemyEffects never fires.
UCrimsonCombatTextPlayerSettings 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
IsActorFriendly(LocalPawn, OtherActor) is a BlueprintNativeEvent on the component: return true when OtherActor is friendly to LocalPawn. OtherActor is whoever is being judged against the local pawn - currently the instigator of the event. Blueprint projects override the event on a component subclass; C++ projects can instead bind the IsActorFriendlyDelegate, which the native implementation falls back to.
Make a Blueprint child of UCrimsonCombatTextPlayerSettings, override Is Actor Friendly, and add the subclass to your PlayerController in place of the base component.
IsActorFriendly takes precedence over the IsActorFriendlyDelegate - 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).OtherActor = nullptr, so handle that case (returning true keeps the default everyone-is-friendly behavior).Friendly for null, which is what keeps events with an unresolvable source visible instead of silently dropped.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 -
IsActorFriendlyand theFCrimsonIsActorFriendlyDelegatesignature.