From c896fd6fcb2cacb872ba5094e6a86fba2cbfc841 Mon Sep 17 00:00:00 2001 From: GauHelldragon Date: Tue, 27 Nov 2012 05:47:43 -0800 Subject: [PATCH 1/7] Added feedback messages for when service bot auto-refills their drink containers. Tweaked battery charge usage for refilling, and fixed bug where it would not refill if you empty it completely. --- .../reagents/reagent_containers/food/drinks.dm | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 8471568c3ec..020efe4a313 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -93,15 +93,27 @@ user << "\red [target] is full." return + + + var/datum/reagent/refill + var/datum/reagent/refillName + if(isrobot(user)) + refill = reagents.get_master_reagent_id() + refillName = reagents.get_master_reagent_name() + var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) user << "\blue You transfer [trans] units of the solution to [target]." if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell var/mob/living/silicon/robot/bro = user - bro.cell.use(30) - var/refill = reagents.get_master_reagent_id() - spawn(600) + var/chargeAmount = max(30,4*trans) + bro.cell.use(chargeAmount) + user << "Now synthesizing [trans] units of [refillName]..." + + + spawn(300) reagents.add_reagent(refill, trans) + user << "Cyborg [src] refilled." return From 5e74a9803c4e4242f4a796eaae8aea1328c3dc5d Mon Sep 17 00:00:00 2001 From: GauHelldragon Date: Tue, 27 Nov 2012 15:16:59 -0800 Subject: [PATCH 2/7] Modified Service Bot's Tray to actually be useful Service Borg's tray now can load and unload items. --- .../mob/living/silicon/robot/robot_items.dm | 79 +++++++++++++++++++ .../mob/living/silicon/robot/robot_modules.dm | 2 +- 2 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 code/modules/mob/living/silicon/robot/robot_items.dm diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm new file mode 100644 index 00000000000..5d121d909e4 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -0,0 +1,79 @@ +// 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 specilized made 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 ..() + + diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 2817ab49579..40ccc5a96dd 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -182,7 +182,7 @@ L.lit = 1 src.modules += L - src.modules += new /obj/item/weapon/tray(src) + src.modules += new /obj/item/weapon/tray/robotray(src) src.modules += new /obj/item/weapon/reagent_containers/food/drinks/shaker(src) src.emag = new /obj/item/weapon/reagent_containers/food/drinks/beer(src) From 09f1d74566c8949bcb6b731dea6b8c7c8fb826f4 Mon Sep 17 00:00:00 2001 From: GauHelldragon Date: Tue, 27 Nov 2012 15:24:44 -0800 Subject: [PATCH 3/7] Fixed typo in tray description --- code/modules/mob/living/silicon/robot/robot_items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index 5d121d909e4..cfaaac8a608 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -3,7 +3,7 @@ /obj/item/weapon/tray/robotray name = "RoboTray" - desc = "An autoloading tray specilized made for carrying refreshments." + desc = "An autoloading tray specialized for carrying refreshments." /obj/item/weapon/tray/robotray/afterattack(atom/target, mob/user as mob) if ( !target ) From 2c47afc22e0d469fddf1f59e09627e528a1d7029 Mon Sep 17 00:00:00 2001 From: GauHelldragon Date: Wed, 28 Nov 2012 03:03:20 -0800 Subject: [PATCH 4/7] Roboitems - Printing Pen Allows service borg to rename paper. Click on pen to toggle between writing and renaming mode. --- .../mob/living/silicon/robot/robot_items.dm | 30 +++++++++++++++++++ .../mob/living/silicon/robot/robot_modules.dm | 2 +- code/modules/paperwork/paper.dm | 5 +++- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index cfaaac8a608..2dd33fd5f6d 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -76,4 +76,34 @@ 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 diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 40ccc5a96dd..7f97fa87bc9 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -170,7 +170,7 @@ ..() src.modules += new /obj/item/weapon/reagent_containers/food/drinks/beer(src) src.modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src) - src.modules += new /obj/item/weapon/pen(src) + src.modules += new /obj/item/weapon/pen/robopen(src) var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src) M.matter = 30 diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index c007425c9b8..ccaf59f8d29 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -264,7 +264,10 @@ clown = 1 if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) - user << browse("[name][info_links][stamps]", "window=[name]") + if ( istype(P, /obj/item/weapon/pen/robopen) && P:mode == 2 ) + P:RenamePaper(user,src) + else + user << browse("[name][info_links][stamps]", "window=[name]") //openhelp(user) return else if(istype(P, /obj/item/weapon/stamp)) From 17440ff756db9a08edd73c22cdde9ff95f412399 Mon Sep 17 00:00:00 2001 From: GauHelldragon Date: Wed, 28 Nov 2012 12:37:27 -0800 Subject: [PATCH 5/7] Fixed blood regen bug Nutriment is stored in reagents. Vessel is only for blood. --- code/modules/mob/living/carbon/human/life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index c4a5ab3fa35..1ef8ed18e28 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -140,7 +140,7 @@ if(D.data["donor"] == src) B = D break - var/datum/reagent/nutriment/F = locate() in vessel.reagent_list + var/datum/reagent/nutriment/F = locate() in reagents.reagent_list if(F != null) if(F.volume >= 1) // nutriment speeds it up quite a bit From 06ae2ded6f46b38a73f8ebe623f5bf6b297795ce Mon Sep 17 00:00:00 2001 From: GauHelldragon Date: Thu, 29 Nov 2012 12:10:30 -0800 Subject: [PATCH 6/7] Change - Robotray only picks up food/drinks/condiments --- code/modules/mob/living/silicon/robot/robot_items.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index 2dd33fd5f6d..a1db309bc9e 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -15,7 +15,9 @@ var addedSomething = 0 - for(var/obj/item/I in pickup) + for(var/obj/item/weapon/reagent_containers/food/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) From 01828f8a02fabe1e460e0d6184f55943b1decdea Mon Sep 17 00:00:00 2001 From: GauHelldragon Date: Thu, 29 Nov 2012 12:21:38 -0800 Subject: [PATCH 7/7] Added more comments --- .../mob/living/silicon/robot/robot_items.dm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index a1db309bc9e..4b66af1f7d5 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -1,5 +1,6 @@ // 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. +// Unlike the base item "tray", robotrays ONLY pick up food, drinks and condiments. /obj/item/weapon/tray/robotray name = "RoboTray" @@ -8,7 +9,9 @@ /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 + // pick up items, mostly copied from base tray pickup proc + // see code\game\objects\items\weapons\kitchen.dm line 241 + if ( istype(target,/obj/item)) if ( !isturf(target.loc) ) // Don't load up stuff if it's inside a container or mob! return var turf/pickup = target.loc @@ -38,8 +41,10 @@ return + // Unloads the tray, copied from base item's proc dropped() and altered + // see code\game\objects\items\weapons\kitchen.dm line 263 - if ( isturf(target) || istype(target,/obj/structure/table) ) // Unload the tray! + if ( isturf(target) || istype(target,/obj/structure/table) ) var foundtable = istype(target,/obj/structure/table/) if ( !foundtable ) //it must be a turf! for(var/obj/structure/table/T in target) @@ -78,6 +83,9 @@ 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. @@ -96,6 +104,9 @@ mode = 1 user << "Changed printing mode to 'Write Paper'" +// Copied over from paper's rename verb +// see code\modules\paperwork\paper.dm line 62 + /obj/item/weapon/pen/robopen/proc/RenamePaper(mob/user as mob,obj/paper as obj) if ( !user || !paper ) return