I was trying to code the soldiers to attack the catapults, but there’s an error:
Line 29: Argument error: Target a unit.
This is my code so far:
# Fight your way into the Inner Sanctum of the ogre chieftain, and defeat her.
def lowestHealthPaladin():
lowestHealth = 99999
lowestFriend = None
friends = hero.findFriends()
for friend in friends:
if friend.type != "paladin":
continue
if friend.health < lowestHealth and friend.health < friend.maxHealth:
lowestHealth = friend.health
lowestFriend = friend
return lowestFriend
def destroyCatapults():
catapult = hero.findByType("catapult", hero.findEnemies())
for friend in friends:
if friend.type == "soldier":
hero.command(friend, "attack", catapult)
elif friend.type == "archer":
hero.command(friend, "attack", enemy)
while True:
friends = hero.findFriends()
enemy = hero.findNearestEnemy()
catapult = hero.findByType("catapult", hero.findEnemies())
# Paladin Healing
mostHurt = lowestHealthPaladin()
for friend in friends:
if friend.type == "paladin":
if hero.health < hero.maxHealth / 1.5:
hero.command(friend, cast, "heal", hero)
else:
hero.command(friend, "cast", "heal", mostHurt)
destroyCatapults()
I legit have no idea with those codes lol, as I didn’t touch CC for 4 months.
But, in the code below you’ve written, enemy isn’t defined. This problem can be solved using “enemy” as a parameter taken as an argument later.
def destroyCatapults(enemy): # write 'enemy' as parameter
catapult = hero.findByType("catapult", hero.findEnemies())
for friend in friends:
if friend.type == "soldier":
hero.command(friend, "attack", catapult)
elif friend.type == "archer":
hero.command(friend, "attack", enemy)
for friend in friends:
if friend.type == "paladin":
if hero.health < hero.maxHealth / 1.5:
hero.command(friend, cast, "heal", hero)
else:
hero.command(friend, "cast", "heal", mostHurt)
destroyCatapults(friend.findNearestEnemy()) # indent this, and
# pass enemy as 'friend.findNearest'
P. S. @moonwatcher348 correct me if my code won’t work, as I solve problems without checking it in game xD
I also solve problems like that .-. I haven’t looked at coco levels in like 10 years (2 months, if not more) xd and you don’t need to pass enemy, just define it in the function -_-
this needs to be
catapult = hero.findNearest(hero.findbyType("catapult",hero.findEnemies()))
cus find by type retuns a array, while find nearest returns a varible, in this case a enemy, cuz u cant attack a array unless u use a for loop.
Oh I forgot to correct that for him, yeah I’ve forgot like a lot for CC
well ,can a catapult be a friend, or he/she cast raise dead lol
Or use this also
catapult = hero.findByType("catapult", hero.findEnemies())
catapult = hero.findNearest(catapult)
why over complicate, also, there is no friendly catapults in summit gate
It’s not complicate, it’s easier to people who can’t write cat=hero.findNearest(hero.findByType(“catapult”,hero.findEnemies())) really fast. I’m pretty sure it’s easier to understand it when it’s a few lines, like Vectors in Skating Away.
And I think he meant that you can cast raise-dead near dead catapults and they will become friends.
ohhhh, yeah, that’s true, and yeah, I guess some people just don’t type very well .-.
PeterPalov:
It’s not complicate, it’s easier to people who can’t write cat=hero.findNearest(hero.findByType(“catapult”,hero.findEnemies())) really fast. I’m pretty sure it’s easier to understand it when it’s a few lines, like Vectors in Skating Away.
And I think he meant that you can cast raise-dead near dead catapults and they will become friends.
Then the catapult can attack the beam tower lol
No, it cant because it cant see through the walls
It can “see” through, it just can’t fire xd
Wait…guys, we are a little bit getting off the topic…
Is @person1 active now? I can give he some strats
or check the teams “ogres”
Guys:
the easiest way:
enemies = hero.findEnemies()
for enemy in enemies:
if enemy.type == 'catapult':
#do attack
you can add a while loop to check if the enemy still alive:
while enemy.health > 0:
hero.attack(enemy)