ID:149454
 
obj
spells
icon = 'Spells.dmi'
Fire
icon_state = "Fire"
density = 1
verb
cast()
set src in usr.contents
var/obj/spells/Fire/Fire = new /obj/spells/Fire(src.loc) //create a new bullet here
walk(Fire,usr.dir) //now, walk the laser beam in my direction
sleep(20)
del(Fire)
Bump(atom/O)
if(ismob(O))
view() << "[O] is hit by a Fire Spell!"

okays, when I fire it at Crazy Jim(NPC) nothing happens! And how do I make it so it vanishes after it hits a dense object? Thanks! FE!
This demo has a small example of what you need.