# Player
- movement -> position_changed(player, vector) -> movement_system
- attack -> attack_used(player, target) -> attack_system
- ability -> ability_used(player, target) -> ability_system
- role -> changed_role(player, role) -> role_system
- targeting -> target_requested(player, target) -> targeting_system
- camera -> no events 

# Enemy
- detection -> player_detected(enemy, player) -> aggro_system
- detection -> player_lost(enemy, player) -> aggro_system 

# HUD
- on_health_changed(player, value) -> health
- on_shield_changed(player, value) -> shield

# Systems
- movement_system <- on_position_changed(player, vector)
- attack_system <- attack_used(player, target)
- ability_system <- ability_used(player, target)
- damage_calculator_system -> 
- health_system -> damage_dealt(player, damage) -> PlayerStats()

# Autoloads 
- PlayerStats -> - health -> on_health_changed(player, value)
- PlayerStats -> - health -> on_health_changed(player, value)
