[CR] Monattack.cpp clean up

Moved the visual range checking and fake NPC making code to local helper functions, which should have a positive impact on readability of the code.

Only two commits to see if this kind of changes is welcome, I'm quite positive more stuff can be turned into descriptively named local functions...
One format nit, I'm fixing it here but no promises in future:  We require bracing for every if-statement.  This should be
if (within_visual_range(z, 4) < 0) {
    return; // Out of range
}

(Ironically, code-tagging that removed the line breaks, defeating the purpose.)