update
This commit is contained in:
57
plan.md
57
plan.md
@@ -17,7 +17,8 @@ scenes/ — Darstellung + Input
|
||||
world/ — Hauptszene + portal_spawner
|
||||
systems/ — Spiellogik
|
||||
aggro/ — AggroSystem (system, tracker, decay, events) + aggro_config
|
||||
9× *_system.gd — health, shield, damage, ability, cooldown, enemy_ai, respawn, spawn, buff
|
||||
effect.gd — Effect Resource (Buff/Debuff/Aura Daten)
|
||||
10× *_system.gd — health, shield, damage, ability, cooldown, enemy_ai, respawn, spawn, effect, element
|
||||
autoloads/ — Globaler Zustand
|
||||
event_bus.gd
|
||||
game_state.gd
|
||||
@@ -26,7 +27,7 @@ autoloads/ — Globaler Zustand
|
||||
|
||||
## Szenenbaum
|
||||
- Welt
|
||||
- Systems (10 Systeme als Child-Nodes)
|
||||
- Systems (11 Systeme als Child-Nodes)
|
||||
- Taverne
|
||||
- Player
|
||||
- Portale (dynamisch)
|
||||
@@ -75,8 +76,14 @@ autoloads/ — Globaler Zustand
|
||||
- portal_defeated(portal)
|
||||
- Dungeon:
|
||||
- dungeon_cleared()
|
||||
- Reserviert:
|
||||
- auto_attack_tick, target_requested, combat_state_changed, enemy_state_changed, enemy_target_changed, regeneration_changed
|
||||
- Effects:
|
||||
- effect_requested(target, effect, source)
|
||||
- effect_applied(target, effect)
|
||||
- effect_expired(target, effect)
|
||||
- Elements:
|
||||
- element_damage_dealt(attacker, target, amount, element)
|
||||
- element_applied(target, element)
|
||||
- element_reaction(target, element_a, element_b, reaction_name)
|
||||
|
||||
## Stats (autoload/stats.gd)
|
||||
- Speichert aktuelle Attribute aller Entities
|
||||
@@ -101,12 +108,12 @@ autoloads/ — Globaler Zustand
|
||||
|
||||
## resources/roles/
|
||||
### Ability (ability.gd)
|
||||
- ability_name, type, damage, ability_range, cooldown, uses_gcd, aoe_radius, icon, is_heal, passive_stat
|
||||
- ability_name, type, damage, ability_range, cooldown, uses_gcd, aoe_radius, icon, is_heal, passive_stat, element
|
||||
- Typen: Single, AOE, Utility, Ult, Passive
|
||||
### AbilitySet (ability_set.gd)
|
||||
- abilities (Array[Ability]), aa_damage, aa_range, aa_is_heal
|
||||
### AbilityModifier (geplant)
|
||||
- Verändert Ability (Element, Beruf, Prestige)
|
||||
### AbilityModifier (geplant, Zukunft)
|
||||
- Verändert Ability (Beruf, Prestige)
|
||||
### Rollen-Ordner (damage/, tank/, healer/)
|
||||
- set.tres — AbilitySet der Rolle
|
||||
- abilities/ — 5 Ability .tres pro Rolle (single, aoe, utility, ult, passive)
|
||||
@@ -132,10 +139,27 @@ autoloads/ — Globaler Zustand
|
||||
- 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, shield_changed
|
||||
### EffectSystem (effect_system.gd)
|
||||
- Verwaltet Buffs, Debuffs und Auras auf Entities
|
||||
- Effect Resource (effect.gd): effect_name, type (BUFF/DEBUFF/AURA), stat, value, duration, is_multiplier, aura_radius, tick_interval, element
|
||||
- State: active_effects Dictionary[Node, Array[Dict]] (effect, source, remaining, tick_timer)
|
||||
- Kein Stacking: gleicher effect_name auf Entity → wird refreshed statt gestackt
|
||||
- Passive-Abilities werden als AURA-Effekte erstellt (role_changed → permanente Auras)
|
||||
- Aura-Propagierung: Auras mit aura_radius > 0 geben allen Spielern im Radius einen temporären Buff (0.5s, refreshed jedes Frame). Verlässt man den Radius → Buff sofort weg
|
||||
- _process: Dauer ticken, abgelaufene entfernen, DoT/HoT-Ticks, Aura-Propagierung
|
||||
- _recalc_stat_buffs: Multiplier-Effekte aggregieren → buff_damage/heal/shield in Stats
|
||||
- Listener: role_changed, entity_died, effect_requested
|
||||
- Event: buff_changed, shield_changed, effect_applied, effect_expired
|
||||
### ElementSystem (element_system.gd)
|
||||
- Verwaltet Element-Zustände auf Entities und löst Elementareffekte aus
|
||||
- Element Enum: NONE, FIRE (erweiterbar)
|
||||
- State: applied_elements Dictionary[Node, int]
|
||||
- Nur Entities in Gruppen "enemies" oder "portals" erhalten Elemente
|
||||
- Bei Element-Schaden: Element auf Ziel anwenden, passenden Effekt erstellen
|
||||
- Feuer: DoT (3 Schaden/Tick, 2s Interval, 6s Dauer)
|
||||
- Bei zwei verschiedenen Elementen: Reaktion auslösen (Zukunft)
|
||||
- Listener: element_damage_dealt, entity_died, effect_expired
|
||||
- Event: element_applied, element_reaction
|
||||
### CooldownSystem (cooldown_system.gd)
|
||||
- Cooldown-Tracking, GCD, AA-Timer per Entity
|
||||
- register/deregister per Entity, direkte Funktionsaufrufe vom AbilitySystem
|
||||
@@ -166,7 +190,7 @@ autoloads/ — Globaler Zustand
|
||||
|
||||
## Welt (world/)
|
||||
- world.tscn — Hauptszene (100x100m)
|
||||
- Systems (alle 10 Systeme als Child-Nodes)
|
||||
- Systems (alle 11 Systeme als Child-Nodes)
|
||||
- NavigationRegion3D
|
||||
- Boden (MeshInstance3D, 100x100m PlaneMesh)
|
||||
- Kollision (StaticBody3D, WorldBoundaryShape3D)
|
||||
@@ -185,7 +209,7 @@ autoloads/ — Globaler Zustand
|
||||
- Camera3D
|
||||
- Movement (Node, movement.gd) — WASD + Springen, liest Werte von Stats
|
||||
- Combat (Node, combat.gd) — Input-Handler, emittiert ability_use_requested
|
||||
- Role (Node, role.gd) — Rollenwechsel ALT+1/2/3, emittiert role_changed
|
||||
- Role (Node, role.gd) — Rollenwechsel ALT+1/2/3, emittiert role_changed (auch bei _ready)
|
||||
- Targeting (Node, targeting.gd) — Klick/TAB, emittiert target_requested
|
||||
- player.gd — Registriert bei Stats mit PlayerStats Resource, Sichtbarkeit bei Tod/Respawn
|
||||
- camera.gd — LMB freies Umsehen, RMB Kamera + Laufrichtung
|
||||
@@ -199,7 +223,7 @@ autoloads/ — Globaler Zustand
|
||||
- DetectionArea (Area3D, emittiert enemy_detected)
|
||||
- NavigationAgent3D
|
||||
- EnemyMovement (Node, enemy_movement.gd) — Empfängt Bewegungsbefehle
|
||||
- Healthbar (Sprite3D + SubViewport, healthbar.gd) — liest HP/Shield von Stats
|
||||
- Healthbar (Sprite3D + SubViewport, healthbar.gd) — liest HP/Shield von Stats, zeigt Effekt-Icons
|
||||
- enemy.gd — Registriert bei Stats mit EnemyStats Resource, Detection-Area Signal
|
||||
- Aggro-Regeln (Werte in AggroConfig Resource):
|
||||
- Aufbau:
|
||||
@@ -242,7 +266,7 @@ autoloads/ — Globaler Zustand
|
||||
|
||||
## Dungeon (dungeon/)
|
||||
- dungeon.tscn — Geschlossener Raum (15x90m, Wände, dunkles Licht)
|
||||
- Systems (alle 10 Systeme, temporär bis Welt parallel läuft)
|
||||
- Systems (alle 11 Systeme, temporär bis Welt parallel läuft)
|
||||
- NavigationRegion3D
|
||||
- Boden, 4 Wände (StaticBody3D + BoxMesh, 3m hoch)
|
||||
- Spieler (Instanz von player.tscn)
|
||||
@@ -257,9 +281,10 @@ autoloads/ — Globaler Zustand
|
||||
- hud.tscn — CanvasLayer
|
||||
- HealthBar (ProgressBar, Label)
|
||||
- ShieldBar (ProgressBar, Label)
|
||||
- EffectContainer (HBoxContainer, programmatisch, unter ShieldBar)
|
||||
- RespawnTimer (Label, Countdown bei Tod)
|
||||
- AbilityBar (HBoxContainer, RoleIcon + Abilities 1-4 + Passive)
|
||||
- hud.gd — Reagiert auf Events, liest Werte von Stats
|
||||
- hud.gd — Reagiert auf Events, liest Werte von Stats, zeigt Effekt-Icons
|
||||
|
||||
# Abilities (Werte)
|
||||
- Schadens-Klasse:
|
||||
|
||||
Reference in New Issue
Block a user