Skip to content

Entity Effects

Overview

Entity effects are temporary or permanent modifiers applied to entities at runtime. They drive a wide range of systems: visual tints and screen overlays on damage, food buffs that boost max health, damage-over-time from burns and poison, crowd-control effects like root and stun, and cosmetic particle trails on weapon abilities. Each effect file defines its duration, overlap rules, stat modifications, and visual/audio feedback.

File Location

Assets/Server/Entity/Effects/

Subdirectories group effects by category:

Assets/Server/Entity/Effects/
BlockPlacement/ (block place success/fail feedback)
Damage/ (hit flash effects)
Deployables/ (totem heal/slow auras)
Drop/ (item rarity glow effects)
Food/
Boost/ (max-stat increases from food)
Buff/ (instant heals and timed buffs)
GameMode/ (creative mode visual)
Immunity/ (dodge invulnerability, fire/env immunity)
Mana/ (mana regen and drain effects)
Movement/ (dodge directional effects)
Npc/ (NPC death, heal, return-home)
Portals/ (teleport visual)
Projectiles/ (arrow, bomb, rubble sub-effects)
Stamina/ (stamina broken, error, regen delay)
Status/ (burn, freeze, poison, root, slow, stun)
Weapons/ (weapon signature and ability effects)

Schema

Top-level fields

FieldTypeRequiredDefaultDescription
DurationnumberYesLength of the effect in seconds. 0 or 0.0 means the effect fires once instantly.
InfinitebooleanNofalseIf true, the effect persists indefinitely until explicitly removed. Overrides Duration.
OverlapBehavior"Overwrite" | "Extend"NoHow to handle re-application while already active. Overwrite replaces the timer; Extend adds to remaining duration.
RemovalBehaviorstringNoHow the effect is removed. Known value: "Duration" (removed when timer expires).
DebuffbooleanNofalseIf true, the effect is classified as a debuff and can be cleansed by antidote-type interactions.
InvulnerablebooleanNofalseIf true, the entity cannot take damage while the effect is active.
StatusEffectIconstringNoPath to the UI icon displayed in the status effect bar.
DeathMessageKeystringNoLocalisation key for the death message when this effect kills an entity.
ApplicationEffectsApplicationEffectsNoVisual, audio, and movement modifications applied while the effect is active.
StatModifiersobjectNoMap of stat ID to flat value added per tick (e.g. {"Health": 2}).
ValueTypestringNoHow StatModifiers values are interpreted. Known value: "Percent".
RawStatModifiersobjectNoMap of stat ID to an array of raw modifier objects for advanced stat manipulation.
DamageCalculatorDamageCalculatorNoPeriodic damage applied while the effect is active.
DamageCalculatorCooldownnumberNoSeconds between each damage tick from the DamageCalculator.
DamageEffectsobjectNoSound events triggered on each damage tick.
ModelOverrideModelOverrideNoReplaces the entity’s visual model for the effect duration (e.g. root vines).

ApplicationEffects

FieldTypeRequiredDefaultDescription
EntityTopTintstringNoHex colour applied to the upper portion of the entity model.
EntityBottomTintstringNoHex colour applied to the lower portion of the entity model.
ScreenEffectstringNoPath to a screen overlay texture (e.g. "ScreenEffects/Fire.png").
HorizontalSpeedMultipliernumberNoMultiplier applied to horizontal movement speed. 0.5 = 50% speed.
KnockbackMultipliernumberNoMultiplier for incoming knockback. 0 = immune to knockback.
ModelVFXIdstringNoID of a model-level VFX to attach to the entity.
ParticlesParticleRef[]NoList of particle systems to spawn on the entity.
MovementEffectsobjectNoMovement overrides. Contains DisableAll: true to fully immobilise the entity.
WorldSoundEventIdstringNoSound event audible to all nearby players.
LocalSoundEventIdstringNoSound event audible only to the affected player.

ParticleRef

FieldTypeRequiredDefaultDescription
SystemIdstringYesParticle system ID to spawn.
TargetEntityPartstringNoEntity part to attach the particle to (e.g. "Entity").
TargetNodeNamestringNoBone or node name for attachment (e.g. "Hip").
PositionOffsetVector3NoLocal offset from the attachment point.
ColorstringNoHex colour override for the particle system.

RawStatModifier

FieldTypeRequiredDefaultDescription
AmountnumberYesModifier value. Interpretation depends on CalculationType.
CalculationType"Additive" | "Multiplicative"YesAdditive adds a flat value to the target; Multiplicative scales the target by the amount.
TargetstringYesWhich aspect of the stat to modify. Known value: "Max" (modifies the stat’s maximum).

DamageCalculator

FieldTypeRequiredDefaultDescription
BaseDamageobjectYesMap of damage type ID to damage value (e.g. {"Fire": 5}).

ModelOverride

FieldTypeRequiredDefaultDescription
ModelstringYesPath to the replacement .blockymodel file.
TexturestringYesPath to the replacement texture.
AnimationSetsobjectNoMap of animation state name to animation definitions (e.g. Spawn, Despawn).

Examples

Burn status effect (Assets/Server/Entity/Effects/Status/Burn.json):

{
"ApplicationEffects": {
"EntityBottomTint": "#100600",
"EntityTopTint": "#cf2302",
"ScreenEffect": "ScreenEffects/Fire.png",
"WorldSoundEventId": "SFX_Effect_Burn_World",
"LocalSoundEventId": "SFX_Effect_Burn_Local",
"Particles": [{ "SystemId": "Effect_Fire" }],
"ModelVFXId": "Burn"
},
"DamageCalculatorCooldown": 1,
"DamageCalculator": {
"BaseDamage": { "Fire": 5 }
},
"DamageEffects": {
"WorldSoundEventId": "SFX_Effect_Burn_World",
"PlayerSoundEventId": "SFX_Effect_Burn_Local"
},
"OverlapBehavior": "Overwrite",
"Debuff": true,
"StatusEffectIcon": "UI/StatusEffects/Burn.png",
"Duration": 3,
"DeathMessageKey": "server.general.deathCause.burn"
}

Food buff with max-health boost (Assets/Server/Entity/Effects/Food/Boost/Food_Health_Boost_Large.json):

{
"RawStatModifiers": {
"Health": [
{
"Amount": 30,
"CalculationType": "Additive",
"Target": "Max"
}
]
},
"Duration": 480,
"OverlapBehavior": "Overwrite",
"StatusEffectIcon": "UI/StatusEffects/AddHealth/Large.png"
}

Dagger dash invulnerability (Assets/Server/Entity/Effects/Weapons/Dagger_Dash.json):

{
"Duration": 0.25,
"ApplicationEffects": {
"Particles": [
{
"SystemId": "Daggers_Dash_Straight",
"TargetEntityPart": "Entity",
"TargetNodeName": "Hip",
"PositionOffset": { "Y": 1.0 },
"Color": "#d7e5ec"
}
],
"ModelVFXId": "Dagger_Dash"
},
"OverlapBehavior": "Extend",
"Invulnerable": true
}