diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm
index eb7ac33a218..c18e287d292 100644
--- a/code/game/objects/items/RSF.dm
+++ b/code/game/objects/items/RSF.dm
@@ -44,6 +44,10 @@ RSF
var/discriptor = "fabrication-units"
///The verb that describes what we're doing, for use in text
var/action_type = "Dispensing"
+ ///Holds a copy of world.time from the last time the synth was used.
+ var/cooldown = 0
+ ///How long should the minimum period between this RSF's item dispensings be?
+ var/cooldowndelay = 0 SECONDS
/obj/item/rsf/Initialize()
. = ..()
@@ -111,15 +115,16 @@ RSF
return TRUE
/obj/item/rsf/afterattack(atom/A, mob/user, proximity)
- . = ..()
- if(!proximity)
+ if(cooldown > world.time)
return
- if(!is_allowed(A))
+ . = ..()
+ if(!proximity || !is_allowed(A))
return
if(use_matter(dispense_cost, user))//If we can charge that amount of charge, we do so and return true
playsound(loc, 'sound/machines/click.ogg', 10, TRUE)
var/atom/meme = new to_dispense(get_turf(A))
to_chat(user, "[action_type] [meme.name]...")
+ cooldown = world.time + cooldowndelay
///A helper proc. checks to see if we can afford the amount of charge that is passed, and if we can docs the charge from our base, and returns TRUE. If we can't we return FALSE
/obj/item/rsf/proc/use_matter(charge, mob/user)
@@ -159,23 +164,9 @@ RSF
dispense_cost = 100
discriptor = "cookie-units"
action_type = "Fabricates"
+ cooldowndelay = 10 SECONDS
///Tracks whether or not the cookiesynth is about to print a poisoned cookie
var/toxin = FALSE //This might be better suited to some initialize fuckery, but I don't have a good "poisoned" sprite
- ///Holds a copy of world.time taken the last time the synth gained a charge. Used with cooldowndelay to track when the next charge should be gained
- var/cooldown = 0
- ///The period between recharges
- var/cooldowndelay = 10
-
-/obj/item/rsf/cookiesynth/Initialize()
- . = ..()
- START_PROCESSING(SSprocessing, src)
-
-/obj/item/rsf/cookiesynth/Destroy()
- STOP_PROCESSING(SSprocessing, src)
- return ..()
-
-/obj/item/rsf/cookiesynth/attackby()
- return
/obj/item/rsf/cookiesynth/emag_act(mob/user)
obj_flags ^= EMAGGED
@@ -196,16 +187,4 @@ RSF
toxin = FALSE
to_dispense = /obj/item/food/cookie
to_chat(user, "Cookie Synthesizer reset.")
-
-/obj/item/rsf/cookiesynth/process(delta_time)
- matter = min(matter += delta_time, max_matter) //We add 1 up to a point
- if(matter >= max_matter)
- STOP_PROCESSING(SSprocessing, src)
-
-/obj/item/rsf/cookiesynth/afterattack(atom/A, mob/user, proximity)
- if(cooldown > world.time)
- return
- . = ..()
- cooldown = world.time + cooldowndelay
- if(!(datum_flags & DF_ISPROCESSING))
- START_PROCESSING(SSprocessing, src)
+
diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm
index eab7b67c621..7fe4defef23 100644
--- a/code/game/objects/items/food/misc.dm
+++ b/code/game/objects/items/food/misc.dm
@@ -516,19 +516,7 @@
throwforce = 0
/obj/item/food/chewable/lollipop/cyborg
- var/spamchecking = TRUE
-
-/obj/item/food/chewable/lollipop/cyborg/Initialize()
- . = ..()
- addtimer(CALLBACK(src, .proc/spamcheck), 1200)
-
-/obj/item/food/chewable/lollipop/cyborg/equipped(mob/living/user, slot)
- . = ..(user, slot)
- spamchecking = FALSE
-
-/obj/item/food/chewable/lollipop/cyborg/proc/spamcheck()
- if(spamchecking)
- qdel(src)
+ food_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/psicodine = 2) //psicodine instead of omnizine, because the latter was making coders freak out
/obj/item/food/chewable/bubblegum
name = "bubblegum"
@@ -610,21 +598,6 @@
. = ..()
color = rgb(rand(0, 255), rand(0, 255), rand(0, 255))
-/obj/item/food/chewable/gumball/cyborg
- var/spamchecking = TRUE
-
-/obj/item/food/chewable/gumball/cyborg/Initialize()
- . = ..()
- addtimer(CALLBACK(src, .proc/spamcheck), 1200)
-
-/obj/item/food/chewable/gumball/cyborg/equipped(mob/living/user, slot)
- . = ..(user, slot)
- spamchecking = FALSE
-
-/obj/item/food/chewable/gumball/cyborg/proc/spamcheck()
- if(spamchecking)
- qdel(src)
-
/obj/item/food/taco
name = "classic taco"
desc = "A traditional taco with meat, cheese, and lettuce."
diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm
index ce19982c17f..77e8cd9b829 100644
--- a/code/game/objects/items/robot/robot_items.dm
+++ b/code/game/objects/items/robot/robot_items.dm
@@ -345,9 +345,9 @@
name = "treat fabricator"
desc = "Reward humans with various treats. Toggle in-module to switch between dispensing and high velocity ejection modes."
icon_state = "lollipop"
- var/candy = 30
- var/candymax = 30
- var/charge_delay = 10
+ var/candy = 5
+ var/candymax = 5
+ var/charge_delay = 10 SECONDS
var/charging = FALSE
var/mode = DISPENSE_LOLLIPOP_MODE
@@ -365,9 +365,7 @@
check_amount()
/obj/item/borg/lollipop/proc/check_amount() //Doesn't even use processing ticks.
- if(charging)
- return
- if(candy < candymax)
+ if(!charging && candy < candymax)
addtimer(CALLBACK(src, .proc/charge_lollipops), charge_delay)
charging = TRUE
@@ -500,15 +498,14 @@
name = "gumball"
desc = "Oh noes! A fast-moving gumball!"
icon_state = "gumball"
- ammo_type = /obj/item/food/chewable/gumball/cyborg
+ ammo_type = /obj/item/food/chewable/gumball
nodamage = TRUE
damage = 0
speed = 0.5
/obj/projectile/bullet/reusable/gumball/harmful
- ammo_type = /obj/item/food/chewable/gumball/cyborg
nodamage = FALSE
- damage = 3
+ damage = 10 //mediborgs get 5 shots before needing to reload at a rate of 1 shot/10 seconds, so they can do 50 damage from range max before needing to close the distance or retreat
/obj/projectile/bullet/reusable/gumball/handle_drop()
if(!dropped)
@@ -539,7 +536,7 @@
/obj/projectile/bullet/reusable/lollipop/harmful
embedding = list(embed_chance=35, fall_chance=2, jostle_chance=0, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.5, pain_mult=3, rip_time=10)
- damage = 3
+ damage = 10
nodamage = FALSE
embed_falloff_tile = 0