enemyStatus/CharmedEnemyStatus.cs
public class CharmedEnemyStatus : EnemyStatus
{
	public float Lifetime { get; set; }

	public override void Init( Enemy enemy )
	{
		base.Init( enemy );

		enemy.CreateCharmVfx();
		enemy.IsCharmed = true;

		enemy.Sprite.Tint = Color.Lerp( enemy.Sprite.Tint, Color.Magenta, 0.9f );
		//enemy.Sprite.FlashTint = Color.Magenta.WithAlpha( 0.4f );

		enemy.Target = null;
		enemy.LookForEnemyTarget();

		Manager.Instance.CharmedEnemyCount++;
	}

	public void SetLifetime( float lifetime )
	{
		if ( lifetime > Lifetime )
		{
			Lifetime = lifetime;
		}
	}

	//public override void Update( float dt )
	//{
	//	if ( Enemy == null || !Enemy.IsValid() )
	//		return;

	//	if ( ElapsedTime > Lifetime )
	//		Enemy.RemoveEnemyStatus( this );

	//	//Enemy.Velocity *= (1f - Utils.Map( TimeScale, 0.6f, 0f, 3f, 15f ) * dt);
	//}

	//public override void StartDying()
	//{
	//	Manager.Instance.CharmedEnemyCount--;
	//	Enemy.IsCharmed = false;
	//}

	//public override void StartDying()
	//{
	//	base.StartDying();

	//	Enemy.RemoveEnemyStatus( this );
	//}

	public override void Remove()
	{
		Enemy.IsCharmed = false;
		Manager.Instance.CharmedEnemyCount--;

		if ( !Enemy.IsFlashing )
			Enemy.Sprite.FlashTint = Color.White.WithAlpha( 0f );

		Enemy.RemoveCharmVfx();
	}

	public override void Refresh()
	{
		ElapsedTime = 0f;
	}
}