using Godot; using Zennysoft.Game.Ma; using Zennysoft.Ma.Adapter; using Zennysoft.Ma.Adapter.Entity; internal class PlayerEffectService { private IPlayer _player; public PlayerEffectService(IPlayer player) { _player = player; } public void TakeSelfDamage(int damage) { _player.TakeDamage(new AttackData(5, ElementType.None, true, true)); } public void Instakill(IEnemy enemy) { if (enemy is BossTypeA || enemy is DemonWall) return; var rng = new RandomNumberGenerator(); rng.Randomize(); var rand = rng.RandiRange(1, 100); if (rand <= _player.TotalLuck) { enemy.HealthComponent.SetCurrentHealth(0); enemy.Die(); } } public void Degrade() { var weapon = _player.EquipmentComponent.EquippedWeapon.Value as Weapon; var newAttack = Mathf.Max(weapon.BonusAttack - 1, 0); weapon.SetAttack(newAttack); _player.EquipmentComponent.UpdateEquipment(weapon); } }