Wave of item effects and implementation

This commit is contained in:
2026-02-15 22:44:43 -08:00
parent 5233da4225
commit f09d6ac8e8
57 changed files with 508 additions and 86 deletions
@@ -178,6 +178,12 @@ public class EffectService
_player.ExperiencePointsComponent.GainUnmodified(expToNextLevel);
}
public void LowerLevel()
{
var expToNextLevel = _player.ExperiencePointsComponent.ExpToNextLevel.Value - _player.ExperiencePointsComponent.CurrentExp.Value;
_player.ExperiencePointsComponent.LevelDown();
}
public void TeleportToRandomRoom(IEnemy enemy)
{
var currentFloor = _game.CurrentFloor;
@@ -196,6 +202,44 @@ public class EffectService
enemy.MoveEnemyToNewRoom(randomRoom);
}
public void CloneEnemy(IEnemy enemy)
{
var enemyPosition = new Vector3(enemy.GlobalPosition.X, 0f, enemy.GlobalPosition.Z);
var enemyType = EnemyTypeToEnemyConverter.Convert(enemy);
var duplicatedEnemy = EnemyTypeToEnemyConverter.Convert(enemyType);
duplicatedEnemy.Position = enemy.GlobalPosition + enemy.GlobalBasis.X;
_map.AddChild(duplicatedEnemy);
}
public void MeltAllEquipment(IPlayer player)
{
var weapon = player.EquipmentComponent.EquippedWeapon.Value;
var armor = player.EquipmentComponent.EquippedArmor.Value;
var accessory = player.EquipmentComponent.EquippedAccessory.Value;
var ammo = player.EquipmentComponent.EquippedAmmo.Value;
if (weapon != null)
{
player.Unequip(weapon);
player.Inventory.Remove(weapon);
}
if (armor != null)
{
player.Unequip(armor);
player.Inventory.Remove(armor);
}
if (accessory != null)
{
player.Unequip(accessory);
player.Inventory.Remove(accessory);
}
if (ammo != null)
{
player.Unequip(ammo);
player.Inventory.Remove(ammo);
}
}
public void TeleportToRandomRoom(IPlayer player)
{
var currentFloor = _game.CurrentFloor;