DungeonCrawler/consumable.gd
Andre e682ed65e4 Consumable-System, Klassen-Ressourcen, Hauptmenü und Item-Icons
- Consumable-System: Tränke (HP/Mana) mit Stacking, Rechtsklick-Benutzung, Aktionsleisten-Zuweisung
- Klassen-Ressourcen: ResourceType (NONE/MANA/RAGE/ENERGY) pro Klasse statt universelles Mana
- Hauptmenü: Einstellungen für Auflösung, Fenstermodus, VSync, MSAA
- Item-Icons: SVG-Icons für alle Equipment-Items und Tränke
- Character Panel: Icon-Grid mit Hover-Tooltips statt Textanzeige
- HUD: Ressourcen-Leiste mit klassenabhängiger Farbe
- Loot: Consumable-Support in LootTable/LootWindow
- Dokumentation vollständig aktualisiert

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 20:45:57 +01:00

55 lines
1.7 KiB
GDScript

# Consumable.gd
# Resource für verbrauchbare Items (Tränke, Essen, etc.)
extends Resource
class_name Consumable
enum EffectType {
HEAL_HP, # HP heilen
RESTORE_MANA, # Mana wiederherstellen
HEAL_AND_MANA, # Beides
}
@export var item_name: String = "Trank"
@export var effect_type: EffectType = EffectType.HEAL_HP
@export var amount: int = 50 # Wie viel geheilt/wiederhergestellt wird
@export var cooldown: float = 1.0 # Cooldown nach Benutzung
@export var icon: Texture2D
@export var stack_size: int = 1 # Aktuelle Anzahl im Stack
@export var max_stack: int = 20 # Maximale Stack-Größe
# Effekt-Beschreibung für Tooltip
func get_effect_text() -> String:
match effect_type:
EffectType.HEAL_HP:
return "Stellt " + str(amount) + " HP wieder her"
EffectType.RESTORE_MANA:
return "Stellt " + str(amount) + " Mana wieder her"
EffectType.HEAL_AND_MANA:
return "Stellt " + str(amount) + " HP und Mana wieder her"
return ""
# Effekt auf Spieler anwenden, gibt true zurück wenn verbraucht
func use(player) -> bool:
match effect_type:
EffectType.HEAL_HP:
if player.current_hp >= player.max_hp:
print("HP bereits voll!")
return false
player.heal(amount)
print("+" + str(amount) + " HP")
EffectType.RESTORE_MANA:
if player.current_mana >= player.max_mana:
print("Mana bereits voll!")
return false
player.restore_mana(amount)
print("+" + str(amount) + " Mana")
EffectType.HEAL_AND_MANA:
if player.current_hp >= player.max_hp and player.current_mana >= player.max_mana:
print("HP und Mana bereits voll!")
return false
player.heal(amount)
player.restore_mana(amount)
print("+" + str(amount) + " HP und Mana")
stack_size -= 1
return true