Level: A Mayhem of Munchkins Help

The error message doesn’t have to try to explain why you can’t assign to certain things on the left; it just has to get the player to fix the code. The act of fixing the code is way better for learning than anything else. So usually what we do is to look at the highest-occurrence errors that don’t have good messages, then come up with rules to rewrite the error message to make those mistakes obvious, and it can be things that end up generating messages just like what you said, “Should be self.attack(enemy), not self.attack() = enemy.”

At least, that’s the plan–in practice we need more people in order to do everything, so we haven’t touched the error messages in a while. I can show you where to do it in Aether if you’re interested in helping with them?