Files
2016-03-06 20:52:14 +01:00

92 lines
2.9 KiB
Plaintext

//It's like a chem grenade that never ends
//And also makes people cleaner.
/obj/machinery/shower
name = "Shower head"
icon = 'icons/obj/stationobjs.dmi'
icon_state = "showerhead"
desc = "A shower head, for showering."
anchored = 1
flags = OPENCONTAINER
var/on = 0 //Are we currently spraying???
var/default_reagent = "cleaner" //Some water will also be added.
var/tmp/last_spray = 0
#define SPRAY_DELAY 5 //Delay between sprays, in tenths of a second.
//Don't set it to 50 or below thanks (reagents need to clear)
New()
..()
var/datum/reagents/R = new/datum/reagents(320)
reagents = R
R.my_atom = src
return
attack_ai(mob/user as mob)
return
attack_hand(mob/user as mob)
src.on = !src.on
boutput(user, "You turn [src.on ? "on" : "off"] the shower head.")
#ifdef HALLOWEEN
if(halloween_mode && prob(15))
src.reagents.add_reagent("blood",40)
#endif
return
process()
if(!on || (world.time < src.last_spray + SPRAY_DELAY))
return
if(stat & (NOPOWER)) //It has a powered pump or something.
src.on = 0
return
src.spray()
return
proc/spray()
src.last_spray = world.time
if (src && src.default_reagent)
src.reagents.add_reagent(default_reagent,120)
//also add some water for ~wet floor~ immersion
src.reagents.add_reagent("water",40)
if (src && src.reagents.total_volume) //We still have reagents after, I dunno, a potassium reaction
// "blood - 2.7867e-018" because remove_any() uses ratios (Convair880).
for (var/current_id in src.reagents.reagent_list)
var/datum/reagent/current_reagent = src.reagents.reagent_list[current_id]
if (current_reagent.id == "water" || current_reagent.id == "cleaner")
continue
if (current_reagent.volume < 0.5)
src.reagents.del_reagent(current_reagent.id)
var/datum/effects/system/steam_spread/steam = unpool(/datum/effects/system/steam_spread)
steam.set_up(5, 0, get_turf(src))
steam.attach(src)
steam.start()
for (var/atom/A in range(1, get_turf(src))) // View and oview are unreliable as heck, apparently?
if ( A == src ) continue
// Added. We don't care about unmodified shower heads, though (Convair880).
if (ismob(A))
var/mob/M = A
if (M.stat != 2)
if ((!src.reagents.has_reagent("water") && !src.reagents.has_reagent("cleaner")) || ((src.reagents.has_reagent("water") && src.reagents.has_reagent("cleaner")) && src.reagents.reagent_list.len > 2))
logTheThing("combat", M, null, "is hit by chemicals [log_reagents(src)] from a shower head at [log_loc(M)].")
src.reagents.reaction(A, 1, 40) // why the FUCK was this ingest ?? ?? ? ?? ? ?? ? ?? ? ???
spawn(50)
if (src && src.reagents.total_volume)
src.reagents.del_reagent(default_reagent)
src.reagents.remove_any(40)
src.use_power(50)
return
#undef SPRAY_DELAY