diff --git a/Zennysoft.Game.Ma/src/map/dungeon/floors/Special Floors/BAD END.tscn b/Zennysoft.Game.Ma/src/map/dungeon/floors/Special Floors/BAD END.tscn index 6e15ad5e..e501f18c 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/floors/Special Floors/BAD END.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/floors/Special Floors/BAD END.tscn @@ -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"] 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"] 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"] 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="."] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -293.713, 3.30221, 45.5386) diff --git a/Zennysoft.Game.Ma/src/map/dungeon/floors/Special Floors/BadEnd.cs b/Zennysoft.Game.Ma/src/map/dungeon/floors/Special Floors/BadEnd.cs index 15a0b4e0..51b22d94 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/floors/Special Floors/BadEnd.cs +++ b/Zennysoft.Game.Ma/src/map/dungeon/floors/Special Floors/BadEnd.cs @@ -14,6 +14,7 @@ public partial class BadEnd : SpecialFloor [Dependency] protected IGame _game => this.DependOn(); [Export] public float ShakeAmount = 50; + [Export] public int SpawnTimer = 5; [Node] public Node3D EnemySpawnPoints { get; set; } = default!; @@ -21,9 +22,18 @@ public partial class BadEnd : SpecialFloor [Node] public ShakeCamera Camera3D { get; set; } = default!; + private Timer _spawnTimer; + public void OnReady() { - SpawnEnemies(); + SpawnEnemies(10); + _spawnTimer = new Timer + { + WaitTime = SpawnTimer + }; + _spawnTimer.Timeout += SpawnTimer_Timeout; + AddChild(_spawnTimer); + _spawnTimer.Start(); var tweener = GetTree().CreateTween(); 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() { _player.Deactivate(); + _spawnTimer.Stop(); _player.ShowCamera(false); Camera3D.Current = true; await _game.OnReachBadEnd(); @@ -47,11 +58,13 @@ public partial class BadEnd : SpecialFloor _player.ShakePlayerCamera(shakeAmount, 1f); } - public void SpawnEnemies() + public void SpawnEnemies(int numberOfEnemies) { - var enemySpawnPoints = EnemySpawnPoints.GetChildren().OfType(); - foreach (var spawnPoint in enemySpawnPoints) + Godot.Collections.Array enemySpawnPoints = [.. EnemySpawnPoints.GetChildren().OfType()]; + for (var i = 0; i < numberOfEnemies; i++) { + var spawnPoint = enemySpawnPoints.PickRandom(); + enemySpawnPoints.Remove(spawnPoint); var instantiatedEnemy = EnemyTypeToEnemyConverter.Convert(EnemyType.Michael); AddChild(instantiatedEnemy); 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 void _ExitTree() + { + _spawnTimer.Timeout -= SpawnTimer_Timeout; + } }