mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-21 21:10:30 +01:00
8998842f7a
I spent the entirety of today's event looking at hard dels with my new digital minions. This was *nearly* every Hard Del that came up during 2/7/2026's event. It turns out that AI is extremely well suited to hunting down circular references like this across an entire repo. This PR was made with Antigravity-Gemini3Pro. I have not yet tested this PR. --------- Signed-off-by: VMSolidus <evilexecutive@gmail.com> Co-authored-by: Wildkins <john.wildkins@gmail.com>
99 lines
2.4 KiB
Plaintext
99 lines
2.4 KiB
Plaintext
/obj/effect/effect/water
|
|
name = "water"
|
|
icon = 'icons/effects/effects.dmi'
|
|
icon_state = "extinguish"
|
|
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
|
pass_flags = PASSTABLE | PASSGRILLE
|
|
|
|
/obj/effect/effect/water/Initialize()
|
|
. = ..()
|
|
QDEL_IN(src, 15 SECONDS) // In case whatever made it forgets to delete it
|
|
|
|
/obj/effect/effect/water/Destroy()
|
|
reagents = null
|
|
return ..()
|
|
|
|
/obj/effect/effect/water/proc/set_color() // Call it after you move reagents to it
|
|
if(!reagents)
|
|
return
|
|
var/reagent_color = reagents.get_color()
|
|
if(reagent_color)
|
|
icon += reagent_color
|
|
|
|
/obj/effect/effect/water/proc/set_up(var/turf/target, var/step_count = 5, var/delay = 5, var/lifespan = 10)
|
|
if(!target || QDELETED(src))
|
|
return
|
|
for(var/i = 1 to step_count)
|
|
if(QDELETED(src) || !loc)
|
|
return
|
|
step_towards(src, target)
|
|
var/turf/T = get_turf(src)
|
|
if(T && reagents)
|
|
if(!wet_things(T))
|
|
break
|
|
if(T == get_turf(target))
|
|
break
|
|
sleep(delay)
|
|
|
|
if(QDELETED(src))
|
|
return
|
|
|
|
if(reagents && reagents.total_volume)
|
|
var/mob/M = locate() in get_turf(src)
|
|
if(M)
|
|
reagents.trans_to(M, reagents.total_volume * 0.75)
|
|
sleep(lifespan)
|
|
qdel(src)
|
|
|
|
//Wets everything in the tile
|
|
//A return value of 1 means that the wetting should stop. Either the water ran out or some error ocurred
|
|
/**
|
|
* Wets everything in the tile
|
|
*
|
|
* Returns `FALSE` if the water ran out or some error ocurred, or we should stop in general
|
|
*/
|
|
/obj/effect/effect/water/proc/wet_things(var/turf/T)
|
|
SHOULD_NOT_SLEEP(TRUE)
|
|
|
|
if (QDELETED(src) || !reagents || reagents.total_volume <= 0)
|
|
return FALSE
|
|
|
|
reagents.touch_turf(T)
|
|
var/list/mobshere = list()
|
|
for(var/atom/atom_in_turf as anything in T)
|
|
if(isliving(atom_in_turf))
|
|
mobshere.Add(atom_in_turf)
|
|
else if(!ismob(atom_in_turf))
|
|
reagents.touch(atom_in_turf)
|
|
|
|
if(length(mobshere))
|
|
var/portion = 1 / length(mobshere)
|
|
var/total = reagents.total_volume
|
|
for(var/mob/living/mobsphere_living_mob as anything in mobshere)
|
|
reagents.splash(mobsphere_living_mob, total * portion)
|
|
return FALSE
|
|
|
|
return TRUE
|
|
|
|
|
|
/obj/effect/effect/water/Move(turf/newloc)
|
|
if(newloc.density)
|
|
return 0
|
|
. = ..()
|
|
|
|
/obj/effect/effect/water/Collide(atom/A)
|
|
var/turf/T = get_turf(A)
|
|
wet_things(T)
|
|
return ..()
|
|
|
|
//Used by spraybottles.
|
|
/obj/effect/effect/water/chempuff
|
|
name = "chemicals"
|
|
icon = 'icons/obj/chempuff.dmi'
|
|
icon_state = ""
|
|
|
|
//used by evil things
|
|
/obj/effect/effect/water/firewater
|
|
name = "napalm gel"
|
|
icon_state = "mustard"
|