Sharpen upgrades, mark the convoy's destination, and give the world sound
#204 the Beam Collimator widens the beam instead of adding range to one that already crosses the screen; beam width becomes a per-shot vessel stat. #205 the Energy Propulser gains three upgrades - dash recharge, dash reach, and boosted-cruise drain - which turns three constants into vessel stats. #206 three further doctrines carry the fleet from ten to twenty. #207 the prologue's World Ship gets a marker, through the scanner's own guidance arrow rather than a second one. #208 #210 #213 #214 four new synthesised sounds: the breach opening, cargo reaching the hold, a rock breaking, and a gas bomb blooming. #215 building health bars are larger, plated and framed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019AJMdB7iuHuLFZM1aBu3GD
This commit is contained in:
parent
2239235993
commit
78836882af
33 changed files with 716 additions and 52 deletions
|
|
@ -179,6 +179,55 @@ func _process(delta: float) -> bool:
|
|||
return _fail("a structure came down in silence")
|
||||
print("a structure coming down is heard")
|
||||
|
||||
# --- G. the things #210/#213/#214 asked to be able to hear -----
|
||||
for voice in _pool().get_children():
|
||||
(voice as AudioStreamPlayer).stop()
|
||||
var rock: Node2D = load("res://world/Asteroid.tscn").instantiate()
|
||||
scene.add_child(rock)
|
||||
rock.shatter(false)
|
||||
if _sounding() == 0:
|
||||
return _fail("an asteroid broke apart in silence")
|
||||
print("a destroyed asteroid is heard")
|
||||
|
||||
for voice in _pool().get_children():
|
||||
(voice as AudioStreamPlayer).stop()
|
||||
var bomb: Node2D = load("res://vfx/GasBombEffect.gd").launch(
|
||||
scene, Vector2.ZERO, Vector2(300.0, 0.0), 6)
|
||||
if _sounding() != 0:
|
||||
return _fail("the gas bomb made its noise on the throw, not the blast")
|
||||
bomb._explode()
|
||||
if _sounding() == 0:
|
||||
return _fail("a gas bomb bloomed in silence")
|
||||
print("a gas bomb is heard when it blooms, and not before")
|
||||
|
||||
# The hold has to be able to take the deposit, or there is no
|
||||
# arrival to hear.
|
||||
game_state.fleet_inventory.total_capacity = -1
|
||||
for voice in _pool().get_children():
|
||||
(voice as AudioStreamPlayer).stop()
|
||||
if game_state.deposit_fleet_resource(GameState.RESOURCE_ORE, 1) != 1:
|
||||
return _fail("the fleet hold refused a single rock")
|
||||
var after_first: int = _sounding()
|
||||
if after_first == 0:
|
||||
return _fail("a rock reached the fleet hold in silence")
|
||||
# Mining lands one unit at a time, so the window is the whole of
|
||||
# what stops this being a machine-gun.
|
||||
game_state.deposit_fleet_resource(GameState.RESOURCE_ORE, 1)
|
||||
game_state.deposit_fleet_resource(GameState.RESOURCE_ORE, 1)
|
||||
if _sounding() != after_first:
|
||||
return _fail("a burst of pickups opened %d voices, not the %d one blip needs" \
|
||||
% [_sounding(), after_first])
|
||||
print("a rock arriving in the hold is heard, and a burst of them only once")
|
||||
|
||||
# The bank is a number moving in a building the player is not in.
|
||||
for voice in _pool().get_children():
|
||||
(voice as AudioStreamPlayer).stop()
|
||||
game_state._pickup_sound_at = 0
|
||||
game_state.deposit_bank_resource(GameState.RESOURCE_ORE, 5)
|
||||
if _sounding() != 0:
|
||||
return _fail("a deposit into the bank made a pickup noise")
|
||||
print("banked resources stay silent")
|
||||
|
||||
print("TEST_SFX: PASS")
|
||||
quit(0)
|
||||
return true
|
||||
|
|
|
|||
Loading…
Reference in a new issue