At the first half-hour, I quickly made a reindeer which easily outperforms Aggressor. At the second half-hour, I thought "even an aggressor can't be so stupid!". Then I found what I believe it is a subtle bug (or call it "obscure feature") in the arena implementation. Seems like sometimes the look data become stale (stuck with the previous frame maybe?). The Aggressor code partially mitigated it with the yield call in the first inner loop. But despite this one, the aggressor reindeer often spend it's valuable energy and time for the superfluous second snowball throw to where its victim was located before... and loses. Adding one more yield call to the second inner loop makes it much better aggressor!
// Name: Aggressor Fixed
print "I'll get you!"
while true
// find a target
while not look
heading = actual.heading + 5
yield
end while
print "I see you!"
// chase the target down
while true
target = look
if not target then break
if target.distance > 10 then
speed = 100
else
print "Take THAT!"
throw target.health
end if
yield // the fix
end while
end while
Against this fixed Aggressor, my new and shiny reindeer is not that bright, in fact they are about on par. I believe mine is still marginally better, but this might as well be a statistically insignificant wishful thinking. But anyway, meet the new contestant!
print "I am Losx!"
step = round(rnd) * 10 - 5
while deerCount > 1
target = look
if target then
if rnd < 0.015 or target.energy < 0 and (target.health < energy + 34 or deerCount == 2) then
print "Victim found!"
while target
if target.distance < 10 then
throw target.health
else
speed = 50
end if
yield
target = look
end while
speed = 0
else if abs(abs(target.heading - actual.heading) - 180) < 5 then
print "Under attack!"
throw target.health
end if
end if
heading = actual.heading + step
yield
end while
P.S. Miniscript is funny, Minimicro even more so! :-)