Utility Abilities
Utility abilities handle phase transitions, summoning, respawning, UI elements, and atmospheric effects for bosses. Each ability is configured as a behavior entry in the entity JSON with a code and attributes object.
💡 Most abilities use a stages array, allowing different configurations at different health thresholds. The boss activates the first stage whose whenHealthRelBelow condition is met.
Common Properties
These properties are shared by most boss abilities and can be included in any stage configuration:
| Property | Type | Description |
|---|---|---|
whenHealthRelBelow | float | Health fraction threshold (0.0—1.0) to activate this stage |
cooldownSeconds | float | Cooldown between ability uses |
windupMs | int | Windup delay in milliseconds before ability executes |
animation | string | Animation to play during ability |
sound | string | Sound asset path (without sounds/ prefix) |
soundRange | float | Sound audible range (default: 24) |
soundStartMs | int | Delay before sound plays |
soundVolume | float | Sound volume multiplier (default: 1.0) |
loopSound | string | Looping sound during ability |
loopSoundIntervalMs | int | Interval for loop sound (default: 900ms) |
bossrebirth2
EntityBehaviorBossRebirth2 — Boss transforms into another entity upon death.
| Property | Type | Default | Description |
|---|---|---|---|
nextEntityCode | string | null | Entity code to transform into |
isFinalStage | bool | false | Is this the final phase? |
spawnDelayMs | int | 2000 | Delay before spawning next form |
spawnLightning | bool | true | Spawn lightning effect |
sound | string | null | Sound on death |
soundRange | float | 24 | Sound range |
soundStartMs | int | 0 | Sound delay |
spawnSound | string | null | Sound on spawn |
spawnSoundRange | float | 24 | Spawn sound range |
spawnSoundStartMs | int | 0 | Spawn sound delay |
loopSound | string | null | Looping sound during transition |
loopSoundRange | float | 24 | Loop sound range |
loopSoundIntervalMs | int | 900 | Loop sound interval |
{
"code": "bossrebirth2",
"attributes": {
"nextEntityCode": "boss_phase2",
"isFinalStage": false,
"spawnDelayMs": 3000,
"spawnLightning": true,
"sound": "game:entity/bell-idle"
}
}bossformswap
EntityBehaviorBossFormSwap — Boss swaps into a different entity form.
| Property | Type | Default | Description |
|---|---|---|---|
whenHealthRelBelow | float | 1.0 | Health threshold |
alternateEntityCode | string | null | Entity code to swap to |
swapChance | float | 1.0 | Chance to swap (0—1) |
keepHealthFraction | bool | true | Preserve health percentage |
{
"code": "bossformswap",
"attributes": {
"whenHealthRelBelow": 0.5,
"alternateEntityCode": "boss_enraged",
"swapChance": 1.0,
"keepHealthFraction": true
}
}bossformswaplist
EntityBehaviorBossFormSwapList — Boss swaps into one of several predefined forms from stages.
| Property | Type | Default | Description |
|---|---|---|---|
whenHealthRelBelow | float | 1.0 | Health threshold |
entityCode | string | null | Entity code for this stage |
keepHealthFraction | bool | true | Preserve health percentage |
{
"code": "bossformswaplist",
"attributes": {
"stages": [
{ "whenHealthRelBelow": 0.7, "entityCode": "boss_form_fire", "keepHealthFraction": true },
{ "whenHealthRelBelow": 0.4, "entityCode": "boss_form_ice", "keepHealthFraction": true }
]
}
}bossintermissiondispel
EntityBehaviorBossIntermissionDispel — Boss enters an intermission phase: takes reduced damage, freezes, and spawns adds and dispel objects.
| Property | Type | Default | Description |
|---|---|---|---|
whenHealthRelBelow | float | 1.0 | Health threshold |
intermissionMaxMs | int | 10000 | Max intermission duration |
freezeBoss | bool | true | Boss is immobile |
lockYaw | bool | false | Lock boss rotation |
incomingDamageMultiplier | float | 0 | Incoming damage multiplier (0 = invulnerable) |
adds | array | [] | Spawned adds configurations |
dispelEntityCode | string | null | Entity code for dispel objects |
dispelCount | int | 1 | Number of dispel objects to spawn |
{
"code": "bossintermissiondispel",
"attributes": {
"whenHealthRelBelow": 0.5,
"intermissionMaxMs": 15000,
"freezeBoss": true,
"incomingDamageMultiplier": 0,
"dispelEntityCode": "dispel_crystal",
"dispelCount": 3,
"adds": [
{ "entityCode": "game:drifter-normal", "count": 4 }
]
}
}bossplayerclone
EntityBehaviorBossPlayerClone — Boss creates clones of nearby players.
| Property | Type | Default | Description |
|---|---|---|---|
whenHealthRelBelow | float | 1.0 | Health threshold |
cloneEntityCode | string | null | Clone entity code |
cloneRange | float | 20 | Range to detect players for cloning |
{
"code": "bossplayerclone",
"attributes": {
"whenHealthRelBelow": 0.4,
"cloneEntityCode": "player_clone",
"cloneRange": 25
}
}bossrespawn
EntityBehaviorBossRespawn — Boss corpse remains and respawns into a new entity after a set time.
| Property | Type | Default | Description |
|---|---|---|---|
respawnInGameHours | double | 24 | Time before respawn (in-game hours) |
spawnNewBoss | bool | false | Spawn new boss or just despawn corpse |
respawnEntityCode | string | null | Entity code for respawn |
{
"code": "bossrespawn",
"attributes": {
"respawnInGameHours": 48,
"spawnNewBoss": true,
"respawnEntityCode": "boss_revived"
}
}bossmodelswap
EntityBehaviorBossModelSwap — Boss temporarily changes its visual model. Uses stages with a forms array.
| Property | Type | Default | Description |
|---|---|---|---|
whenHealthRelBelow | float | 1.0 | Health threshold |
cooldownSeconds | float | 0 | Cooldown |
swapSound | string | "albase:dark-magic-charge-up" | Sound on swap |
soundRange | float | 32 | Sound range |
forms | array | [] | List of possible forms |
Forms item properties:
| Property | Type | Default | Description |
|---|---|---|---|
shape | string | — | Shape path |
texture | string | — | Texture path |
durationMs | int | 15000 | Duration of this form |
{
"code": "bossmodelswap",
"attributes": {
"stages": [
{
"whenHealthRelBelow": 0.6,
"cooldownSeconds": 30,
"swapSound": "albase:dark-magic-charge-up",
"forms": [
{ "shape": "entity/boss_shadow", "texture": "entity/boss_shadow", "durationMs": 12000 },
{ "shape": "entity/boss_flame", "texture": "entity/boss_flame", "durationMs": 10000 }
]
}
]
}
}bosssummonritual
EntityBehaviorBossSummonRitual — Boss performs a ritual to summon minions.
| Property | Type | Default | Description |
|---|---|---|---|
whenHealthRelBelow | float | 1.0 | Health threshold |
entityCode | string | null | Entity to summon |
minCount | int | 1 | Minimum summons |
maxCount | int | 1 | Maximum summons |
maxNearby | int | 0 | Max nearby before stopping |
nearbyRange | float | 0 | Range to check for nearby |
ritualMs | int | 4000 | Ritual duration |
spawnRange | float | 6 | Spawn range from boss |
cooldownSeconds | float | 0 | Cooldown |
healPerSecond | float | 0 | Heal during ritual |
healRelPerSecond | float | 0 | Relative heal per second |
circleRadius | float | 0 | Circle movement radius |
circleMoveSpeed | float | 0 | Circle movement speed |
spawns | array | [] | Multiple entity types to spawn |
Spawns item properties: entityCode, minCount, maxCount, chance, spawnDelayMs
{
"code": "bosssummonritual",
"attributes": {
"stages": [
{
"whenHealthRelBelow": 0.7,
"cooldownSeconds": 30,
"ritualMs": 5000,
"spawnRange": 8,
"maxNearby": 6,
"nearbyRange": 20,
"spawns": [
{ "entityCode": "game:drifter-normal", "minCount": 2, "maxCount": 4 },
{ "entityCode": "game:drifter-bow", "minCount": 1, "maxCount": 2 }
],
"sound": "game:effect/intromusic"
}
]
}
}bosscloning
EntityBehaviorBossCloning — Boss creates permanent clones of itself.
| Property | Type | Default | Description |
|---|---|---|---|
whenHealthRelBelow | float | 1.0 | Health threshold |
cloneCount | int | 2 | Number of clones |
spawnRange | float | 8 | Spawn radius |
cloneDamageMult | float | 1.0 | Clone damage multiplier |
cloneWalkSpeedMult | float | 1.0 | Clone walk speed multiplier |
cloneInvulnerable | bool | false | Clones are invulnerable |
cloneFollowOwner | bool | false | Clones follow owner |
{
"code": "bosscloning",
"attributes": {
"whenHealthRelBelow": 0.6,
"cloneCount": 3,
"spawnRange": 10,
"cloneDamageMult": 0.5,
"cloneWalkSpeedMult": 1.2,
"cloneFollowOwner": true
}
}bossperiodicspawn
EntityBehaviorBossPeriodicSpawn — Boss periodically spawns entities at intervals.
| Property | Type | Default | Description |
|---|---|---|---|
whenHealthRelBelow | float | 1.0 | Health threshold |
entityCode | string | null | Entity code to spawn |
minCount | int | 1 | Min per spawn |
maxCount | int | 1 | Max per spawn |
chance | float | 1.0 | Spawn chance (0—1) |
maxNearby | int | 5 | Max nearby entities |
spawnRange | float | 8 | Spawn radius |
requireHasTarget | bool | false | Only spawn if boss has a target |
{
"code": "bossperiodicspawn",
"attributes": {
"whenHealthRelBelow": 1.0,
"entityCode": "game:drifter-normal",
"minCount": 1,
"maxCount": 3,
"chance": 0.8,
"maxNearby": 8,
"spawnRange": 10,
"requireHasTarget": true
}
}bossanticheese
EntityBehaviorBossAntiCheese — Prevents players from cheesing the boss by teleporting to them when they exploit terrain or distance.
| Property | Type | Default | Description |
|---|---|---|---|
whenHealthRelBelow | float | 1.0 | Health threshold |
checkIntervalMs | int | 250 | Check interval |
cooldownSeconds | float | 12 | Cooldown between teleports |
searchRange | float | 40 | Search range for players |
farRange | float | 18 | Distance considered "far" |
farSeconds | float | 2.5 | Seconds before teleport when far |
noLosSeconds | float | 2.0 | Seconds before teleport when no line of sight |
minRadius | float | 3 | Min teleport radius |
maxRadius | float | 7 | Max teleport radius |
tries | int | 10 | Tries to find valid position |
requireSolidGround | bool | true | Require solid ground |
{
"code": "bossanticheese",
"attributes": {
"whenHealthRelBelow": 1.0,
"cooldownSeconds": 10,
"searchRange": 50,
"farRange": 20,
"farSeconds": 3.0,
"noLosSeconds": 2.5,
"minRadius": 2,
"maxRadius": 5
}
}bosshastargetsync
EntityBehaviorBossHasTargetSync — Syncs the "has target" state to clients for visual effects. No configurable properties.
{
"code": "bosshastargetsync"
}bosshealthbaroverride
EntityBehaviorBossHealthbarOverride — Overrides the boss healthbar display.
| Property | Type | Default | Description |
|---|---|---|---|
showHealthbar | bool | true | Show healthbar |
displayName | string | null | Custom display name |
{
"code": "bosshealthbaroverride",
"attributes": {
"showHealthbar": true,
"displayName": "Ancient Guardian"
}
}bosshuntcombatmarker
EntityBehaviorBossHuntCombatMarker — Marks boss as part of the Boss Hunt system. Tracks attackers and damage. No configurable properties.
{
"code": "bosshuntcombatmarker"
}bossmusiccontroller
EntityBehaviorBossMusicController — Plays custom music during boss fight.
| Property | Type | Default | Description |
|---|---|---|---|
musicTrack | string | null | Music track path |
fadeOutMs | int | 2000 | Fade out duration |
{
"code": "bossmusiccontroller",
"attributes": {
"musicTrack": "music/boss_battle",
"fadeOutMs": 3000
}
}bossmusicurlcontroller
EntityBehaviorBossMusicUrlController — Plays music from URL during boss fight.
| Property | Type | Default | Description |
|---|---|---|---|
musicUrl | string | null | Music URL |
volume | float | 1.0 | Volume |
{
"code": "bossmusicurlcontroller",
"attributes": {
"musicUrl": "https://example.com/boss_music.ogg",
"volume": 0.8
}
}bossnametag
EntityBehaviorBossNameTag — Customizes boss nametag display.
| Property | Type | Default | Description |
|---|---|---|---|
displayName | string | null | Custom name |
showHealth | bool | true | Show health in nametag |
color | string | "#FF0000" | Nametag color |
{
"code": "bossnametag",
"attributes": {
"displayName": "Dread Lord",
"showHealth": true,
"color": "#8B0000"
}
}bossbloodprice
EntityBehaviorBossBloodPrice — Reactive ability. When the boss deals damage, it heals for a percentage of damage dealt. After healing past a threshold, triggers a vulnerability window.
| Property | Type | Default | Description |
|---|---|---|---|
whenHealthRelBelow | float | 1.0 | Health threshold |
cooldownSeconds | float | 0 | Cooldown |
maxTargetRange | float | 30 | Target range |
healPercent | float | 0.3 | Heal = damageDealt * this |
minVulnMs | float | 1500 | Min vulnerability window |
maxVulnMs | float | 4000 | Max vulnerability window |
healThreshold | float | 5 | Heal amount to trigger vulnerability |
💡 Requires bossvulnerabilitywindow behavior on the same entity. The vulnerability window is triggered by calling OnAbilityCompleted("bossbloodprice").
{
"code": "bossbloodprice",
"attributes": {
"whenHealthRelBelow": 0.6,
"cooldownSeconds": 15,
"maxTargetRange": 25,
"healPercent": 0.4,
"healThreshold": 8
}
}bossenrage
EntityBehaviorBossEnrage — After a configurable timer from first damage, boss gains +50% damage and +50% move speed permanently until death/soft reset. Warning pulse at 10 seconds before enrage.
| Property | Type | Default | Description |
|---|---|---|---|
enrageTimerSeconds | float | 240 | Seconds until enrage |
💡 Enrage timer is overridden by Hollow Trials tier data (alegacyvsquest:trial:enrageTimerSeconds).
{
"code": "bossenrage",
"attributes": {
"enrageTimerSeconds": 180
}
}bossghostflight
EntityBehaviorBossGhostFlight — Entity floats above ground and periodically becomes invisible. While invisible: moves faster, doesn't attack. Reappears behind the player for a surprise attack.
| Property | Type | Default | Description |
|---|---|---|---|
hoverHeight | float | 1.5 | Hover height above ground |
invisDurationSec | float | 3 | Invisibility duration |
invisCooldownSec | float | 12 | Cooldown between invisibility |
invisMoveSpeed | float | 0.08 | Move speed while invisible |
reappearBehindDistance | float | 3 | Distance behind player on reappear |
{
"code": "bossghostflight",
"attributes": {
"hoverHeight": 2.0,
"invisDurationSec": 4,
"invisCooldownSec": 15,
"reappearBehindDistance": 4
}
}bossmirrorimage
EntityBehaviorBossMirrorImage — Boss creates illusion entities and teleports. Illusions have 1 HP and auto-despawn after lifetime.
| Property | Type | Default | Description |
|---|---|---|---|
whenHealthRelBelow | float | 1.0 | Health threshold |
cooldownSeconds | float | 0 | Cooldown |
maxTargetRange | float | 30 | Target range |
imageCount | int | 2 | Number of illusions |
imageLifetimeSec | float | 6 | Illusion lifetime |
teleportOnCast | bool | true | Teleport real boss on cast |
teleportRadius | float | 6 | Teleport radius |
sound | string | effect/translocate-active | Sound |
soundRange | float | 32 | Sound range |
{
"code": "bossmirrorimage",
"attributes": {
"whenHealthRelBelow": 0.5,
"cooldownSeconds": 30,
"maxTargetRange": 25,
"imageCount": 3,
"imageLifetimeSec": 8,
"teleportOnCast": true,
"teleportRadius": 8
}
}bossmovementstyle
EntityBehaviorBossMovementStyle — Souls-like movement patterns. Bosses strafe, dash, retreat, and pause instead of just walking straight at the player.
| Property | Type | Default | Description |
|---|---|---|---|
style | string | default | Style: assassin, tank, kiter, berserker, controller |
strafeSpeed | float | 0.03 | Strafe speed |
dashSpeed | float | 0.12 | Dash speed |
retreatSpeed | float | 0.05 | Retreat speed |
engageDistance | float | 4 | Distance to engage |
strafeDistance | float | 6 | Ideal strafe distance |
retreatDistance | float | 10 | Retreat distance |
dashCooldownSec | float | 5 | Dash cooldown |
strafeDurationSec | float | 2 | Strafe duration |
retreatDurationSec | float | 1.5 | Retreat duration |
pauseDurationSec | float | 1 | Pause duration |
💡 Style presets override individual values: - assassin — fast, short range, frequent dashes - tank — slow, long range, no retreat - kiter — fast, long range, long retreats - berserker — very fast, short range, frequent everything - controller — medium, very long range, long cooldowns
{
"code": "bossmovementstyle",
"attributes": {
"style": "assassin",
"strafeSpeed": 0.04,
"dashSpeed": 0.15,
"engageDistance": 3
}
}bossphaseshift
EntityBehaviorBossPhaseShift — Boss teleports to a random position within shiftRadius. Visual: dissolve particles at old position, reappear particles at new position.
| Property | Type | Default | Description |
|---|---|---|---|
whenHealthRelBelow | float | 1.0 | Health threshold |
cooldownSeconds | float | 0 | Cooldown |
maxTargetRange | float | 30 | Target range |
shiftRadius | float | 8 | Teleport radius |
durationMs | float | 1500 | Dissolve/reappear duration |
sound | string | block/meteoriciron | Sound |
soundRange | float | 16 | Sound range |
{
"code": "bossphaseshift",
"attributes": {
"whenHealthRelBelow": 0.5,
"cooldownSeconds": 12,
"maxTargetRange": 25,
"shiftRadius": 10,
"durationMs": 2000
}
}bossshieldphase
EntityBehaviorBossShieldPhase — At configured HP threshold, boss becomes invulnerable and spawns mobs. Kill all mobs to break the shield. Boss doesn't attack during shield phase. Max duration failsafe.
| Property | Type | Default | Description |
|---|---|---|---|
shieldHealthThreshold | float | 0.5 | HP fraction to trigger |
mobCode | string | game:drifter-deep | Mob entity code |
mobCount | int | 4 | Number of mobs |
spawnRadius | float | 5 | Spawn radius |
maxShieldDurationSec | float | 60 | Max shield duration |
{
"code": "bossshieldphase",
"attributes": {
"shieldHealthThreshold": 0.5,
"mobCode": "game:drifter-deep",
"mobCount": 6,
"spawnRadius": 6,
"maxShieldDurationSec": 90
}
}bosssplit
EntityBehaviorBossSplit — At configured HP threshold, boss despawns and spawns 2 mini-copies. Each copy has 25% of original max HP. Both must be killed.
| Property | Type | Default | Description |
|---|---|---|---|
splitHealthThreshold | float | 0.5 | HP fraction to trigger |
💡 One-time trigger. Only works once per boss. Tier 2/3 only in Hollow Trials.
{
"code": "bosssplit",
"attributes": {
"splitHealthThreshold": 0.4
}
}bosstelegraph
EntityBehaviorBossTelegraph — Displays a particle zone on the ground before a powerful attack. The attack is delayed by windup time, giving players time to dodge. Supports circle, line, and cone shapes.
| Property | Type | Default | Description |
|---|---|---|---|
windupMs | float | 1000 | Windup time before attack lands |
shape | string | circle | Zone shape: circle, line, cone |
radius | float | 5 | Radius for circle/cone |
length | float | 10 | Length for line shape |
width | float | 2 | Width for line shape |
angle | float | 45 | Angle for cone shape (degrees) |
💡 This is a helper behavior. Other abilities call StartTelegraph() and IsPositionInZone() to implement telegraphed attacks. See bossgroundslam for an example.
{
"code": "bosstelegraph",
"attributes": {
"windupMs": 1500,
"shape": "circle",
"radius": 6
}
}