/obj/machinery/washing_machine name = "Washing Machine" icon = 'icons/obj/machines/washing_machine.dmi' icon_state = "wm_10" density = 1 anchored = 1.0 circuit = /obj/item/weapon/circuitboard/washing var/state = 1 //1 = empty, open door //2 = empty, closed door //3 = full, open door //4 = full, closed door //5 = running //6 = blood, open door //7 = blood, closed door //8 = blood, running var/hacked = 1 //Bleh, screw hacking, let's have it hacked by default. //0 = not hacked //1 = hacked var/gibs_ready = 0 var/obj/crayon var/list/washing = list() var/list/disallowed_types = list( /obj/item/clothing/suit/space, /obj/item/clothing/head/helmet/space ) /obj/machinery/washing_machine/New() ..() component_parts = list() component_parts += new /obj/item/weapon/stock_parts/motor(src) component_parts += new /obj/item/weapon/stock_parts/gear(src) component_parts += new /obj/item/weapon/stock_parts/gear(src) RefreshParts() /obj/machinery/washing_machine/verb/start() set name = "Start Washing" set category = "Object" set src in oview(1) if(!istype(usr, /mob/living)) //ew ew ew usr, but it's the only way to check. return if(state != 4) usr << "The washing machine cannot run in this state." return if(locate(/mob,washing)) state = 8 else state = 5 update_icon() sleep(200) for(var/atom/A in washing) A.clean_blood() for(var/obj/item/I in washing) I.decontaminate() //Tanning! for(var/obj/item/stack/material/hairlesshide/HH in washing) var/obj/item/stack/material/wetleather/WL = new(src) WL.amount = HH.amount qdel(HH) if(locate(/mob,washing)) state = 7 gibs_ready = 1 else state = 4 update_icon() /obj/machinery/washing_machine/verb/climb_out() set name = "Climb out" set category = "Object" set src in usr.loc sleep(20) if(state in list(1,3,6)) usr.loc = src.loc /obj/machinery/washing_machine/update_icon() icon_state = "wm_[state][panel_open]" /obj/machinery/washing_machine/attackby(obj/item/weapon/W as obj, mob/user as mob) if(state == 2 && washing.len < 1) if(default_deconstruction_screwdriver(user, W)) return if(default_deconstruction_crowbar(user, W)) return if(default_unfasten_wrench(user, W, 40)) return /*if(istype(W,/obj/item/weapon/screwdriver)) panel = !panel user << "You [panel ? "open" : "close"] the [src]'s maintenance panel"*/ if(istype(W,/obj/item/weapon/pen/crayon) || istype(W,/obj/item/weapon/stamp)) if(state in list( 1, 3, 6)) if(!crayon) user.drop_item() crayon = W crayon.loc = src else ..() else ..() else if(istype(W,/obj/item/weapon/grab)) if((state == 1) && hacked) var/obj/item/weapon/grab/G = W if(ishuman(G.assailant) && iscorgi(G.affecting)) G.affecting.loc = src qdel(G) state = 3 else ..() else if(is_type_in_list(W, disallowed_types)) user << "You can't fit \the [W] inside." return else if(istype(W, /obj/item/clothing) || istype(W, /obj/item/weapon/bedsheet)) if(washing.len < 5) if(state in list(1, 3)) user.drop_item() W.loc = src washing += W state = 3 else user << "You can't put the item in right now." else user << "The washing machine is full." else ..() update_icon() /obj/machinery/washing_machine/attack_hand(mob/user as mob) switch(state) if(1) state = 2 if(2) state = 1 for(var/atom/movable/O in washing) O.loc = src.loc washing.Cut() if(3) state = 4 if(4) state = 3 for(var/atom/movable/O in washing) O.loc = src.loc crayon = null washing.Cut() state = 1 if(5) user << "The [src] is busy." if(6) state = 7 if(7) if(gibs_ready) gibs_ready = 0 if(locate(/mob,washing)) var/mob/M = locate(/mob,washing) M.gib() for(var/atom/movable/O in washing) O.loc = src.loc crayon = null state = 1 washing.Cut() update_icon()