EverambleGAME API / 1

CONTENT CONTRACT · VERSION 1

enemy

A hostile actor: its body, gear, loot and fighting tactic.

Signature

{ aggro_mm: PositiveDistance, alarm_mm: (PositiveDistance)?, behavior: (BehaviorId)?, boss: (BossMark)?, camp_health: PositiveHitPoints, character: CharacterId, chase_mm: PositiveDistance, faction: (ContentId)?, fight_music: FightMusic, flee: (EnemyFlight)?, guard_permille: Permille, guard_series_permille: Permille, guard_ticks: PositiveTicks, heal: (HealthUse)?, id: ContentId, kind: "enemy", leash_mm: PositiveDistance, lifecycle: TransientLifecycle, loadout: Loadout, loot: (LootId)?, name: TextKey, pursuit: (EnemyPursuit)?, ranged_reaction: (RangedReaction)?, rolls: boolean, sounds: CreatureSounds, stamina_per_second: Count, steady: boolean, xp: (PositiveCount)? }

Fields

NameTypeMeaning
aggro_mmPositiveDistanceA guard acquires a player this close.
Range: 1…2147483647; Unit: mm
alarm_mmPositiveDistanceAllies within this distance join the fight when it spots a player or is struck.
Range: 1…2147483647; Unit: mm
behaviorBehaviorIdBehavior graph the engine runs for it instead of the standard enemy tactic.
Length: 1…129; Pattern: ^[a-z][a-z0-9_]{0,31}:[a-z][a-z0-9_]{0,95}$; Reference: behavior
bossBossMarkMarks it as a boss: named on the world map while it lives, with a name plate over its head.
camp_healthPositiveHitPointsHealth of a camp guard of this kind before party scaling.
Range: 1…2147483647; Unit: hp
characterCharacterIdCharacter definition supplying body, stats and movement.
Length: 1…129; Pattern: ^[a-z][a-z0-9_]{0,31}:[a-z][a-z0-9_]{0,95}$; Reference: character
chase_mmPositiveDistanceA guard keeps chasing a player this close.
Range: 1…2147483647; Unit: mm
factionContentIdSide it fights on: only enemies of the same faction answer its alarm. Absent: its own kind only.
Length: 1…129; Pattern: ^[a-z][a-z0-9_]{0,31}:[a-z][a-z0-9_]{0,95}$
fight_musicFightMusicFight piece its pursuit calls for.
fleeEnemyFlightFlight from the fight when hurt badly, with recovery and return.
guard_permillePermilleShare of frontal blows the guard blocks, in thousandths.
Range: 0…1000; Unit: permille
guard_series_permillePermilleAdded block share per blow of the striker's current series (blows in quick succession), in thousandths.
Range: 0…1000; Unit: permille
guard_ticksPositiveTicksHow long a raised guard holds; it blocks every frontal blow meanwhile.
Range: 1…2147483647; Unit: tick
healHealthUseItem it uses from its own inventory when hurt.
idContentIdPackage-qualified identity; unique within its declaring namespace.
Length: 1…129; Pattern: ^[a-z][a-z0-9_]{0,31}:[a-z][a-z0-9_]{0,95}$
kind"enemy"Discriminant
leash_mmPositiveDistanceA guard turns home beyond this distance from its post.
Range: 1…2147483647; Unit: mm
lifecycleTransientLifecycleCorpse lifetime; population rules decide any new spawn.
loadoutLoadoutInventory and held weapon; dropped at death except natural weapons.
lootLootIdAdditional items dropped at death.
Length: 1…129; Pattern: ^[a-z][a-z0-9_]{0,31}:[a-z][a-z0-9_]{0,95}$; Reference: loot
nameTextKeyLocalization key for the displayed name.
Length: 1…129; Pattern: ^[a-z][a-z0-9_]{0,31}:[a-z][a-z0-9_]{0,95}$; Reference: text
pursuitEnemyPursuitHow a guard's leash holds in a fight and how it returns home: a guard in a fight chases further, one that turns back escapes unhurt and heals at home. Absent: the plain leash.
ranged_reactionRangedReactionWhat it does when a shot or blow from afar strikes it: roll aside or charge the shooter.
rollsbooleanWhether it dodge-rolls away from a wielder about to strike.
soundsCreatureSoundsIts wind-up, pain, death and idle sounds.
stamina_per_secondCountStamina it regains per second (its character's maximum stamina caps it; attacks cost the stamina of their tool).
Range: 0…2147483647; Unit: count
steadybooleanWhether a hit leaves its wind-up unbroken.
xpPositiveCountExperience every player who helped defeat it gains: its killer and the players within 40 m.
Range: 1…2147483647; Unit: count

Validated example

{
  "aggro_mm": 16000,
  "alarm_mm": 16000,
  "camp_health": 117,
  "character": "core:archer_body",
  "chase_mm": 32000,
  "faction": "core:raiders",
  "fight_music": "danger",
  "flee": {
    "duration_ticks": 100,
    "heal_per_second": 4,
    "health_below_permille": 300
  },
  "guard_permille": 0,
  "guard_series_permille": 0,
  "guard_ticks": 12,
  "heal": {
    "health_below_permille": 350,
    "item": "core:healing_potion"
  },
  "id": "core:archer",
  "kind": "enemy",
  "leash_mm": 28000,
  "lifecycle": {
    "corpse_ticks": 100
  },
  "loadout": {
    "equipped": "core:shortbow",
    "hotbar": [
      "core:shortbow",
      "core:healing_potion"
    ],
    "items": [
      {
        "count": 1,
        "item": "core:shortbow"
      },
      {
        "count": 30,
        "item": "core:arrow"
      },
      {
        "count": 1,
        "item": "core:healing_potion"
      }
    ],
    "worn": [
      "core:leather_hood",
      "core:leather_vest",
      "core:leather_gloves"
    ]
  },
  "name": "core:archer_body_name",
  "pursuit": {
    "fight_leash_mm": 48000,
    "fight_ticks": 150,
    "return_shield_ticks": 75
  },
  "ranged_reaction": {
    "charge_speed_permille": 1000,
    "distance_mm": 5000,
    "evade_permille": 1000
  },
  "rolls": true,
  "sounds": {
    "death": "core:sound_enemy_archer_death",
    "hurt": "core:sound_enemy_archer_hurt",
    "idle": "core:sound_enemy_archer",
    "windup": "core:sound_bow_draw"
  },
  "stamina_per_second": 12,
  "steady": false,
  "xp": 20
}