DungeonCrawler/equipment.gd
Andre 799ff23f75 feat: ItemType enum in Equipment + sauberer Schild-Check
- Equipment: ItemType enum (ARMOR, WEAPON, SHIELD, OFFHAND)
- player.gd: _has_shield() prüft item_type == SHIELD statt nur Slot-Inhalt
- Durchbeißen nutzt _has_shield() für Schildwall/Trotz Entscheidung

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 21:31:40 +01:00

74 lines
1.9 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Equipment.gd
# Resource für Ausrüstungsgegenstände
extends Resource
class_name Equipment
enum Slot {
HEAD, # Helm
CHEST, # Brustpanzer
HANDS, # Handschuhe
LEGS, # Beinschienen
FEET, # Stiefel
WEAPON, # Waffe
OFFHAND # Nebenhand (Schild, etc.)
}
enum Rarity {
COMMON, # Weiß
UNCOMMON, # Grün
RARE, # Blau
EPIC # Lila
}
enum ItemType {
ARMOR, # Rüstung (Helm, Brust, etc.)
WEAPON, # Waffe
SHIELD, # Schild (Offhand)
OFFHAND, # Andere Nebenhand (Buch, Quiver, etc.)
}
@export var item_name: String = "Unbekannt"
@export var slot: Slot = Slot.WEAPON
@export var item_type: ItemType = ItemType.WEAPON
@export var rarity: Rarity = Rarity.COMMON
# Stats die das Item gibt
@export var armor: int = 0
@export var strength: int = 0
@export var agility: int = 0
@export var intelligence: int = 0
@export var stamina: int = 0
@export var haste: float = 0.0 # Angriffsgeschwindigkeit (0.1 = 10% schneller)
# Nur für Waffen
@export var min_damage: int = 0
@export var max_damage: int = 0
@export var attack_speed: float = 1.5 # Sekunden zwischen Angriffen
@export var weapon_range: float = 3.0
# 3D-Modell (GLB/GLTF) wird an der Hand des Spielers angezeigt
@export var model_scene: PackedScene
# Icon für UI
@export var icon: Texture2D
# Slot-Namen für Anzeige
static func get_slot_name(s: Slot) -> String:
match s:
Slot.HEAD: return "Kopf"
Slot.CHEST: return "Brust"
Slot.HANDS: return "Hände"
Slot.LEGS: return "Beine"
Slot.FEET: return "Füße"
Slot.WEAPON: return "Waffe"
Slot.OFFHAND: return "Nebenhand"
return "Unbekannt"
# Seltenheitsfarbe
static func get_rarity_color(r: Rarity) -> Color:
match r:
Rarity.COMMON: return Color(1, 1, 1) # Weiß
Rarity.UNCOMMON: return Color(0.2, 0.8, 0.2) # Grün
Rarity.RARE: return Color(0.3, 0.5, 1.0) # Blau
Rarity.EPIC: return Color(0.7, 0.3, 0.9) # Lila
return Color(1, 1, 1)