# Need Help on Kelvintaph Burgler (Help Please) [SOLVED]

I want the paladin to move near the chieftan and come back to the other side but she only stays on one side.
Here is my code:

``````distracted_chieftan = False
if not distracted_chieftan:
hero.command(friend, "move", Vector(53,50))
dodge()
dodge()
dodge()
dodge()
distracted_chieftan = True
if distracted_chieftan:
hero.command(friend, "move", Vector(32,50))
def almostEqual(a, b):
return a-4 < b < a+4
def dodge():
missles = hero.findEnemyMissiles()
if len(missles) != 0:
missle = hero.findNearest(missles)
if missle:
distance = hero.distanceTo(missle)
if distance < 5:
if almostEqual(hero.pos.y, 14):
hero.moveXY(hero.pos.x, hero.pos.y-8)
elif almostEqual(hero.pos.y, 6):
hero.moveXY(hero.pos.x, hero.pos.y+8)
while True:
dodge()

``````

Do you want this?

``````def commandPaladin(friend):
if friend:
if not distracted_chieftan:
hero.command(friend, "move", Vector(53,50))
# dodge()...
distracted_chieftan = True
elif distracted_chieftan:
hero.command(friend, "move", Vector(32,50))
``````

I like the way you move 1 Like

Well, but he won’t move to the other side.

I changed my code with different variables:

``````# What eldritch artifacts are these? Don't let them blast you!
# The ice gate will open when both ogres are defeated.
dis = False
if not dis:
hero.command(friend, "move", Vector(53,50))
distracted_chieftan = True
if dis:
hero.command(friend, "move", Vector(32,50))
def almostEqual(a, b):
return a-4 < b < a+4
def dodge():
missles = hero.findEnemyMissiles()
if len(missles) != 0:
missle = hero.findNearest(missles)
if missle:
distance = hero.distanceTo(missle)
if distance < 5:
if almostEqual(hero.pos.y, 14):
hero.moveXY(hero.pos.x, hero.pos.y-8)
elif almostEqual(hero.pos.y, 6):
hero.moveXY(hero.pos.x, hero.pos.y+8)
while True:
dodge()

``````

but now he won’t move back to the other side.

You want the paladin to turn toward the initial position as in this animation?

Actually, I’ve already changed my code to work. Thanks for all the help!

I’m curious how you solved it
I tried this code and it failed:

``````distracted_chieftan = False
pos1 = Vector(53,50)
pos2 = Vector(32,50)
if friend:
if not distracted_chieftan:
hero.command(friend, "move", pos1)
if friend.distanceTo(pos1) == 0:
distracted_chieftan = True
if distracted_chieftan:
hero.command(friend, "move", pos2)
while True:
dodge()
``````

but after inserting the function code into the while true loop

``````distracted_chieftan = False
pos1 = Vector(53,50)
pos2 = Vector(32,50)
while True:
dodge()
if not distracted_chieftan:
hero.command(friend, "move", pos1)
if friend.distanceTo(pos1) == 0:
distracted_chieftan = True
if distracted_chieftan:
hero.command(friend, "move", pos2)
``````

the code worked

What is your solution? Why using this function doesn’t work?

I solved it. Here’s my code:

``````def findEnemy(id):
for enemy in hero.findEnemies():
if enemy.id == id:
return enemy
return None

dis = False
if not dis:
hero.command(friend, "move", Vector(53,50))
cheiftain = findEnemy("Oniko")
if cheiftain and cheiftain.target == friend:
dis = True
if dis:
hero.command(friend, "move", Vector(37,41))
def almostEqual(a, b):
return a-4 < b < a+4
def almostEqual2(a, b):
return a-0.6 < b < a+0.6
def dodge():
missles = hero.findEnemyMissiles()
if len(missles) != 0:
missle = hero.findNearest(missles)
if missle:
distance = hero.distanceTo(missle)
if distance < 6:
if almostEqual(hero.pos.y, 14):
hero.moveXY(hero.pos.x, hero.pos.y-8)
elif almostEqual(hero.pos.y, 6):
hero.moveXY(hero.pos.x, hero.pos.y+8)
stage = 1
while True:
dodge()
if stage == 1: