Table of Contents

Class ApplyTauntAction

Namespace
FishMMO.Shared
Assembly
FishMMO.Shared.dll

Action that forces an NPC's threat onto the initiator — the taunt primitive.

[Serializable]
public class ApplyTauntAction : BaseAction, IAction
Inheritance
ApplyTauntAction
Implements
Inherited Members

Remarks

Attach to an ability's AbilityOnHitEvent to make it a taunt. Without this, an ability nominated as a "taunt" only changed which ability an NPC preferred to cast; it had no effect whatsoever on the victim's threat table, so TauntAbilityTemplateIDs could never actually pull anything off a squishier ally. This is the missing half.

Server-only in effect: threat tables live on the server's AIController and are not replicated.

Fields

ForceImmediateTargetSwitch

When true the target immediately switches to the taunter rather than waiting for its next scheduled re-evaluation.

[Tooltip("Switch the target's focus immediately instead of waiting for its next re-evaluation.")]
public bool ForceImmediateTargetSwitch

Field Value

bool

GuaranteeTopThreat

When true, the taunt also guarantees the initiator ends up on top by topping their threat past the current highest entry plus LeadOverHighest.

[Tooltip("Guarantee the taunter becomes the highest-threat target, not merely a higher one.")]
public bool GuaranteeTopThreat

Field Value

bool

Remarks

A flat bonus alone is unreliable in a long fight: after a minute of sustained damage the top threat entry can be far beyond any fixed number, so the taunt lands and nothing changes. This makes the guarantee explicit rather than hoping the number is big enough.

The guarantee is computed in SCORE space, not in raw points. An NPC chooses its target with AggressionController.GetThreatScore, which multiplies raw points by a vulnerability factor for a wounded or out-of-mana character — so a taunt that merely put the taunter above the highest RAW entry still lost to a wounded ally on the very next re-evaluation, and ForceImmediateTargetSwitch hid it for exactly one switch. Comparing where the comparison actually happens is what makes this a guarantee rather than a strong suggestion.

LeadOverHighest

Extra threat placed above the previous highest entry when GuaranteeTopThreat is set.

[Tooltip("Threat placed above the previous highest entry when guaranteeing top threat.")]
public float LeadOverHighest

Field Value

float

ThreatPoints

Flat threat added to the target's table for the initiator.

[Tooltip("Flat threat points added for the taunting character.")]
public float ThreatPoints

Field Value

float

Methods

Execute(ICharacter, EventData)

Applies the taunt to the resolved target.

public override void Execute(ICharacter initiator, EventData eventData)

Parameters

initiator ICharacter

The taunting character.

eventData EventData

Event data carrying the taunted target.