Lerp interrupting my OnParticleCollision logic : C#

[https://www.youtube.com/watch?v=EHK1PK4vvKw]
So, I’m following the gamedev.tv 3D Unity Course using C#, and their Blender beginner course
At the Realm Rush Section, I’ve tried to add my own flare with Snowmen and Heaters instead of their Ballista and Ram assets
But when first playtest came around, my family all agreed that the snowmen should “melt” when struck.
I’ve come up with a crude way for when they take damage, it affects the Y co-ordinate.
The problem I need guidance with, is that during the lerp; it tries to return back to it’s originally stated Vector3.y
And the snowmen appear to “bob” between their initial tile position and their destination tile position.
Where should I be looking to fix this?

Thank you for any assistance
(P.s. the textures are placeholder, still working on tile assets.)

public class EnemyMovement : MonoBehaviour
{
    [SerializeField] List<WayPoints> route = new List<WayPoints>();

    [SerializeField][Range(0f,5f)] float speed = 1f;

    GameObject parent;
    Enemy enemy;
    EnemyHealth enemyHealth;
    void OnEnable()
    {
        FindRoute();
        ReturnToStart();
        StartCoroutine(FollowRoute());

    }

    void Start()
    {
        enemyHealth = GetComponent<EnemyHealth>();
        enemy = GetComponent<Enemy>();
    }

    void FindRoute()
    {
        route.Clear(); 

        GameObject parent = GameObject.FindGameObjectWithTag("Route");
        
        foreach (Transform child in parent.transform)
        {
            route.Add(child.GetComponent<WayPoints>());
            
        }

    }

    void ReturnToStart()
    {
        transform.position = route[0].transform.position;
        
    }

    IEnumerator FollowRoute()
    {
        foreach (WayPoints wayPoints in route)
        {
            //transform.position = wayPoints.transform.position;

            Vector3 initialTile = transform.position;
            Vector3 secondaryTile = wayPoints.transform.position;
            
            float movementPercentage = 0f;

            transform.LookAt(secondaryTile);

                while (movementPercentage < 1f)
                {
                    movementPercentage += Time.deltaTime * speed;
                    transform.position = Vector3.Lerp(initialTile, secondaryTile, movementPercentage);
                    yield return new WaitForEndOfFrame();
                }
            HeightReduction();
        }
        enemy.CashPenalty();
        gameObject.SetActive(false);
        
    }

    void HeightReduction()
    {
        float heightReduction = 1.75f;
        float heightReductionSecondVariable = 2.5f;
        int currentHitPoints = enemyHealth.CurrentHitPoints;

        if (currentHitPoints < 9 && currentHitPoints > 5)
        {
            transform.Translate(Vector3.down);
        }

        if (currentHitPoints < 6 && currentHitPoints > 2)
        {
            transform.Translate(Vector3.down * heightReduction);
        }

        if (currentHitPoints < 3 && currentHitPoints > 0)
        {
            transform.Translate(Vector3.down * heightReductionSecondVariable);

        }

    }
}