B1AggroTableRow
Aggro Reason data — the TableRow Id itself is used as the Reason.
- Chase vs immediate (bAutoChase)
- Per-row arrival distance override (OffsetDistanceOverride)
- Arrival fire: Interaction / Script list / Howling (at least one of the three must be defined)
- Emotion applied on AddAggro (OnTriggeredEmotionId)
Aggro → Emotion is one-way (apply only). The reverse direction (emotion expression → aggro decrement)
is not handled here; Script-side code adjusts aggro directly via B2AggroHelper::DecreaseAggroByReason(...).
| Property | Type | Description | Metadata |
|---|---|---|---|
| bAutoChase | bool | When false, immediate mode: AddAggro skips chase and fires arrival immediately. Autonomy is not blocked. | Category: Aggro|Behavior |
| Disposition | EB1AggroDisposition | Disposition of this Reason. Friendly branches (e.g. sending an affectionate text) treat only Hostile aggro as a blocker. | Category: Aggro|Behavior |
| bPossessManualControl | bool | When true, a possessed character (the player's own Zoi) holding this Reason starts nothing automatically: no new chase, no in-place rotation, no arrival fire. The aggro entry itself (emotion, hit reaction, crime handling) is kept, so the fight only happens through player input. Non-possessed characters are unaffected. A chase queued before possession switched keeps walking to its destination (only its arrival attack is suppressed); the player cancels that movement the usual way (move input -> bUserAborted). Defaults to true so a newly added Reason never drives the player's character without an explicit data decision. | Category: Aggro|Behavior |
| bUseOriginLeashDecay | bool | When true, decay accelerates once the Source moves beyond OriginLeashDistance from the aggro origin. | Category: Aggro|Behavior |
| OffsetDistanceOverride | float | Arrival distance override (cm). Negative falls back to UB1AggroDataAsset.OffsetDistance. Ignored in immediate mode. | Category: Aggro|Behavior |
| AutoPickupId | FName | Auto-pickup policy Id (FK -> AutoPickup.Id). On chase start, that policy's probability decides whether to pick up a weapon (nearby object). NAME_None means this Reason does no auto-pickup (uses aggro/chase but keeps pickup off). | Category: Aggro|Behavior Foreign: AutoPickup.Id |
| OnArrivedInteractionId | FName | InteractionBag Id to fire on arrival. | Category: Aggro|Arrival Foreign: InteractionBag.Id |
| OnArrivedScriptIdList | TArray | Script Ids to run sequentially on arrival. | Category: Aggro|Arrival Foreign: Script.Id |
| OnArrivedHowlingId | FName | Howling Id to fire at the arrival location. | Category: Aggro|Arrival Foreign: Howling.Id |
| OnTriggeredEmotionId | FName | Emotion Id applied to the Source's EmotionComponent when this Reason is the TopReason in a Source-Target entry. Intensity (value) is expressed by the aggro total, so only the EmotionId is configured here. NAME_None disables the emotion application. | Category: Aggro|Emotion Foreign: Emotion.Id |
| Id | FName | Unique Id | Category: B1TableRowBase |
| Comment | FString | Dev Comment | Category: B1TableRowBase |