# 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