mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Allows service borg to rename paper. Click on pen to toggle between writing and renaming mode.
110 lines
3.4 KiB
Plaintext
110 lines
3.4 KiB
Plaintext
// 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
|
|
|