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 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)

View File

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

View File

@@ -20,26 +20,16 @@ public class EffectService
_map = map;
}
public void TeleportEnemiesToCurrentRoom()
public void TeleportEnemiesToCurrentRoom(List<IEnemy> enemyList)
{
var currentFloor = _game.CurrentFloor;
var rooms = currentFloor.Rooms;
var currentRoom = _map.GetPlayersCurrentRoom();
if (currentRoom is not MonsterRoom)
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>();
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<Enemy>().ToList();
var enemyList = currentMonsterRoom.GetEnemiesInCurrentRoom().OfType<IEnemy>().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<Enemy>().ToList();
var currentEnemies = currentRoom.EnemiesInRoom.OfType<IEnemy>().ToList();
foreach (var enemy in currentEnemies)
{
enemy.OnMorph();