From 2f9efabfdb736ef47983aa263a7bc4fce1f86a44 Mon Sep 17 00:00:00 2001 From: skoglol Date: Thu, 1 Nov 2018 18:40:25 +0100 Subject: [PATCH 1/8] Monkey recycler linked to console. --- .../kitchen_machinery/monkeyrecycler.dm | 31 ++++++++++++------- .../research/xenobiology/xenobio_camera.dm | 15 ++++++++- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index c25cb2288f8..cf9f724968c 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -1,6 +1,8 @@ +GLOBAL_DATUM(monkey_recycler_default, /obj/machinery/monkey_recycler) + /obj/machinery/monkey_recycler name = "monkey recycler" - desc = "A machine used for recycling dead monkeys into monkey cubes. It currently produces 1 cube for every 5 monkeys inserted." // except it literally never does + desc = "A machine used for recycling dead monkeys into monkey cubes. It currently produces 1 cube for every 5 monkeys inserted." icon = 'icons/obj/kitchen.dmi' icon_state = "grinder" layer = BELOW_OBJ_LAYER @@ -10,19 +12,20 @@ active_power_usage = 50 circuit = /obj/item/circuitboard/machine/monkey_recycler var/grinded = 0 - var/required_grind = 5 - var/cube_production = 1 + var/cube_production = 0.2 + +/obj/machinery/monkey_recycler/Initialize(mapload) + . = ..() + if (!GLOB.monkey_recycler_default && mapload && is_station_level(z)) + GLOB.monkey_recycler_default = src -/obj/machinery/monkey_recycler/RefreshParts() - var/req_grind = 5 - var/cubes_made = 1 +/obj/machinery/monkey_recycler/RefreshParts() //Ranges from 0.2 to 0.8 per monkey recycled + cube_production = 0 for(var/obj/item/stock_parts/manipulator/B in component_parts) - req_grind -= B.rating + cube_production += B.rating * 0.1 for(var/obj/item/stock_parts/matter_bin/M in component_parts) - cubes_made = M.rating - cube_production = cubes_made - required_grind = req_grind - src.desc = "A machine used for recycling dead monkeys into monkey cubes. It currently produces [cubes_made] cube(s) for every [required_grind] monkey(s) inserted." + cube_production += M.rating * 0.1 + src.desc = "A machine used for recycling dead monkeys into monkey cubes. It currently produces [cube_production] cube(s) for every monkey inserted." /obj/machinery/monkey_recycler/attackby(obj/item/O, mob/user, params) if(default_deconstruction_screwdriver(user, "grinder_open", "grinder", O)) @@ -78,3 +81,9 @@ to_chat(user, "The machine's display flashes that it has [grinded] monkeys worth of material left.") else to_chat(user, "The machine needs at least [required_grind] monkey(s) worth of material to produce a monkey cube. It only has [grinded].") + +/obj/machinery/monkey_recycler/multitool_act(mob/living/user, obj/item/multitool/I) + if (istype(I)) + to_chat(user, "You log [src] in the multitool's buffer.") + I.buffer = src + return TRUE diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index 133eb5fada8..461cb35db8d 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -31,6 +31,7 @@ var/datum/component/redirect/listener + var/obj/machinery/monkey_recycler var/list/stored_slimes var/obj/item/slimepotion/slime/current_potion var/max_slimes = 5 @@ -51,6 +52,8 @@ potion_action = new stored_slimes = list() listener = AddComponent(/datum/component/redirect, list(COMSIG_ATOM_CONTENTS_DEL = CALLBACK(src, .proc/on_contents_del))) + if(!monkey_recycler) + monkey_recycler = GLOB.monkey_recycler_default /obj/machinery/computer/camera_advanced/xenobio/Destroy() stored_slimes = null @@ -136,6 +139,12 @@ return ..() +/obj/machinery/computer/camera_advanced/xenobio/multitool_act(mob/living/user, obj/item/multitool/I) + if (istype(I) && istype(I.buffer,/obj/machinery/monkey_recycler)) + to_chat(user, "You link [src] with [I.buffer] in [I] buffer.") + monkey_recycler = I.buffer + return TRUE + /datum/action/innate/slime_place name = "Place Slimes" icon_icon = 'icons/mob/actions/actions_silicon.dmi' @@ -217,11 +226,15 @@ var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control var/obj/machinery/computer/camera_advanced/xenobio/X = target + if(!X.monkey_recycler) + to_chat(owner, "There is no connected monkey recycler.") + return if(GLOB.cameranet.checkTurfVis(remote_eye.loc)) for(var/mob/living/carbon/monkey/M in remote_eye.loc) if(M.stat) M.visible_message("[M] vanishes as [M.p_theyre()] reclaimed for recycling!") - X.monkeys = round(X.monkeys + 0.2,0.1) + X.monkey_recycler.use_power(500) + X.monkeys += X.monkey_recycler.cube_production to_chat(owner, "[X] now has [X.monkeys] monkeys available.") qdel(M) else From 91e8bea23b905ef9820514a84dde55fabab0daa6 Mon Sep 17 00:00:00 2001 From: skoglol Date: Thu, 1 Nov 2018 21:45:51 +0100 Subject: [PATCH 2/8] Monkey recyclers connected to xenobio consoles. --- .../kitchen_machinery/monkeyrecycler.dm | 30 ++++++++++++------- .../research/xenobiology/xenobio_camera.dm | 26 +++++++++------- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index cf9f724968c..5cd048da8a2 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -11,21 +11,31 @@ GLOBAL_DATUM(monkey_recycler_default, /obj/machinery/monkey_recycler) idle_power_usage = 5 active_power_usage = 50 circuit = /obj/item/circuitboard/machine/monkey_recycler - var/grinded = 0 + var/stored_matter = 0 var/cube_production = 0.2 + var/obj/machinery/computer/camera_advanced/xenobio/connected = list() /obj/machinery/monkey_recycler/Initialize(mapload) . = ..() if (!GLOB.monkey_recycler_default && mapload && is_station_level(z)) GLOB.monkey_recycler_default = src +/obj/machinery/monkey_recycler/Destroy() + if (GLOB.monkey_recycler_default == src) + GLOB.monkey_recycler_default = null + for(var/C in connected) + var/obj/machinery/computer/camera_advanced/xenobio/console = C + console.connected_recycler = null + + return ..() + /obj/machinery/monkey_recycler/RefreshParts() //Ranges from 0.2 to 0.8 per monkey recycled cube_production = 0 for(var/obj/item/stock_parts/manipulator/B in component_parts) cube_production += B.rating * 0.1 for(var/obj/item/stock_parts/matter_bin/M in component_parts) cube_production += M.rating * 0.1 - src.desc = "A machine used for recycling dead monkeys into monkey cubes. It currently produces [cube_production] cube(s) for every monkey inserted." + src.desc = "A machine used for recycling dead monkeys into monkey cubes. It currently produces [cube_production] cubes for every monkey inserted." /obj/machinery/monkey_recycler/attackby(obj/item/O, mob/user, params) if(default_deconstruction_screwdriver(user, "grinder_open", "grinder", O)) @@ -67,20 +77,20 @@ GLOBAL_DATUM(monkey_recycler_default, /obj/machinery/monkey_recycler) var/offset = prob(50) ? -2 : 2 animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = 200) //start shaking use_power(500) - grinded++ + stored_matter += cube_production addtimer(VARSET_CALLBACK(src, pixel_x, initial(pixel_x))) - addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, user, "The machine now has [grinded] monkey\s worth of material stored.")) + addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, user, "The machine now has [stored_matter] monkey\s worth of material stored.")) /obj/machinery/monkey_recycler/interact(mob/user) - if(grinded >= required_grind) - to_chat(user, "The machine hisses loudly as it condenses the grinded monkey meat. After a moment, it dispenses a brand new monkey cube.") + if(stored_matter >= 1) + to_chat(user, "The machine hisses loudly as it condenses the ground monkey meat. After a moment, it dispenses a brand new monkey cube.") playsound(src.loc, 'sound/machines/hiss.ogg', 50, 1) - grinded -= required_grind - for(var/i = 0, i < cube_production, i++) + for(var/i in 1 to FLOOR(stored_matter, 1)) new /obj/item/reagent_containers/food/snacks/monkeycube(src.loc) - to_chat(user, "The machine's display flashes that it has [grinded] monkeys worth of material left.") + stored_matter-- + to_chat(user, "The machine's display flashes that it has [stored_matter] monkeys worth of material left.") else - to_chat(user, "The machine needs at least [required_grind] monkey(s) worth of material to produce a monkey cube. It only has [grinded].") + to_chat(user, "The machine needs at least 1 monkey worth of material to produce a monkey cube. It currently has [stored_matter].") /obj/machinery/monkey_recycler/multitool_act(mob/living/user, obj/item/multitool/I) if (istype(I)) diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index 461cb35db8d..bdf30e30391 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -31,7 +31,7 @@ var/datum/component/redirect/listener - var/obj/machinery/monkey_recycler + var/obj/machinery/monkey_recycler/connected_recycler var/list/stored_slimes var/obj/item/slimepotion/slime/current_potion var/max_slimes = 5 @@ -52,8 +52,8 @@ potion_action = new stored_slimes = list() listener = AddComponent(/datum/component/redirect, list(COMSIG_ATOM_CONTENTS_DEL = CALLBACK(src, .proc/on_contents_del))) - if(!monkey_recycler) - monkey_recycler = GLOB.monkey_recycler_default + connected_recycler = GLOB.monkey_recycler_default + connected_recycler.connected += src /obj/machinery/computer/camera_advanced/xenobio/Destroy() stored_slimes = null @@ -142,7 +142,8 @@ /obj/machinery/computer/camera_advanced/xenobio/multitool_act(mob/living/user, obj/item/multitool/I) if (istype(I) && istype(I.buffer,/obj/machinery/monkey_recycler)) to_chat(user, "You link [src] with [I.buffer] in [I] buffer.") - monkey_recycler = I.buffer + connected_recycler = I.buffer + connected_recycler.connected += src return TRUE /datum/action/innate/slime_place @@ -208,8 +209,10 @@ var/mob/living/carbon/monkey/food = new /mob/living/carbon/monkey(remote_eye.loc, TRUE, owner) if (!QDELETED(food)) food.LAssailant = C - X.monkeys -- - to_chat(owner, "[X] now has [X.monkeys] monkeys left.") + X.monkeys-- + to_chat(owner, "[X] now has [X.monkeys] monkeys stored.") + else + to_chat(owner, "[X] needs to have at least 1 monkey stored. Currently has [X.monkeys] monkeys stored.") else to_chat(owner, "Target is not near a camera. Cannot proceed.") @@ -225,18 +228,19 @@ var/mob/living/C = owner var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control var/obj/machinery/computer/camera_advanced/xenobio/X = target + var/obj/machinery/monkey_recycler/recycler = X.connected_recycler - if(!X.monkey_recycler) - to_chat(owner, "There is no connected monkey recycler.") + if(!recycler) + to_chat(owner, "There is no connected monkey recycler. Use a multitool to link one.") return if(GLOB.cameranet.checkTurfVis(remote_eye.loc)) for(var/mob/living/carbon/monkey/M in remote_eye.loc) if(M.stat) M.visible_message("[M] vanishes as [M.p_theyre()] reclaimed for recycling!") - X.monkey_recycler.use_power(500) - X.monkeys += X.monkey_recycler.cube_production - to_chat(owner, "[X] now has [X.monkeys] monkeys available.") + recycler.use_power(500) + X.monkeys += recycler.cube_production qdel(M) + to_chat(owner, "[X] now has [X.monkeys] monkeys available.") else to_chat(owner, "Target is not near a camera. Cannot proceed.") From 7f39bcc77bb38f6a9ce411b2d459fe04540be70f Mon Sep 17 00:00:00 2001 From: skoglol Date: Thu, 1 Nov 2018 21:58:52 +0100 Subject: [PATCH 3/8] Fixed some text. --- .../modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index 5cd048da8a2..fba16279c07 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -2,7 +2,7 @@ GLOBAL_DATUM(monkey_recycler_default, /obj/machinery/monkey_recycler) /obj/machinery/monkey_recycler name = "monkey recycler" - desc = "A machine used for recycling dead monkeys into monkey cubes. It currently produces 1 cube for every 5 monkeys inserted." + desc = "A machine used for recycling dead monkeys into monkey cubes. It currently produces 0.2 cubes for every monkey inserted." icon = 'icons/obj/kitchen.dmi' icon_state = "grinder" layer = BELOW_OBJ_LAYER From 87c3d8320b30621c76150d29b8d1e1f64b820b62 Mon Sep 17 00:00:00 2001 From: skoglol Date: Fri, 2 Nov 2018 17:41:42 +0100 Subject: [PATCH 4/8] Changed list var, hopefully eliminated rounding error. --- .../food_and_drinks/kitchen_machinery/monkeyrecycler.dm | 2 +- code/modules/research/xenobiology/xenobio_camera.dm | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index fba16279c07..faa4de1f494 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -13,7 +13,7 @@ GLOBAL_DATUM(monkey_recycler_default, /obj/machinery/monkey_recycler) circuit = /obj/item/circuitboard/machine/monkey_recycler var/stored_matter = 0 var/cube_production = 0.2 - var/obj/machinery/computer/camera_advanced/xenobio/connected = list() + var/list/connected = list() //Keeps track of connected xenobio consoles, for deletion in /Destroy() /obj/machinery/monkey_recycler/Initialize(mapload) . = ..() diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index bdf30e30391..ef8459ab94c 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -210,10 +210,11 @@ if (!QDELETED(food)) food.LAssailant = C X.monkeys-- + X.monkeys = FLOOR(x.monkeys, 0.1) //Prevents rounding errors to_chat(owner, "[X] now has [X.monkeys] monkeys stored.") else to_chat(owner, "[X] needs to have at least 1 monkey stored. Currently has [X.monkeys] monkeys stored.") - else + else to_chat(owner, "Target is not near a camera. Cannot proceed.") @@ -239,6 +240,7 @@ M.visible_message("[M] vanishes as [M.p_theyre()] reclaimed for recycling!") recycler.use_power(500) X.monkeys += recycler.cube_production + X.monkeys = FLOOR(x.monkeys, 0.1) //Prevents rounding errors qdel(M) to_chat(owner, "[X] now has [X.monkeys] monkeys available.") else From f966dc05bb62dbb65fdad1f4cfdd062ea0d07baa Mon Sep 17 00:00:00 2001 From: skoglol Date: Fri, 2 Nov 2018 17:48:24 +0100 Subject: [PATCH 5/8] Compile before pushing you dumdum. --- code/modules/research/xenobiology/xenobio_camera.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index ef8459ab94c..4814eb594c9 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -210,7 +210,7 @@ if (!QDELETED(food)) food.LAssailant = C X.monkeys-- - X.monkeys = FLOOR(x.monkeys, 0.1) //Prevents rounding errors + X.monkeys = FLOOR(X.monkeys, 0.1) //Prevents rounding errors to_chat(owner, "[X] now has [X.monkeys] monkeys stored.") else to_chat(owner, "[X] needs to have at least 1 monkey stored. Currently has [X.monkeys] monkeys stored.") @@ -240,7 +240,7 @@ M.visible_message("[M] vanishes as [M.p_theyre()] reclaimed for recycling!") recycler.use_power(500) X.monkeys += recycler.cube_production - X.monkeys = FLOOR(x.monkeys, 0.1) //Prevents rounding errors + X.monkeys = FLOOR(X.monkeys, 0.1) //Prevents rounding errors qdel(M) to_chat(owner, "[X] now has [X.monkeys] monkeys available.") else From 02f642c7688bb0d54523ff058288e364e0bdfdc0 Mon Sep 17 00:00:00 2001 From: skoglol Date: Mon, 5 Nov 2018 21:28:22 +0100 Subject: [PATCH 6/8] replaced floor() with round() --- code/modules/research/xenobiology/xenobio_camera.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index 4814eb594c9..1565296bb55 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -210,7 +210,7 @@ if (!QDELETED(food)) food.LAssailant = C X.monkeys-- - X.monkeys = FLOOR(X.monkeys, 0.1) //Prevents rounding errors + X.monkeys = round(X.monkeys, 0.1) //Prevents rounding errors to_chat(owner, "[X] now has [X.monkeys] monkeys stored.") else to_chat(owner, "[X] needs to have at least 1 monkey stored. Currently has [X.monkeys] monkeys stored.") @@ -240,7 +240,7 @@ M.visible_message("[M] vanishes as [M.p_theyre()] reclaimed for recycling!") recycler.use_power(500) X.monkeys += recycler.cube_production - X.monkeys = FLOOR(X.monkeys, 0.1) //Prevents rounding errors + X.monkeys = round(X.monkeys, 0.1) //Prevents rounding errors qdel(M) to_chat(owner, "[X] now has [X.monkeys] monkeys available.") else From 45372a2600eb695a251a5d90514ae9340069e7b8 Mon Sep 17 00:00:00 2001 From: skoglol Date: Sat, 1 Dec 2018 05:25:05 +0100 Subject: [PATCH 7/8] console checks that area matches when initializing. --- .../kitchen_machinery/monkeyrecycler.dm | 16 +++++++--------- .../research/xenobiology/xenobio_camera.dm | 6 ++++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index 7b70a10593f..f22b30379bb 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -1,4 +1,4 @@ -GLOBAL_DATUM(monkey_recycler_default, /obj/machinery/monkey_recycler) +GLOBAL_LIST_EMPTY(monkey_recyclers) /obj/machinery/monkey_recycler name = "monkey recycler" @@ -17,16 +17,14 @@ GLOBAL_DATUM(monkey_recycler_default, /obj/machinery/monkey_recycler) /obj/machinery/monkey_recycler/Initialize(mapload) . = ..() - if (!GLOB.monkey_recycler_default && mapload && is_station_level(z)) - GLOB.monkey_recycler_default = src + if (mapload) + GLOB.monkey_recyclers += src /obj/machinery/monkey_recycler/Destroy() - if (GLOB.monkey_recycler_default == src) - GLOB.monkey_recycler_default = null - for(var/C in connected) - var/obj/machinery/computer/camera_advanced/xenobio/console = C + if(src in GLOB.monkey_recyclers) + GLOB.monkey_recyclers -= src + for(var/obj/machinery/computer/camera_advanced/xenobio/console in connected) console.connected_recycler = null - return ..() /obj/machinery/monkey_recycler/RefreshParts() //Ranges from 0.2 to 0.8 per monkey recycled @@ -97,7 +95,7 @@ GLOBAL_DATUM(monkey_recycler_default, /obj/machinery/monkey_recycler) to_chat(user, "The machine needs at least 1 monkey worth of material to produce a monkey cube. It currently has [stored_matter].") /obj/machinery/monkey_recycler/multitool_act(mob/living/user, obj/item/multitool/I) - if (istype(I)) + if(istype(I)) to_chat(user, "You log [src] in the multitool's buffer.") I.buffer = src return TRUE diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index 1565296bb55..e97218ade75 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -52,8 +52,10 @@ potion_action = new stored_slimes = list() listener = AddComponent(/datum/component/redirect, list(COMSIG_ATOM_CONTENTS_DEL = CALLBACK(src, .proc/on_contents_del))) - connected_recycler = GLOB.monkey_recycler_default - connected_recycler.connected += src + for(var/obj/machinery/monkey_recycler/recycler in GLOB.monkey_recyclers) + if(get_area(recycler.loc) == get_area(loc)) + connected_recycler = recycler + connected_recycler.connected += src /obj/machinery/computer/camera_advanced/xenobio/Destroy() stored_slimes = null From ec390a26577fa933f9ebe0857e682eeea97ba6ff Mon Sep 17 00:00:00 2001 From: skoglol Date: Sun, 2 Dec 2018 10:38:37 +0100 Subject: [PATCH 8/8] updated to also cover click shortcuts --- .../research/xenobiology/xenobio_camera.dm | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index f18bb34d538..ace53a4df87 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -437,8 +437,11 @@ var/mob/living/carbon/monkey/food = new /mob/living/carbon/monkey(T, TRUE, C) if (!QDELETED(food)) food.LAssailant = C - X.monkeys -- - to_chat(C, "[X] now has [X.monkeys] monkeys left.") + X.monkeys-- + X.monkeys = round(X.monkeys, 0.1) //Prevents rounding errors + to_chat(C, "[X] now has [X.monkeys] monkeys stored.") + else + to_chat(C, "[X] needs to have at least 1 monkey stored. Currently has [X.monkeys] monkeys stored.") //Pick up monkey /obj/machinery/computer/camera_advanced/xenobio/proc/XenoMonkeyClickCtrl(mob/living/user, mob/living/carbon/monkey/M) @@ -449,10 +452,15 @@ var/mob/camera/aiEye/remote/xenobio/E = C.remote_control var/obj/machinery/computer/camera_advanced/xenobio/X = E.origin var/area/mobarea = get_area(M.loc) + if(!X.connected_recycler) + to_chat(C, "There is no connected monkey recycler. Use a multitool to link one.") + return if(mobarea.name == E.allowed_area || mobarea.xenobiology_compatible) if(!M.stat) return M.visible_message("[M] vanishes as [p_theyre()] reclaimed for recycling!") - X.monkeys = round(X.monkeys + 0.2, 0.1) + X.connected_recycler.use_power(500) + X.monkeys += connected_recycler.cube_production + X.monkeys = round(X.monkeys, 0.1) //Prevents rounding errors + qdel(M) to_chat(C, "[X] now has [X.monkeys] monkeys available.") - qdel(M) \ No newline at end of file