Files
vgstation13/code/modules/spells/spell_projectile.dm
DamianX f5c96279c6 Removed datum pooling (#26992)
* removed pooling

* replace returnToPool with qdel

* did stuff
2020-07-03 19:38:38 -03:00

70 lines
1.9 KiB
Plaintext

/obj/item/projectile/spell_projectile
name = "spell"
icon = 'icons/obj/projectiles.dmi'
nodamage = 1 //Most of the time, anyways
var/spell/targeted/projectile/carried
kill_count = 10 //set by the duration of the spell
var/proj_trail = 0 //if it leaves a trail
var/proj_trail_lifespan = 0 //deciseconds
var/proj_trail_icon = 'icons/obj/wizard.dmi'
var/proj_trail_icon_state = "trail"
/obj/item/projectile/spell_projectile/ex_act()
return
/obj/item/projectile/spell_projectile/process_step()
..()
if(!isnull(src.loc))
if(carried)
var/list/targets = choose_prox_targets(user = carried.holder, spell_holder = src)
if(targets && targets.len)
src.prox_cast(targets)
if(proj_trail && src && src.loc) //pretty trails
var/obj/effect/overlay/trail = new /obj/effect/overlay(src.loc)
trail.icon = proj_trail_icon
trail.icon_state = proj_trail_icon_state
trail.setDensity(FALSE)
spawn(proj_trail_lifespan)
qdel(trail)
return
/obj/item/projectile/spell_projectile/proc/prox_cast(var/list/targets)
if(loc)
carried.prox_cast(targets, src)
qdel(src)
return
/obj/item/projectile/spell_projectile/to_bump(var/atom/A)
if(loc)
prox_cast(choose_prox_targets(user = carried.holder, spell_holder = src))
return
/obj/item/projectile/spell_projectile/OnDeath()
if(loc)
prox_cast(choose_prox_targets(user = carried.holder, spell_holder = src))
return
/obj/item/projectile/spell_projectile/proc/choose_prox_targets(user = carried.holder, spell_holder = src)
if(!carried)
return
return carried.choose_prox_targets(arglist(args))
/obj/item/projectile/spell_projectile/seeking
name = "seeking spell"
/obj/item/projectile/spell_projectile/seeking/choose_prox_targets(user = carried.holder, spell_holder = src)
if(Adjacent(original))
return list(original)
else
return list()
/obj/item/projectile/spell_projectile/seeking/process_step()
..()
if(original && !isnull(src.loc))
current = original //update the target