@Deadpool198
Can you help me with this. Here’s my code
def commandArchers():
for archer in self.findByType(“archer”, self.findFriends()):
nearestEnemy = archer.findNearestEnemy()
if nearestEnemy:
self.command(archer, “attack”, nearestEnemy)
else:
hero.command(archer, “defend”, hero)
def commandSoldiers():
for soldier in self.findByType(“soldier”, self.findFriends()):
nearestEnemy = soldier.findNearestEnemy()
if nearestEnemy:
self.command(soldier, “attack”, nearestEnemy)
else:
hero.command(soldier, “defend”, hero)
def summonGriffins():
if hero.gold > hero.costOf(“griffin-rider”):
hero.summon(“griffin-rider”)
def pick():
item = hero.findNearestItem()
flag = hero.findFlag()
if item:
hero.moveXY(item.pos.x, item.pos.y)
if flag:
hero.pickUpFlag(flag)
def commandGriffins():
for griffin in self.findByType(“griffin-rider”, self.findFriends()):
enemies = griffin.findEnemies()
nearestEnemy = self.findNearest(enemies)
if nearestEnemy:
self.command(griffin, “attack”, nearestEnemy)
else:
self.command(griffin, “defend”, self)
def weakestFriend():
weakestFriend = None
weakestHealth = 999
for friend in self.findFriends():
if friend.health < friend.maxHealth and friend.health < weakestHealth:
weakestHealth = friend.health
weakestFriend = friend
if weakestFriend:
return weakestFriend
def commandPaladins():
for paladin in self.findByType(“paladin”, self.findFriends()):
if paladin.canCast(“heal”, self):
if self.health < 3000:
self.command(paladin, “cast”, “heal”, self)
else:
weakestFriend2 = weakestFriend()
if weakestFriend2:
self.command(paladin, “cast”, “heal”, weakestFriend2)
else:
hero.command(paladin, “defend”, hero)
def summonGriffin():
if self.gold >= self.costOf(“griffin-rider”):
self.summon(“griffin-rider”)
def moveForward():
targetPos = {‘x’: 328, ‘y’: 35}
self.move(targetPos)
def pickTarget():
enemies = self.findEnemies()
target = None
minDistance = 9999
for enemy in enemies:
if enemy.type is not “door”:
if enemy.type is “catapult”:
target = enemy
break
elif enemy.type is “warlock”:
target = enemy
break
elif enemy.type is “witch”:
target = enemy
break
elif enemy.type is “chieftain”:
target = enemy
break
else:
if self.distanceTo(enemy) < minDistance:
minDistance = self.distanceTo(enemy)
target = enemy
if target:
return target
def commandHero():
target = pickTarget()
if target:
while target.health > 0:
if hero.canCast(“chain-lightning”, target):
hero.cast(“chain-lightning”, target)
if hero.isReady(“stomp”):
hero.stomp()
elif hero.isReady(“throw”):
hero.throw(target)
elif hero.isReady(“bash”):
hero.bash(target)
else:
self.attack(target)
hero.shield()
else:
moveForward()
def attackCatapults():
catapults = self.findByType(“catapult”)
if len(catapults):
for catapult in catapults:
while catapult.health > 0:
self.attack(catapult)
while True:
pick()
summonGriffins()
commandPaladins()
commandArchers()
commandSoldiers()
commandGriffins()
pickTarget()
commandHero()
attackCatapults()
Unfortunately I am not @Deadpool198 , but i know that he would ask that that you show the indentations. Please make sure that you format your code correctly.
yeah im doing that on the game right now i noticed it ill post the new code after.
Alright, thanks @lundyundy !
# Fight your way into the Inner Sanctum of the ogre chieftain, and defeat her.
def commandArchers():
for archer in self.findByType('archer', self.findFriends()):
nearestEnemy = archer.findNearestEnemy()
if nearestEnemy:
self.command(archer, 'attack', nearestEnemy)
else:
hero.command(archer, 'defend', hero)
def commandSoldiers():
for soldier in self.findByType('soldier', self.findFriends()):
nearestEnemy = soldier.findNearestEnemy()
if nearestEnemy:
self.command(soldier, 'attack', nearestEnemy)
else:
hero.command(soldier, 'defend', hero)
def summonGriffins():
if hero.gold > hero.costOf('griffin-rider'):
hero.summon('griffin-rider')
def pick():
item = hero.findNearestItem()
flag = hero.findFlag()
if item:
hero.moveXY(item.pos.x, item.pos.y)
if flag:
hero.pickUpFlag(flag)
def commandGriffins():
for griffin in self.findByType('griffin-rider', self.findFriends()):
enemies = griffin.findEnemies()
nearestEnemy = self.findNearest(enemies)
if nearestEnemy:
self.command(griffin, 'attack', nearestEnemy)
else:
self.command(griffin, 'defend', self)
def weakestFriend():
weakestFriend = None
weakestHealth = 999
for friend in self.findFriends():
if friend.health < friend.maxHealth and friend.health < weakestHealth:
weakestHealth = friend.health
weakestFriend = friend
if weakestFriend:
return weakestFriend
def commandPaladins():
for paladin in self.findByType('paladin', self.findFriends()):
if paladin.canCast('heal', self):
if self.health < 3000:
self.command(paladin, 'cast', 'heal', hero)
else:
weakestFriend2 = weakestFriend()
if weakestFriend2:
self.command(paladin, 'cast', 'heal', weakestFriend2)
else:
hero.command(paladin, 'defend', hero)
def summonGriffin():
if self.gold >= self.costOf('griffin-rider'):
self.summon('griffin-rider')
def moveForward():
targetPos = {'x': 328, 'y': 35}
self.move(targetPos)
def pickTarget():
enemies = self.findEnemies()
target = None
minDistance = 9999
for enemy in enemies:
if enemy.type is not 'door':
if enemy.type is 'catapult':
target = enemy
elif enemy.type is 'warlock':
target = enemy
elif enemy.type is 'witch':
target = enemy
elif enemy.type is 'chieftain':
target = enemy
else:
if self.distanceTo(enemy) < minDistance:
minDistance = self.distanceTo(enemy)
target = enemy
if target:
return target
def commandHero():
target = pickTarget()
if target:
while target.health > 0:
if hero.canCast('chain-lightning', target):
hero.cast('chain-lightning', target)
if hero.isReady('stomp'):
hero.stomp()
elif hero.isReady('throw'):
hero.throw(target)
elif hero.isReady('bash'):
hero.bash(target)
else:
self.attack(target)
hero.shield()
def attackCatapults():
catapults = self.findByType('catapult')
if len(catapults):
for catapult in catapults:
while catapult.health > 0:
self.attack(catapult)
while True:
pick()
summonGriffins()
commandPaladins()
commandArchers()
commandSoldiers()
commandGriffins()
pickTarget()
commandHero()
attackCatapults()
I think that’s right can you still help @TheBredMeister i really need to beat this level
literally no one on my side moves
hmmmm… I got some other stuff going on,let me call @dedreous he knows what he’s doing.
I changed it to this
def attack():
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
def commandArcher(archer):
for friend in hero.findByType("archer"):
tower = hero.findByType("tower")
enemy = hero.findNearestEnemy()
if enemy:
hero.command(friend, "attack", enemy)
def commandSoldier(soldier):
friends = hero.findFriends()
for friend in hero.findByType("soldier"):
catapult = friend.findNearest(hero.findByType("catapult"))
if catapult:
hero.command(friend, "move", {'x': catapult.pos.x, 'y': catapult.pos.y})
def commandPaladin(paladin):
enemy = hero.findNearestEnemy()
friends = hero.findFriends()
friend = hero.findNearest(friends)
if paladin.canCast("heal") and hero.health <= 1000:
hero.command(paladin, "cast" "heal", hero)
elif enemy:
hero.command(paladin, "attack", enemy)
def commandFriends():
friends = hero.findFriends()
for friend in friends:
if friend.type == "paladin":
commandPaladin(friend)
if friend.type == "archer":
commandArcher(friend)
if friend.type == "soldier":
commandSoldier(friend)
while True:
commandFriends()
attack()
oh alrighty then cya later
ummmmmmmmmmmmmmmm? anyone there?
abc
April 17, 2020, 4:06pm
12
I am not on summits gate yet, but maybe I can help.
what do you think i should do @abc
abc
April 17, 2020, 4:29pm
17
You should summon your soldiers, archers, and paladins like you did, but I think maybe the problem is your while true loop:
while True: commandFriends()
attack()
This is because even though you used the same for loop in the function, you should use it again like this:
While True:
friends = hero.findFriends()
for friend in friends:
commandFriends()
attack()
abc
April 17, 2020, 4:31pm
18
Also what character are you using. Certain characters could help in this level, like rangers
ok thank you @abc i will try that and im using Alejandro
My code isnt running before it even loaded the level it said i had in infinite loop detected