Artillery enemy with telegraphed AOE #46
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #40. Depends on the enemy-foundation ticket.
The whole point is that it is survivable only by reacting, so the telegraph has to be unmistakable and the window generous.
Scope
EnemyArtilleryComponent.tscn+.gd(capability_id = "artillery"), cycle perfire_cooldown(suggest 6 s):Fleet.get_centroid()), withinfire_range(suggest 900).GasBombController._draw_ring.Ship.take_damage()to everyplayer_shipsnode inside. Explosion visuals in the style ofGasBombController._explode/ExplosionVFXBase.VesselShieldComponent.absorb_hit). Document this in the component header rather than inventing partial damage.ArtilleryEnemyDefinition.tres-enemy_id = "artillery",max_hp8,speed~60, a bulky hull, distinct glow colour.EnemyDefinitionsso it is placeable from a planet setup.Acceptance criteria
Tests
tests/test_artillery_enemy.gd(bash tests/run_tests.sh artillery), plus a 720x1280 screenshot of the telegraph ring mid-countdown showing it reads clearly on both surface backgrounds.Repo notes (read before starting)
/storage/emulated/0/GodotProjects/SpaceshipTest.touchon it. Android FUSE does not bump mtime under~/storage/shared, and Godot's import cache will silently keep serving the old version, making a correct fix look like it did nothing.bash tests/run_tests.sh <substring>; full suite with no argument. Tests areSceneTreescripts printingTEST_NAME: PASS/TEST_NAME: FAIL (reason)and callingquit(0|1)- copy the shape oftests/test_gas_bomber_cooldowns.gd.bash tests/screenshot.sh <res://Scene.tscn> <out.png> <frames> 720x1280. Use few frames (~10-20); the software rasterizer is slow.--headlessrenders nothing at all, so it cannot validate visuals.NeonDraw/NeonPiece; do not introduce a different visual idiom.*Definitionresources plus capability component scenes. Do not addif type == "..."branches.FileAccess, nouser://anywhere outside this ticket's explicit scope).GameStateis an in-memory autoload. Do not invent a save system.Implemented and pushed as
def2246.EnemyArtilleryComponentis a stationary siege piece (slow drift toward the fleet, deliberately no pursuit component) that fires at the fleet centroid on a long cooldown via a standaloneArtilleryShell: telegraph ring (~1.8s, growing radius plus a filling countdown arc) → slow visible travel → AOE explosion viaShip.take_damage()on everyplayer_shipsnode inside, same all-or-nothing shield absorption as every other damage source.EnemyProjectile/Projectile), so the shooter dying mid-flight doesn't cancel an already-telegraphed shot, and the impact point is fixed at fire time - verified it does not re-aim at where the fleet moves to afterward.New test
tests/test_artillery_enemy.gdcovers the telegraph window being damage-free, in/out-of-radius outcomes, shield absorption, and non-homing. Verified visually at 720x1280 on both the rocky and gas surfaces - the telegraph ring reads clearly against both.Part of the #40 conquest-mechanic breakdown, alongside #45.