diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index cef07c0f7f8..675dae1304c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -131,6 +131,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 4e9c8068509..30ffc9b2801 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 ac3522a0853..d214b3f306d 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 00d179e3470..98b4fe95d4f 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -100,6 +100,9 @@ hands.icon_state = "standard" icon_state = "secborg" modtype = "Security" + else if(istype(src,/mob/living/silicon/robot/drone)) + laws = new /datum/ai_laws/drone() + connected_ai = null else if(mmi.alien || alien) laws = new /datum/ai_laws/alienmov() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 775e3e90923..73da15f474a 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -274,9 +274,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" @@ -290,7 +290,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