Skip to content

Projectiles

Overview

Projectile files define the physics behaviour and damage properties of individual projectile instances — arrows, spells, and other fired objects. They are the data-layer counterpart to Projectile Configs, which define launch parameters and interaction chains. Each projectile file is referenced by an Appearance string that links it to client-side visuals.

File Location

Assets/Server/Projectiles/

Subdirectories group projectiles by category:

Assets/Server/Projectiles/
Arrow_FullCharge.json
Arrow_HalfCharge.json
Arrow_NoCharge.json
Ice_Ball.json
Ice_Bolt.json
Roots.json
NPCs/
Player/
Spells/
Fireball.json

Schema

FieldTypeRequiredDefaultDescription
AppearancestringYesClient-side appearance ID used to look up the projectile’s visual model and texture.
MuzzleVelocitynumberYesInitial launch speed in units/second at the moment of firing.
TerminalVelocitynumberYesMaximum speed the projectile can reach in flight.
GravitynumberYesDownward gravitational acceleration applied each second. 0 for perfectly straight shots.
BouncinessnumberNo0Fraction of velocity retained after bouncing off a surface. 0 = no bounce.
ImpactSlowdownnumberNo0Velocity reduction applied on impact.
TimeToLivenumberNo0Seconds before the projectile is automatically destroyed. 0 = no timeout.
DamagenumberYesBase damage dealt on a successful hit.
DeadTimenumberNo0Seconds the projectile lingers after hitting a target before being removed.
DeadTimeMissnumberNoSeconds the projectile lingers after missing (hitting terrain).
SticksVerticallybooleanNofalseIf true, the projectile embeds upright in surfaces rather than lying flat.
PitchAdjustShotbooleanNofalseIf true, the projectile’s pitch is corrected based on arc trajectory.
HorizontalCenterShotnumberNo0Horizontal accuracy offset from crosshair centre.
VerticalCenterShotnumberNo0Vertical accuracy offset from crosshair centre.
DepthShotnumberNo1Depth multiplier for hit detection.
RadiusnumberNoCollision sphere radius. If omitted, a default capsule hitbox is used.
HeightnumberNoCollision capsule height.
HitSoundEventIdstringNoSound event played on entity hit.
MissSoundEventIdstringNoSound event played on terrain miss.
BounceSoundEventIdstringNoSound event played on each bounce.
DeathSoundEventIdstringNoSound event played when the projectile expires naturally.
HitParticlesParticleRefNoParticle system spawned on entity hit.
MissParticlesParticleRefNoParticle system spawned on terrain miss.
BounceParticlesParticleRefNoParticle system spawned on each bounce.
DeathParticlesParticleRefNoParticle system spawned when the projectile expires.
DeathEffectsOnHitbooleanNofalseIf true, death particles and sounds also trigger on a successful entity hit.
ExplosionConfigobjectNoConfigures area-of-effect explosion on impact (see below).

ParticleRef

FieldTypeRequiredDefaultDescription
SystemIdstringYesParticle system ID to spawn.

ExplosionConfig

FieldTypeRequiredDefaultDescription
DamageEntitiesbooleanNofalseWhether the explosion damages nearby entities.
DamageBlocksbooleanNofalseWhether the explosion damages nearby blocks.
EntityDamageRadiusnumberNoRadius in units within which entities take damage.
EntityDamageFalloffnumberNo1.0Damage reduction multiplier applied at the edge of the radius.
BlockDamageRadiusnumberNoRadius in units within which blocks are damaged.
KnockbackobjectNoKnockback applied to entities in the explosion radius.

Examples

Full-charge arrow (Assets/Server/Projectiles/Arrow_FullCharge.json):

{
"Appearance": "Arrow_Crude",
"SticksVertically": true,
"MuzzleVelocity": 50,
"TerminalVelocity": 50,
"Gravity": 10,
"Bounciness": 0,
"ImpactSlowdown": 0,
"TimeToLive": 20,
"Damage": 20,
"DeadTime": 0.1,
"HorizontalCenterShot": 0.1,
"VerticalCenterShot": 0.1,
"DepthShot": 1,
"PitchAdjustShot": true,
"HitSoundEventId": "SFX_Arrow_FullCharge_Hit",
"MissSoundEventId": "SFX_Arrow_FullCharge_Miss",
"HitParticles": {
"SystemId": "Impact_Blade_01"
}
}

Fireball spell (Assets/Server/Projectiles/Spells/Fireball.json):

{
"Appearance": "Fireball",
"Radius": 0.1,
"Height": 0.2,
"MuzzleVelocity": 40,
"TerminalVelocity": 100,
"Gravity": 4,
"Bounciness": 0,
"TimeToLive": 0,
"Damage": 60,
"DeadTime": 0,
"DeathEffectsOnHit": true,
"MissParticles": { "SystemId": "Explosion_Medium" },
"BounceParticles": { "SystemId": "Impact_Fire" },
"DeathParticles": { "SystemId": "Explosion_Medium" },
"MissSoundEventId": "SFX_Fireball_Miss",
"DeathSoundEventId": "SFX_Fireball_Death",
"ExplosionConfig": {
"DamageEntities": true,
"DamageBlocks": false,
"EntityDamageRadius": 5,
"EntityDamageFalloff": 1.0
}
}