feat: Wirbelwind implementiert (Krieger Level 20)
- AoE Drehangriff, Radius 3.5m, kostet 40 Wut - Schaden: 15-25 + 70% Stärke an alle Gegner im Radius - Kein Slow — pure DPS, Counterpart zu Tektonischem Schlag - Cooldown 6s Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
76e17cefa9
commit
c81ba9760b
1 changed files with 42 additions and 0 deletions
42
player.gd
42
player.gd
|
|
@ -152,6 +152,9 @@ const BLUTRAUSCH_RAGE: int = 25
|
||||||
const BLUTRAUSCH_DOT_DURATION: float = 8.0 # Blutungsdauer in Sekunden
|
const BLUTRAUSCH_DOT_DURATION: float = 8.0 # Blutungsdauer in Sekunden
|
||||||
const BLUTRAUSCH_DOT_INTERVAL: float = 1.0 # Schaden alle 1s
|
const BLUTRAUSCH_DOT_INTERVAL: float = 1.0 # Schaden alle 1s
|
||||||
const BLUTRAUSCH_DOT_DAMAGE: int = 4 # Schaden pro Tick
|
const BLUTRAUSCH_DOT_DAMAGE: int = 4 # Schaden pro Tick
|
||||||
|
const WIRBELWIND_COOLDOWN: float = 6.0
|
||||||
|
const WIRBELWIND_RADIUS: float = 3.5
|
||||||
|
const WIRBELWIND_RAGE: int = 40
|
||||||
|
|
||||||
# Cast System
|
# Cast System
|
||||||
var is_casting: bool = false
|
var is_casting: bool = false
|
||||||
|
|
@ -293,6 +296,15 @@ func _init_class_skills():
|
||||||
"cooldown": TEKTONISCHER_SCHLAG_COOLDOWN,
|
"cooldown": TEKTONISCHER_SCHLAG_COOLDOWN,
|
||||||
"cast_time": 0.0,
|
"cast_time": 0.0,
|
||||||
})
|
})
|
||||||
|
if level >= 20:
|
||||||
|
available_skills.append({
|
||||||
|
"id": "wirbelwind",
|
||||||
|
"name": "Wirbelwind",
|
||||||
|
"description": "Drehangriff mit voller Wucht. Trifft alle Gegner in der Nähe für hohen Schaden.",
|
||||||
|
"icon": "res://icons/wirbelwind_icon.svg",
|
||||||
|
"cooldown": WIRBELWIND_COOLDOWN,
|
||||||
|
"cast_time": 0.0,
|
||||||
|
})
|
||||||
if level >= 15:
|
if level >= 15:
|
||||||
available_skills.append({
|
available_skills.append({
|
||||||
"id": "blutrausch",
|
"id": "blutrausch",
|
||||||
|
|
@ -664,6 +676,10 @@ func execute_skill(skill_id: String):
|
||||||
if current_resource < BLUTRAUSCH_RAGE:
|
if current_resource < BLUTRAUSCH_RAGE:
|
||||||
print("Zu wenig Wut!")
|
print("Zu wenig Wut!")
|
||||||
return
|
return
|
||||||
|
if skill_id == "wirbelwind":
|
||||||
|
if current_resource < WIRBELWIND_RAGE:
|
||||||
|
print("Zu wenig Wut!")
|
||||||
|
return
|
||||||
|
|
||||||
# Cast-Zeit?
|
# Cast-Zeit?
|
||||||
if skill["cast_time"] > 0:
|
if skill["cast_time"] > 0:
|
||||||
|
|
@ -702,6 +718,8 @@ func _apply_skill(skill_id: String):
|
||||||
_do_durchbeissen()
|
_do_durchbeissen()
|
||||||
"blutrausch":
|
"blutrausch":
|
||||||
_do_blutrausch()
|
_do_blutrausch()
|
||||||
|
"wirbelwind":
|
||||||
|
_do_wirbelwind()
|
||||||
|
|
||||||
# ─── Autoattack ───────────────────────────────────────────────
|
# ─── Autoattack ───────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
@ -770,6 +788,30 @@ func _do_tektonischer_schlag():
|
||||||
trigger_global_cooldown()
|
trigger_global_cooldown()
|
||||||
print("Tektonischer Schlag! %d Gegner getroffen" % hit_count)
|
print("Tektonischer Schlag! %d Gegner getroffen" % hit_count)
|
||||||
|
|
||||||
|
# ─── Wirbelwind ───────────────────────────────────────────────
|
||||||
|
|
||||||
|
func _do_wirbelwind():
|
||||||
|
if not _spend_rage(WIRBELWIND_RAGE):
|
||||||
|
return
|
||||||
|
var space_state = get_world_3d().direct_space_state
|
||||||
|
var shape = SphereShape3D.new()
|
||||||
|
shape.radius = WIRBELWIND_RADIUS
|
||||||
|
var query = PhysicsShapeQueryParameters3D.new()
|
||||||
|
query.shape = shape
|
||||||
|
query.transform = global_transform
|
||||||
|
query.exclude = [self]
|
||||||
|
var hits = space_state.intersect_shape(query)
|
||||||
|
var hit_count = 0
|
||||||
|
for hit in hits:
|
||||||
|
var body = hit.collider
|
||||||
|
if body.has_method("take_damage"):
|
||||||
|
var damage = randi_range(15, 25) + int(strength * 0.7)
|
||||||
|
body.take_damage(damage)
|
||||||
|
hit_count += 1
|
||||||
|
skill_cooldowns["wirbelwind"] = WIRBELWIND_COOLDOWN
|
||||||
|
trigger_global_cooldown()
|
||||||
|
print("Wirbelwind! %d Gegner getroffen" % hit_count)
|
||||||
|
|
||||||
# ─── Durchbeißen / Schildwall / Trotz ────────────────────────
|
# ─── Durchbeißen / Schildwall / Trotz ────────────────────────
|
||||||
|
|
||||||
# ─── Blutrausch ───────────────────────────────────────────────
|
# ─── Blutrausch ───────────────────────────────────────────────
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue