in Cavern Survival i am running this code:
loop:
enemies = self.findEnemies()
enemy = self.findNearest(enemies)
if enemy:
if self.isReady("cleave"):
self.cleave(enemy)
else:
self.attack(enemy)
However the hero attacks a door! It would appear that the self.findenemies() function thinks door are enemies. Is this intended behaviour?
Thanks.
Vettax
January 30, 2015, 7:08am
2
I think so, as you can attack them. You should be able to avoid them using their names or types.
1 Like
It is intended. you can attack them, they are an enemy they even have a team assigned to them
1 Like
How can I find out the door’s name or type then? I tried:
hero.say(hero.find.NearestEnemy)
(hero.say is sort of intend for use as print
function?), but it only returns an incomplete gibberish (i.e. if the door’s name or type is mentioned in the output, the game is snipping it/not showing it.
As for Cavern Survival’s doors, the type is “door” and names are “West Door” and “East Door”.
With clicking on them) Names and type shown in the bottom of the level.
2 Likes
bennypr0fane:
hero.find.NearestEnemy
Did you mean hero.findNearestEnemy()
instead of hero.find.NearestEnemy()
?
1 Like
Actually, yes - thanks for the tip.
So to address the elephant in the room: How to exclude that darned door from the attack?
Well, using enemy.type
and operators and
and !=
in def killEmAll()
function may be a good idea?
1 Like
not sure if this will work, and it will probably not, but use
enemy = hero.findNearestEnemy()
enemy = enemy + enemy.type != "door"
I think you can’t add strings
You could just do something like
enemy = hero.findNearestEnemy()
if enemy:
if enemy.type != "door":
hero.attack(enemy)
Yeah, but then the hero will sit around there doing nothing, until another enemy comes.
I think it may depend on the glasses the hero uses?
It only attacks nearest enemy: it will not act until door isn’t nearest. enemy.