// A special tray for the service droid. Allow droid to pick up and drop items as if they were using the tray normally // Click on table to unload, click on item to load. Otherwise works identically to a tray. /obj/item/weapon/tray/robotray name = "RoboTray" desc = "An autoloading tray specialized for carrying refreshments." /obj/item/weapon/tray/robotray/afterattack(atom/target, mob/user as mob) if ( !target ) return if ( istype(target,/obj/item)) //pick up items, mostly copied from base tray pickup if ( !isturf(target.loc) ) // Don't load up stuff if it's inside a container or mob! return var turf/pickup = target.loc var addedSomething = 0 for(var/obj/item/I in pickup) if( I != src && !I.anchored && !istype(I, /obj/item/clothing/under) && !istype(I, /obj/item/clothing/suit) && !istype(I, /obj/item/projectile) ) var/add = 0 if(I.w_class == 1.0) add = 1 else if(I.w_class == 2.0) add = 3 else add = 5 if(calc_carry() + add >= max_carry) break I.loc = src carrying.Add(I) overlays += image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = 30 + I.layer) addedSomething = 1 if ( addedSomething ) user.visible_message("\blue [user] load some items onto their service tray.") return if ( isturf(target) || istype(target,/obj/structure/table) ) // Unload the tray! var foundtable = istype(target,/obj/structure/table/) if ( !foundtable ) //it must be a turf! for(var/obj/structure/table/T in target) foundtable = 1 break var turf/dropspot if ( !foundtable ) // don't unload things onto walls or other silly places. dropspot = user.loc else if ( isturf(target) ) // they clicked on a turf with a table in it dropspot = target else // they clicked on a table dropspot = target.loc overlays = null var droppedSomething = 0 for(var/obj/item/I in carrying) I.loc = dropspot carrying.Remove(I) droppedSomething = 1 if(!foundtable && isturf(dropspot)) // if no table, presume that the person just shittily dropped the tray on the ground and made a mess everywhere! spawn() for(var/i = 1, i <= rand(1,2), i++) if(I) step(I, pick(NORTH,SOUTH,EAST,WEST)) sleep(rand(2,4)) if ( droppedSomething ) if ( foundtable ) user.visible_message("\blue [user] unloads their service tray.") else user.visible_message("\blue [user] drops all the items on their tray.") return ..() // A special pen for service droids. Can be toggled to switch between normal writting mode, and paper rename mode // Allows service droids to rename paper items. /obj/item/weapon/pen/robopen desc = "A black ink printing attachment with a paper naming mode." name = "Printing Pen" var/mode = 1 /obj/item/weapon/pen/robopen/attack_self(mob/user as mob) playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) if (mode == 1) mode = 2 user << "Changed printing mode to 'Rename Paper'" return if (mode == 2) mode = 1 user << "Changed printing mode to 'Write Paper'" /obj/item/weapon/pen/robopen/proc/RenamePaper(mob/user as mob,obj/paper as obj) if ( !user || !paper ) return var/n_name = input(user, "What would you like to label the paper?", "Paper Labelling", null) as text if ( !user || !paper ) return n_name = copytext(n_name, 1, 32) if(( get_dist(user,paper) <= 1 && user.stat == 0)) paper.name = "paper[(n_name ? text("- '[n_name]'") : null)]" add_fingerprint(user) return