* disallow_harm -> allow_harm to avoid negative reasoning since it mostly
requires double negation in code
* allow_harm -> may_harm to specify side-effect free
* inline `target_dodging` into struct declaration as they are named
anyway
* move `avoid_harm` check out of `Attack::apply_attack` so we don't need
to pass whole Player component.
* another cosmetic things
Before checking if the entity hitbox intersects the shockwave shell, we
do a basic check that the entity is close enough to be hit, considering
its radius.
This fixes the unlimited vertical range problem, since the distance is
measured in 3D.