From 0c4a424a4daf8a4298975ceb81810cd959bd3a21 Mon Sep 17 00:00:00 2001 From: Zenny Date: Thu, 26 Feb 2026 20:06:18 -0800 Subject: [PATCH] Fixed teleport enemies bug (swapped Y and Z values....) --- Zennysoft.Game.Ma/src/enemy/Enemy.cs | 2 +- Zennysoft.Game.Ma/src/game/Game.cs | 2 +- Zennysoft.Game.Ma/src/items/EffectService.cs | 26 ++++++-------------- 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/Zennysoft.Game.Ma/src/enemy/Enemy.cs b/Zennysoft.Game.Ma/src/enemy/Enemy.cs index c98110f2f..0a96ed12e 100644 --- a/Zennysoft.Game.Ma/src/enemy/Enemy.cs +++ b/Zennysoft.Game.Ma/src/enemy/Enemy.cs @@ -215,7 +215,7 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide(spawnPoints); var randomSpawnPoint = spawnPointsGodotCollection.PickRandom(); - GlobalPosition = new Vector3(randomSpawnPoint.GlobalPosition.X, 0, randomSpawnPoint.GlobalPosition.Y); + GlobalPosition = new Vector3(randomSpawnPoint.GlobalPosition.X, GlobalPosition.Y, randomSpawnPoint.GlobalPosition.Z); _previousPosition = GlobalPosition; if (this is IHavePatrolBehavior patrolEnemy) diff --git a/Zennysoft.Game.Ma/src/game/Game.cs b/Zennysoft.Game.Ma/src/game/Game.cs index dcb0a2792..3cdfc45fd 100644 --- a/Zennysoft.Game.Ma/src/game/Game.cs +++ b/Zennysoft.Game.Ma/src/game/Game.cs @@ -536,7 +536,7 @@ public partial class Game : Node3D, IGame switch (effectItem.UsableItemTag) { case UsableItemTag.TeleportAllEnemiesToRoom: - _effectService.TeleportEnemiesToCurrentRoom(); + _effectService.TeleportEnemiesToCurrentRoom(GetTree().GetNodesInGroup("enemy").OfType().ToList()); GameRepo.CloseInventory(); _player.PlaySpellFX(SpellFXEnum.DivinityRecall); SfxDatabase.Instance.Play(SoundEffect.RecallEnemies); diff --git a/Zennysoft.Game.Ma/src/items/EffectService.cs b/Zennysoft.Game.Ma/src/items/EffectService.cs index f9caefdaf..78d0a4010 100644 --- a/Zennysoft.Game.Ma/src/items/EffectService.cs +++ b/Zennysoft.Game.Ma/src/items/EffectService.cs @@ -20,25 +20,15 @@ public class EffectService _map = map; } - public void TeleportEnemiesToCurrentRoom() + public void TeleportEnemiesToCurrentRoom(List enemyList) { - var currentFloor = _game.CurrentFloor; - var rooms = currentFloor.Rooms; var currentRoom = _map.GetPlayersCurrentRoom(); - if (currentRoom is not MonsterRoom) - return; - - var validRooms = rooms.OfType().ToList(); - if (currentRoom is MonsterRoom monsterRoom) - validRooms.Remove(monsterRoom); - - var currentMonsterRoom = (MonsterRoom)currentRoom; - - var enemyList = validRooms.SelectMany(x => x.GetEnemiesInCurrentRoom()).OfType(); - - foreach (var enemy in enemyList) - enemy.MoveEnemyToNewRoom(currentMonsterRoom); + if (currentRoom is MonsterRoom currentMonsterRoom) + { + foreach (var enemy in enemyList) + enemy.MoveEnemyToNewRoom(currentMonsterRoom); + } } public void KillHalfEnemiesInRoom() @@ -48,7 +38,7 @@ public class EffectService return; var currentMonsterRoom = (MonsterRoom)currentRoom; - var enemyList = currentMonsterRoom.GetEnemiesInCurrentRoom().OfType().ToList(); + var enemyList = currentMonsterRoom.GetEnemiesInCurrentRoom().OfType().ToList(); var enemiesToKill = enemyList.Count / 2; for (var i = 0; i < enemiesToKill; i++) enemyList[i].Die(); @@ -61,7 +51,7 @@ public class EffectService if (currentRoom is not MonsterRoom) return; - var currentEnemies = currentRoom.EnemiesInRoom.OfType().ToList(); + var currentEnemies = currentRoom.EnemiesInRoom.OfType().ToList(); foreach (var enemy in currentEnemies) { enemy.OnMorph();