spaceship/enemies
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Loïc Wisniewski bd0cc842ff #105 (#97g): garrison vessels patrol and defend their outpost
A garrisoned vessel circles its post, engages what comes into range, and
goes back to circling. It steers by writing move_target and lets Ship's own
steering fly it, so it accelerates, banks and brakes exactly like a vessel
in the formation.

It is not in Fleet.ships. It does not follow the formation, does not count
against max_fleet_size(), and does not move when the player flies away -
which is the whole point of stationing it. A garrison that ate a fleet slot
would mean stationing a vessel cost the player a place in their own wedge.

The leash is the load-bearing part. Enemies are judged from the POST rather
than from the vessel, so a garrison that has drifted out to its leash cannot
see further still and be walked away from its outpost one enemy at a time,
and an engagement is clamped to a circle around the post rather than to a
straight line, so it still manoeuvres while pinned.

The orbit starts from where the vessel actually is rather than a random
bearing. A random one makes the first move_target a point on the far side of
the circle, and the vessel flies straight across the middle - through the
outpost it is guarding.

EnemyTargets.nearest_ship now searches the player_ships GROUP instead of
Fleet.ships: an enemy that ignored the guns shooting at it, because they
were not in the player's formation, would let a garrison hold a position
without ever being fought back.

The laser vessel is deliberately not garrisonable. Firing the laser lives in
LaserController, a fleet ability driven by the laser button, rather than in
VesselLaserComponent - so a garrisoned laser would hold its position and
never shoot, and offering a vessel that cannot fight is worse than a short
list.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 14:13:47 +02:00
..
ArtilleryEnemyDefinition.tres #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
ArtilleryShell.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
ArtilleryShell.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
ArtilleryShell.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
ChaserEnemyDefinition.tres #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
Enemy.gd #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
Enemy.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
Enemy.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyArtilleryComponent.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyArtilleryComponent.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyArtilleryComponent.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyBigLaserBeam.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyBigLaserBeam.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyBigLaserBeam.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyBigLaserComponent.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyBigLaserComponent.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyBigLaserComponent.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyDefinition.gd #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
EnemyDefinition.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyDefinitions.gd #96: the lancer, a rammer that announces itself 2026-08-23 11:52:18 +02:00
EnemyDefinitions.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyLungeComponent.gd #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
EnemyLungeComponent.tscn #96: the lancer, a rammer that announces itself 2026-08-23 11:52:18 +02:00
EnemyMarker.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyMarker.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyProjectile.gd #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
EnemyProjectile.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyProjectile.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyPursuitComponent.gd #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
EnemyPursuitComponent.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyPursuitComponent.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyPursuitComponentMothership.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyRangedWeaponComponent.gd #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
EnemyRangedWeaponComponent.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyRangedWeaponComponent.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemySpawner.gd #100 (#97b): waves replace the roaming enemy spawner 2026-08-23 13:37:42 +02:00
EnemySpawner.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemySpawnerComponent.gd #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemySpawnerComponent.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemySpawnerComponent.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemySpawnerComponentArtillery.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemySpawnerComponentChaser.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyStandoffComponent.gd #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
EnemyStandoffComponent.gd.uid #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyStandoffComponent.tscn #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
EnemyTargets.gd #105 (#97g): garrison vessels patrol and defend their outpost 2026-08-23 14:13:47 +02:00
LancerEnemyDefinition.tres #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
MothershipEnemyDefinition.tres #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
SniperEnemyDefinition.tres #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00
TurretSpawnerEnemyDefinition.tres #101 (#97c): waves attack buildings 2026-08-23 13:53:17 +02:00