Mm, well for the range and AoE it's almost like "addons". I'll just briefly explain it here on how to implement them, at least how I do them.
Ranged is the simpler of the two, you simply make a 'through' event (projectile) and put it off the screen somewhere. For the hotkey where you press "shoot", it should set the event of the projectile event at where the player is (remember that you have an event that keeps tracking the X and Y of player onto two variables) and face where the player is facing (conditional branches for each direction).
Then, change the graphic of the event to the projectile char-set (arrow char set, for example. Easy to make, just draw some sticks and set them onto an ready-made char set for positioning).
Next, set a move event command for the arrows to go however many steps forward. (If you want, you can have a custom distance-variable, that way you can increase or decrease the distance that arrow goes under certain conditions. To implement this, you use a 'Loop' command. Open a loop up, and put 'move forward' once inside. Still inside the loop bracket, make a variable 'count', and make count = count + 1. Next, still inside the loop bracket, make a conditional branch that has the condition count = DISTANCE (where DISTANCE is the distance variable you want the arrow to go for), and if it matches that condition, BREAK LOOP command activates. [This is basically a do-while loop replica for eventing for those that knows some programming])
Then, on the parallel processing event that you have running seperately that tracks player's and enemies' X and Y variables, make 2 new variables; ProjectileX and ProjectileY. Set them to equal to the projectile event's X and Y coords.
Now for the 'hit check' event; you simply compare whether the variable monsterX = projectileX, and if it does then compare whether monsterY = projectileY. If it does again, then do whatever you want as a monster gets hit in that conditional branch. Remember to do this check for every monster. (That's why I only limit my max enemy number and player number at 4 each, or it's too much hassel to check everything.)
P.S. Remember to do some graphic/sound notice when the monster is hit. Perhaps a knock back, a flash of the monster character, a squeal, something along those lines.
As for Area of Effect; you need 8 variables. The top left corner(x,y), top right corner(x,y), bottom left corner(x,y) and bottom right corner(x,y). Basically, you have an area with each of the 4 corners (square area) cornered out. When you check, you check whether the enemy's X is greater than the minimum X yet less than the maximum X, then whether the enemy's Y is greater than the minimum Y yet less than the minimum Y.
Oh, and to get those corner variables, you have a center point you release the area of effect at. I usually start with the player's location. So with that center, you calculate each x and y accordingly. For example, if the range is 4x4 square like I used, then that means from the center to the left-most point is a distance of 2, same with the upper-point. Hence, to get the left upper corner, your center x goes under the calculation of x=x-2, y=y-2.
^
|
|
- - C
And repeat the calculation for the rest of the points accordingly.
That's basically it in a nutshell.