diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index f17bb061d9..7b254cf890 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -106,6 +106,11 @@
now_pushing = 0
return
+ if(istype(tmob,/mob/living/silicon/robot/drone)) //I have no idea why the hell this isn't already happening. How do mice do it?
+ loc = tmob.loc
+ now_pushing = 0
+ return
+
//BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
if((tmob.a_intent == "help" || tmob.restrained()) && (a_intent == "help" || src.restrained()) && tmob.canmove && canmove) // mutual brohugs all around!
var/turf/oldloc = loc
diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm
index 4e9c806850..30ffc9b280 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone.dm
@@ -12,6 +12,7 @@
braintype = "Robot"
lawupdate = 0
density = 0
+ small = 1
// We need to keep track of a few module items so we don't need to do list operations
// every time we need them. These get set in New() after the module is chosen.
@@ -303,3 +304,16 @@
src << "Systems rebooted. Loading base pattern maintenance protocol... loaded."
full_law_reset()
+/mob/living/silicon/robot/drone/Bump(atom/movable/AM as mob|obj, yes)
+ if (!yes) return
+ if (istype(AM, /obj/machinery/recharge_station))
+ var/obj/machinery/recharge_station/F = AM
+ F.move_inside()
+ return
+
+/mob/living/silicon/robot/drone/Bumped(AM as mob|obj)
+ return
+
+/mob/living/silicon/robot/drone/start_pulling(var/atom/movable/AM)
+ src << "You are too small to pull anything."
+ return
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm
index a121991977..454aff850c 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm
@@ -160,7 +160,7 @@
stored_comms["plastic"]++
return
- else if(istype(M,/mob/living/silicon/robot/drone) && M.stat == 2 && !M.client)
+ else if(istype(M,/mob/living/silicon/robot/drone) && !M.client)
var/mob/living/silicon/robot/drone/D = src.loc
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 484fd521c6..0a98997647 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -91,10 +91,7 @@
modtype = "Security"
else if(istype(src,/mob/living/silicon/robot/drone))
laws = new /datum/ai_laws/drone()
- connected_ai = select_active_ai_with_fewest_borgs()
- if(connected_ai)
- connected_ai.connected_robots += src
- lawsync()
+ connected_ai = null
else
laws = new /datum/ai_laws/nanotrasen()
connected_ai = select_active_ai_with_fewest_borgs()
@@ -529,15 +526,15 @@
/mob/living/silicon/robot/triggerAlarm(var/class, area/A, list/cameralist, var/source)
if (stat == 2)
return 1
-
+
..()
-
+
queueAlarm(text("--- [class] alarm detected in [A.name]!"), class)
/mob/living/silicon/robot/cancelAlarm(var/class, area/A as area, obj/origin)
var/has_alarm = ..()
-
+
if (!has_alarm)
queueAlarm(text("--- [class] alarm in [A.name] has been cleared."), class, 0)
// if (viewalerts) robot_alerts()
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 1aad22242f..c3448aada4 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -292,9 +292,9 @@
src.modules += new /obj/item/weapon/wirecutters(src)
src.modules += new /obj/item/device/multitool(src)
src.modules += new /obj/item/device/lightreplacer(src)
- src.modules += new /obj/item/weapon/reagent_containers/spray/cleaner(src)
src.modules += new /obj/item/weapon/gripper(src)
src.modules += new /obj/item/weapon/matter_decompiler(src)
+ src.modules += new /obj/item/weapon/reagent_containers/spray/cleaner/drone(src)
src.emag = new /obj/item/weapon/card/emag(src)
src.emag.name = "Cryptographic Sequencer"
@@ -308,7 +308,7 @@
/obj/item/weapon/robot_module/drone/respawn_consumable(var/mob/living/silicon/robot/R)
var/obj/item/weapon/reagent_containers/spray/cleaner/C = locate() in src.modules
- C.reagents.add_reagent("cleaner", 10)
+ C.reagents.add_reagent("cleaner", 3)
for(var/T in stacktypes)
var/O = locate(T) in src.modules
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 69eaa58b77..30ba30f6ad 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -454,22 +454,22 @@
overlays = null
if (targeted_by && target_locked)
overlays += target_locked
-
-/mob/living/simple_animal/say(var/message)
- if(stat)
- return
-
- if(copytext(message,1,2) == "*")
- return emote(copytext(message,2))
-
- if(stat)
- return
-
- var/verb = "says"
-
- if(speak_emote.len)
- verb = pick(speak_emote)
-
- message = capitalize(trim_left(message))
-
- ..(message, null, verb)
+
+/mob/living/simple_animal/say(var/message)
+ if(stat)
+ return
+
+ if(copytext(message,1,2) == "*")
+ return emote(copytext(message,2))
+
+ if(stat)
+ return
+
+ var/verb = "says"
+
+ if(speak_emote.len)
+ verb = pick(speak_emote)
+
+ message = capitalize(trim_left(message))
+
+ ..(message, null, verb)