#115: the lancer winds up once, and leaves hard
One back and forth rather than two and a half, over 0.85s rather than 1.2. The tell is a recoil and a spring; repeating it turned a wind-up into a fidget and the player stopped reading it as "about to happen". And the charge is 1650px/s, up from 950, which read as a fast drift rather than as the thing the whole wind-up was promising. The test counts how many times the wind-up crosses its anchor: one back and forth crosses exactly once, two would cross three times. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
457ae7023c
commit
7a78d1b1a6
2 changed files with 33 additions and 8 deletions
|
|
@ -32,14 +32,21 @@ enum Phase { HUNT, WINDUP, CHARGE, RECOVER }
|
|||
# The drift in HUNT is deliberately slower than the charge by an order of
|
||||
# magnitude: the approach is a stalk, the charge is the attack.
|
||||
@export var approach_speed_factor: float = 0.5
|
||||
@export var windup_time: float = 1.2
|
||||
# Shortened with the cycle count (#115): one back-and-forth in the time two
|
||||
# and a half used to take would be a slow-motion tell.
|
||||
@export var windup_time: float = 0.85
|
||||
# #96 to the letter: the trajectory line appears 300ms before it leaves.
|
||||
@export var telegraph_time: float = 0.3
|
||||
# The "small back and forth" - it recoils along the charge axis, so the
|
||||
# motion reads as winding up to spring rather than as drifting.
|
||||
@export var windup_sway: float = 30.0
|
||||
@export var windup_cycles: float = 2.5
|
||||
@export var charge_speed: float = 950.0
|
||||
@export var windup_sway: float = 34.0
|
||||
# #115: exactly ONE back and forth, not two and a half. The tell is a recoil
|
||||
# and a spring; repeating it turned a wind-up into a fidget, and the player
|
||||
# stopped reading it as "about to happen".
|
||||
@export var windup_cycles: float = 1.0
|
||||
# #115: and it leaves hard. At 950 the charge read as a fast drift rather
|
||||
# than as the thing the whole wind-up was promising.
|
||||
@export var charge_speed: float = 1650.0
|
||||
# It flies THROUGH the locked point rather than stopping on it. A charge
|
||||
# that halted exactly where the ship used to be would look like it was
|
||||
# aiming at empty space on purpose.
|
||||
|
|
@ -93,7 +100,10 @@ func _tick_hunt(enemy: Node2D, delta: float) -> void:
|
|||
return
|
||||
var to_target: Vector2 = target.global_position - enemy.global_position
|
||||
var distance: float = to_target.length()
|
||||
if distance > detection_range or distance < 0.001:
|
||||
if distance < 0.001:
|
||||
return
|
||||
# #113: see EnemyPursuitComponent.
|
||||
if not EnemyTargets.ignores_range(enemy) and distance > detection_range:
|
||||
return
|
||||
var direction: Vector2 = to_target / distance
|
||||
if distance <= lock_range:
|
||||
|
|
|
|||
Loading…
Reference in a new issue