mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
* Event for changing density * Just in case * The humans are ded * Remaning changes * Slippery litle devils * How many commits am I holding up, Winston ? And if the collabs says 5, how many ? * Fixes resting problems * Final fixes
69 lines
1.9 KiB
Plaintext
69 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 = getFromPool(/obj/effect/overlay, src.loc)
|
|
trail.icon = proj_trail_icon
|
|
trail.icon_state = proj_trail_icon_state
|
|
trail.setDensity(FALSE)
|
|
spawn(proj_trail_lifespan)
|
|
returnToPool(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 |