Help with level "distracting dungeon"

Hi guys,
I am stocked on this level.
I think I haven’t understood the nested while loops yet, I can’t find the mistakes in my code. Do you have an idea for me? My hero just runs against the wall after defeating the two first enemies…

# Navigate the mountain maze with a peasant pal.
# Advanced while-loop usage is required!

peasant = hero.findNearest(hero.findFriends())
while True:
    # Command your friend to build a decoy towards x + 1:
    hero.command(peasant, "buildXY", "decoy", hero.pos.x+1, hero.pos.y)
    tDest = {"x": hero.pos.x, "y": hero.pos.y + 28};
    while hero.distanceTo(tDest) > 1:
        hero.move(tDest)
        hero.command(peasant, "move", tDest)
    # Create a new x/y dict +28 units away in the x dir:
    tDest = {"x": hero.pos.x + 28, "y": hero.pos.y};
    # Find the nearest enemy:
    enemy = hero.findNearest(hero.findEnemies())
    while enemy:
        while enemy.health > 0: 
            hero.attack(enemy)
        enemy = hero.findNearest(hero.findEnemies())
    while peasant.distanceTo(tDest) > 1:
        hero.command(peasant, "move", tDest)
        hero.wait(3)
while peasant.distanceTo(tDest) > 1:
        hero.command(peasant, "move", tDest)
        hero.wait(3)

// Move the hero and peasant towards second point

Thank you, i fixed that and now i also got the speed of ring equip. But now my hero is killed because he runs after the “brawlers” and get killed near the ende of the labyrinth.

I tried:

        while enemy.health > 0 and enemy.type != "brawler": 
            hero.attack(enemy)

But know there’s an infinite loop (error message).

If enemy exist and enemy type is brawler your hero do nothing while part below executed again and again

while enemy:


       enemy = hero.findNearest(hero.findEnemies())

I still just can’t solve this level. now i am running out of time after hero attacked successfully all brawlers. Any idea or suggestion?

# Navigate the mountain maze with a peasant pal.
# Advanced while-loop usage is required!

peasant = hero.findNearest(hero.findFriends())
while True:
    # Command your friend to build a decoy towards x + 1:
    hero.command(peasant, "buildXY", "decoy", hero.pos.x+1, hero.pos.y)
    tDest = {"x": hero.pos.x, "y": hero.pos.y + 28};
    while hero.distanceTo(tDest) > 1:
        hero.move(tDest)
        hero.command(peasant, "move", tDest)
    # Create a new x/y dict +28 units away in the x dir:
    tDest = {"x": hero.pos.x + 28, "y": hero.pos.y};
    # Find the nearest enemy:
    enemy = hero.findNearest(hero.findEnemies())
    while enemy:
        while enemy.health > 0: 
            if enemy.type == "brawler": 
                if hero.isReady("power-up"):
                    hero.powerUp()
                else:
                    if hero.canCast("chain-lightning", enemy): 
                        hero.cast("chain-lightning", enemy)
                    else: 
                        hero.attack(enemy)
            else: 
                hero.attack(enemy)
        
        enemy = hero.findNearest(hero.findEnemies())
    while peasant.distanceTo(tDest) > 1:
        hero.move(tDest)
        hero.command(peasant, "move", tDest)
        
        

Ok. I finally solved it!

how do u have a hint

Is there something wrong with my code? my hero keeps running up against the wall toward the yeti.
Code:
peasant = hero.findNearest(hero.findFriends())
while hero.pos.x<96:
# Command your friend to build a decoy towards x + 1:
hero.command(peasant, ‘buildXY’, ‘decoy’, hero.pos.x+1, hero.pos.y)
tDest = {“x”: hero.pos.x, “y”: hero.pos.y + 28};
while hero.distanceTo(tDest) > 1:
hero.move(tDest)
hero.command(peasant, “move”, tDest)
# Create a new x/y object +28 units away in the x dir:
tDest = {“x”: hero.pos.x+28, “y”: hero.pos.y};
# Find the nearest enemy:
enemy = hero.findNearestEnemy()
# While there is an enemy:
while enemy:
# While the enemy’s health is > 0:
while enemy.health>0:
# Attack the enemy:
hero.attack(enemy)
# Update the variable to the next nearest enemy:
enemy = hero.findNearestEnemy()
# While friend’s distance to the new x/y object > 1:
hero.say(peasant.distanceTo(tDest))
while peasant.distanceTo(tDest)>1:
# Move the hero and peasant towards the x/y dict:
hero.command(peasant, ‘move’, tDest)
hero.wait(3)

Hi @Cool_Doofus666, please read this topic to learn how to format your code:
[Essentials] How To Post/Format Your Code Correctly
Thanks
Danny