ID:2112224
 
(See the best response by Kaiochao.)
Code:
mob/proc
Take_Damage(Amount,mob/Opponent,DType = "Physical")
if(Opponent.Monster==1) goto Continue


runtime error: Cannot read null.Monster
proc name: Take Damage (/mob/proc/Take_Damage)
usr: Rat(/mob/Enemies/Rat)
src: SoulGamesProductions(/mob)
usr.loc: Turf (588,23,4) (/turf/Floor)
src.loc: Turf (588,21,4) (/turf/Floor)
call stack:


Problem description:Good night,I cant check if the mob is a monster,that always shows.
By the way, you cut off the "call stack" part of the runtime error. That stuff is important too. It shows what proc called the crashed proc, and what proc called that, etc., including the arguments given to each one.

If you showed that, it would be clear that you're not giving a mob to the Opponent parameter when you call Take_Damage() in the next proc in the call stack, or that the mob reference that you are passing it is null.
In response to Kaiochao
runtime error: Cannot read null.Monster
proc name: Take Damage (/mob/proc/Take_Damage)
usr: Zombie (/mob/Enemies/Rat)
src: SoulGamesProduction(/mob)
usr.loc: Turf (599,34,4) (/turf/Floor)
src.loc: Turf (598,34,4) (/turf/GR)
call stack:
SoulGamesProduction(/mob): Take Damage(8000, null, "Physical")
Rat(/mob/Enemies/Rat): Bump(SoulGamesProduction(/mob))
Zombie (/mob/Enemies/Zombie): Move(Turf (598,34,4) (/turf/GR), 8)

The full that I see.I have no reason why that happens,because with players the proc work allright
In response to SoulGamesProductions
Best response
Now that we can see the error occurs in this call
SoulGamesProduction(/mob): Take Damage(8000, null, "Physical")

and that call was called in this proc
Rat(/mob/Enemies/Rat): Bump(SoulGamesProduction(/mob))

all you have to do is check /mob/Enemies/Rat/Bump(M) to see what's wrong with how you're calling M.TakeDamage().

It should be pretty clear that it's gonna look something like:
mob/Enemies/Rat/Bump(mob/M)
// ...
M.TakeDamage(8000)
// or
M.TakeDamage(8000, ???, "Physical")

...when it should look like:
mob/Enemies/Rat/Bump(mob/M)
// ...
M.TakeDamage(8000, src)
// or
M.TakeDamage(8000, src, "Physical")


Or, in /mob/TakeDamage(Amount, mob/Opponent, DType), if Opponent is meant to be an optional parameter, you should check if Opponent exists before trying to access its variables:
mob/proc
Take_Damage(Amount, mob/Opponent = null, DType = "Physical")
if(Opponent && Opponent.Monster==1) goto Continue
In response to Kaiochao
Thanks a lot ! That saved my hours of trying to fix XD.
M.TakeDamage(8000, src, "Physical")
Worked perfect,I will keep eyes on where erros occurs now.