There seems to be a small bug in mobile artillery beginner level. The range distance of the artillery unit is 30 and if an attack is made at 30, it fails with a range/distance failure. Example:
this.moveXY(45,30);
// fails:
// "{x: 45, y:60, z: 0} out of range (distance 30 / range 30)
this.attackXY(45,60);
Looks to me like a less-than check should be a less-than/equal-to check.
As another player I’d just like to point out that I just tried this on the Mobile Artillery level and it worked for me. I wonder if someone fixed it or maybe you are looking at a different level.
If I go over to the level editor the attack component does say
return true if distance <= @attackRange
But since it is displaying toFixed(0) in the out of range error it’s hard to tell if it is a rounding error or something.
Hmm, I thought i had an idea for what might be happening: the Artillery thinks its moveXY is done when it gets very very close to (45, 30) and then tries to shoot at (45, 60) when it is still about 30.001 units away. But I just tried to reproduce it and couldn’t. Could you post the full example code you’re using, or a multiplayer link to it? It could be something even more tricky.
Sorry I took so long to reply; vacation and all. Here’s the full example:
this.moveXY(30, 26); // Move into range
this.attackXY(46, 5); // Shoot once in the middle of the ogres
this.moveXY(49, 36);
this.attackXY(69, 56);
this.moveXY(40, 31);
this.attackXY(50, 38);
this.moveXY(45, 30);
this.attackXY(45, 60);
this.moveXY(40, 31);
this.attackXY(43, 43);
Interestingly enough, I tried some other examples where there was a distance of 30 and could not reproduce it either. Example:
this.moveXY(49, 36);
this.attackXY(49, 66); // works fine!