mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-01 20:42:08 +00:00
* [IDB IGNORE] The Great Sweep: Moving dmis into subfolders (part 1) * Fixes all the conflicts and all of our modular files using core icon files with broken paths Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com> Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
92 lines
2.6 KiB
Plaintext
92 lines
2.6 KiB
Plaintext
//Used by spraybottles.
|
|
/obj/effect/decal/chempuff
|
|
name = "chemicals"
|
|
icon = 'icons/obj/medical/chempuff.dmi'
|
|
pass_flags = PASSTABLE | PASSGRILLE
|
|
layer = FLY_LAYER
|
|
plane = ABOVE_GAME_PLANE
|
|
///The mob who sourced this puff, if one exists
|
|
var/mob/user
|
|
///The sprayer who fired this puff
|
|
var/obj/item/reagent_containers/spray/sprayer
|
|
///How many interactions we have left before we disappear early
|
|
var/lifetime = INFINITY
|
|
///Are we a part of a stream?
|
|
var/stream
|
|
|
|
/obj/effect/decal/chempuff/Destroy(force)
|
|
user = null
|
|
sprayer = null
|
|
return ..()
|
|
|
|
/obj/effect/decal/chempuff/blob_act(obj/structure/blob/B)
|
|
return
|
|
|
|
/obj/effect/decal/chempuff/proc/end_life(datum/move_loop/engine)
|
|
QDEL_IN(src, engine.delay) //Gotta let it stop drifting
|
|
animate(src, alpha = 0, time = engine.delay)
|
|
|
|
/obj/effect/decal/chempuff/proc/loop_ended(datum/move_loop/source)
|
|
SIGNAL_HANDLER
|
|
if(QDELETED(src))
|
|
return
|
|
end_life(source)
|
|
|
|
/obj/effect/decal/chempuff/proc/check_move(datum/move_loop/source, succeeded)
|
|
if(QDELETED(src)) //Reasons PLEASE WORK I SWEAR TO GOD
|
|
return
|
|
if(!succeeded) //If we hit something
|
|
end_life(source)
|
|
return
|
|
|
|
var/puff_reagents_string = reagents.get_reagent_log_string()
|
|
var/travelled_max_distance = (source.lifetime - source.delay <= 0)
|
|
var/turf/our_turf = get_turf(src)
|
|
|
|
for(var/atom/movable/turf_atom in our_turf)
|
|
if(turf_atom == src || turf_atom.invisibility) //we ignore the puff itself and stuff below the floor
|
|
continue
|
|
|
|
if(lifetime < 0)
|
|
break
|
|
|
|
if(!stream)
|
|
reagents.expose(turf_atom, VAPOR)
|
|
log_combat(user, turf_atom, "sprayed", sprayer, addition="which had [puff_reagents_string]")
|
|
if(ismob(turf_atom))
|
|
lifetime -= 1
|
|
continue
|
|
|
|
if(isliving(turf_atom))
|
|
var/mob/living/turf_mob = turf_atom
|
|
|
|
if(!turf_mob.can_inject())
|
|
continue
|
|
if(turf_mob.body_position != STANDING_UP && !travelled_max_distance)
|
|
continue
|
|
|
|
reagents.expose(turf_mob, VAPOR)
|
|
log_combat(user, turf_mob, "sprayed", sprayer, addition="which had [puff_reagents_string]")
|
|
lifetime -= 1
|
|
|
|
else if(travelled_max_distance)
|
|
reagents.expose(turf_atom, VAPOR)
|
|
log_combat(user, turf_atom, "sprayed", sprayer, addition="which had [puff_reagents_string]")
|
|
lifetime -= 1
|
|
|
|
if(lifetime >= 0 && (!stream || travelled_max_distance))
|
|
reagents.expose(our_turf, VAPOR)
|
|
log_combat(user, our_turf, "sprayed", sprayer, addition="which had [puff_reagents_string]")
|
|
lifetime -= 1
|
|
|
|
// Did we use up all the puff early?
|
|
if(lifetime < 0)
|
|
end_life(source)
|
|
|
|
/obj/effect/decal/fakelattice
|
|
name = "lattice"
|
|
desc = "A lightweight support lattice."
|
|
icon = 'icons/obj/smooth_structures/lattice.dmi'
|
|
icon_state = "lattice-255"
|
|
density = TRUE
|