diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 15dfc43a7db..63836e9ecc6 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -188,6 +188,11 @@ //Can you use it? +/obj/item/device/lightreplacer/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) + J.put_in_cart(src, user) + J.myreplacer = src + J.update_icon() + /obj/item/device/lightreplacer/proc/CanUse(var/mob/living/user) src.add_fingerprint(user) //Not sure what else to check for. Maybe if clumsy? diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index eef11d00953..44dd498c426 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -53,4 +53,9 @@ obj/item/weapon/mop/proc/clean(turf/simulated/A as turf) spawn(5) reagents.clear_reagents() mopcount = 0 - return \ No newline at end of file + return + +/obj/item/weapon/mop/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) + J.put_in_cart(src, user) + J.mymop=src + J.update_icon() \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index a591567f701..bde3d2d5550 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -47,6 +47,11 @@ icon_state = "trashbag2" else icon_state = "trashbag3" +/obj/item/weapon/storage/bag/trash/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) + J.put_in_cart(src, user) + J.mybag=src + J.update_icon() + // ----------------------------- // Plastic Bag diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index ce96dc510a4..15096c49b22 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -400,4 +400,164 @@ /obj/item/key/ambulance name = "ambulance key" desc = "A keyring with a small steel key, and tag with a red cross on it." - icon_state = "keydoc" \ No newline at end of file + icon_state = "keydoc" + +//TG style Janicart + +/obj/structure/janitorialcart + name = "janitorial cart" + desc = "This is the alpha and omega of sanitation." + icon = 'icons/obj/janitor.dmi' + icon_state = "cart" + anchored = 0 + density = 1 + flags = OPENCONTAINER + //copypaste sorry + var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite + var/obj/item/weapon/storage/bag/trash/mybag = null + var/obj/item/weapon/mop/mymop = null + var/obj/item/weapon/reagent_containers/spray/cleaner/myspray = null + var/obj/item/device/lightreplacer/myreplacer = null + var/signs = 0 + var/const/max_signs = 4 + + +/obj/structure/janitorialcart/New() + create_reagents(100) + + +/obj/structure/janitorialcart/proc/wet_mop(obj/item/weapon/mop, mob/user) + if(reagents.total_volume < 1) + user << "[src] is out of water!" + else + reagents.trans_to(mop, 5) // + user << "You wet [mop] in [src]." + playsound(loc, 'sound/effects/slosh.ogg', 25, 1) + +/obj/structure/janitorialcart/proc/put_in_cart(obj/item/I, mob/user) + user.drop_item() + I.loc = src + updateUsrDialog() + user << "You put [I] into [src]." + return + + +/obj/structure/janitorialcart/attackby(obj/item/I, mob/user) + var/fail_msg = "There is already one of those in [src]." + + if(istype(I, /obj/item/weapon/mop)) + var/obj/item/weapon/mop/m=I + if(m.reagents.total_volume < m.reagents.maximum_volume) + wet_mop(m, user) + return + if(!mymop) + m.janicart_insert(user, src) + else + user << fail_msg + + else if(istype(I, /obj/item/weapon/storage/bag/trash)) + if(!mybag) + var/obj/item/weapon/storage/bag/trash/t=I + t.janicart_insert(user, src) + else + user << fail_msg + else if(istype(I, /obj/item/weapon/reagent_containers/spray/cleaner)) + if(!myspray) + put_in_cart(I, user) + myspray=I + update_icon() + else + user << fail_msg + else if(istype(I, /obj/item/device/lightreplacer)) + if(!myreplacer) + var/obj/item/device/lightreplacer/l=I + l.janicart_insert(user,src) + else + user << fail_msg + else if(istype(I, /obj/item/weapon/caution)) + if(signs < max_signs) + put_in_cart(I, user) + signs++ + update_icon() + else + user << "[src] can't hold any more signs." + else if(mybag) + mybag.attackby(I, user) + else if(istype(I, /obj/item/weapon/crowbar)) + user.visible_message("[user] begins to empty the contents of [src].") + if(do_after(user, 30)) + usr << "You empty the contents of [src]'s bucket onto the floor." + reagents.reaction(src.loc) + src.reagents.clear_reagents() + +/obj/structure/janitorialcart/attack_hand(mob/user) + user.set_machine(src) + var/dat + if(mybag) + dat += "[mybag.name]
" + if(mymop) + dat += "[mymop.name]
" + if(myspray) + dat += "[myspray.name]
" + if(myreplacer) + dat += "[myreplacer.name]
" + if(signs) + dat += "[signs] sign\s
" + var/datum/browser/popup = new(user, "janicart", name, 240, 160) + popup.set_content(dat) + popup.open() + + +/obj/structure/janitorialcart/Topic(href, href_list) + if(!in_range(src, usr)) + return + if(!isliving(usr)) + return + var/mob/living/user = usr + if(href_list["garbage"]) + if(mybag) + user.put_in_hands(mybag) + user << "You take [mybag] from [src]." + mybag = null + if(href_list["mop"]) + if(mymop) + user.put_in_hands(mymop) + user << "You take [mymop] from [src]." + mymop = null + if(href_list["spray"]) + if(myspray) + user.put_in_hands(myspray) + user << "You take [myspray] from [src]." + myspray = null + if(href_list["replacer"]) + if(myreplacer) + user.put_in_hands(myreplacer) + user << "You take [myreplacer] from [src]." + myreplacer = null + if(href_list["sign"]) + if(signs) + var/obj/item/weapon/caution/Sign = locate() in src + if(Sign) + user.put_in_hands(Sign) + user << "You take \a [Sign] from [src]." + signs-- + else + WARNING("Signs ([signs]) didn't match contents") + signs = 0 + + update_icon() + updateUsrDialog() + + +/obj/structure/janitorialcart/update_icon() + overlays = null + if(mybag) + overlays += "cart_garbage" + if(mymop) + overlays += "cart_mop" + if(myspray) + overlays += "cart_spray" + if(myreplacer) + overlays += "cart_replacer" + if(signs) + overlays += "cart_sign[signs]" \ No newline at end of file diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi index 92a8c6c528f..57314ee7f05 100644 Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ