# [SOLVED] Rational Defense can't transform my set!

For some reason, my code “Dont know how to transform : Set”, and I don’t understand what I should do to fix the error.

``````# Protect the peasants.

# Move the peasants away from the woods.
def hideUnits(units):
for i in range(len(units)):
unit = units[i]
hero.command(unit, "move", {'x': 34, 'y': 10 + i * 12})

# The peasants know the order in which to build the traps.
peasants = hero.findFriends()
buildOrder = peasants[0].buildOrder
separator = ","
# Split buildOrder with a comma (",")
# and save the result to the variable `types`:
types = buildOrder.split(separator)
# There are the same number of peasants as types.
for index in range(len(peasants)):
peasant = peasants[index]
x = 16
y = 10 + index * 12
# Get buildType by `index` from the array of types:
buildType = types[index]
# Command the peasant to buildXY the buildType at x and y:
hero.command(peasant, "buildXY", {buildType, x, y})

# Watch for enemies and move peasants when ogres attack.
while True:
enemy = hero.findNearestEnemy()
if enemy:
hideUnits(peasants)
break

# Fight the ogres:
hero.cast("drain-life", enemy)
``````

The problem is with:

``````    hero.command(peasant, "buildXY", {buildType, x, y})
``````

By enclosing the last three attributes in brackets {}, you are make them a ‘set’…for lack of better explanation. The ‘.command’ function is not expecting a set, but the individual attributes instead.

Thank you, that was a silly mistake. Thanks for the help!

1 Like