(See the best response by NSBR.)
Attack(M) //Attack it with a proc that is defined elsewhere.

if (!M) return
var/damage = powerlevel
M.TakeDamage(src, damage)
TakeDamage(mob/attacker, damage)
if (istype(src, /mob/other))
usr << "<font color=red>No..."
if(src.npp == 0|1)
var/dmg = round(attacker.maxpowerlevel / rand(40,85))
src.powerlevel -= dmg
attacker.powerlevel += rand(0,1)
attacker.random = rand(1,3)
if(src.powerlevel >= 1)
if(attacker.random == 1)
view(6) << "<font color = blue><b>[] punches [src] for [dmg] ."
if(attacker.random == 2)
view(6) << "<font color = blue><b>[] kicks [src] for [dmg]."
if(attacker.random == 3)
view(6) << "<font color = blue><b>[] stumbles and misses [src]."

Problem description:
I posted the bump() and the attack proc it activates. They both are working perfectly fine except if 2 mobs are in the same tile. For instant I fly and land on top of a mob, the surrounding mobs can't attack me, I believe they are only bumping the mob below, any help appreciated

Any help, not even looking for someone to show me the fixed code, just to be steered in the right direction, I couldn't find any information about this in the forum
Best response
Don't land on top of the mob. It's bad practice.

If you want an workaround you could make
for(var/mob/characters/Z in M.loc)
Thank you this worked like a charm, I needed it to prevent bug abuse, like someone landing on a dense turf and training on the mobs from there
In response to Vegetto7
No problem. I'd still recommend that you don't allow mobs to be on top of each other, otherwise you'd have to make this workaround on all Bumps, including projectiles etc. If you could mark my previous response as best response, I'd appreciate it.