rpg-combat-pi-01/specs/healing.allium
Willem van den Ende 31984bbd9d Consolidate all .allium specs into specs/
- Move .pi/specs/ files into specs/ (healing, factions, merged magical-objects)
- Move src/*.allium files into specs/ (levels, changing-level)
- Delete .pi/specs/ directory
- Document specs/ convention in AGENTS.md
2026-06-15 08:16:12 +01:00

45 lines
1.1 KiB
Plaintext

-- allium: 3
-- allium: healing
------------------------------------------------------------
-- Entities and Variants
------------------------------------------------------------
entity Character {
name: String
health: Health
status: alive | dead
level: Level
factions: Set<Faction>
}
------------------------------------------------------------
-- Rules
------------------------------------------------------------
rule SelfHealIncreasesHealth {
when: CharacterHealsSelf(character, amount)
requires: character.status = alive
ensures: character.health = min(character.health + amount, maxHealthForLevel(character.level))
}
------------------------------------------------------------
-- Invariants
------------------------------------------------------------
invariant HealthNonNegative {
for c in Characters:
c.health >= 0
}
invariant HealthNeverExceedsLevelCap {
for c in Characters:
c.health <= maxHealthForLevel(c.level)
}
invariant DeadCannotHeal {
for c in Characters:
c.status = dead implies not CharacterHealsSelf(c, _)
}