/obj/machinery/fogmachine
name = "FogMachine-3000"
desc = "The FogMachine-3000 is guaranteed to suit all of your fog-filled needs. Just put the FogMaster FogFluid into the FogMachine-3000 Chemical Funnel Duct and then turn the FogMachine-3000. The FogMachine-3000 will cease to pump fog when the fluid resevoir is empty."
icon = 'icons/obj/chemical.dmi'
icon_state = "fogmachine0"
var/on = 0
New()
..()
var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
R.my_atom = src
return
process()
if(reagents.has_reagent("radium"))
src.reagents.clear_reagents()
src.visible_message("The [src] makes an odd sound, and releases a puff of green steam.")
if(on == 1)
if(reagents.reagent_list.len < 1 || reagents.total_volume < 1)
on = 0
icon_state = "fogmachine0"
src.visible_message("The [src] splutters to a halt.")
playsound(src, 'sound/machines/ding.ogg', 50, 1)
else
spawn(50)
var/datum/chemical_reaction/smoke/S = new
S.on_reaction(reagents)
reagents.total_volume -= 5
if (reagents.total_volume < 5)
reagents.total_volume = 0
reagents.clear_reagents()
return
else
return
attackby(var/obj/item/reagent_containers/C as obj, var/mob/user as mob)
if(!istype(C, /obj/item/reagent_containers))
return
if(istype(C, /obj/item/reagent_containers/glass))
if(C.reagents.reagent_list.len < 1)
boutput(user, "[C] is empty.")
return
else
boutput(user, "You pour the contents of [C] into the funnel.")
for(var/current_id in C.reagents.reagent_list)
var/datum/reagent/current_reagent = C.reagents.reagent_list[current_id]
if(current_reagent.id == "radium")
C.reagents.del_reagent("radium")
boutput(user, "The [src] vapourizes the radium.")
else
reagents.add_reagent(current_id, 10, null, null, 1)
C.reagents.clear_reagents()
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
return
else
boutput(user, "You put [C] into the funnel.")
for(var/current_id in C.reagents.reagent_list)
var/datum/reagent/current_reagent = C.reagents.reagent_list[current_id]
if(current_reagent.id == "radium")
C.reagents.del_reagent("radium")
boutput(user, "The [src] vapourizes the radium.")
else
reagents.add_reagent(current_id, 10, null, null, 1)
qdel(C)
playsound(src, 'sound/effects/pop.ogg', 50, 1)
return
attack_hand(mob/user as mob)
if(on == 0)
on = 1
boutput(user, "You flip the switch on the FogMachine-3000 to the On position.")
playsound(src, 'sound/machines/click.ogg', 50, 1)
return
if(on == 1)
on = 0
playsound(src, 'sound/machines/click.ogg', 50, 1)
boutput(user, "You flip the switch on the FogMachine-3000 to the Off position.")
return
/proc/honk(var/string)
var/modded = ""
var/list/text_tokens = splittext(string, " ")
for(var/token in text_tokens)
modded += "HONK "
modded += "HONK!"
if(prob(15))
modded += " - HOOOOOONNNKKK!!!"
return modded
/obj/machinery/bathtub
name = "bathtub"
desc = "Now, that looks cosy!"
icon = 'icons/obj/stationobjs.dmi'
icon_state = "bathtub"
flags = OPENCONTAINER
var/static/image/fluid_icon = image("icon" = 'icons/obj/stationobjs.dmi', "icon_state" = "fluid_bathtub")
var/static/image/fluid_icon_feet = image("icon" = 'icons/obj/stationobjs.dmi', "icon_state" = "fluid_bathtub_feet")
var/static/image/bath_edge = image("icon" = 'icons/obj/stationobjs.dmi', "icon_state" = "bath_edge", "layer" = FLOAT_LAYER)
var/mob/living/carbon/human/myuser = null
New()
..()
var/datum/reagents/R = new/datum/reagents(500)
reagents = R
R.my_atom = src
return
get_desc(dist, mob/user)
if (dist > 2)
return
if (!reagents)
return
. += "
[reagents.get_description(user,RC_FULLNESS|RC_VISIBLE|RC_SPECTRO)]"
return
on_reagent_change()
src.overlays = null
if(reagents.total_volume)
icon_state = "bathtub"
src.overlays += fluid_icon
if(src.myuser)
src.overlays += src.myuser
if(reagents.total_volume)
src.overlays += fluid_icon_feet
src.overlays += bath_edge
attack_hand(mob/user as mob)
if (src.myuser)
boutput(user, "You pull [src.myuser] out of the bath!")
src.eject_user()
else
boutput(user, "You pull the plug.")
src.reagents.clear_reagents()
src.on_reagent_change()
var/count = 0
for (var/obj/O in src)
count++
qdel(O)
if (count > 0)
boutput(user, "...and flush something down the drain. Damn!")
return
proc/eject_user()
if (src.myuser)
src.myuser.pixel_y = 0
src.myuser.set_loc(get_turf(src))
src.myuser = null
src.on_reagent_change()
for (var/obj/O in src)
O.set_loc(get_turf(src))
return
relaymove(mob/user as mob, dir)
src.eject_user()
boutput(user, "You get out of the bath.")
process()
if (src.myuser)
if(src.myuser.loc != src)
src.myuser.pixel_y = 0
src.myuser = null
src.overlays = null
on_reagent_change()
return
if(src.reagents.total_volume > 5)
reagents.reaction(src.myuser, TOUCH)
src.reagents.trans_to(src.myuser,5,1)
else
src.reagents.clear_reagents()
on_reagent_change()
return
MouseDrop_T(mob/living/carbon/human/target, mob/user)
if (src.myuser || !istype(target) || target.buckled || LinkBlocked(target.loc,src.loc) || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.paralysis || user.stunned || user.weakened || user.stat || istype(user, /mob/living/silicon/ai))
return
var/msg
if(target == user && !user.stat) // if drop self, then climbed in
msg = "[user.name] climbs into [src]."
boutput(user, "You climb into [src].")
else if(target != user && !user.restrained())
msg = "[user.name] push [target.name] into the [src]!"
boutput(user, "You push [target.name] into the [src]!")
else
return
target.set_loc(src)
src.myuser = target
src.myuser.pixel_y += 5
src.on_reagent_change()
for (var/mob/C in viewers(src))
if(C == user)
continue
C.show_message(msg, 3)
return
is_open_container()
return 1
/obj/item/clothing/head/apprentice
proc/fantasia()
if(ticker && ticker.mode && istype(ticker.mode, /datum/game_mode/wizard))
for (var/obj/item/mop/M in orange(5,src))
src.visible_message("[src] begins to twitch and move!")
var/moveto = locate(M.x + rand(-1,1),M.y + rand(-1, 1),src.z)
//make the mops move
if (istype(moveto, /turf/simulated/floor) || istype(moveto, /turf/simulated/shuttle/floor) || istype(moveto, /turf/simulated/aprilfools/floor) || istype(moveto, /turf/unsimulated/floor) || istype(moveto, /turf/unsimulated/aprilfools)) step_towards(M, moveto)
spawn(50)
src.visible_message("Thankfully, [src] settles down.")
else
for (var/obj/item/mop/M in orange(5,src))
src.visible_message("[src] begins to twitch and mov- oh. No. No it doesn't.")
/obj/item/clothing/head/apprentice/equipped(var/mob/user, var/slot)
boutput(user, "Your head tingles with magic! Or asbestos. Probably asbestos.")
src.fantasia()
..()