Files
CHOMPStation2/code/game/objects/structures/watercloset_vr.dm
CHOMPStation2StaffMirrorBot 7d57273375 [MIRROR] Fixing client eye (#11812)
Co-authored-by: Will <7099514+Willburd@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
2025-10-12 22:44:25 -04:00

147 lines
5.3 KiB
Plaintext

//Flushable toilets on station levels. Flushing sends stuff directly to a trashpit landmark without stinking up the cargo office.
//Only on-station toilets are affected and only if the trashpit landmark also exists. Otherwise toilets will stay normal.
/obj/structure/toilet
var/teleplumbed = FALSE
var/exit_landmark
var/exit_container
var/refill_cooldown = 200
var/refilling = FALSE //CHOMPAdd
/obj/structure/toilet/Initialize(mapload)
if(z in global.using_map.map_levels)
teleplumbed = TRUE
exit_landmark = locate(/obj/effect/landmark/teleplumb_exit)
exit_container = locate(/obj/structure/biowaste_tank)
if(exit_container)
exit_landmark = exit_container //Override landmark if container is available.
if(teleplumbed && exit_landmark)
desc = "The BS-500, a bluespace rift-rotation-based waste disposal unit for small matter. This one seems remarkably clean."
return ..()
/obj/structure/toilet/attack_hand(mob/living/user as mob)
if(open && teleplumbed && exit_landmark && !refilling) //CHOMPEdit
var/list/bowl_contents = list()
for(var/obj/item/I in loc.contents)
if(istype(I) && !I.anchored)
bowl_contents += I
for(var/mob/living/L in loc.contents)
if(L.resting || L.lying && L.size_multiplier <= 0.75 && !L.buckled)
bowl_contents += L
if(bowl_contents.len)
refilling = TRUE //CHOMPAdd
user.visible_message(span_notice("[user] flushes the toilet."), span_notice("You flush the toilet."))
playsound(src, 'sound/vore/death7.ogg', 50, 1) //Got lazy about getting new sound files. Have a sick remix lmao.
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
playsound(src, 'sound/mecha/powerup.ogg', 30, 1)
var/bowl_conga = 0
for(var/atom/movable/F in bowl_contents)
if(bowl_conga < 150)
bowl_conga += 2
spawn(3 + bowl_conga)
F.SpinAnimation(5,3)
spawn(15)
if(F.loc == loc)
F.forceMove(src)
spawn(refill_cooldown)
for(var/atom/movable/F in bowl_contents)
if(F.loc == src)
F.forceMove(exit_landmark)
bowl_contents.Cut()
refilling = FALSE //CHOMPAdd
return
if(refilling) //CHOMPAdd Refilling
playsound(src, 'sound/machines/door_locked.ogg', 30, 1)
to_chat(user, span_notice("The toilet is still refilling its tank."))
return ..()
/obj/structure/toilet/attackby(obj/item/I as obj, mob/living/user as mob)
if(refilling) //No cistern interactions until bowl contents have been dealt with.
return
return ..()
/obj/structure/toilet/attack_ai(mob/user as mob)
if(isrobot(user))
if(user.client && !user.is_remote_viewing())
return attack_hand(user)
else
return attack_hand(user)
/obj/effect/landmark/teleplumb_exit
name = "teleplumbing exit"
/obj/effect/landmark/teleplumb_exit/Entered(atom/movable/thing, atom/OldLoc)
thing.forceMove(get_turf(src))
/obj/structure/biowaste_tank
name = "Bluespace Bio-Compostor Terminal"
icon = 'icons/obj/survival_pod_comp.dmi'
icon_state = "pod_computer"
desc = "It appears to be a massive sealed container attached to some heavy machinery and thick tubes containing a whole network of interdimensional pipeworks. It appears whatever vanished down the station's toilets ends up in this thing."
anchored = TRUE
density = TRUE
var/muffin_mode = FALSE
var/mob/living/simple_mob/vore/aggressive/corrupthound/muffinmonster
/obj/structure/biowaste_tank/Initialize(mapload)
muffinmonster = new /mob/living/simple_mob/vore/aggressive/corrupthound/muffinmonster(src)
muffinmonster.name = "Activate Muffin Monster"
muffinmonster.voremob_loaded = TRUE
muffinmonster.init_vore(TRUE)
return ..()
/obj/structure/biowaste_tank/AllowDrop()
return TRUE
/obj/structure/biowaste_tank/Entered(atom/movable/thing, atom/OldLoc)
if(istype(thing, /obj/item/reagent_containers/food))
qdel(thing)
return
if(istype(thing, /obj/item/organ))
qdel(thing)
return
if(istype(thing, /obj/item/storage/vore_egg))
if(thing.contents.len)
for(var/atom/movable/C in thing.contents)
C.forceMove(src)
qdel(thing)
return
if(muffin_mode)
if(muffinmonster)
thing.forceMove(muffinmonster.vore_selected)
else
muffin_mode = FALSE
/obj/structure/biowaste_tank/attack_hand(var/mob/user as mob)
if(contents.len)
var/atom/movable/choice = tgui_input_list(usr, "It appears the machine has caught some items in the lost-and-found filter system. Would you like to eject something?", "Item Retrieval Console", contents)
if(choice)
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
return
if(choice == muffinmonster && muffinmonster.loc == src)
muffin_mode = !muffin_mode
if(muffin_mode)
muffinmonster.name = "Deactivate Muffin Monster"
for(var/atom/movable/C in contents)
if(C == muffinmonster)
continue
C.forceMove(muffinmonster.vore_selected)
else
muffinmonster.name = "Activate Muffin Monster"
muffinmonster.release_vore_contents(include_absorbed = TRUE, silent = TRUE)
return
else
choice.forceMove(get_turf(src))
/obj/structure/biowaste_tank/emag_act(var/remaining_charges, var/mob/user, var/emag_source)
if(muffinmonster && muffin_mode)
muffinmonster.name = "Muffin Monster"
muffinmonster.forceMove(get_turf(src))
muffinmonster = null
muffin_mode = FALSE
/mob/living/simple_mob/vore/aggressive/corrupthound/muffinmonster
name = "Muffin Monster"
desc = "OH GOD IT'S LOOSE!"
vore_default_item_mode = IM_DIGEST