This commit is contained in:
Marek Lenczewski
2026-04-02 18:33:53 +02:00
parent 47f4fe3d90
commit c7e6f8f4b5
25 changed files with 301 additions and 157 deletions

38
plan.md
View File

@@ -8,11 +8,12 @@ portal/ — Portal + Gate (.tscn + .gd)
dungeon/ — Dungeon (.tscn + .gd)
hud/ — HUD (.tscn + .gd)
world/ — Hauptszene (.tscn + .gd)
systems/ — 10 Gameplay-Systeme (.gd)
systems/ — 9 Gameplay-Systeme (.gd)
aggro/ — AggroSystem (aggro_system, aggro_tracker, aggro_decay, aggro_events)
autoload/ — EventBus, Stats, GameState (.gd)
components/ — Shared UI: healthbar (.gd)
resources/
stats/ — Stats-Klassen (.gd) + Daten (.tres)
stats/ — Stats-Klassen (.gd) + Daten (.tres) + AggroConfig
roles/ — Ability/AbilitySet-Klassen (.gd) + Rollen-Daten
damage/ — set.tres + abilities/
tank/ — set.tres + abilities/
@@ -137,9 +138,12 @@ resources/
- Event: cooldown_tick
### DamageSystem (damage_system.gd)
- Reserviert für spätere Schadensberechnung (aktuell leer)
### AggroSystem (aggro_system.gd)
- Aggro-Tabellen, Decay, Zielwahl, Nearby-Alerting
- Listener: damage_dealt, heal_requested, entity_died, enemy_detected
### AggroSystem (systems/aggro/)
- Systemweite Werte in AggroConfig Resource (resources/stats/aggro_config.tres)
- aggro_system.gd — Parent, Config halten, Children verdrahten
- aggro_tracker.gd — Aggro-Tabellen, Players-in-Range, Zielwahl, Radius-Helper
- aggro_decay.gd — Combat-Timer, Decay-Berechnung, Spread, Alert
- aggro_events.gd — Signal-Handler (damage_dealt, heal_requested, entity_died, enemy_detected, enemy_lost)
- Event: enemy_engaged
### EnemyAISystem (enemy_ai_system.gd)
- ATTACK-State: Range-Check, Timer, Schaden
@@ -193,15 +197,21 @@ resources/
- EnemyMovement (Node, enemy_movement.gd) — Empfängt Bewegungsbefehle
- Healthbar (Sprite3D + SubViewport, healthbar.gd) — liest HP/Shield von Stats
- enemy.gd — Registriert bei Stats mit EnemyStats Resource, Detection-Area Signal
- Aggro-Regeln:
- Schaden = Aggro (1:1)
- Heilung = Aggro (0.5x)
- Tank = Aggro-Multiplikator (2x)
- Aggro verfällt -1/s
- Spieler im Portal-Radius: Aggro bleibt bei mindestens 1
- Außerhalb Portal-Radius: Aggro verfällt exponentiell (1%, 2%, 4%, 8%, ...)
- Ohne Aggro: Gegner kehrt zum Portal zurück, regeneriert
- Bei Spieler-Tod → Aggro auf 0
- Aggro-Regeln (Werte in AggroConfig Resource):
- Aufbau:
- Schaden = Aggro (1:1), Tank 2x Multiplikator
- Heilung = 0.5x Aggro auf alle Gegner die Heiler kennen
- Aggro-Spread: 50% des Aggro an Gegner im alert_radius (10m)
- Detection-Area (10m): +1 Aggro, Alert an Nachbarn im alert_radius
- Kampfstatus:
- Spieler in DetectionArea → immer im Kampf (kein Decay)
- Spieler verlässt DetectionArea → 5s Combat-Timeout, dann Decay
- Schaden verursachen setzt Combat-Timer zurück
- Abbau (nach Combat-Timeout):
- Basis: -aggro_decay/s (default 1.0)
- Exponentieller Decay basierend auf Zeit seit Kampfende (1%·2^sekunden)
- Ohne Aggro: Gegner kehrt zum Portal zurück, regeneriert
- Bei Spieler-Tod → Aggro auf 0
## Boss (enemy/)
- boss.tscn — wie enemy.tscn aber größer (Mesh lila, 1.5x)