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>
This commit is contained in:
Andre 2026-03-19 21:31:40 +01:00
parent c8ef56d311
commit 799ff23f75
2 changed files with 14 additions and 2 deletions

View file

@ -20,8 +20,16 @@ enum Rarity {
EPIC # Lila 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 item_name: String = "Unbekannt"
@export var slot: Slot = Slot.WEAPON @export var slot: Slot = Slot.WEAPON
@export var item_type: ItemType = ItemType.WEAPON
@export var rarity: Rarity = Rarity.COMMON @export var rarity: Rarity = Rarity.COMMON
# Stats die das Item gibt # Stats die das Item gibt

View file

@ -283,7 +283,7 @@ func _init_class_skills():
"cast_time": 0.0, "cast_time": 0.0,
}) })
if level >= 10: if level >= 10:
var has_offhand = equipment[Equipment.Slot.OFFHAND] != null var has_offhand = _has_shield()
available_skills.append({ available_skills.append({
"id": "durchbeissen", "id": "durchbeissen",
"name": "Schildwall" if has_offhand else "Trotz", "name": "Schildwall" if has_offhand else "Trotz",
@ -746,8 +746,12 @@ func _do_tektonischer_schlag():
# ─── Durchbeißen / Schildwall / Trotz ──────────────────────── # ─── Durchbeißen / Schildwall / Trotz ────────────────────────
func _has_shield() -> bool:
var offhand = equipment[Equipment.Slot.OFFHAND]
return offhand != null and offhand.item_type == Equipment.ItemType.SHIELD
func _do_durchbeissen(): func _do_durchbeissen():
var has_offhand = equipment[Equipment.Slot.OFFHAND] != null var has_offhand = _has_shield()
_defend_mode = "schildwall" if has_offhand else "trotz" _defend_mode = "schildwall" if has_offhand else "trotz"
is_defending = true is_defending = true
_defend_timer = DURCHBEISSEN_DURATION _defend_timer = DURCHBEISSEN_DURATION