Tough Collector Help


#1

Hi.
I am working with my 12yo son on CodeCombat.

I have checked the code as carefully as I can, but I still keep getting this ‘unhandled error’ message.

Please help!

# In this level, you'll click on robots to defeat them and protect the peasant.
# Read to see how the program works.
# Follow the instructions.
# Then, play the game. 

# This code created the environment:
game.spawnFloor("glacier")
game.spawnTopBorder("glacier")
game.spawnBottomBorder("glacier")
game.spawnDecorations("glacier")

# This creates generators to spawn big robots.
# The generators are outside the screen,
# so they seem invisible:
game.spawnXY("generator", -10, 34)
game.spawnXY("generator", 90, 34)
game.setPropertyFor("generator", "spawnType", "robobomb")
game.setPropertyFor("generator", "spawnRadius", 10)
game.setPropertyFor("robobomb", "scale", 2)

# We also spawn a big peasant, and some coins and potions.
# The peasant will collect the coins:
game.spawnXY("peasant", 40, 34)
game.setPropertyFor("peasant", "scale", 2)
game.spawnRandomly("gold-coin", 20)
game.spawnRandomly("potion-large", 4)
game.setPropertyFor("peasant", "behavior", "Collects")

# Your turn.
# The peasant needs to be healthy to survive the robots. 
# Set its "maxHealth" property to at least 5000:
game.setPropertyFor("peasant", "maxHealth", 6000)

# Now let’s add events and handlers.
# Robobombs have 200 health points. 
# We want it to take two clicks to defeat them
# So, we assign 100 points of damage for each click event:
game.onInput("click", handler.takeDamageOther(100))

# Points make the game more competitive.
# This assigns a handler to add 50 points for each coin:
game.setActionFor("peasant", "collect", handler.addScore(50))

# Your turn. Assign a handler to 
# add 100 points when a robot is defeated: 
game.setActionFor("robobomb", "defeated", handler.addScore(100))
# Finally, add a goal and write directions.
# Note the survive goal can be defined for specific units:
game.addSurviveGoal("peasant")
game.addScoreGoal(1500)
ui.setText("directions", "Protect the peasant while they collect gems.")
ui.setText("directions", "Click on robobombs to defeat them.")
ui.setText("directions", "Each robot takes two clicks.")
ui.setText("directions", "Score 1500 points to win.")


#2

Please state what line the error is on.


#3

Hi, all you’ve done wrong is this:

game.setActionFor("robobomb", "defeated", handler.addScore(100))

It should be “defeat” instead of “defeated”.
That’s all.
I hope you and you’re son carry on playing!
PS, I would give the peasant higher levels of health, I used 10000 health with your code (corrected) and it works fine. Otherwise the peasant dies most of the time.
:lion: :lion: :lion: