Fixed teleport enemies bug (swapped Y and Z values....)

This commit is contained in:
2026-02-26 20:06:18 -08:00
parent c043c6ad04
commit 0c4a424a4d
3 changed files with 10 additions and 20 deletions

View File

@@ -215,7 +215,7 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
var spawnPointsGodotCollection = new Godot.Collections.Array<Marker3D>(spawnPoints); var spawnPointsGodotCollection = new Godot.Collections.Array<Marker3D>(spawnPoints);
var randomSpawnPoint = spawnPointsGodotCollection.PickRandom(); 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; _previousPosition = GlobalPosition;
if (this is IHavePatrolBehavior patrolEnemy) if (this is IHavePatrolBehavior patrolEnemy)

View File

@@ -536,7 +536,7 @@ public partial class Game : Node3D, IGame
switch (effectItem.UsableItemTag) switch (effectItem.UsableItemTag)
{ {
case UsableItemTag.TeleportAllEnemiesToRoom: case UsableItemTag.TeleportAllEnemiesToRoom:
_effectService.TeleportEnemiesToCurrentRoom(); _effectService.TeleportEnemiesToCurrentRoom(GetTree().GetNodesInGroup("enemy").OfType<IEnemy>().ToList());
GameRepo.CloseInventory(); GameRepo.CloseInventory();
_player.PlaySpellFX(SpellFXEnum.DivinityRecall); _player.PlaySpellFX(SpellFXEnum.DivinityRecall);
SfxDatabase.Instance.Play(SoundEffect.RecallEnemies); SfxDatabase.Instance.Play(SoundEffect.RecallEnemies);

View File

@@ -20,26 +20,16 @@ public class EffectService
_map = map; _map = map;
} }
public void TeleportEnemiesToCurrentRoom() public void TeleportEnemiesToCurrentRoom(List<IEnemy> enemyList)
{ {
var currentFloor = _game.CurrentFloor;
var rooms = currentFloor.Rooms;
var currentRoom = _map.GetPlayersCurrentRoom(); var currentRoom = _map.GetPlayersCurrentRoom();
if (currentRoom is not MonsterRoom) if (currentRoom is MonsterRoom currentMonsterRoom)
return; {
var validRooms = rooms.OfType<MonsterRoom>().ToList();
if (currentRoom is MonsterRoom monsterRoom)
validRooms.Remove(monsterRoom);
var currentMonsterRoom = (MonsterRoom)currentRoom;
var enemyList = validRooms.SelectMany(x => x.GetEnemiesInCurrentRoom()).OfType<Enemy>();
foreach (var enemy in enemyList) foreach (var enemy in enemyList)
enemy.MoveEnemyToNewRoom(currentMonsterRoom); enemy.MoveEnemyToNewRoom(currentMonsterRoom);
} }
}
public void KillHalfEnemiesInRoom() public void KillHalfEnemiesInRoom()
{ {
@@ -48,7 +38,7 @@ public class EffectService
return; return;
var currentMonsterRoom = (MonsterRoom)currentRoom; var currentMonsterRoom = (MonsterRoom)currentRoom;
var enemyList = currentMonsterRoom.GetEnemiesInCurrentRoom().OfType<Enemy>().ToList(); var enemyList = currentMonsterRoom.GetEnemiesInCurrentRoom().OfType<IEnemy>().ToList();
var enemiesToKill = enemyList.Count / 2; var enemiesToKill = enemyList.Count / 2;
for (var i = 0; i < enemiesToKill; i++) for (var i = 0; i < enemiesToKill; i++)
enemyList[i].Die(); enemyList[i].Die();
@@ -61,7 +51,7 @@ public class EffectService
if (currentRoom is not MonsterRoom) if (currentRoom is not MonsterRoom)
return; return;
var currentEnemies = currentRoom.EnemiesInRoom.OfType<Enemy>().ToList(); var currentEnemies = currentRoom.EnemiesInRoom.OfType<IEnemy>().ToList();
foreach (var enemy in currentEnemies) foreach (var enemy in currentEnemies)
{ {
enemy.OnMorph(); enemy.OnMorph();