# Summit's Gate - Part 1 - odd error in Python [Solved]

#1

Working on the first part of Summit’s Gate. Getting a very odd error: “Assigning to rvalue” and it isn’t giving me a line number or any other reasonable way to track it down. Anyone able to spot where I messed up?

``````def archerTarget(arch, range):
enemies = arch.findEnemies()
if len(enemies) < 1:
elif len(enemies) < 2:
else:
for enemy in enemies:
if arch.distanceTo(enemy) < range:
if ((enemy.maxHealth > answer.maxHealth) and (enemy.health > 0)):
elif ((enemy.maxHealth >= answer.maxHealth) and (enemy.health > 0) and arch.distanceTo(enemy) < dToEnemies):
dToEnemies = arch.distanceTo(enemy)

while self.now() < 1:
self.move(Vector(61,42))

UpFirst = True
stepCounter = 0

loop:
#Soldiers' orders
troops = self.findByType("soldier", self.findFriends())
if len(troops) > 0:
for t in troops:
if UpFirst:
else:
if self.isPathClear(t.pos, posA):
self.command(t, "defend", posA)
#Archers' orders
troops = self.findByType("archer", self.findFriends())
if len(troops) > 0:
for archer in troops:
tarA = archerTarget(archer, 15)
if archer.distanceTo(tarA) < 20:
self.command(archer, "attack", tarA)
else:
if UpFirst:
else:
if self.isPathClear(archer.pos, posA):
self.command(archer, "defend", posA)
if len(troops) > 0:
for pal in troops:
if pal.canCast("heal"):
allTroops = pal.findFriends()
healthFraction = 0.5
tarA = None
for trooper in allTroops:
if ((trooper.health/trooper.maxHealth < healthFraction) and (trooper.health > 5)):
tarA = trooper
healthFraction = trooper.health / trooper.maxHealth
if tarA:
self.command(pal, "cast", "heal", tarA)

if len(self.findEnemies()) > 0:
tarA = self.findNearest(self.findEnemies())
while ((len(self.findEnemies()) > 0) and (self.distanceTo(tarA) < self.attackRange) and (tarA.health < self.attackDamage)):
self.attack(tarA)
tarA = self.findNearest(self.findEnemies())

#Moving a soldier and character towards catapults
catapult = self.findByType("catapult", self.findEnemies())
if len(catapult)=2:
if catapult[0]:
allTroops = self.findByType("soldier", self.findFriends())
if len(allTroops) > 0:
troop = catapult[0].findNearest(allTroops)
self.command(troop, "attack", catapult[0])
if catapult[1]:
allTroops = self.findByType("soldier", self.findFriends())
if len(allTroops) > 0:
troop = catapult[1].findNearest(allTroops)
self.command(troop, "attack", catapult[1])
stepCounter = stepCounter + 1
tarA = self.findNearest(catapult)
if tarA:
if ((self.distanceTo(tarA) < self.attackRange + 4) or (self.pos.x > 80)):
self.attack(tarA)
elif UpFirst:
if catapult[0]:
tarA = catapult[0].pos
else:
tarA = None
if tarA:
self.move(tarA)
if stepCounter = 5:
UpFirst = False
stepCounter = 0
else:
if catapult[1]:
self.move(catapult[1].pos)
if stepCounter = 5:
UpFirst = True
stepCounter = 0
elif len(catapult)=1:
if (catapult[0] and (len(self.findByType("soldier", self.findFriends())) > 0)):
troop = catapult[0].findNearest(self.findByType("soldier", self.findFriends()))
self.command(troop, "attack", catapult[0])
stepCounter = stepCounter + 1
if catapult[0]:
self.attack(catapult[0])``````

#2
``````# Line 76
if len(catapult)=2:

# Line 99, 105
if stepCounter = 5:

# Line 108
elif len(catapult)=1:
``````

Check for equality vs assignment.

#3

Thank you very much … was looking right through those.