ElysImpact ships with 30 built-in handlers organized into 9 categories. Every handler inherits the shared base properties documented at the bottom of this page.
Base Handler Properties
All handlers expose the following properties in their Details panel.
Activation
| Property | Type | Default | Description |
|---|
bEnabled | bool | true | Master on/off toggle for this handler instance. |
ExecutionChance | float (0–100) | 100 | Probability (%) that this handler fires each time the asset plays. Use < 100 for randomized variety. |
Timing
| Property | Type | Default | Description |
|---|
StartDelay | float (≥0) | 0 | Seconds to wait after session start before this handler fires. Use to stagger simultaneous effects. |
Intensity
| Property | Type | Default | Description |
|---|
IntensityScale | float (≥0) | 1.0 | Per-handler multiplier stacked on top of session CombinedIntensity. |
IntensityRandomRange | float (≥0) | 0 | ±random variation added to IntensityScale each play. |
IntensityOverLifetime | UCurveFloat* | null | Optional curve (X=NormalizedTime, Y=multiplier) that modulates intensity across the handler's duration. |
| Property | Type | Default | Description |
|---|
MaxPlayDistance | float (≥0) | 0 | Maximum camera distance to play. 0 = always play. |
LODDistanceFade | float (≥0) | 500 | Distance at which intensity fades toward zero (must be ≤ MaxPlayDistance). |
Conditions
| Property | Type | Description |
|---|
TargetTagRequirement | FGameplayTagQuery | Tags that must be present on the target actor for this handler to fire. |
SourceTagRequirement | FGameplayTagQuery | Tags that must be present on the source actor for this handler to fire. |
Music Sync
| Property | Type | Default | Description |
|---|
bQuantizeToBeat | bool | false | When true, defers execution to the next ElysMusicEngine beat tick. Falls back to immediate execution if ElysMusicEngine is absent. |
BeatDivision | ERP_EBeatDivision | Quarter | Beat subdivision used for quantization. |
Audio
SoundEffect
Plays a USoundBase (Cue, Wave, or MetaSound) at the target's location.
| Property | Type | Default | Description |
|---|
Sound | USoundBase* | null | Primary sound to play. |
RandomSounds | TArray<USoundBase*> | empty | Pool of sounds for anti-repetition. When non-empty, a random entry is chosen instead of Sound. |
VolumeMultiplier | float (0–4) | 1.0 | Volume scale. |
PitchMultiplier | float (0.1–4) | 1.0 | Pitch scale. |
PitchVariation | float (0–0.5) | 0 | ±random pitch variation applied each play. |
bIs2D | bool | false | When true, plays as a non-spatial 2D sound. |
Attenuation | USoundAttenuation* | null | Optional custom attenuation settings. |
Tip: Fill RandomSounds with multiple impact variants to avoid the "machine gun" repetition effect automatically.
ControllerRumble
Sends force feedback to the player controller associated with the target actor.
| Property | Type | Default | Description |
|---|
ForceFeedbackEffect | UForceFeedbackEffect* | null | FFE asset to play. Recommended — assign this for full per-motor control. |
LeftMotor | float (0–1) | 0.5 | Low-frequency motor intensity (fallback when no FFE assigned). |
RightMotor | float (0–1) | 0.8 | High-frequency motor intensity (fallback). |
Duration | float (≥0.01) | 0.2 | Rumble duration in seconds. |
PlayerIndex | int (≥0) | 0 | Target player index. |
Note: Assign a UForceFeedbackEffect asset for best results. The manual motor fallback logs a warning and requires an FFE asset to function in UE 5.6.
Camera
CameraShake
Triggers a UCameraShakeBase subclass on the local player camera.
| Property | Type | Default | Description |
|---|
ShakeClass | TSubclassOf<UCameraShakeBase> | null | The shake blueprint or class to play. |
Amplitude | float (≥0) | 1.0 | Scale applied to the handler's resolved intensity, then passed as the shake's inner scale. |
bAttenuateWithRadius | bool | false | When true, shake amplitude fades by distance from the target. |
AttenuationRadius | float (≥0) | 1000 | Radius over which attenuation applies. Visible only when bAttenuateWithRadius is enabled. |
CameraFOVPulse
Briefly expands or contracts the player camera's FOV, then eases back.
| Property | Type | Default | Description |
|---|
FOVOffset | float | 15.0 | Degrees added to the current FOV at peak. Negative values contract the FOV. |
Duration | float (≥0.01) | 0.3 | Time in seconds for the full in–out cycle. |
Curve | UCurveFloat* | null | Optional override curve (X=[0,1], Y=FOV multiplier). |
This handler requires per-frame ticking. It restores the original FOV on completion.
Gameplay
ChainResponse
Triggers another UERP_ImpactResponseAsset from within a handler, enabling composable response trees.
| Property | Type | Default | Description |
|---|
Asset | UERP_ImpactResponseAsset* | null | The response asset to trigger. |
IntensityOverride | float (≥0) | 0 | Intensity for the chained asset. 0 = inherit current intensity. |
ExtraDelay | float (≥0) | 0 | Additional delay (stacks on top of this handler's own StartDelay). |
Use case: A "HeavyHit" asset can chain to a "ScreenFlash" asset and a "TimeDilation" asset via separate ChainResponse handlers, keeping each asset focused and reusable.
DebugLog
Prints context information to the screen and/or log. Remove or disable in shipping builds.
| Property | Type | Default | Description |
|---|
Message | FString | "ElysImpact: Debug" | Custom message prefix. |
bPrintToScreen | bool | true | Print to viewport. |
ScreenDuration | float (≥0.1) | 3.0 | On-screen display duration in seconds. |
ScreenColor | FLinearColor | teal | Color for the on-screen message. |
bPrintToLog | bool | true | Print to output log. |
bIncludeContext | bool | true | Append Target, Intensity, DI, and EventTag to the message. |
SetActive
Enables, disables, or toggles visibility/collision/tick on the target actor's root component or actor.
Enum ERP_ESetActiveMode | Description |
|---|
Enable | Force-enables the selected flags. |
Disable | Force-disables the selected flags. |
Toggle | Flips the current state. |
| Property | Type | Default | Description |
|---|
Mode | ERP_ESetActiveMode | Toggle | Enable / Disable / Toggle. |
bAffectVisibility | bool | true | Toggle SetActorHiddenInGame. |
bAffectCollision | bool | false | Toggle SetActorEnableCollision. |
bAffectTick | bool | false | Toggle SetActorTickEnabled. |
RestoreAfter | float (≥0) | 0 | Seconds before reverting to the prior state. 0 = never restore. |
SpawnActor
Spawns an actor class at the target's location (with optional relative offset).
| Property | Type | Default | Description |
|---|
ActorClass | TSubclassOf<AActor> | null | Class to spawn. |
LocationOffset | FVector | zero | Position offset from the target root. |
RotationOffset | FRotator | zero | Rotation offset. |
bRelativeOffset | bool | true | Interpret offsets relative to the target's transform. |
bAttachToTarget | bool | false | Attach the spawned actor to the target. |
LifeSpan | float (≥0) | 0 | Auto-destroy after N seconds. 0 = never destroy automatically. |
TriggerGameplayEvent
Dispatches a Gameplay Ability System event to the target or source actor.
| Property | Type | Default | Description |
|---|
EventTag | FGameplayTag | none | GAS event tag (e.g., GameplayEvent.Hit.Stagger). |
Magnitude | float (≥0) | 0 | Event magnitude. When > 0, overrides Context.Magnitude. |
bSendToSource | bool | false | Send the event to the source actor instead of the target. |
Requires the target actor to have an AbilitySystemComponent.
Movement
Impulse
Applies a physics impulse to the target's root primitive component (or LaunchCharacter for pawns).
Enum ERP_EImpulseDirection | Description |
|---|
AwayFromSource | Direction from source to target. |
AlongNormal | Uses Context.ImpactNormal. |
WorldUp | Straight up (+Z). |
Custom | Uses CustomDirection. |
| Property | Type | Default | Description |
|---|
Force | float (≥0) | 500 | Impulse magnitude (units/s² equivalent). |
UpwardForce | float (≥0) | 0 | Additional upward force component. |
DirectionMode | ERP_EImpulseDirection | AwayFromSource | Direction calculation mode. |
CustomDirection | FVector | up | Used when DirectionMode is Custom. |
bUseLaunchCharacter | bool | true | Use ACharacter::LaunchCharacter on character targets. |
bOverrideVelocity | bool | false | Override current velocity instead of adding to it. |
Attract
Smoothly moves the target actor toward the source or impact point.
Enum ERP_EAttractTargetMode | Description |
|---|
UseSource | Move toward the source actor's location. |
UseImpactPoint | Move toward Context.ImpactPoint. |
| Property | Type | Default | Description |
|---|
TargetMode | ERP_EAttractTargetMode | UseSource | What to move toward. |
Speed | float (≥0) | 300 | Movement speed (cm/s). |
Duration | float (≥0) | 0.5 | Max time to attract for. |
StopRadius | float (≥0) | 50 | Stop when within this distance. |
Bounce
Applies a squash-and-stretch bounce simulation that decays over multiple cycles.
| Property | Type | Default | Description |
|---|
SquashAmount | float (≥0) | 0.3 | Peak squash scale along the primary axis. |
StretchAmount | float (≥0) | 0.4 | Peak stretch scale along the primary axis. |
BounceCount | int (≥1) | 3 | Number of bounce cycles before settling. |
Damping | float (≥0.01) | 0.7 | Multiplier applied to each successive bounce amplitude. |
Axis | FVector | up | Axis along which the bounce occurs. |
Duration is automatic based on BounceCount and Damping.
Oscillate
Translates the target back and forth along an axis using a sine wave.
| Property | Type | Default | Description |
|---|
Direction | FVector | up | World-space oscillation axis. |
Distance | float (≥0) | 20 | Peak displacement in cm. |
CycleTime | float (≥0.01) | 1.0 | Duration of one full oscillation cycle. |
Duration | float (≥0) | 3.0 | Total oscillation time. |
bRandomizePhase | bool | false | Start at a random point in the cycle. |
Spin
Continuously rotates the target around an axis for a set duration.
| Property | Type | Default | Description |
|---|
Axis | FVector | up | World-space rotation axis. |
DegreesPerSecond | float | 360 | Rotation speed. |
Duration | float (≥0) | 1.0 | How long to spin. |
bRestoreOnComplete | bool | false | Snap back to original rotation when done. |
Particles
ParticleEffect
Spawns a Niagara particle system at or attached to the target.
Enum ERP_EParticleAttachment | Description |
|---|
Attached | Attached to the target mesh at SocketName. |
AtImpactPoint | Spawned at Context.ImpactPoint (detached). |
AtActorRoot | Spawned at the target's root transform (detached). |
| Property | Type | Default | Description |
|---|
NiagaraSystem | UNiagaraSystem* | null | The Niagara system asset to spawn. |
AttachmentRule | ERP_EParticleAttachment | AtImpactPoint | Where to spawn or attach. |
SocketName | FName | None | Socket or bone name for Attached mode. |
LocationOffset | FVector | zero | Position offset. |
RotationOffset | FRotator | zero | Rotation offset. |
Scale | FVector | one | Scale applied to the system instance. |
bAutoDestroy | bool | true | Destroy the component when the effect completes. |
Post-Process
Post-process handlers modify the scene's post-process volume. They require a blendable or a UPostProcessComponent on the camera or player pawn.
BloomPulse
Briefly increases the scene's bloom intensity, then eases back.
| Property | Type | Default | Description |
|---|
BloomIntensity | float (≥0) | 5.0 | Peak bloom multiplier. |
Duration | float (≥0.01) | 0.25 | Full pulse duration in seconds. |
Curve | UCurveFloat* | null | Optional intensity-over-time curve. |
ChromaticAberration
Adds chromatic aberration (lens distortion) for a brief moment.
| Property | Type | Default | Description |
|---|
Intensity | float (0–5) | 2.0 | Peak aberration strength. |
Duration | float (≥0.01) | 0.2 | Duration in seconds. |
Curve | UCurveFloat* | null | Optional intensity-over-time curve. |
ColorGrade
Temporarily shifts saturation, contrast, brightness, and tint.
| Property | Type | Default | Description |
|---|
Saturation | float (0–2) | 0.0 | Target saturation. 0 = fully desaturated (dramatic hit flash). |
Contrast | float (0–3) | 1.0 | Target contrast. |
Brightness | float (0–3) | 1.0 | Target brightness. |
Tint | FLinearColor | white | Color tint overlaid on the scene. |
Duration | float (≥0.01) | 0.5 | Duration in seconds. |
DepthBlur
Applies depth-of-field blur, simulating a momentary focus loss.
| Property | Type | Default | Description |
|---|
FocalDistance | float (≥0) | 200 | Distance (cm) at which the scene is in focus. |
NearBlurSize | float (≥0) | 4.0 | Blur kernel size for objects closer than focal distance. |
FarBlurSize | float (≥0) | 4.0 | Blur kernel size for objects further than focal distance. |
Duration | float (≥0.01) | 0.3 | Duration in seconds. |
Time
TimeDilation
Slows or accelerates time — either globally or per-actor.
Enum ERP_ETimeDilationScope | Description |
|---|
Actor | Dilates only the target actor's tick rate. |
Global | Calls SetGlobalTimeDilation, affecting the entire world. |
| Property | Type | Default | Description |
|---|
TargetScale | float (0.05–10) | 0.3 | Time scale factor. 0.3 = 30% speed (slow motion). |
Duration | float (≥0.01) | 0.2 | Duration in seconds before restoring. |
Scope | ERP_ETimeDilationScope | Actor | Actor-local or global dilation. |
Curve | UCurveFloat* | null | Optional dilation-over-time curve. |
bRestoreOnComplete | bool | true | Restore normal time scale when done. |
ScalePunch
Briefly punches the target's scale and springs back, giving hits a satisfying "pop".
Enum ERP_EScalePunchMode | Description |
|---|
Uniform | Scales all axes equally. |
PerAxis | Scales each axis from PunchScale independently. |
| Property | Type | Default | Description |
|---|
Mode | ERP_EScalePunchMode | Uniform | Uniform or per-axis punch. |
PunchScale | FVector | (0.25, 0.25, 0.25) | Peak scale offset added to the base scale. |
Duration | float (≥0.01) | 0.3 | Full punch-and-return cycle time. |
Curve | UCurveFloat* | null | Optional punch multiplier curve. |
Jiggle
Spring-simulation jiggle on position, rotation, or scale that naturally decays.
Enum ERP_EJiggleMode | Description |
|---|
Position | Jiggle in world position. |
Rotation | Jiggle in rotation (Euler angles). |
Scale | Jiggle in local scale. |
| Property | Type | Default | Description |
|---|
Mode | ERP_EJiggleMode | Scale | Which transform component to jiggle. |
Amplitude | FVector | (0.15, 0.05, 0.05) | Peak displacement per axis. |
Frequency | float (≥0.1) | 10.0 | Oscillation frequency (Hz). |
Damping | float (≥0.01) | 0.5 | Decay rate. Higher = settles faster. |
bRandomizeDirection | bool | false | Randomize initial jiggle direction each play. |
SettleThreshold | float | 0.005 | Stop ticking once displacement drops below this. |
Duration is automatic (indefinite until settled).
SquashAndStretch
Applies a spring-damped squash-and-stretch deformation along a primary axis, with optional volume preservation.
| Property | Type | Default | Description |
|---|
Amplitude | float (≥0) | 0.3 | Initial stretch amplitude. |
Frequency | float (≥0.1) | 8.0 | Oscillation frequency (Hz). |
Damping | float (0.01–5) | 0.6 | 1.0 = critically damped (no oscillation). |
PrimaryAxis | FVector | up | The stretch axis (usually the actor's up vector). |
bPreserveVolume | bool | true | Scale perpendicular axes inversely to maintain volume. |
SettleThreshold | float | 0.005 | Stop when deformation drops below this. |
LookAt
Rotates the target actor to face the source or impact point.
Enum ERP_ELookAtMode | Description |
|---|
Instant | Snap to the target rotation immediately. |
Lerp | Smoothly interpolate over LerpDuration seconds. |
| Property | Type | Default | Description |
|---|
Mode | ERP_ELookAtMode | Instant | Instant or smoothly lerped. |
LerpDuration | float (≥0.01) | 0.2 | Duration for smooth rotation. Visible only in Lerp mode. |
bLockPitch | bool | false | Keep pitch unchanged (only rotate yaw). |
bLockRoll | bool | true | Keep roll unchanged. |
bLookAtSource | bool | true | Look at the source actor. When false, looks at ImpactPoint. |
Visual
MaterialFlash
Briefly applies an overlay material to the target's mesh, then removes it.
| Property | Type | Default | Description |
|---|
OverlayMaterial | UMaterialInterface* | null | Material applied via SetOverlayMaterial. |
Duration | float (≥0.01) | 0.15 | How long the overlay stays on. |
Create a simple emissive or solid-color material for a classic "damage flash" effect.
RimHighlight
Applies a rim/Fresnel material overlay to make the target glow from the edges.
| Property | Type | Default | Description |
|---|
RimMaterial | UMaterialInterface* | null | Fresnel rim overlay material. |
Color | FLinearColor | gold | Multiplied with the material's color parameter. |
Duration | float (≥0) | 0.4 | How long the rim effect lasts. |
bPulse | bool | false | Oscillate the rim intensity over the duration. |
AfterImage
Spawns translucent ghost copies of the target at fixed intervals, creating a motion trail.
| Property | Type | Default | Description |
|---|
GhostCount | int (≥1) | 3 | Number of ghost copies to spawn. |
SpawnInterval | float (≥0) | 0.05 | Seconds between ghost spawns. |
GhostLifetime | float (≥0.01) | 0.3 | How long each ghost persists before fading. |
Opacity | float (0–1) | 0.5 | Ghost transparency. |
GhostMaterial | UMaterialInterface* | null | Optional override material for ghosts (e.g., a translucent emissive). |
VisibilityBlink
Blinks the target's visibility on and off a fixed number of times.
| Property | Type | Default | Description |
|---|
Duration | float (≥0) | 1.0 | Total blink duration. |
BlinkCount | int (≥1) | 4 | Number of blink cycles. |
bAccelerateOverTime | bool | false | Increase blink frequency over the duration. |
bRestoreOnComplete | bool | true | Ensure visibility is restored when done. |
VisibilityFlicker
Randomizes the target's visibility at irregular intervals for an organic flicker effect.
| Property | Type | Default | Description |
|---|
MinInterval | float (≥0.01) | 0.03 | Minimum time between visibility flips (seconds). |
MaxInterval | float (≥0.01) | 0.12 | Maximum time between visibility flips. |
MinVisibleChance | float (0–1) | 0.4 | Minimum probability of being visible at each flip. |
Duration | float (≥0) | 1.0 | Total flicker duration. |
ScreenFade
Fades the player's screen in, out, or flashes it to a solid color.
Enum ERP_EScreenFadeType | Description |
|---|
FadeIn | Fade from solid color back to the game view. |
FadeOut | Fade to a solid color. |
Flash | Fade out then immediately back in (single flash). |
| Property | Type | Default | Description |
|---|
FadeType | ERP_EScreenFadeType | Flash | The fade mode. |
Color | FLinearColor | black | The solid color to fade to/from. |
Duration | float (≥0.01) | 0.3 | Total fade duration. |
bHoldOnComplete | bool | false | Hold the fade state at completion (manual restoration needed). |
Handler Count Summary
| Category | Count | Handlers |
|---|
| Audio | 2 | SoundEffect, ControllerRumble |
| Camera | 2 | CameraShake, CameraFOVPulse |
| Gameplay | 5 | ChainResponse, DebugLog, SetActive, SpawnActor, TriggerGameplayEvent |
| Movement | 5 | Impulse, Attract, Bounce, Oscillate, Spin |
| Particles | 1 | ParticleEffect |
| Post-Process | 4 | BloomPulse, ChromaticAberration, ColorGrade, DepthBlur |
| Time | 1 | TimeDilation |
| Transform | 4 | ScalePunch, Jiggle, SquashAndStretch, LookAt |
| Visual | 6 | MaterialFlash, RimHighlight, AfterImage, VisibilityBlink, VisibilityFlicker, ScreenFade |
| Total | 30 | |