update
This commit is contained in:
74
plan.md
74
plan.md
@@ -29,17 +29,12 @@
|
||||
- event_bus.gd — Autoload-Singleton, globale Signals
|
||||
- Intentionen (Input → System):
|
||||
- ability_use_requested(player, ability_index) — Spieler will Ability nutzen
|
||||
- auto_attack_tick(attacker) — Auto-Attack bereit
|
||||
- target_requested(player, target) — Spieler will Ziel anvisieren
|
||||
- enemy_detected(enemy, player) — Spieler in Detection-Area
|
||||
- Ergebnisse (System → Node):
|
||||
- combat_state_changed(player, in_combat) — Kampfstatus geändert (AggroSystem)
|
||||
- enemy_state_changed(enemy, new_state) — Gegner-State geändert (EnemyAISystem)
|
||||
- enemy_target_changed(enemy, target) — Gegner-Ziel geändert (AggroSystem)
|
||||
- Kampf:
|
||||
- attack_executed(attacker, position, direction, damage) — Angriff wurde ausgeführt
|
||||
- damage_dealt(attacker, target, damage) — Schaden wurde verteilt
|
||||
- damage_requested(attacker, target, amount) — Schaden zwischen Szenen anfordern
|
||||
- damage_requested(attacker, target, amount) — Schaden anfordern
|
||||
- heal_requested(healer, target, amount) — Heilung anfordern
|
||||
- Entity:
|
||||
- entity_died(entity) — Entity ist gestorben
|
||||
- health_changed(entity, current, max) — Leben hat sich verändert
|
||||
@@ -54,8 +49,6 @@
|
||||
- cooldown_tick(cooldowns, max_cooldowns, gcd_timer) — Cooldown-Update für HUD
|
||||
- Buff:
|
||||
- buff_changed(entity, stat, value) — Buff hat sich verändert
|
||||
- Regeneration:
|
||||
- regeneration_changed(entity, current, max) — Regeneration hat sich verändert
|
||||
- Gegner:
|
||||
- enemy_engaged(enemy, target) — Gegner hat Spieler anvisiert
|
||||
- Portal:
|
||||
@@ -63,6 +56,8 @@
|
||||
- portal_defeated(portal) — Portal besiegt, wird Gate
|
||||
- Dungeon:
|
||||
- dungeon_cleared() — Boss tot, Dungeon gesäubert
|
||||
- Reserviert (definiert, noch nicht genutzt):
|
||||
- auto_attack_tick, target_requested, combat_state_changed, enemy_state_changed, enemy_target_changed, regeneration_changed
|
||||
|
||||
# Resources
|
||||
## BaseStats
|
||||
@@ -89,59 +84,53 @@
|
||||
- Verändert Ability (Element, Beruf, Prestige)
|
||||
|
||||
# Systeme
|
||||
- Werden in der Hauptszene instanziert
|
||||
- In jeder Root-Szene instanziert (world.tscn, dungeon.tscn)
|
||||
- Entities registrieren/deregistrieren sich bei Stats
|
||||
- Systeme lesen/schreiben über Stats
|
||||
### HealthSystem (health_system.gd)
|
||||
- Leben (health) und Lebensregeneration (regeneration) berechnen
|
||||
- Tod bei 0 HP
|
||||
- Leben und Lebensregeneration berechnen, Tod bei 0 HP
|
||||
- Listener: damage_requested, heal_requested
|
||||
- Event: health_changed, regeneration_changed, entity_died
|
||||
- Event: health_changed, entity_died
|
||||
### ShieldSystem (shield_system.gd)
|
||||
- Schild (shield) und Schildregeneration (shield_regeneration) berechnen
|
||||
- Wie zweite Lebensleiste
|
||||
- Schild und Schildregeneration berechnen
|
||||
- absorb(entity, amount) → remaining damage
|
||||
- Event: shield_changed, shield_broken, shield_regenerated
|
||||
### RespawnSystem (respawn_system.gd)
|
||||
- Respawn bei Taverne mit vollen Leben und Schild
|
||||
- Tod-Timer (3s)
|
||||
- Listener: entity_died
|
||||
- Event: respawn_tick, player_respawned
|
||||
### AbilitySystem (ability_system.gd)
|
||||
- Single, AOE, Utility, Ult
|
||||
- Auto-Attack
|
||||
- Listener: ability_use_requested, auto_attack_tick
|
||||
- Event: attack_executed
|
||||
## BuffSystem (buff_system.gd)
|
||||
- Passive
|
||||
- Ability-Ausführung (Single, AOE, Utility, Ult) + Auto-Attack in _process
|
||||
- Listener: ability_use_requested
|
||||
- Event: attack_executed, damage_requested, heal_requested
|
||||
### BuffSystem (buff_system.gd)
|
||||
- Passive-Buffs (damage/heal/shield Multiplikatoren in Stats)
|
||||
- Listener: role_changed
|
||||
- Event: buff_changed
|
||||
- Event: buff_changed, shield_changed
|
||||
### CooldownSystem (cooldown_system.gd)
|
||||
- Cooldown-Tracking, GCD
|
||||
- Listener: attack_executed
|
||||
- Cooldown-Tracking, GCD, AA-Timer per Entity
|
||||
- register/deregister per Entity, direkte Funktionsaufrufe vom AbilitySystem
|
||||
- Event: cooldown_tick
|
||||
### DamageSystem (damage_system.gd)
|
||||
- Schadensberechnung
|
||||
- Listener: attack_executed
|
||||
- Event: damage_requested, heal_requested
|
||||
- Reserviert für spätere Schadensberechnung (aktuell leer)
|
||||
### AggroSystem (aggro_system.gd)
|
||||
- Aggro-Tabellen, Decay, Zielwahl, Kampfstatus, Nearby-Alerting
|
||||
- Listener: damage_dealt, heal_requested, entity_died, enemy_detected, target_requested
|
||||
- Event: target_changed, combat_state_changed, enemy_target_changed, enemy_engaged
|
||||
- Aggro-Tabellen, Decay, Zielwahl, Nearby-Alerting
|
||||
- Listener: damage_dealt, heal_requested, entity_died, enemy_detected
|
||||
- Event: enemy_engaged
|
||||
### EnemyAISystem (enemy_ai_system.gd)
|
||||
- Gegner-States (Idle/Chase/Attack/Return), Bewegungsbefehle
|
||||
- Listener: enemy_target_changed, entity_died
|
||||
- Event: enemy_state_changed
|
||||
- ATTACK-State: Range-Check, Timer, Schaden
|
||||
- Iteriert Enemies in _physics_process
|
||||
- Event: damage_requested
|
||||
### SpawnSystem (spawn_system.gd)
|
||||
- Entity-Erstellung, Portal/Gate-Spawning, Dungeon-Clear
|
||||
- Export: mode ("world" / "dungeon")
|
||||
- Listener: entity_died, health_changed
|
||||
- Event: portal_spawn, portal_defeated, dungeon_cleared
|
||||
- Portal-HP-Schwellen-Spawning
|
||||
- Listener: health_changed, entity_died
|
||||
- Event: portal_spawn
|
||||
|
||||
# Szenen
|
||||
- Szenen sind Views — rendern, Input senden, Events empfangen
|
||||
- Kein Gameplay-State in Szenen (liegt in Stats Autoload)
|
||||
- Entities registrieren sich bei Stats in _ready(), deregistrieren in _exit_tree()
|
||||
- Spieler und HUD wandern beim Szenenwechsel mit (aus Welt entfernt, im Dungeon eingefügt)
|
||||
- Stats cached Spieler-Werte automatisch bei Szenenwechsel (player_cache)
|
||||
|
||||
## Welt
|
||||
- world.tscn — Hauptszene (100x100m)
|
||||
@@ -163,7 +152,7 @@
|
||||
- CameraPivot (Node3D, camera.gd)
|
||||
- Camera3D
|
||||
- Movement (Node, movement.gd) — WASD + Springen, liest Werte von Stats
|
||||
- Combat (Node, combat.gd) — Input-Handler, emittiert ability_use_requested, auto_attack_tick
|
||||
- Combat (Node, combat.gd) — Input-Handler, emittiert ability_use_requested
|
||||
- Role (Node, role.gd) — Rollenwechsel ALT+1/2/3, emittiert role_changed
|
||||
- Targeting (Node, targeting.gd) — Klick/TAB, emittiert target_requested
|
||||
- player.gd — Registriert bei Stats mit PlayerStats Resource, Sichtbarkeit bei Tod/Respawn
|
||||
@@ -215,13 +204,16 @@
|
||||
|
||||
## Dungeon
|
||||
- dungeon.tscn — Geschlossener Raum (15x90m, Wände, dunkles Licht)
|
||||
- Systems (alle 10 Systeme, temporär bis Welt parallel läuft)
|
||||
- NavigationRegion3D
|
||||
- Boden, 4 Wände (StaticBody3D + BoxMesh, 3m hoch)
|
||||
- Spieler (Instanz von player.tscn)
|
||||
- HUD (Instanz von hud.tscn)
|
||||
- Gegnergruppen (4x4 Gegner)
|
||||
- Boss (Instanz von boss.tscn)
|
||||
- Exit-Gate (Instanz von gate.tscn, is_exit=true)
|
||||
- DungeonManager (Node, dungeon_manager.gd)
|
||||
- Keine eigenen Systems — Welt läuft weiter, Systems der Welt verarbeiten alle Entities
|
||||
- Eigene Systems bis Welt parallel läuft (geplant: Reparenting)
|
||||
|
||||
## HUD
|
||||
- hud.tscn — CanvasLayer
|
||||
|
||||
Reference in New Issue
Block a user