Skip to content

Blueprint Nodes

Can TATAR edited this page Jun 9, 2026 · 3 revisions

Blueprint Nodes Reference - Update Blocks

Use these blocks to update the existing Blueprint Nodes Reference wiki page.


1. Add To Table Of Contents

Add this line after:

- [Game Director](#game-director)
- [Enemy Logic Component](#enemy-logic-component)

2. Add To Weapon System

Add this section under ## Weapon System, after the ### Firing System list.

### Per-Weapon Targeting

Per-weapon targeting allows each weapon Data Asset to define its own targeting filters.

Common use cases:
- Boss-only weapons
- Door-only weapons
- Weapons that ignore normal enemies
- Weapons that only fire when a valid target exists

Important Data Asset settings:
- `Override Targeting Settings` - Use this weapon's own targeting rules
- `Targetable Classes` - Only target specific actor classes
- `Targetable Tags` - Only target actors with specific tags
- `Target Unspecified Actors` - If false, unmatched actors are ignored
- `Only Fire When Target Available` - If true, weapon does not fire without a valid target
- `Targeting Range Override` - Optional custom range for this weapon

Example: Boss-only weapon

```text
Override Targeting Settings -> true
Targetable Tags -> Boss
Target Unspecified Actors -> false
Only Fire When Target Available -> true

Example: Door-only weapon

Override Targeting Settings -> true
Targetable Tags -> Door
Target Unspecified Actors -> false
Only Fire When Target Available -> true

---

## 3. Add New Enemy Logic Component Section

Add this section after `## Game Director` and before `## Player Library (Easy UI)`.

````md
---

## Enemy Logic Component
**Component:** URFEnemyLogicComponent

Reusable enemy behavior component for production `ACharacter` or `APawn` enemies.

Use this when you do not want to inherit from `AURFTestEnemy`.

### BlueprintCallable Functions

- `SetContactDamageComponent(UPrimitiveComponent* NewComponent)` - Set which collision component applies contact damage
- `SetTarget(AActor* NewTarget)` - Manually set the current target
- `GetTarget()` - Get the current target
- `GetDistanceToTarget()` - Get distance to the current target
- `HandleXPReward(AActor* Killer)` - Process XP/loot rewards without death/destruction side effects
- `AwardXPToPlayer(AActor* Player)` - Award this enemy's XP reward directly to a player actor
- `SpawnGuaranteedPickup()` - Spawn configured guaranteed pickup
- `SpawnXPPickup(int32 InXPAmount)` - Spawn XP pickup with a specific amount
- `SpawnRandomLoot()` - Roll and spawn random loot from configured loot tables
- `RegisterWithDirector()` - Register owner with `URFGameDirector`
- `UnregisterFromDirector()` - Unregister owner from `URFGameDirector`
- `GetHealthComponent()` - Get cached `URFHealthComponent`
- `IsAlive()` - Check whether the enemy is alive

### BlueprintAssignable Events

- `OnTargetAcquired(AActor* Target)` - Called when a target is acquired
- `OnTargetLost(AActor* Target)` - Called when the current target is lost
- `OnTargetChanged(AActor* OldTarget, AActor* NewTarget)` - Called when target changes
- `OnContactDamageDealt(AActor* Target, float DamageDealt)` - Called when contact damage is dealt
- `OnRewardsProcessed(AActor* Killer, int32 XPAwarded, bool bPickupSpawned)` - Called when XP/loot rewards are processed

### Important Properties

#### Targeting

- `Auto Find Player` - Automatically find player pawn as target
- `Target Search Radius` - Maximum search distance
- `Target Update Interval` - How often target search updates
- `Continuous Player Search` - Keep searching after BeginPlay

#### Contact Damage

- `Enable Contact Damage` - Enables touch damage
- `Contact Damage Component Name` - Collision component name to bind, such as `CapsuleComponent`
- `Contact Damage` - Damage amount
- `Damage Interval` - Delay between repeated contact damage

#### Movement

- `Enable Simple Follow Movement` - Enables built-in simple follow movement
- `Follow Movement Mode` - Movement mode used by simple follow
- `Follow Speed` - Speed used by `DirectActorMovement`

Movement modes:
- `MovementInput` - Uses Unreal `AddMovementInput`; speed is controlled by the owner's MovementComponent
- `DirectActorMovement` - Moves actor directly; `FollowSpeed` controls units per second

#### Rewards

- `XP Reward` - XP amount
- `Reward Method` - DirectOnKill, PickupOnly, or Hybrid
- `Guaranteed Pickup Class` - Pickup class for XP pickup reward
- `Enable Random Loot` - Enables loot table rolls
- `Random Loot Tables` - Loot data assets to roll from

#### Director

- `Auto Register With Director` - Automatically register enemy with `URFGameDirector`

#### Tag

- `Auto Add Enemy Tag` - Automatically add a tag on BeginPlay
- `Auto Enemy Tag` - Tag to add, usually `Enemy`

#### Death

- `Handle Actor Destruction` - If true, EnemyLogicComponent destroys the actor after death
- `Destruction Delay` - Delay before destruction

Recommended production setup:

```text
URFHealthComponent -> Destroy On Death -> true
URFEnemyLogicComponent -> Handle Actor Destruction -> false

Example: Production Enemy Blueprint

BP_ProductionEnemy
+-- CapsuleComponent
+-- SkeletalMesh
+-- URFHealthComponent
+-- URFEnemyLogicComponent

Basic settings:

URFHealthComponent:
Max Health -> 50
Destroy On Death -> true
Destroy Delay -> 0.1

URFEnemyLogicComponent:
Auto Add Enemy Tag -> true
Auto Enemy Tag -> Enemy
Auto Find Player -> true
Auto Register With Director -> true
XP Reward -> 10
Reward Method -> Direct On Kill

Contact damage example:

Enable Contact Damage -> true
Contact Damage Component Name -> CapsuleComponent
Contact Damage -> 10
Damage Interval -> 1.0

---

## 4. Update Test Enemy Section

Add this note at the top of the existing `## Test Enemy` section.

```md
`AURFTestEnemy` is still supported for quick prototyping and backward compatibility.

For production enemies, prefer creating your own `ACharacter` or `APawn` and adding:
- `URFHealthComponent`
- `URFEnemyLogicComponent`
```

Keep the existing Test Enemy functions and events after this note.

---

## 5. Update Total Statistics

Change:

```md
**Total Blueprint Node Count: 250+**
```

to:

```md
**Total Blueprint Node Count: 265+**
```

Add this line to the distribution list:

```md
- Enemy Logic Component: 13+ functions + 5 events
```

Clone this wiki locally