Fixed teleport enemies bug (swapped Y and Z values....)
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user