Anyhow, here is the projectile code that I have. I'm not sure exactly what is needed, so I'll post the entire thing.
obj
var/mob/owner //This var will reference the owner
waterproj
icon='proj.dmi'
icon_state="water"
density = 1
Bump(mob/M)
if(istype(M,/mob))
if(!owner) del src //Deletes itself if there is no owner to avoid runtimes
var/damage=round(owner.maxreiatsu/10)
M.health-=damage
view(6)<<"[M] takes [damage] damage."
KOcheck(M)
mob
verb
Mizu_Houkou()
usr.projectile(new/obj/waterproj(usr.loc),usr.dir,20)
mob
proc
projectile(obj/projectile,var/dir,var/delay)
projectile.owner = src //Sets the mob as the owner of the projectile
sleep(1)
walk(projectile,dir)
sleep(delay)
del(projectile)
So let's say I'm standing on
turf/grass
and I want the grass under the projectile to turn into
turf/ice
Unfortunately, /turf's cannot be modified at runtime... howeverm you can either replace the /turf by creating a new /turf at that same location or, better yet, make a pseudo-turf (false /turf)
For a pseudo-turf, if you do go with it, you should modify Move() of /atom/movable to give it the "same properties" of a /turf:
I am sure there may be a better way to do the above.