diff --git a/baystation12.dme b/baystation12.dme index bd4705e5d7c..adeb1dcc9e0 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -725,6 +725,7 @@ #include "code\game\objects\structures\displaycase.dm" #include "code\game\objects\structures\door_assembly.dm" #include "code\game\objects\structures\electricchair.dm" +#include "code\game\objects\structures\engicart.dm" #include "code\game\objects\structures\extinguisher.dm" #include "code\game\objects\structures\false_walls.dm" #include "code\game\objects\structures\flora.dm" diff --git a/code/game/objects/structures/engicart.dm b/code/game/objects/structures/engicart.dm new file mode 100644 index 00000000000..ed96aa27e08 --- /dev/null +++ b/code/game/objects/structures/engicart.dm @@ -0,0 +1,173 @@ +/obj/structure/engineeringcart + name = "engineering cart" + desc = "A cart for storing engineering items." + icon = 'icons/obj/engicart.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/stack/sheet/glass/myglass = null + var/obj/item/stack/sheet/metal/mymetal = null + var/obj/item/stack/sheet/plasteel/myplasteel = null + var/obj/item/device/flashlight/myflashlight = null + var/obj/item/weapon/storage/toolbox/mechanical/mybluetoolbox = null + var/obj/item/weapon/storage/toolbox/electrical/myyellowtoolbox = null + var/obj/item/weapon/storage/toolbox/emergency/myredtoolbox = null + var/obj/item/taperoll/engineering/myengitape = null + +/obj/structure/engineeringcart/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/engineeringcart/attackby(obj/item/I, mob/user) + var/fail_msg = "There is already one of those in [src]." + if(istype(I, /obj/item/stack/sheet/glass)) + if(!myglass) + put_in_cart(I, user) + myglass=I + update_icon() + else + user << fail_msg + else if(istype(I, /obj/item/stack/sheet/metal)) + if(!mymetal) + put_in_cart(I, user) + mymetal=I + update_icon() + else + user << fail_msg + else if(istype(I, /obj/item/stack/sheet/plasteel)) + if(!myplasteel) + put_in_cart(I, user) + myplasteel=I + update_icon() + else + user << fail_msg + else if(istype(I, /obj/item/device/flashlight)) + if(!myflashlight) + put_in_cart(I, user) + myflashlight=I + update_icon() + else + user << fail_msg + else if(istype(I, /obj/item/weapon/storage/toolbox/mechanical)) + if(!mybluetoolbox) + put_in_cart(I, user) + mybluetoolbox=I + update_icon() + else + user << fail_msg + else if(istype(I, /obj/item/weapon/storage/toolbox/electrical)) + if(!myyellowtoolbox) + put_in_cart(I, user) + myyellowtoolbox=I + update_icon() + else + user << fail_msg + else if(istype(I, /obj/item/weapon/storage/toolbox)) + if(!myredtoolbox) + put_in_cart(I, user) + myredtoolbox=I + update_icon() + else + user << fail_msg + else if(istype(I, /obj/item/taperoll/engineering/)) + if(!myengitape) + put_in_cart(I, user) + myengitape=I + update_icon() + else + user << fail_msg + +/obj/structure/engineeringcart/attack_hand(mob/user) + user.set_machine(src) + var/dat + if(myglass) + dat += "[myglass.name]
" + if(mymetal) + dat += "[mymetal.name]
" + if(myplasteel) + dat += "[myplasteel.name]
" + if(myflashlight) + dat += "[myflashlight.name]
" + if(mybluetoolbox) + dat += "[mybluetoolbox.name]
" + if(myredtoolbox) + dat += "[myredtoolbox.name]
" + if(myyellowtoolbox) + dat += "[myyellowtoolbox.name]
" + if(myengitape) + dat += "[myengitape.name]
" + var/datum/browser/popup = new(user, "engicart", name, 240, 160) + popup.set_content(dat) + popup.open() +/obj/structure/engineeringcart/Topic(href, href_list) + if(!in_range(src, usr)) + return + if(!isliving(usr)) + return + var/mob/living/user = usr + if(href_list["glass"]) + if(myglass) + user.put_in_hands(myglass) + user << "You take [myglass] from [src]." + myglass = null + if(href_list["metal"]) + if(mymetal) + user.put_in_hands(mymetal) + user << "You take [mymetal] from [src]." + mymetal = null + if(href_list["plasteel"]) + if(myplasteel) + user.put_in_hands(myplasteel) + user << "You take [myplasteel] from [src]." + myplasteel = null + if(href_list["flashlight"]) + if(myflashlight) + user.put_in_hands(myflashlight) + user << "You take [myflashlight] from [src]." + myflashlight = null + if(href_list["bluetoolbox"]) + if(mybluetoolbox) + user.put_in_hands(mybluetoolbox) + user << "You take [mybluetoolbox] from [src]." + mybluetoolbox = null + if(href_list["redtoolbox"]) + if(myredtoolbox) + user.put_in_hands(myredtoolbox) + user << "You take [myredtoolbox] from [src]." + myredtoolbox = null + if(href_list["yellowtoolbox"]) + if(myyellowtoolbox) + user.put_in_hands(myyellowtoolbox) + user << "You take [myyellowtoolbox] from [src]." + myyellowtoolbox = null + if(href_list["engitape"]) + if(myengitape) + user.put_in_hands(myengitape) + user << "You take [myengitape] from [src]." + myengitape = null + + update_icon() + updateUsrDialog() +/obj/structure/engineeringcart/update_icon() + overlays = null + if(myglass) + overlays += "cart_glass" + if(mymetal) + overlays += "cart_metal" + if(myplasteel) + overlays += "cart_plasteel" + if(myflashlight) + overlays += "cart_flashlight" + if(mybluetoolbox) + overlays += "cart_bluetoolbox" + if(myredtoolbox) + overlays += "cart_redtoolbox" + if(myyellowtoolbox) + overlays += "cart_yellowtoolbox" + if(myengitape) + overlays += "cart_engitape" diff --git a/icons/obj/engicart.dmi b/icons/obj/engicart.dmi new file mode 100644 index 00000000000..3e171fc173e Binary files /dev/null and b/icons/obj/engicart.dmi differ