Skip to content

Health — Internal

Folder Overview

This folder contains internal helper utilities and evaluation logic used by the Health system.

These are not supported extension points and should be treated as implementation detail.


Purpose

This layer exists to support the runtime system with shared helpers and preview evaluation logic while keeping the public API surface clean.


What Lives Here

This folder may contain:

  • Small helper utilities (combat, team lookup)
  • Internal evaluation helpers (preview logic)
  • Lightweight shared plumbing used across Health

It does not contain:

  • Public contracts
  • Supported extension seams
  • Full system implementations

Components

CombatUtility

Helper for interacting with HealthCombatState (if present).

  • Safe no-op if component is missing
  • Methods:

  • EnterOnOutgoingAttempt

  • ForceEnterCombat
  • TryExitCombat

Does not own combat state. Delegates to HealthCombatState.


TeamUtility

Resolves team ID via TeamProvider.

  • Returns TeamProvider.TeamId if present
  • Otherwise returns 0 (unknown or neutral)

This is a simple lookup, not a full team system.


HealthPreviewEvaluator

Internal helper for non-mutating previews.

Responsibilities:

  • Computes damage and heal previews
  • Applies rules (optionally)
  • Uses shield preview when supported
  • Applies healing modifiers

Behaviour:

  • Does not mutate health, shields, or rules
  • Uses IShieldPreview when available
  • Falls back safely when preview is not supported

Used by:

  • HealthSystem.PreviewDamage(...)
  • HealthSystem.PreviewHeal(...)

This is a preview engine, not gameplay logic.


Important Notes

Boundaries

Do not:

  • Depend on .Internal types from gameplay code
  • Treat these as stable API
  • Build systems on top of these helpers
  • Assume behaviour here is fixed long-term

If similar functionality is needed, use:

  • Public APIs (HealthSystem)
  • Contracts (Abstractions)
  • Rules, modifiers, or handlers

Usage Guidance

  • Treat this folder as implementation detail
  • Prefer public contracts and APIs for all integrations
  • Expect internal helpers to change over time

Not for Production Use

This folder is not intended as a gameplay integration surface


  • Health System
  • Abstractions
  • Rules
  • Handlers
  • Components