ID:263195
 
Code:
obj
spell
icon = 'Spells.dmi'
Fire
Fireball
icon_state = "Fireball"
density = 1
damage = 20
Bump(mob/M)
if(istype(M))
M.HP -= damage
M.DeathCheck()
view(M) << "[M] takes [damage] damage!"
M << "You take [damage] damage!"
del src
else
del src


Problem description:
runtime error: Cannot read 0.EXP
proc name: Del (/mob/monster/Wind_Dragon_Weakling/Del)
source file: Weapons and stuff.dm,2138
usr: 0
src: Wind Dragon Weakling (/mob/monster/Wind_Dragon_Weakling)
call stack:
Wind Dragon Weakling (/mob/monster/Wind_Dragon_Weakling): Del()
Respawn(Wind Dragon Weakling (/mob/monster/Wind_Dragon_Weakling))
Wind Dragon Weakling (/mob/monster/Wind_Dragon_Weakling): DeathCheck(null)
Ray (/obj/spell/Light/Ray): Bump(Wind Dragon Weakling (/mob/monster/Wind_Dragon_Weakling))

All I know is that it has something to do with the deletion of the monster. From what it looks like, usr becomes null somewhere and stops Del().

You didn't show the relevant code, you need to show the line the runtime error message mentions (2138) and the surrounding lines. What you showed has nothing to do with the error you're getting.
And there is no possible way the Deathcheck would suddenly be stopped because the object was deleted. spawn() can do that, just putting the proc there will wait 'till that proc is finished.