Spawn timer for bad ending

This commit is contained in:
2026-06-08 16:45:38 -07:00
parent 5665e3306c
commit 10a0dd69d1
2 changed files with 24 additions and 238 deletions
@@ -1499,213 +1499,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.9049, 0, 16.8573)
[node name="Marker3D16" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"] [node name="Marker3D16" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.7814, 0, 16.8573) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.7814, 0, 16.8573)
[node name="Marker3D17" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.7814, 0, 18.6649)
[node name="Marker3D18" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.7924, 0, 18.6649)
[node name="Marker3D19" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.9875, 0, 18.6649)
[node name="Marker3D20" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.9875, 0, 15.8643)
[node name="Marker3D21" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.9875, 0, 12.0651)
[node name="Marker3D22" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.9875, 0, 5.63833)
[node name="Marker3D23" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.2933, 0, 5.63833)
[node name="Marker3D24" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.2933, 0, -2.32044)
[node name="Marker3D25" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.2933, 0, -7.8549)
[node name="Marker3D26" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0836, 0, -7.8549)
[node name="Marker3D27" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0836, 0, -13.0026)
[node name="Marker3D28" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.3734, 0, -13.0026)
[node name="Marker3D29" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.3734, 0, -15.406)
[node name="Marker3D30" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -34.3734, 0, -15.406)
[node name="Marker3D31" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.7685, 0, 0.766483)
[node name="Marker3D32" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.9844, 0, 0.766483)
[node name="Marker3D33" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.9844, 0, 2.98177)
[node name="Marker3D34" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.5464, 0, 2.98177)
[node name="Marker3D35" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 35.5464, 0, 0.313404)
[node name="Marker3D36" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 37.71, 0, 0.313404)
[node name="Marker3D37" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 37.71, 0, 3.67888)
[node name="Marker3D38" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 37.71, 0, 7.22802)
[node name="Marker3D39" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 37.71, 0, 9.31155)
[node name="Marker3D40" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.9513, 0, 9.31155)
[node name="Marker3D41" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 41.9513, 0, 5.00665)
[node name="Marker3D42" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.2458, 0, 5.00665)
[node name="Marker3D43" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.2458, 0, -0.466484)
[node name="Marker3D44" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 48.1313, 0, -0.466484)
[node name="Marker3D45" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 48.1313, 0, 2.51048)
[node name="Marker3D46" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 50.9878, 0, 2.51048)
[node name="Marker3D47" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.3008, 0, -3.19341)
[node name="Marker3D48" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.3008, 0, -5.17791)
[node name="Marker3D49" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 55.1826, 0, 0.190773)
[node name="Marker3D50" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 55.1826, 0, 2.78827)
[node name="Marker3D51" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 62.0826, 0, 2.78827)
[node name="Marker3D52" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 62.0826, 0, -0.181267)
[node name="Marker3D53" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -81.8246, 0, -21.7999)
[node name="Marker3D54" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -87.6767, 0, -21.7999)
[node name="Marker3D55" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -87.6767, 0, -18.9188)
[node name="Marker3D56" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -84.4409, 0, -18.9188)
[node name="Marker3D57" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -84.4409, 0, -13.7466)
[node name="Marker3D58" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -90.92, 0, -13.7466)
[node name="Marker3D59" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -90.92, 0, -18.3748)
[node name="Marker3D60" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -94.4324, 0, -18.3748)
[node name="Marker3D61" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -94.4324, 0, -22.3923)
[node name="Marker3D62" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -92.2705, 0, -22.3923)
[node name="Marker3D63" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -92.2705, 0, -27.8297)
[node name="Marker3D64" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -97.8657, 0, -27.8297)
[node name="Marker3D65" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -97.8657, 0, -33.7702)
[node name="Marker3D66" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -91.4809, 0, -33.7702)
[node name="Marker3D67" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -91.4809, 0, -38.2449)
[node name="Marker3D68" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -97.6971, 0, -38.2449)
[node name="Marker3D69" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -97.6971, 0, -43.5005)
[node name="Marker3D70" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -104.88, 0, -43.5005)
[node name="Marker3D71" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -104.88, 0, -38.5857)
[node name="Marker3D72" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -107.765, 0, -38.5857)
[node name="Marker3D73" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -107.765, 0, -48.909)
[node name="Marker3D74" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -100.405, 0, -48.909)
[node name="Marker3D75" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -100.405, 0, -52.3059)
[node name="Marker3D76" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -108.568, 0, -52.3059)
[node name="Marker3D77" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -108.568, 0, -57.4485)
[node name="Marker3D78" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -104.473, 0, -57.4485)
[node name="Marker3D79" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -104.473, 0, -61.6409)
[node name="Marker3D80" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -110.733, 0, -61.6409)
[node name="Marker3D81" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -110.733, 0, -51.4162)
[node name="Marker3D82" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -110.733, 0, -42.6293)
[node name="Marker3D83" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -100.48, 0, -29.7824)
[node name="Marker3D84" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -94.6164, 11.535, -25.8564)
[node name="Marker3D85" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -94.6164, 11.535, -19.8338)
[node name="Marker3D86" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"] [node name="Marker3D86" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7117, -0.878036, -9.7575) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7117, -0.878036, -9.7575)
@@ -1721,33 +1514,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.2614, -0.878036, -16.8016
[node name="Marker3D90" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"] [node name="Marker3D90" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.8996, -0.878037, -16.8016) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.8996, -0.878037, -16.8016)
[node name="Marker3D91" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.8996, -0.878037, 46.1792)
[node name="Marker3D92" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.8996, -0.878037, 51.7447)
[node name="Marker3D93" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.2316, -0.878038, 51.7447)
[node name="Marker3D94" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.2316, -0.878038, 45.7658)
[node name="Marker3D95" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.319, -0.878038, 45.7658)
[node name="Marker3D96" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.319, -0.878038, 49.0615)
[node name="Marker3D97" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.0059, -0.878039, 49.0615)
[node name="Marker3D98" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.0059, -0.878039, 44.9494)
[node name="Marker3D99" type="Marker3D" parent="Spawn Points/EnemySpawnPoints"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.3314, -0.878039, 44.9494)
[node name="RestoreArea" type="Area3D" parent="."] [node name="RestoreArea" type="Area3D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -293.713, 3.30221, 45.5386) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -293.713, 3.30221, 45.5386)
@@ -14,6 +14,7 @@ public partial class BadEnd : SpecialFloor
[Dependency] protected IGame _game => this.DependOn<IGame>(); [Dependency] protected IGame _game => this.DependOn<IGame>();
[Export] public float ShakeAmount = 50; [Export] public float ShakeAmount = 50;
[Export] public int SpawnTimer = 5;
[Node] public Node3D EnemySpawnPoints { get; set; } = default!; [Node] public Node3D EnemySpawnPoints { get; set; } = default!;
@@ -21,9 +22,18 @@ public partial class BadEnd : SpecialFloor
[Node] public ShakeCamera Camera3D { get; set; } = default!; [Node] public ShakeCamera Camera3D { get; set; } = default!;
private Timer _spawnTimer;
public void OnReady() public void OnReady()
{ {
SpawnEnemies(); SpawnEnemies(10);
_spawnTimer = new Timer
{
WaitTime = SpawnTimer
};
_spawnTimer.Timeout += SpawnTimer_Timeout;
AddChild(_spawnTimer);
_spawnTimer.Start();
var tweener = GetTree().CreateTween(); var tweener = GetTree().CreateTween();
tweener.TweenMethod(Callable.From((float x) => SetShakeValue(x)), ShakeAmount, 1f, 700f).SetDelay(30); tweener.TweenMethod(Callable.From((float x) => SetShakeValue(x)), ShakeAmount, 1f, 700f).SetDelay(30);
} }
@@ -31,6 +41,7 @@ public partial class BadEnd : SpecialFloor
public async void StartEndGameCutscene() public async void StartEndGameCutscene()
{ {
_player.Deactivate(); _player.Deactivate();
_spawnTimer.Stop();
_player.ShowCamera(false); _player.ShowCamera(false);
Camera3D.Current = true; Camera3D.Current = true;
await _game.OnReachBadEnd(); await _game.OnReachBadEnd();
@@ -47,11 +58,13 @@ public partial class BadEnd : SpecialFloor
_player.ShakePlayerCamera(shakeAmount, 1f); _player.ShakePlayerCamera(shakeAmount, 1f);
} }
public void SpawnEnemies() public void SpawnEnemies(int numberOfEnemies)
{ {
var enemySpawnPoints = EnemySpawnPoints.GetChildren().OfType<Marker3D>(); Godot.Collections.Array<Marker3D> enemySpawnPoints = [.. EnemySpawnPoints.GetChildren().OfType<Marker3D>()];
foreach (var spawnPoint in enemySpawnPoints) for (var i = 0; i < numberOfEnemies; i++)
{ {
var spawnPoint = enemySpawnPoints.PickRandom();
enemySpawnPoints.Remove(spawnPoint);
var instantiatedEnemy = EnemyTypeToEnemyConverter.Convert(EnemyType.Michael); var instantiatedEnemy = EnemyTypeToEnemyConverter.Convert(EnemyType.Michael);
AddChild(instantiatedEnemy); AddChild(instantiatedEnemy);
instantiatedEnemy.GlobalPosition = new Vector3(spawnPoint.GlobalPosition.X, 2.4f, spawnPoint.GlobalPosition.Z); instantiatedEnemy.GlobalPosition = new Vector3(spawnPoint.GlobalPosition.X, 2.4f, spawnPoint.GlobalPosition.Z);
@@ -61,5 +74,12 @@ public partial class BadEnd : SpecialFloor
} }
} }
private void SpawnTimer_Timeout() => SpawnEnemies(3);
public override (Vector3 Rotation, Vector3 Position) GetPlayerSpawnPoint() { return (PlayerSpawnPoint.Rotation, new Vector3(PlayerSpawnPoint.GlobalPosition.X, 2.4f, PlayerSpawnPoint.GlobalPosition.Z)); } public override (Vector3 Rotation, Vector3 Position) GetPlayerSpawnPoint() { return (PlayerSpawnPoint.Rotation, new Vector3(PlayerSpawnPoint.GlobalPosition.X, 2.4f, PlayerSpawnPoint.GlobalPosition.Z)); }
public override void _ExitTree()
{
_spawnTimer.Timeout -= SpawnTimer_Timeout;
}
} }