- 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>
55 lines
1.7 KiB
GDScript
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
|