cruxLang

Behaviors & Rules

Define how agents act and react in your world.

Rule Syntax

rule <name> {
  name: "Display Name"
  priority: <number>
  select: { type: "<agent_type>", tags: [<tags>] }
  when <condition>
  do <action>(<params>)
}

Priority

Higher priority rules execute first. Use priority to ensure important behaviors override others.

rule flee {
  priority: 10  // High priority - runs first
  when danger_nearby
  do flee(speed: 5)
}

rule wander {
  priority: 1   // Low priority - fallback behavior
  when true
  do wander(speed: 1)
}

Built-in Actions

  • wander(speed, randomness) — Random movement
  • move_toward(target, speed) — Move to target
  • flee(target, speed) — Move away from target
  • rest(recovery) — Recover energy
  • wait() — Do nothing
  • emit(event, data) — Emit an event

Selectors

Target specific agents with selectors:

// By type
select: { type: "visitor" }

// By tags
select: { tags: ["hungry"] }

// Both
select: { type: "visitor", tags: ["tourist"] }