🧩 Rules — Abstractions¶
📦 Folder Overview¶
This folder defines rule-adjacent extension seams used by the Rules layer.
🎯 Purpose¶
Expose small, focused interfaces that rules can depend on without coupling to concrete implementations.
These are:
- Lightweight
- Injectable
- Safe to use across systems
🧩 What Lives Here¶
Damage-side¶
-
IAttackerDamageModifier -
Provides attacker-side multiplier contributions
Healing-side¶
-
IHealingModifier -
Provides healing multiplier contributions
Notes:
- Values are typically combined multiplicatively
-
Convention:
-
0→ blocks healing 1→ no change>1→ increases healing
Utility¶
-
IRng -
Minimal RNG surface for deterministic or injectable randomness
⚠️ Important Notes¶
Constraints¶
Interfaces in this folder are expected to be:
- Small
- Stable
- Stateless or safely stateful
- Designed to avoid allocations where possible
Boundaries¶
Do not include:
- Concrete rule implementations
- Gameplay logic
- Health ownership or mutation logic
This folder defines contracts only, not behaviour.
🧠 Usage Guidance¶
- Use these interfaces as capability seams for rules
- Keep implementations focused and isolated
- Avoid coupling rules to concrete systems
🔗 Related Documentation¶
- Rules
- Contracts
- Health System