diff --git a/aurorastation.dme b/aurorastation.dme
index 881dee24b50..24d6e201ec2 100644
--- a/aurorastation.dme
+++ b/aurorastation.dme
@@ -1008,7 +1008,6 @@
#include "code\game\objects\items\weapons\vaurca_items.dm"
#include "code\game\objects\items\weapons\weaponry.dm"
#include "code\game\objects\items\weapons\circuitboards\_defines.dm"
-#include "code\game\objects\items\weapons\circuitboards\broken.dm"
#include "code\game\objects\items\weapons\circuitboards\circuitboard.dm"
#include "code\game\objects\items\weapons\circuitboards\mecha.dm"
#include "code\game\objects\items\weapons\circuitboards\rig.dm"
diff --git a/code/controllers/subsystems/garbage-debug.dm b/code/controllers/subsystems/garbage-debug.dm
index 64e88438830..22e6d709358 100644
--- a/code/controllers/subsystems/garbage-debug.dm
+++ b/code/controllers/subsystems/garbage-debug.dm
@@ -640,7 +640,6 @@
SearchVar(rod_recipes)
SearchVar(NO_EMAG_ACT)
SearchVar(last_chew)
- SearchVar(hazard_overlays)
SearchVar(tape_roll_applications)
SearchVar(malftransformermade)
SearchVar(MIN_ACTIVE_TIME)
diff --git a/code/datums/trading/goods.dm b/code/datums/trading/goods.dm
index 8cf26499f84..5a874761022 100644
--- a/code/datums/trading/goods.dm
+++ b/code/datums/trading/goods.dm
@@ -83,7 +83,7 @@
/obj/item/circuitboard/telecomms = TRADER_BLACKLIST,
/obj/item/circuitboard/unary_atmos = TRADER_BLACKLIST,
/obj/item/circuitboard/arcade = TRADER_BLACKLIST,
- /obj/item/circuitboard/broken = TRADER_BLACKLIST,
+ /obj/item/trash/broken_electronics = TRADER_BLACKLIST,
/obj/item/storage/box/lights/colored = TRADER_SUBTYPES_ONLY,
/obj/item/stack/cable_coil = TRADER_SUBTYPES_ONLY,
/obj/item/stack/cable_coil/cyborg = TRADER_BLACKLIST,
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index f531315792b..ece9f6db069 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1194,7 +1194,7 @@ About the new airlock wires panel:
da.created_name = src.name
da.update_state()
if((stat & BROKEN))
- new /obj/item/circuitboard/broken(src.loc)
+ new /obj/item/trash/broken_electronics(src.loc)
operating = FALSE
else
if (!electronics) create_electronics()
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 6f91600d528..97f8a7b70d7 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -293,7 +293,7 @@
"You have removed the electronics from [src].")
if (stat & BROKEN)
- new /obj/item/circuitboard/broken(src.loc)
+ new /obj/item/trash/broken_electronics(src.loc)
else
new/obj/item/airalarm_electronics(src.loc)
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index adf44ffc391..75a82a83f7e 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -27,7 +27,7 @@
base_state = icon_state
/obj/machinery/door/window/proc/shatter(var/display_message = 1)
- new /obj/item/circuitboard/broken(loc)
+ new /obj/item/trash/broken_electronics(loc)
new /obj/item/material/shard(loc)
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(loc)
CC.amount = 2
@@ -180,7 +180,7 @@
user.visible_message("[user] dismantles the windoor.", "You start to dismantle the windoor.")
if (do_after(user,60/I.toolspeed))
to_chat(user, SPAN_NOTICE("You dismantled the windoor!"))
- new /obj/item/circuitboard/broken(loc)
+ new /obj/item/trash/broken_electronics(loc)
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(loc)
CC.amount = 2
var/obj/item/stack/material/glass/reinforced/rglass = new /obj/item/stack/material/glass/reinforced(loc)
diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm
index 159dd278e2c..9398d299f2a 100644
--- a/code/game/objects/items/stacks/nanopaste.dm
+++ b/code/game/objects/items/stacks/nanopaste.dm
@@ -21,6 +21,7 @@
icon_state = "[initial(icon_state)]-[amount]"
else
icon_state = "[initial(icon_state)]-empty"
+ check_maptext(SMALL_FONTS(7, amount))
/obj/item/stack/nanopaste/attack(atom/M, mob/user, var/target_zone)
if(!ismob(M) || !istype(user))
diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index 1805d0c1b95..68f9161952b 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -61,6 +61,7 @@ var/global/list/datum/stack_recipe/rod_recipes = list(
icon_state = "rods-[amount]"
else
icon_state = "rods"
+ check_maptext(SMALL_FONTS(7, amount))
/obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob)
..()
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index 92a30bdc31b..72817c8c91e 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -12,6 +12,7 @@
/obj/item/stack
gender = PLURAL
origin_tech = list(TECH_MATERIAL = 1)
+ flags = HELDMAPTEXT
var/list/datum/stack_recipe/recipes
var/singular_name
var/amount = 1
@@ -43,6 +44,10 @@
item_state = icon_state
update_icon()
+ return INITIALIZE_HINT_LATELOAD
+
+/obj/item/stack/LateInitialize()
+ check_maptext(SMALL_FONTS(7, get_amount()))
/obj/item/stack/Destroy()
if (src && usr && usr.machine == src)
@@ -50,6 +55,8 @@
return ..()
/obj/item/stack/update_icon()
+ check_maptext(SMALL_FONTS(7, get_amount()))
+
if (!icon_has_variants)
return ..()
@@ -212,6 +219,7 @@
var/datum/matter_synth/S = synths[i]
if(!S.use_charge(charge_costs[i] * used)) // Doesn't need to be deleted
return 0
+ check_maptext(SMALL_FONTS(7, get_amount()))
return 1
/obj/item/stack/proc/add(var/extra)
@@ -228,6 +236,7 @@
for(var/i = 1 to uses_charge)
var/datum/matter_synth/S = synths[i]
S.add_charge(charge_costs[i] * extra)
+ check_maptext(SMALL_FONTS(7, get_amount()))
/*
The transfer and split procs work differently than use() and add().
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index a456dd874b4..7494e5e6757 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -233,3 +233,7 @@
/obj/item/trash/vkrexitaffy
name = "V'krexi Snax"
icon_state = "vkrexitaffy"
+
+/obj/item/trash/broken_electronics
+ name = "broken electronics"
+ icon_state = "door_electronics_smoked"
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/circuitboards/broken.dm b/code/game/objects/items/weapons/circuitboards/broken.dm
deleted file mode 100644
index ded817e7c74..00000000000
--- a/code/game/objects/items/weapons/circuitboards/broken.dm
+++ /dev/null
@@ -1,6 +0,0 @@
-/obj/item/circuitboard/broken
- name = "broken electronics"
- icon = 'icons/obj/doors/door_assembly.dmi'
- icon_state = "door_electronics_smoked"
- origin_tech = null
- board_type = "other"
diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm
index b30226054a0..e1ca29b12cb 100644
--- a/code/game/objects/items/weapons/policetape.dm
+++ b/code/game/objects/items/weapons/policetape.dm
@@ -1,16 +1,25 @@
+var/list/tape_roll_applications = list()
+
//Define all tape types in policetape.dm
/obj/item/taperoll
name = "tape roll"
icon = 'icons/policetape.dmi'
icon_state = "tape"
w_class = ITEMSIZE_SMALL
+ var/static/list/hazard_overlays
var/turf/start
var/turf/end
var/tape_type = /obj/item/tape
var/icon_base
-var/list/image/hazard_overlays
-var/list/tape_roll_applications = list()
+/obj/item/taperoll/Initialize()
+ . = ..()
+ if(!hazard_overlays)
+ hazard_overlays = list()
+ hazard_overlays["[NORTH]"] = image('icons/effects/warning_stripes.dmi', icon_state = "N")
+ hazard_overlays["[EAST]"] = image('icons/effects/warning_stripes.dmi', icon_state = "E")
+ hazard_overlays["[SOUTH]"] = image('icons/effects/warning_stripes.dmi', icon_state = "S")
+ hazard_overlays["[WEST]"] = image('icons/effects/warning_stripes.dmi', icon_state = "W")
/obj/item/tape
name = "tape"
@@ -26,15 +35,6 @@ var/list/tape_roll_applications = list()
if(LAZYLEN(crumplers) && Adjacent(user))
to_chat(user, SPAN_WARNING("\The [initial(name)] has been crumpled by [english_list(crumplers)]."))
-/obj/item/tape/New()
- ..()
- if(!hazard_overlays)
- hazard_overlays = list()
- hazard_overlays["[NORTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "N")
- hazard_overlays["[EAST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "E")
- hazard_overlays["[SOUTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "S")
- hazard_overlays["[WEST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "W")
-
/obj/item/taperoll/police
name = "police tape"
desc = "A roll of police tape used to block off crime scenes from the public."
diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm
index 63d104d3382..b4f13ea0538 100644
--- a/code/game/objects/items/weapons/tanks/jetpack.dm
+++ b/code/game/objects/items/weapons/tanks/jetpack.dm
@@ -172,17 +172,16 @@
icon_state = initial(icon_state)
ion_trail.stop()
- if (ismob(usr))
- var/mob/M = usr
- M.update_inv_back()
-
- to_chat(usr, "You toggle the thrusters [on? "on":"off"].")
+ to_chat(usr, SPAN_NOTICE("You toggle the thrusters [on ? "on" : "off"]."))
+ stabilization_on = !stabilization_on
+ to_chat(usr, SPAN_NOTICE("You toggle the stabilization [stabilization_on ? "on" : "off"]."))
/obj/item/tank/jetpack/carbondioxide/synthetic/verb/toggle_stabilizer()
set name = "Toggle Jetpack Stabilization"
set category = "Robot Commands"
- src.stabilization_on = !( src.stabilization_on )
- to_chat(usr, "You toggle the stabilization [stabilization_on? "on":"off"].")
+
+ stabilization_on = !stabilization_on
+ to_chat(usr, SPAN_NOTICE("You toggle the stabilization [stabilization_on ? "on" : "off"]."))
/obj/item/tank/jetpack/rig
name = "hardsuit jetpack"
diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm
index 4fef7f588e1..e31abc45a56 100644
--- a/code/modules/materials/material_sheets.dm
+++ b/code/modules/materials/material_sheets.dm
@@ -3,7 +3,6 @@
desc_info = "Use in your hand to bring up the recipe menu. If you have enough sheets, click on something on the list to build it."
force = 5
throwforce = 5
- flags = HELDMAPTEXT
w_class = ITEMSIZE_NORMAL
throw_speed = 3
throw_range = 3
@@ -17,7 +16,7 @@
var/use_material_sound = TRUE
/obj/item/stack/material/Initialize(mapload, amount)
- ..()
+ . = ..()
randpixel_xy()
if(!default_type)
@@ -43,10 +42,6 @@
flags |= CONDUCT
matter = material.get_matter()
- return INITIALIZE_HINT_LATELOAD
-
-/obj/item/stack/material/LateInitialize()
- update_strings()
/obj/item/stack/material/get_material()
return material
@@ -63,20 +58,21 @@
name = "[material.use_name] [material.sheet_singular_name]"
desc = "A [material.sheet_singular_name] of [material.use_name]."
gender = NEUTER
- check_maptext(SMALL_FONTS(7, get_amount()))
-/obj/item/stack/material/use(var/used)
+/obj/item/stack/material/update_icon()
. = ..()
- update_strings()
- return
+ if(material)
+ update_strings()
/obj/item/stack/material/transfer_to(obj/item/stack/S, var/tamount=null, var/type_verified)
var/obj/item/stack/material/M = S
if(!istype(M) || material.name != M.material.name)
return 0
var/transfer = ..(S,tamount,1)
- if(src) update_strings()
- if(M) M.update_strings()
+ if(src)
+ update_icon()
+ if(M)
+ M.update_icon()
return transfer
/obj/item/stack/material/attack_self(var/mob/user)
diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm
index 338e19b3a67..07ffa4c8887 100644
--- a/code/modules/mining/minebot.dm
+++ b/code/modules/mining/minebot.dm
@@ -1,5 +1,6 @@
/mob/living/silicon/robot/drone/mining
name = "NT-MD-000"
+ desc_flavor = "It's a small mining drone. The casing is stamped with an corporate logo and the subscript: '%MAPNAME% Automated Pickaxe!'
OOC Info:
Mining drones are player-controlled synthetics which are lawed to serve the crew and excavate for ore.
They hold a wide array of tools to explore mining sites and extract ore. They function similarly to other synthetics, in that they require recharging regularly, have laws, and are resilient to many hazards, such as fire, radiation, vacuum, and more.
Ghosts can join the round as a mining drone by accessing the 'Ghost Spawner' menu in the 'Ghost' tab. An inactive drone can be rebooted by swiping an ID card on it with mining or robotics access, and an active drone can be shut down in the same manner.
An antagonist can use an Electromagnetic Sequencer to corrupt their laws and make them follow their orders."
icon_state = "miningdrone"
mod_type = "Mining"
law_type = /datum/ai_laws/mining_drone
@@ -61,16 +62,6 @@
output_text += " a jackhammer drill mounted to it."
to_chat(user, SPAN_NOTICE(output_text))
-/mob/living/silicon/robot/drone/mining/init()
- ai_camera = new /obj/item/device/camera/siliconcam/drone_camera(src)
- if(!laws)
- laws = new law_type
- if(!module)
- module = new module_type(src, src)
-
- flavor_text = "It's a tiny little mining drone. The casing is stamped with an corporate logo and the subscript: '[current_map.company_name] Automated Pickaxe!'"
- playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0)
-
/mob/living/silicon/robot/drone/mining/request_player()
if(too_many_active_drones())
return
@@ -106,6 +97,10 @@
if(!allowed(user))
to_chat(user, SPAN_WARNING("Access denied."))
return
+ if(ckey || client)
+ user.visible_message(SPAN_WARNING("\The [user] swipes [user.get_pronoun("his")] ID card through \the [src] shutting it down."), SPAN_NOTICE("You swipe your ID over \the [src], shutting it down! You can swipe it again to make it search for a new intelligence."))
+ shut_down()
+ return
if(seeking_player)
to_chat(user, SPAN_WARNING("\The [src] is already in the reboot process."))
return
diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm
index 092f22fb4da..4f9cd45991a 100644
--- a/code/modules/mob/living/silicon/robot/component.dm
+++ b/code/modules/mob/living/silicon/robot/component.dm
@@ -260,7 +260,7 @@
burn += burn_amt
total_dam = brute + burn
if(total_dam >= max_dam)
- var/obj/item/circuitboard/broken/broken_device = new(get_turf(src))
+ var/obj/item/trash/broken_electronics/broken_device = new(get_turf(src))
if(icon_state_broken != "broken")
broken_device.icon = src.icon
broken_device.icon_state = icon_state_broken
diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm
index fb4e9017d86..40b71f019c1 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone.dm
@@ -21,12 +21,7 @@
/mob/living/silicon/robot/drone
// Look and feel
name = "maintenance drone"
- desc_info = "Drones are player-controlled synthetics which are lawed to maintain the station and not \
- interact with anyone else, except for other drones. They hold a wide array of tools to build, repair, maintain, and clean. \
- They fuction similarly to other synthetics, in that they require recharging regularly, have laws, and are resilient to many hazards, \
- such as fire, radiation, vacuum, and more. Ghosts can join the round as a maintenance drone by using the appropriate verb in the 'ghost' tab. \
- An inactive drone can be rebooted by swiping an ID card on it with engineering or robotics access, and an active drone can be shut down in the same manner."
- desc_antag = "An Electromagnetic Sequencer can be used to subvert the drone to your cause."
+ var/desc_flavor = "It's a tiny little repair drone. The casing is stamped with an corporate logo and the subscript: '%MAPNAME% Recursive Repair Systems: Fixing Tomorrow's Problem, Today!'
OOC Info:
Drones are player-controlled synthetics which are lawed to maintain the station and not interact with anyone else, except for other drones.
They hold a wide array of tools to build, repair, maintain, and clean. They function similarly to other synthetics, in that they require recharging regularly, have laws, and are resilient to many hazards, such as fire, radiation, vacuum, and more.
Ghosts can join the round as a maintenance drone by accessing the 'Ghost Spawner' menu in the 'Ghost' tab. An inactive drone can be rebooted by swiping an ID card on it with engineering or robotics access, and an active drone can be shut down in the same manner.
An antagonist can use an Electromagnetic Sequencer to corrupt their laws and make them follow their orders."
icon = 'icons/mob/robots.dmi'
icon_state = "repairbot"
braintype = "Robot"
@@ -79,6 +74,7 @@
var/hat_x_offset = 0
var/hat_y_offset = -13
+ var/can_swipe = TRUE
var/rebooting = FALSE
/mob/living/silicon/robot/drone/can_be_possessed_by(var/mob/abstract/observer/possessor)
@@ -122,6 +118,7 @@
/mob/living/silicon/robot/drone/construction
// Look and feel
name = "construction drone"
+ desc_flavor = "It's a bulky construction drone stamped with a NanoTrasen glyph."
icon_state = "constructiondrone"
// Components
@@ -131,7 +128,7 @@
law_type = /datum/ai_laws/construction_drone
// Interaction
- can_pull_size = 5
+ can_pull_size = ITEMSIZE_IMMENSE
can_pull_mobs = MOB_PULL_SAME
holder_type = /obj/item/holder/drone/heavy
@@ -141,14 +138,44 @@
var/my_home_z
+/mob/living/silicon/robot/drone/construction/Initialize()
+ . = ..()
+ var/turf/T = get_turf(src)
+ my_home_z = T.z
+
+/mob/living/silicon/robot/drone/construction/welcome_drone()
+ to_chat(src, SPAN_NOTICE("You are a construction drone, an autonomous engineering and fabrication system.."))
+ to_chat(src, SPAN_NOTICE("You are assigned to a NanoTrasen construction project. The name is irrelevant. Your task is to complete construction and subsystem integration as soon as possible."))
+ to_chat(src, SPAN_NOTICE("Use :d to talk to other drones and say to speak silently to your nearby fellows."))
+ to_chat(src, SPAN_NOTICE("You do not follow orders from anyone; not the AI, not humans, and not other synthetics.."))
+
+/mob/living/silicon/robot/drone/construction/process_level_restrictions()
+ //Abort if they should not get blown
+ if(lock_charge || scrambled_codes || emagged)
+ return FALSE
+ //Check if they are not on a station level -> else abort
+ var/turf/T = get_turf(src)
+ if (!T || AreConnectedZLevels(my_home_z, T.z))
+ return FALSE
+
+ if(!self_destructing)
+ to_chat(src, SPAN_DANGER("WARNING: Removal from [current_map.company_name] property detected. Anti-Theft mode activated."))
+ start_self_destruct(TRUE)
+ return TRUE
+
/mob/living/silicon/robot/drone/construction/matriarch
name = "matriarch drone"
+ desc_flavor = "It's a small matriarch drone. The casing is stamped with an corporate logo and the subscript: '%MAPNAME% Recursive Repair Systems: Heart Of The Swarm!'
OOC Info:
Matriarch drones are player-controlled synthetics which are lawed to maintain the station and not interact with anyone else, except for other drones. They are in command of all the smaller maintenance drones.
They hold a wide array of tools to build, repair, maintain, and clean. They function similarly to other synthetics, in that they require recharging regularly, have laws, and are resilient to many hazards, such as fire, radiation, vacuum, and more.
Ghosts can join the round as a matriarch drone by having a Command whitelist and accessing the 'Ghost Spawner' menu in the 'Ghost' tab.
An antagonist can use an Electromagnetic Sequencer to corrupt their laws and make them follow their orders."
law_type = /datum/ai_laws/matriarch_drone
+ can_swipe = FALSE
/mob/living/silicon/robot/drone/construction/matriarch/Initialize()
. = ..()
check_add_to_late_firers()
+/mob/living/silicon/robot/drone/construction/matriarch/shut_down()
+ return
+
/mob/living/silicon/robot/drone/construction/matriarch/assign_player(mob/user)
. = ..()
SSghostroles.remove_spawn_atom("matriarchmaintdrone", src)
@@ -202,7 +229,7 @@
module = new module_type(src, src)
recalculate_synth_capacities()
- flavor_text = "It's a tiny little repair drone. The casing is stamped with an corporate logo and the subscript: '[current_map.company_name] Recursive Repair Systems: Fixing Tomorrow's Problem, Today!'"
+ flavor_text = replacetext(desc_flavor, "%MAPNAME%", current_map.company_name)
playsound(get_turf(src), 'sound/machines/twobeep.ogg', 50, 0)
//Redefining some robot procs...
@@ -264,6 +291,9 @@
to_chat(user, SPAN_WARNING("\The [src] is hermetically sealed. You can't open the case."))
return
else if(W.GetID() || istype(W, /obj/item/card/robot))
+ if(!can_swipe)
+ to_chat(user, SPAN_WARNING("\The [src] doesn't have an ID swipe interface."))
+ return
if(stat == DEAD)
if(!config.allow_drone_spawn || emagged || health < -maxHealth) //It's dead, Dave.
to_chat(user, SPAN_WARNING("The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one."))
@@ -278,10 +308,10 @@
request_player()
return
else
- user.visible_message(SPAN_WARNING("\The [user] swipes [user.get_pronoun("his")] ID card through \the [src], attempting to shut it down."), SPAN_WARNING("You swipe your ID card through \the [src], attempting to shut it down."))
if(emagged)
return
if(allowed(user))
+ user.visible_message(SPAN_WARNING("\The [user] swipes [user.get_pronoun("his")] ID card through \the [src] shutting it down."), SPAN_NOTICE("You swipe your ID over \the [src], shutting it down! You can swipe it again to make it search for a new intelligence."))
shut_down()
else
to_chat(user, SPAN_WARNING("Access denied."))
@@ -500,32 +530,6 @@
/mob/living/silicon/robot/drone/set_respawn_time()
set_death_time(MINISYNTH, world.time)
-/mob/living/silicon/robot/drone/construction/Initialize()
- . = ..()
- var/turf/T = get_turf(src)
- my_home_z = T.z
- flavor_text = "It's a bulky construction drone stamped with a NanoTrasen glyph."
-
-/mob/living/silicon/robot/drone/construction/welcome_drone()
- to_chat(src, SPAN_NOTICE("You are a construction drone, an autonomous engineering and fabrication system.."))
- to_chat(src, SPAN_NOTICE("You are assigned to a NanoTrasen construction project. The name is irrelevant. Your task is to complete construction and subsystem integration as soon as possible."))
- to_chat(src, SPAN_NOTICE("Use :d to talk to other drones and say to speak silently to your nearby fellows."))
- to_chat(src, SPAN_NOTICE("You do not follow orders from anyone; not the AI, not humans, and not other synthetics.."))
-
-/mob/living/silicon/robot/drone/construction/process_level_restrictions()
- //Abort if they should not get blown
- if(lock_charge || scrambled_codes || emagged)
- return FALSE
- //Check if they are not on a station level -> else abort
- var/turf/T = get_turf(src)
- if (!T || AreConnectedZLevels(my_home_z, T.z))
- return FALSE
-
- if(!self_destructing)
- to_chat(src, SPAN_DANGER("WARNING: Removal from [current_map.company_name] property detected. Anti-Theft mode activated."))
- start_self_destruct(TRUE)
- return TRUE
-
/proc/too_many_active_drones()
var/drones = 0
for(var/mob/living/silicon/robot/drone/D in mob_list)
diff --git a/code/modules/mob/living/silicon/robot/items/gripper.dm b/code/modules/mob/living/silicon/robot/items/gripper.dm
index e4d82d8e0d1..189739c5627 100644
--- a/code/modules/mob/living/silicon/robot/items/gripper.dm
+++ b/code/modules/mob/living/silicon/robot/items/gripper.dm
@@ -29,6 +29,8 @@
/obj/item/gift
)
+ var/list/cant_hold
+
var/obj/item/wrapped
var/force_holder
@@ -55,18 +57,17 @@
/obj/item/gripper/proc/grip_item(var/obj/item/I, var/mob/user, var/feedback = 1)
//This function returns 1 if we successfully took the item, or 0 if it was invalid. This information is useful to the caller
if(!wrapped)
- for(var/typepath in can_hold)
- if(istype(I,typepath))
- if(feedback)
- to_chat(user, SPAN_NOTICE("You collect \the [I]."))
- if(isturf(I.loc) && I.Adjacent(user))
- I.do_pickup_animation(user)
- I.forceMove(src)
- wrapped = I
- wrapped.pixel_x = 0
- wrapped.pixel_y = 0
- update_icon()
- return TRUE
+ if((can_hold && is_type_in_list(I, can_hold)) || (cant_hold && !is_type_in_list(I, cant_hold)))
+ if(feedback)
+ to_chat(user, SPAN_NOTICE("You collect \the [I]."))
+ if(isturf(I.loc) && I.Adjacent(user))
+ I.do_pickup_animation(user)
+ I.forceMove(src)
+ wrapped = I
+ wrapped.pixel_x = 0
+ wrapped.pixel_y = 0
+ update_icon()
+ return TRUE
if(feedback)
to_chat(user, SPAN_WARNING("Your gripper cannot hold \the [I]."))
return FALSE
@@ -320,3 +321,16 @@
/obj/item/stack/material,
/obj/item/stack/tile
)
+
+/obj/item/gripper/multi_purpose
+ name = "multi-purpose gripper"
+ desc = "An articulate gripper suited to carrying a wide variety of objects you could encounter on a space-faring vessel."
+ can_hold = null
+ cant_hold = list(
+ /obj/item/stack,
+ /obj/item/gun,
+ /obj/item/clothing,
+ /obj/item/storage,
+ /obj/item/modular_computer,
+ /obj/item/card/id
+ )
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 02f6c861fd2..3182883bcc6 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -208,8 +208,8 @@
mult += storage.rating
for(var/datum/matter_synth/M in module.synths)
M.set_multiplier(mult)
- for(var/obj/item/stack/material/SM in module.modules)
- SM.update_strings()
+ for(var/obj/item/stack/SM in module.modules)
+ SM.update_icon()
/mob/living/silicon/robot/proc/init()
ai_camera = new /obj/item/device/camera/siliconcam/robot_camera(src)
@@ -346,7 +346,6 @@
else
braintype = "Cyborg"
-
var/changed_name = ""
if(custom_name)
changed_name = custom_name
@@ -354,22 +353,7 @@
else
changed_name = "[mod_type] [braintype]-[rand(1, 999)]"
- real_name = changed_name
- name = real_name
- if(mmi)
- mmi.brainmob.name = src.name
- mmi.brainmob.real_name = src.name
- mmi.name = "[initial(mmi.name)]: [src.name]"
-
- // We also need to update our internal ID
- if(id_card)
- id_card.assignment = prefix
- id_card.registered_name = changed_name
- id_card.update_name()
-
- //We also need to update name of internal camera.
- if(camera)
- camera.c_tag = changed_name
+ set_name(changed_name, prefix)
if(!custom_sprite) //Check for custom sprite
set_custom_sprite()
@@ -493,6 +477,15 @@
to_chat(src, SPAN_NOTICE("You [C.toggled ? "disable" : "enable"] [C.name]."))
C.toggled = !C.toggled
+/mob/living/silicon/robot/verb/rebuild_overlays()
+ set category = "Robot Commands"
+ set name = "Rebuild Overlays"
+ set desc = "An OOC tool that rebuilds your overlays, useful if your talk bubble gets stuck to you."
+
+ cut_overlays()
+ handle_panel_overlay()
+ set_intent(a_intent)
+
/obj/item/robot_module/janitor/verb/toggle_mop()
set category = "Robot Commands"
set name = "Toggle Mop"
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index cc0f9b70ea9..2b6c1d31908 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -56,7 +56,7 @@ var/global/list/robot_modules = list(
R.module = src
- src.modules += new /obj/item/inductive_charger(src)
+ modules += new /obj/item/inductive_charger(src)
add_camera_networks(R)
add_languages(R)
@@ -109,8 +109,8 @@ var/global/list/robot_modules = list(
return
/obj/item/robot_module/proc/respawn_consumable(var/mob/living/silicon/robot/R, var/rate)
- var/obj/item/extinguisher/E = locate() in src.modules
- var/obj/item/device/flash/F = locate() in src.modules
+ var/obj/item/extinguisher/E = locate() in modules
+ var/obj/item/device/flash/F = locate() in modules
if(F)
if(F.broken)
F.broken = FALSE
@@ -128,8 +128,8 @@ var/global/list/robot_modules = list(
for(var/datum/matter_synth/T in synths)
T.add_charge(T.recharge_rate * rate)
- for(var/obj/item/stack/material/SM in modules)
- SM.update_strings()
+ for(var/obj/item/stack/SM in modules)
+ SM.update_icon()
/obj/item/robot_module/proc/rebuild()//Rebuilds the list so it's possible to add/remove items from the module
var/list/temp_list = modules
@@ -205,41 +205,41 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/medical/general/Initialize()
. = ..()
- src.modules += new /obj/item/device/healthanalyzer(src)
- src.modules += new /obj/item/reagent_containers/hypospray/borghypo/medical(src)
- src.modules += new /obj/item/surgery/scalpel(src)
- src.modules += new /obj/item/surgery/hemostat(src)
- src.modules += new /obj/item/surgery/retractor(src)
- src.modules += new /obj/item/surgery/cautery(src)
- src.modules += new /obj/item/surgery/bonegel(src)
- src.modules += new /obj/item/surgery/FixOVein(src)
- src.modules += new /obj/item/surgery/bonesetter(src)
- src.modules += new /obj/item/surgery/circular_saw(src)
- src.modules += new /obj/item/surgery/surgicaldrill(src)
- src.modules += new /obj/item/gripper/chemistry(src)
- src.modules += new /obj/item/reagent_containers/dropper/industrial(src)
- src.modules += new /obj/item/roller_holder(src)
- src.modules += new /obj/item/reagent_containers/syringe(src)
- src.modules += new /obj/item/device/reagent_scanner/adv(src)
- src.modules += new /obj/item/device/mass_spectrometer(src)
- src.modules += new /obj/item/autopsy_scanner(src)
- src.modules += new /obj/item/device/breath_analyzer(src)
+ modules += new /obj/item/device/healthanalyzer(src)
+ modules += new /obj/item/reagent_containers/hypospray/borghypo/medical(src)
+ modules += new /obj/item/surgery/scalpel(src)
+ modules += new /obj/item/surgery/hemostat(src)
+ modules += new /obj/item/surgery/retractor(src)
+ modules += new /obj/item/surgery/cautery(src)
+ modules += new /obj/item/surgery/bonegel(src)
+ modules += new /obj/item/surgery/FixOVein(src)
+ modules += new /obj/item/surgery/bonesetter(src)
+ modules += new /obj/item/surgery/circular_saw(src)
+ modules += new /obj/item/surgery/surgicaldrill(src)
+ modules += new /obj/item/gripper/chemistry(src)
+ modules += new /obj/item/reagent_containers/dropper/industrial(src)
+ modules += new /obj/item/roller_holder(src)
+ modules += new /obj/item/reagent_containers/syringe(src)
+ modules += new /obj/item/device/reagent_scanner/adv(src)
+ modules += new /obj/item/device/mass_spectrometer(src)
+ modules += new /obj/item/autopsy_scanner(src)
+ modules += new /obj/item/device/breath_analyzer(src)
modules += new /obj/item/taperoll/medical(src)
- src.modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
- src.modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
- src.modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
- src.modules += new /obj/item/extinguisher/mini(src) // For navigating space and/or low grav, and just being useful.
- src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
- src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
- src.modules += new /obj/item/pen/robopen(src)
- src.modules += new /obj/item/form_printer(src)
- src.modules += new /obj/item/gripper/paperwork(src)
- src.modules += new /obj/item/device/hand_labeler(src)
- src.modules += new /obj/item/tape_roll(src) //allows it to place flyers
- src.modules += new /obj/item/device/nanoquikpay(src)
- src.emag = new /obj/item/reagent_containers/hypospray/cmo(src)
- src.emag.reagents.add_reagent(/decl/reagent/wulumunusha, 30)
- src.emag.name = "Wulumunusha Hypospray"
+ modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
+ modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
+ modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
+ modules += new /obj/item/extinguisher/mini(src) // For navigating space and/or low grav, and just being useful.
+ modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
+ modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
+ modules += new /obj/item/pen/robopen(src)
+ modules += new /obj/item/form_printer(src)
+ modules += new /obj/item/gripper/paperwork(src)
+ modules += new /obj/item/device/hand_labeler(src)
+ modules += new /obj/item/tape_roll(src) //allows it to place flyers
+ modules += new /obj/item/device/nanoquikpay(src)
+ emag = new /obj/item/reagent_containers/hypospray/cmo(src)
+ emag.reagents.add_reagent(/decl/reagent/wulumunusha, 30)
+ emag.name = "Wulumunusha Hypospray"
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(10000)
synths += medicine
@@ -252,18 +252,18 @@ var/global/list/robot_modules = list(
B.uses_charge = TRUE
B.charge_costs = list(1000)
B.synths = list(medicine)
- src.modules += N
- src.modules += B
+ modules += N
+ modules += B
/obj/item/robot_module/medical/general/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
- var/obj/item/reagent_containers/syringe/S = locate() in src.modules
+ var/obj/item/reagent_containers/syringe/S = locate() in modules
if(S.mode == 2)
S.reagents.clear_reagents()
S.mode = initial(S.mode)
S.desc = initial(S.desc)
S.update_icon()
- if(src.emag)
- var/obj/item/reagent_containers/hypospray/cmo/PS = src.emag
+ if(emag)
+ var/obj/item/reagent_containers/hypospray/cmo/PS = emag
PS.reagents.add_reagent(/decl/reagent/wulumunusha, 2 * amount)
..()
@@ -287,27 +287,27 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/medical/rescue/Initialize()
. = ..()
- src.modules += new /obj/item/device/healthanalyzer(src)
- src.modules += new /obj/item/device/reagent_scanner/adv(src)
- src.modules += new /obj/item/device/mass_spectrometer(src)
- src.modules += new /obj/item/device/breath_analyzer(src)
- src.modules += new /obj/item/roller_holder(src)
- src.modules += new /obj/item/reagent_containers/hypospray/borghypo/rescue(src)
- src.modules += new /obj/item/reagent_containers/dropper/industrial(src)
- src.modules += new /obj/item/reagent_containers/syringe(src)
- src.modules += new /obj/item/gripper/chemistry(src)
- src.modules += new /obj/item/tank/jetpack/carbondioxide/synthetic(src)
- src.modules += new /obj/item/borg/rescue/mobility(src)
+ modules += new /obj/item/device/healthanalyzer(src)
+ modules += new /obj/item/device/reagent_scanner/adv(src)
+ modules += new /obj/item/device/mass_spectrometer(src)
+ modules += new /obj/item/device/breath_analyzer(src)
+ modules += new /obj/item/roller_holder(src)
+ modules += new /obj/item/reagent_containers/hypospray/borghypo/rescue(src)
+ modules += new /obj/item/reagent_containers/dropper/industrial(src)
+ modules += new /obj/item/reagent_containers/syringe(src)
+ modules += new /obj/item/gripper/chemistry(src)
+ modules += new /obj/item/tank/jetpack/carbondioxide/synthetic(src)
+ modules += new /obj/item/borg/rescue/mobility(src)
modules += new /obj/item/taperoll/medical(src)
- src.modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
- src.modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
- src.modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
- src.modules += new /obj/item/extinguisher/mini(src) // For navigating space and/or low grav, and just being useful.
- src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
- src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
- src.emag = new /obj/item/reagent_containers/hypospray/cmo(src)
- src.emag.reagents.add_reagent(/decl/reagent/wulumunusha, 30)
- src.emag.name = "Wulumunusha Hypospray"
+ modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
+ modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
+ modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
+ modules += new /obj/item/extinguisher/mini(src) // For navigating space and/or low grav, and just being useful.
+ modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
+ modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
+ emag = new /obj/item/reagent_containers/hypospray/cmo(src)
+ emag.reagents.add_reagent(/decl/reagent/wulumunusha, 30)
+ emag.name = "Wulumunusha Hypospray"
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(15000)
synths += medicine
@@ -324,19 +324,19 @@ var/global/list/robot_modules = list(
S.uses_charge = TRUE
S.charge_costs = list(1000)
S.synths = list(medicine)
- src.modules += O
- src.modules += B
- src.modules += S
+ modules += O
+ modules += B
+ modules += S
/obj/item/robot_module/medical/rescue/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
- var/obj/item/reagent_containers/syringe/S = locate() in src.modules
+ var/obj/item/reagent_containers/syringe/S = locate() in modules
if(S.mode == 2)
S.reagents.clear_reagents()
S.mode = initial(S.mode)
S.desc = initial(S.desc)
S.update_icon()
- if(src.emag)
- var/obj/item/reagent_containers/spray/PS = src.emag
+ if(emag)
+ var/obj/item/reagent_containers/spray/PS = emag
PS.reagents.add_reagent(/decl/reagent/wulumunusha, 2 * amount)
..()
@@ -368,28 +368,28 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/engineering/construction/Initialize()
. = ..()
- src.modules += new /obj/item/powerdrill(src)
- src.modules += new /obj/item/rfd/construction/borg(src)
- src.modules += new /obj/item/rfd/piping/borg(src)
- src.modules += new /obj/item/screwdriver/robotic(src)
- src.modules += new /obj/item/wrench/robotic(src)
- src.modules += new /obj/item/weldingtool/experimental(src)
- src.modules += new /obj/item/device/pipe_painter(src)
- src.modules += new /obj/item/gripper/no_use/loader(src)
- src.modules += new /obj/item/gripper(src)
- src.modules += new /obj/item/device/t_scanner(src) // to check underfloor wiring
- src.modules += new /obj/item/device/analyzer(src) // to check air pressure in the area
- src.modules += new /obj/item/device/lightreplacer(src) // to install lightning in the area
- src.modules += new /obj/item/device/floor_painter(src)// to make america great again (c)
- src.modules += new /obj/item/pickaxe/borgdrill(src) // as station is being located at the rock terrain, which is presumed to be digged out to clear the area for new rooms
- src.modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
- src.modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
- src.modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
- src.modules += new /obj/item/extinguisher(src) // For navigating space and/or low grav, and just being useful.
- src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
- src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
- src.emag = new /obj/item/gun/energy/plasmacutter/mounted(src)
- src.malf_AI_module += new /obj/item/rfd/transformer(src)
+ modules += new /obj/item/powerdrill(src)
+ modules += new /obj/item/rfd/construction/borg(src)
+ modules += new /obj/item/rfd/piping/borg(src)
+ modules += new /obj/item/screwdriver/robotic(src)
+ modules += new /obj/item/wrench/robotic(src)
+ modules += new /obj/item/weldingtool/experimental(src)
+ modules += new /obj/item/device/pipe_painter(src)
+ modules += new /obj/item/gripper/no_use/loader(src)
+ modules += new /obj/item/gripper(src)
+ modules += new /obj/item/device/t_scanner(src) // to check underfloor wiring
+ modules += new /obj/item/device/analyzer(src) // to check air pressure in the area
+ modules += new /obj/item/device/lightreplacer(src) // to install lightning in the area
+ modules += new /obj/item/device/floor_painter(src)// to make america great again (c)
+ modules += new /obj/item/pickaxe/borgdrill(src) // as station is being located at the rock terrain, which is presumed to be digged out to clear the area for new rooms
+ modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
+ modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
+ modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
+ modules += new /obj/item/extinguisher(src) // For navigating space and/or low grav, and just being useful.
+ modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
+ modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
+ emag = new /obj/item/gun/energy/plasmacutter/mounted(src)
+ malf_AI_module += new /obj/item/rfd/transformer(src)
var/datum/matter_synth/metal = new /datum/matter_synth/metal(80000)
var/datum/matter_synth/plasteel = new /datum/matter_synth/plasteel(40000)
@@ -404,56 +404,56 @@ var/global/list/robot_modules = list(
var/obj/item/stack/material/cyborg/steel/M = new /obj/item/stack/material/cyborg/steel(src)
M.synths = list(metal)
- src.modules += M
+ modules += M
var/obj/item/stack/rods/cyborg/rods = new /obj/item/stack/rods/cyborg(src)
rods.synths = list(metal)
- src.modules += rods
+ modules += rods
var/obj/item/stack/material/cyborg/plasteel/S = new /obj/item/stack/material/cyborg/plasteel(src)
S.synths = list(plasteel)
- src.modules += S
+ modules += S
var/obj/item/stack/material/cyborg/glass/reinforced/RG = new /obj/item/stack/material/cyborg/glass/reinforced(src)
RG.synths = list(metal, glass)
- src.modules += RG
+ modules += RG
var/obj/item/stack/material/cyborg/cloth/CL = new /obj/item/stack/material/cyborg/cloth(src)
CL.synths = list(cloth)
- src.modules += CL
+ modules += CL
var/obj/item/stack/tile/floor/cyborg/FT = new /obj/item/stack/tile/floor/cyborg(src) // to add floor over the metal rods lattice
FT.synths = list(metal)
- src.modules += FT
+ modules += FT
var/obj/item/stack/cable_coil/cyborg/C = new /obj/item/stack/cable_coil/cyborg(src) // Let there be light electric said and after that did cut the wire
C.synths = list(wire)
- src.modules += C
+ modules += C
/obj/item/robot_module/engineering/general/Initialize()
. = ..()
- src.modules += new /obj/item/powerdrill(src)
- src.modules += new /obj/item/weldingtool/largetank(src)
- src.modules += new /obj/item/screwdriver/robotic(src)
- src.modules += new /obj/item/wrench/robotic(src)
- src.modules += new /obj/item/wirecutters/robotic(src)
- src.modules += new /obj/item/device/multitool/robotic(src)
- src.modules += new /obj/item/rfd/piping/borg(src)
- src.modules += new /obj/item/device/t_scanner(src)
- src.modules += new /obj/item/device/analyzer(src)
- src.modules += new /obj/item/gripper(src)
- src.modules += new /obj/item/gripper/no_use/loader(src)
- src.modules += new /obj/item/device/lightreplacer(src)
- src.modules += new /obj/item/device/pipe_painter(src)
- src.modules += new /obj/item/device/floor_painter(src)
- src.modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
- src.modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
- src.modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
- src.modules += new /obj/item/extinguisher(src) // For navigating space and/or low grav, and just being useful.
- src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
- src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
- src.emag = new /obj/item/melee/baton/robot/arm(src)
- src.malf_AI_module += new /obj/item/rfd/transformer(src)
+ modules += new /obj/item/powerdrill(src)
+ modules += new /obj/item/weldingtool/largetank(src)
+ modules += new /obj/item/screwdriver/robotic(src)
+ modules += new /obj/item/wrench/robotic(src)
+ modules += new /obj/item/wirecutters/robotic(src)
+ modules += new /obj/item/device/multitool/robotic(src)
+ modules += new /obj/item/rfd/piping/borg(src)
+ modules += new /obj/item/device/t_scanner(src)
+ modules += new /obj/item/device/analyzer(src)
+ modules += new /obj/item/gripper(src)
+ modules += new /obj/item/gripper/no_use/loader(src)
+ modules += new /obj/item/device/lightreplacer(src)
+ modules += new /obj/item/device/pipe_painter(src)
+ modules += new /obj/item/device/floor_painter(src)
+ modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
+ modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
+ modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
+ modules += new /obj/item/extinguisher(src) // For navigating space and/or low grav, and just being useful.
+ modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
+ modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
+ emag = new /obj/item/melee/baton/robot/arm(src)
+ malf_AI_module += new /obj/item/rfd/transformer(src)
var/datum/matter_synth/metal = new /datum/matter_synth/metal(60000)
var/datum/matter_synth/glass = new /datum/matter_synth/glass(40000)
@@ -473,63 +473,63 @@ var/global/list/robot_modules = list(
var/obj/item/matter_decompiler/MD = new /obj/item/matter_decompiler(src)
MD.metal = metal
MD.glass = glass
- src.modules += MD
+ modules += MD
var/obj/item/stack/material/cyborg/steel/M = new (src)
M.synths = list(metal)
- src.modules += M
+ modules += M
var/obj/item/stack/material/cyborg/glass/G = new (src)
G.synths = list(glass)
- src.modules += G
+ modules += G
var/obj/item/stack/rods/cyborg/rods = new /obj/item/stack/rods/cyborg(src)
rods.synths = list(metal)
- src.modules += rods
+ modules += rods
var/obj/item/stack/cable_coil/cyborg/C = new /obj/item/stack/cable_coil/cyborg(src)
C.synths = list(wire)
- src.modules += C
+ modules += C
var/obj/item/stack/tile/floor/cyborg/S = new /obj/item/stack/tile/floor/cyborg(src)
S.synths = list(metal)
- src.modules += S
+ modules += S
var/obj/item/stack/material/cyborg/glass/reinforced/RG = new /obj/item/stack/material/cyborg/glass/reinforced(src)
RG.synths = list(metal, glass)
- src.modules += RG
+ modules += RG
var/obj/item/stack/material/cyborg/plasteel/PL = new /obj/item/stack/material/cyborg/plasteel(src)
PL.synths = list(plasteel)
- src.modules += PL
+ modules += PL
var/obj/item/stack/material/cyborg/wood/W = new /obj/item/stack/material/cyborg/wood(src)
W.synths = list(wood)
- src.modules += W
+ modules += W
var/obj/item/stack/material/cyborg/plastic/PS = new /obj/item/stack/material/cyborg/plastic(src)
PS.synths = list(plastic)
- src.modules += PS
+ modules += PS
var/obj/item/stack/material/cyborg/cloth/CL = new /obj/item/stack/material/cyborg/cloth(src)
CL.synths = list(cloth)
- src.modules += CL
+ modules += CL
var/obj/item/stack/tile/wood/cyborg/FWT = new /obj/item/stack/tile/wood/cyborg(src)
FWT.synths = list(wood)
- src.modules += FWT
+ modules += FWT
var/obj/item/stack/tile/floor_white/cyborg/FTW = new /obj/item/stack/tile/floor_white/cyborg(src)
FTW.synths = list(plastic)
- src.modules += FTW
+ modules += FTW
var/obj/item/stack/tile/floor_freezer/cyborg/FTF = new /obj/item/stack/tile/floor_freezer/cyborg(src)
FTF.synths = list(plastic)
- src.modules += FTF
+ modules += FTF
var/obj/item/stack/tile/floor_dark/cyborg/FTD = new /obj/item/stack/tile/floor_dark/cyborg(src)
FTD.synths = list(plasteel)
- src.modules += FTD
+ modules += FTD
/obj/item/robot_module/janitor
name = "custodial robot module"
@@ -554,28 +554,28 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/janitor/Initialize()
. = ..()
- src.modules += new /obj/item/soap/drone(src)
- src.modules += new /obj/item/storage/bag/trash(src)
- src.modules += new /obj/item/mop(src)
- src.modules += new /obj/item/device/lightreplacer/advanced(src)
- src.modules += new /obj/item/reagent_containers/glass/bucket(src) // a hydroponist's bucket
- src.modules += new /obj/item/matter_decompiler(src) // free drone remains for all
- src.modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
- src.modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
- src.modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
- src.modules += new /obj/item/extinguisher/mini(src) // For navigating space and/or low grav, and just being useful.
- src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
- src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
- src.emag = new /obj/item/reagent_containers/spray(src)
- src.emag.reagents.add_reagent(/decl/reagent/lube, 250)
- src.emag.name = "Lube spray"
+ modules += new /obj/item/soap/drone(src)
+ modules += new /obj/item/storage/bag/trash(src)
+ modules += new /obj/item/mop(src)
+ modules += new /obj/item/device/lightreplacer/advanced(src)
+ modules += new /obj/item/reagent_containers/glass/bucket(src) // a hydroponist's bucket
+ modules += new /obj/item/matter_decompiler(src) // free drone remains for all
+ modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
+ modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
+ modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
+ modules += new /obj/item/extinguisher/mini(src) // For navigating space and/or low grav, and just being useful.
+ modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
+ modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
+ emag = new /obj/item/reagent_containers/spray(src)
+ emag.reagents.add_reagent(/decl/reagent/lube, 250)
+ emag.name = "Lube spray"
/obj/item/robot_module/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
..()
- var/obj/item/device/lightreplacer/LR = locate() in src.modules
+ var/obj/item/device/lightreplacer/LR = locate() in modules
LR.Charge(R, amount)
- if(src.emag)
- var/obj/item/reagent_containers/spray/S = src.emag
+ if(emag)
+ var/obj/item/reagent_containers/spray/S = emag
S.reagents.add_reagent(/decl/reagent/lube, 2 * amount)
/obj/item/robot_module/clerical
@@ -617,67 +617,67 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/clerical/butler/Initialize()
. = ..()
- src.modules += new /obj/item/gripper/service(src)
- src.modules += new /obj/item/reagent_containers/glass/bucket(src)
- src.modules += new /obj/item/material/minihoe(src)
- src.modules += new /obj/item/material/hatchet(src)
- src.modules += new /obj/item/device/analyzer/plant_analyzer(src)
- src.modules += new /obj/item/storage/bag/plants(src)
- src.modules += new /obj/item/robot_harvester(src)
- src.modules += new /obj/item/material/kitchen/rollingpin(src)
- src.modules += new /obj/item/material/knife(src)
- src.modules += new /obj/item/soap/drone(src)
- src.modules += new /obj/item/pen/robopen(src)
- src.modules += new /obj/item/form_printer(src)
- src.modules += new /obj/item/gripper/paperwork(src)
- src.modules += new /obj/item/device/hand_labeler(src)
- src.modules += new /obj/item/tape_roll(src) //allows it to place flyers
- src.modules += new /obj/item/device/nanoquikpay(src)
- src.modules += new /obj/item/reagent_containers/glass/rag(src) // a rag for.. yeah.. the primary tool of bartender
- src.modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
- src.modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
- src.modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
- src.modules += new /obj/item/extinguisher/mini(src) // For navigating space and/or low grav, and just being useful.
- src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
- src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
+ modules += new /obj/item/gripper/service(src)
+ modules += new /obj/item/reagent_containers/glass/bucket(src)
+ modules += new /obj/item/material/minihoe(src)
+ modules += new /obj/item/material/hatchet(src)
+ modules += new /obj/item/device/analyzer/plant_analyzer(src)
+ modules += new /obj/item/storage/bag/plants(src)
+ modules += new /obj/item/robot_harvester(src)
+ modules += new /obj/item/material/kitchen/rollingpin(src)
+ modules += new /obj/item/material/knife(src)
+ modules += new /obj/item/soap/drone(src)
+ modules += new /obj/item/pen/robopen(src)
+ modules += new /obj/item/form_printer(src)
+ modules += new /obj/item/gripper/paperwork(src)
+ modules += new /obj/item/device/hand_labeler(src)
+ modules += new /obj/item/tape_roll(src) //allows it to place flyers
+ modules += new /obj/item/device/nanoquikpay(src)
+ modules += new /obj/item/reagent_containers/glass/rag(src) // a rag for.. yeah.. the primary tool of bartender
+ modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
+ modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
+ modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
+ modules += new /obj/item/extinguisher/mini(src) // For navigating space and/or low grav, and just being useful.
+ modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
+ modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
var/obj/item/rfd/service/M = new /obj/item/rfd/service(src)
M.stored_matter = 30
- src.modules += M
+ modules += M
- src.modules += new /obj/item/reagent_containers/dropper/industrial(src)
+ modules += new /obj/item/reagent_containers/dropper/industrial(src)
var/obj/item/flame/lighter/zippo/L = new /obj/item/flame/lighter/zippo(src)
L.lit = TRUE
- src.modules += L
+ modules += L
- src.modules += new /obj/item/tray/robotray(src)
- src.modules += new /obj/item/reagent_containers/hypospray/borghypo/service(src)
- src.emag = new /obj/item/reagent_containers/food/drinks/bottle/small/beer(src)
+ modules += new /obj/item/tray/robotray(src)
+ modules += new /obj/item/reagent_containers/hypospray/borghypo/service(src)
+ emag = new /obj/item/reagent_containers/food/drinks/bottle/small/beer(src)
var/datum/reagents/RG = new /datum/reagents(50)
- src.emag.reagents = RG
- RG.my_atom = src.emag
+ emag.reagents = RG
+ RG.my_atom = emag
RG.add_reagent(/decl/reagent/polysomnine/beer2, 50)
- src.emag.name = "Mickey Finn's Special Brew"
+ emag.name = "Mickey Finn's Special Brew"
/obj/item/robot_module/clerical/general
name = "clerical robot module"
/obj/item/robot_module/clerical/general/Initialize()
. = ..()
- src.modules += new /obj/item/pen/robopen(src)
- src.modules += new /obj/item/form_printer(src)
- src.modules += new /obj/item/gripper/paperwork(src)
- src.modules += new /obj/item/device/hand_labeler(src)
- src.modules += new /obj/item/tape_roll(src) //allows it to place flyers
- src.modules += new /obj/item/device/nanoquikpay(src)
- src.modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
- src.modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
- src.modules += new /obj/item/extinguisher/mini(src) // For navigating space and/or low grav, and just being useful.
- src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
- src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
- src.emag = new /obj/item/stamp/chameleon(src)
+ modules += new /obj/item/pen/robopen(src)
+ modules += new /obj/item/form_printer(src)
+ modules += new /obj/item/gripper/paperwork(src)
+ modules += new /obj/item/device/hand_labeler(src)
+ modules += new /obj/item/tape_roll(src) //allows it to place flyers
+ modules += new /obj/item/device/nanoquikpay(src)
+ modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
+ modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
+ modules += new /obj/item/extinguisher/mini(src) // For navigating space and/or low grav, and just being useful.
+ modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
+ modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
+ emag = new /obj/item/stamp/chameleon(src)
/obj/item/robot_module/miner
name = "miner robot module"
@@ -702,45 +702,45 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/miner/Initialize()
. = ..()
- src.modules += new /obj/item/storage/bag/ore(src)
- src.modules += new /obj/item/pickaxe/borgdrill(src)
- src.modules += new /obj/item/storage/bag/sheetsnatcher/borg(src)
- src.modules += new /obj/item/gripper/miner(src)
- src.modules += new /obj/item/rfd/mining(src)
- src.modules += new /obj/item/ore_detector(src)
- src.modules += new /obj/item/mining_scanner(src)
- src.modules += new /obj/item/ore_radar(src)
- src.modules += new /obj/item/pen/robopen(src)
- src.modules += new /obj/item/form_printer(src)
- src.modules += new /obj/item/gripper/paperwork(src)
- src.modules += new /obj/item/device/hand_labeler(src)
- src.modules += new /obj/item/tape_roll(src) //allows it to place flyers
- src.modules += new /obj/item/device/nanoquikpay(src)
- src.modules += new /obj/item/device/gps/mining(src) // for locating itself in the deep space
- src.modules += new /obj/item/gun/custom_ka/cyborg(src)
- src.modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
- src.modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
- src.modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
- src.modules += new /obj/item/extinguisher/mini(src) // For navigating space and/or low grav, and just being useful.
- src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
- src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
- src.modules += new /obj/item/wrench/robotic(src)
- src.modules += new /obj/item/screwdriver/robotic(src)
- src.modules += new /obj/item/storage/part_replacer(src)
- src.modules += new /obj/item/tank/jetpack/carbondioxide/synthetic(src)
+ modules += new /obj/item/storage/bag/ore(src)
+ modules += new /obj/item/pickaxe/borgdrill(src)
+ modules += new /obj/item/storage/bag/sheetsnatcher/borg(src)
+ modules += new /obj/item/gripper/miner(src)
+ modules += new /obj/item/rfd/mining(src)
+ modules += new /obj/item/ore_detector(src)
+ modules += new /obj/item/mining_scanner(src)
+ modules += new /obj/item/ore_radar(src)
+ modules += new /obj/item/pen/robopen(src)
+ modules += new /obj/item/form_printer(src)
+ modules += new /obj/item/gripper/paperwork(src)
+ modules += new /obj/item/device/hand_labeler(src)
+ modules += new /obj/item/tape_roll(src) //allows it to place flyers
+ modules += new /obj/item/device/nanoquikpay(src)
+ modules += new /obj/item/device/gps/mining(src) // for locating itself in the deep space
+ modules += new /obj/item/gun/custom_ka/cyborg(src)
+ modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
+ modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
+ modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
+ modules += new /obj/item/extinguisher/mini(src) // For navigating space and/or low grav, and just being useful.
+ modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
+ modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
+ modules += new /obj/item/wrench/robotic(src)
+ modules += new /obj/item/screwdriver/robotic(src)
+ modules += new /obj/item/storage/part_replacer(src)
+ modules += new /obj/item/tank/jetpack/carbondioxide/synthetic(src)
var/datum/matter_synth/metal = new /datum/matter_synth/metal(80000)
synths += metal
var/obj/item/stack/rods/cyborg/rods = new /obj/item/stack/rods/cyborg(src)
rods.synths = list(metal)
- src.modules += rods
+ modules += rods
var/obj/item/stack/flag/purple/borg/F = new /obj/item/stack/flag/purple/borg(src)
F.synths = list(metal)
- src.modules += F
+ modules += F
- src.emag = new /obj/item/gun/energy/plasmacutter/mounted(src)
+ emag = new /obj/item/gun/energy/plasmacutter/mounted(src)
/obj/item/robot_module/research
name = "research module"
@@ -764,43 +764,43 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/research/Initialize()
. = ..()
- src.modules += new /obj/item/portable_destructive_analyzer(src)
- src.modules += new /obj/item/gripper/research(src)
- src.modules += new /obj/item/gripper/no_use/loader(src)
- src.modules += new /obj/item/device/robotanalyzer(src)
- src.modules += new /obj/item/card/robot(src)
+ modules += new /obj/item/portable_destructive_analyzer(src)
+ modules += new /obj/item/gripper/research(src)
+ modules += new /obj/item/gripper/no_use/loader(src)
+ modules += new /obj/item/device/robotanalyzer(src)
+ modules += new /obj/item/card/robot(src)
var/datum/matter_synth/wire = new /datum/matter_synth/wire(15)
synths += wire
var/obj/item/stack/cable_coil/cyborg/C = new /obj/item/stack/cable_coil/cyborg(src)
C.synths = list(wire)
- src.modules += C
+ modules += C
- src.modules += new /obj/item/weldingtool/experimental(src)
- src.modules += new /obj/item/wrench/robotic(src)
- src.modules += new /obj/item/screwdriver(src)
- src.modules += new /obj/item/wirecutters/robotic(src)
- src.modules += new /obj/item/surgery/scalpel(src)
- src.modules += new /obj/item/surgery/circular_saw(src)
- src.modules += new /obj/item/reagent_containers/syringe(src)
- src.modules += new /obj/item/gripper/chemistry(src)
- src.modules += new /obj/item/reagent_containers/dropper/industrial(src)
- src.modules += new /obj/item/device/reagent_scanner/adv(src)
- src.modules += new /obj/item/storage/bag/plants(src)
- src.modules += new /obj/item/pen/robopen(src)
- src.modules += new /obj/item/form_printer(src)
- src.modules += new /obj/item/gripper/paperwork(src)
- src.modules += new /obj/item/device/hand_labeler(src)
- src.modules += new /obj/item/tape_roll(src) //allows it to place flyers
- src.modules += new /obj/item/device/nanoquikpay(src)
- src.modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
- src.modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
- src.modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
- src.modules += new /obj/item/extinguisher(src) // For navigating space and/or low grav, and just being useful.
- src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
- src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
- src.modules += new /obj/item/storage/part_replacer(src)
- src.emag = new /obj/item/hand_tele(src)
+ modules += new /obj/item/weldingtool/experimental(src)
+ modules += new /obj/item/wrench/robotic(src)
+ modules += new /obj/item/screwdriver(src)
+ modules += new /obj/item/wirecutters/robotic(src)
+ modules += new /obj/item/surgery/scalpel(src)
+ modules += new /obj/item/surgery/circular_saw(src)
+ modules += new /obj/item/reagent_containers/syringe(src)
+ modules += new /obj/item/gripper/chemistry(src)
+ modules += new /obj/item/reagent_containers/dropper/industrial(src)
+ modules += new /obj/item/device/reagent_scanner/adv(src)
+ modules += new /obj/item/storage/bag/plants(src)
+ modules += new /obj/item/pen/robopen(src)
+ modules += new /obj/item/form_printer(src)
+ modules += new /obj/item/gripper/paperwork(src)
+ modules += new /obj/item/device/hand_labeler(src)
+ modules += new /obj/item/tape_roll(src) //allows it to place flyers
+ modules += new /obj/item/device/nanoquikpay(src)
+ modules += new /obj/item/taperoll/engineering(src) // To enable 'borgs to telegraph danger visually.
+ modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
+ modules += new /obj/item/device/gps(src) // For being located while disabled and coordinating with life sensor consoles.
+ modules += new /obj/item/extinguisher(src) // For navigating space and/or low grav, and just being useful.
+ modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
+ modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
+ modules += new /obj/item/storage/part_replacer(src)
+ emag = new /obj/item/hand_tele(src)
var/datum/matter_synth/nanite = new /datum/matter_synth/nanite(10000)
synths += nanite
@@ -809,7 +809,7 @@ var/global/list/robot_modules = list(
N.uses_charge = TRUE
N.charge_costs = list(1000)
N.synths = list(nanite)
- src.modules += N
+ modules += N
/obj/item/robot_module/syndicate
name = "syndicate robot module"
@@ -843,22 +843,22 @@ var/global/list/robot_modules = list(
R.faction = "syndicate" // prevents viscerators from attacking us
- src.modules += new /obj/item/borg/sight/thermal(src)
- src.modules += new /obj/item/melee/energy/sword(src)
- src.modules += new /obj/item/gun/energy/mountedsmg(src)
- src.modules += new /obj/item/gun/energy/net/mounted(src)
- src.modules += new /obj/item/gun/launcher/grenade/cyborg(src)
- src.modules += new /obj/item/robot_emag(src)
- src.modules += new /obj/item/handcuffs/cyborg(src)
- src.modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
- src.modules += new /obj/item/extinguisher(src) // For navigating space and/or low grav, and just being useful.
- src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
- src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
- src.modules += new /obj/item/roller_holder(src)
- src.modules += new /obj/item/device/healthanalyzer(src)
- src.modules += new /obj/item/reagent_containers/hypospray/borghypo/medical(src)
- src.modules += new /obj/item/plastique/cyborg(src)
- src.modules += new /obj/item/grenade/smokebomb/cyborg(src)
+ modules += new /obj/item/borg/sight/thermal(src)
+ modules += new /obj/item/melee/energy/sword(src)
+ modules += new /obj/item/gun/energy/mountedsmg(src)
+ modules += new /obj/item/gun/energy/net/mounted(src)
+ modules += new /obj/item/gun/launcher/grenade/cyborg(src)
+ modules += new /obj/item/robot_emag(src)
+ modules += new /obj/item/handcuffs/cyborg(src)
+ modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
+ modules += new /obj/item/extinguisher(src) // For navigating space and/or low grav, and just being useful.
+ modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
+ modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
+ modules += new /obj/item/roller_holder(src)
+ modules += new /obj/item/device/healthanalyzer(src)
+ modules += new /obj/item/reagent_containers/hypospray/borghypo/medical(src)
+ modules += new /obj/item/plastique/cyborg(src)
+ modules += new /obj/item/grenade/smokebomb/cyborg(src)
supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack)
if(R.radio)
@@ -874,16 +874,16 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/combat/Initialize()
. = ..()
- src.modules += new /obj/item/gun/energy/laser/mounted(src)
- src.modules += new /obj/item/melee/hammer/powered(src)
- src.modules += new /obj/item/borg/combat/shield(src)
- src.modules += new /obj/item/borg/combat/mobility(src)
- src.modules += new /obj/item/handcuffs/cyborg(src)
- src.modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
- src.modules += new /obj/item/extinguisher(src) // For navigating space and/or low grav, and just being useful.
- src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
- src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
- src.emag = new /obj/item/gun/energy/lasercannon/mounted(src)
+ modules += new /obj/item/gun/energy/laser/mounted(src)
+ modules += new /obj/item/melee/hammer/powered(src)
+ modules += new /obj/item/borg/combat/shield(src)
+ modules += new /obj/item/borg/combat/mobility(src)
+ modules += new /obj/item/handcuffs/cyborg(src)
+ modules += new /obj/item/inflatable_dispenser(src) // To enable 'borgs to protect Crew from danger in direct hazards.
+ modules += new /obj/item/extinguisher(src) // For navigating space and/or low grav, and just being useful.
+ modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws.
+ modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to.
+ emag = new /obj/item/gun/energy/lasercannon/mounted(src)
/obj/item/robot_module/drone
name = "drone module"
@@ -892,21 +892,20 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/drone/Initialize(mapload, mob/living/silicon/robot/robot)
. = ..()
- src.modules += new /obj/item/weldingtool(src)
- src.modules += new /obj/item/screwdriver/robotic(src)
- src.modules += new /obj/item/wrench/robotic(src)
- src.modules += new /obj/item/crowbar/robotic(src)
- src.modules += new /obj/item/wirecutters/robotic(src)
- src.modules += new /obj/item/device/multitool/robotic(src)
- src.modules += new /obj/item/device/lightreplacer(src)
- src.modules += new /obj/item/gripper(src)
- src.modules += new /obj/item/soap/drone(src)
- src.modules += new /obj/item/gripper/no_use/loader(src)
- src.modules += new /obj/item/extinguisher(src)
- src.modules += new /obj/item/rfd/piping/borg(src)
- src.modules += new /obj/item/device/pipe_painter(src)
- src.modules += new /obj/item/device/floor_painter(src)
- src.modules += new /obj/item/tank/jetpack/carbondioxide/synthetic(src)
+ modules += new /obj/item/weldingtool/robotic(src)
+ modules += new /obj/item/screwdriver/robotic(src)
+ modules += new /obj/item/wrench/robotic(src)
+ modules += new /obj/item/crowbar/robotic(src)
+ modules += new /obj/item/wirecutters/robotic(src)
+ modules += new /obj/item/device/multitool/robotic(src)
+ modules += new /obj/item/taperoll/engineering(src)
+ modules += new /obj/item/device/lightreplacer(src)
+ modules += new /obj/item/soap/drone(src)
+ modules += new /obj/item/extinguisher(src)
+ modules += new /obj/item/device/pipe_painter(src)
+ modules += new /obj/item/device/floor_painter(src)
+ modules += new /obj/item/gripper/multi_purpose(src)
+ modules += new /obj/item/gripper/no_use/loader(src)
var/datum/matter_synth/metal = new /datum/matter_synth/metal(25000)
var/datum/matter_synth/glass = new /datum/matter_synth/glass(25000)
@@ -926,47 +925,51 @@ var/global/list/robot_modules = list(
MD.glass = glass
MD.wood = wood
MD.plastic = plastic
- src.modules += MD
+ modules += MD
var/obj/item/stack/material/cyborg/steel/M = new (src)
M.synths = list(metal)
- src.modules += M
+ modules += M
var/obj/item/stack/material/cyborg/glass/G = new (src)
G.synths = list(glass)
- src.modules += G
-
- var/obj/item/stack/rods/cyborg/R = new /obj/item/stack/rods/cyborg(src)
- R.synths = list(metal)
- src.modules += R
-
- var/obj/item/stack/cable_coil/cyborg/C = new /obj/item/stack/cable_coil/cyborg(src)
- C.synths = list(wire)
- src.modules += C
-
- var/obj/item/stack/tile/floor/cyborg/S = new /obj/item/stack/tile/floor/cyborg(src)
- S.synths = list(metal)
- src.modules += S
+ modules += G
var/obj/item/stack/material/cyborg/glass/reinforced/RG = new (src)
RG.synths = list(metal, glass)
- src.modules += RG
-
- var/obj/item/stack/tile/wood/cyborg/WT = new /obj/item/stack/tile/wood/cyborg(src)
- WT.synths = list(wood)
- src.modules += WT
+ modules += RG
var/obj/item/stack/material/cyborg/wood/W = new (src)
W.synths = list(wood)
- src.modules += W
+ modules += W
var/obj/item/stack/material/cyborg/plastic/P = new (src)
P.synths = list(plastic)
- src.modules += P
+ modules += P
var/obj/item/stack/material/cyborg/cloth/CL = new /obj/item/stack/material/cyborg/cloth(src)
CL.synths = list(cloth)
- src.modules += CL
+ modules += CL
+
+ var/obj/item/stack/rods/cyborg/R = new /obj/item/stack/rods/cyborg(src)
+ R.synths = list(metal)
+ modules += R
+
+ var/obj/item/stack/cable_coil/cyborg/C = new /obj/item/stack/cable_coil/cyborg(src)
+ C.synths = list(wire)
+ modules += C
+
+ var/obj/item/stack/tile/floor/cyborg/S = new /obj/item/stack/tile/floor/cyborg(src)
+ S.synths = list(metal)
+ modules += S
+
+ var/obj/item/stack/tile/wood/cyborg/WT = new /obj/item/stack/tile/wood/cyborg(src)
+ WT.synths = list(wood)
+ modules += WT
+
+ modules += new /obj/item/tank/jetpack/carbondioxide/synthetic(src)
+ modules += new /obj/item/inflatable_dispenser(src)
+ modules += new /obj/item/rfd/piping/borg(src) // putting this here so it's next to the RFD-C on construction drones
/obj/item/robot_module/drone/construction
name = "construction drone module"
@@ -975,9 +978,10 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/drone/construction/Initialize()
. = ..()
modules += new /obj/item/rfd/construction/borg(src)
+ modules += new /obj/item/pickaxe/drill(src)
/obj/item/robot_module/drone/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
- var/obj/item/device/lightreplacer/LR = locate() in src.modules
+ var/obj/item/device/lightreplacer/LR = locate() in modules
LR.Charge(R, amount)
..()
return
@@ -1072,48 +1076,48 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/bluespace/Initialize(mapload, mob/living/silicon/robot/R)
. = ..()
- src.modules += new /obj/item/device/flash(src)
- src.modules += new /obj/item/borg/sight/meson(src)
- src.modules += new /obj/item/rfd/construction/borg/infinite(src)
- src.modules += new /obj/item/extinguisher(src)
- src.modules += new /obj/item/weldingtool/largetank(src)
- src.modules += new /obj/item/screwdriver/robotic(src)
- src.modules += new /obj/item/wrench/robotic(src)
- src.modules += new /obj/item/crowbar/robotic(src)
- src.modules += new /obj/item/wirecutters/robotic(src)
- src.modules += new /obj/item/device/multitool/robotic(src)
- src.modules += new /obj/item/device/t_scanner(src)
- src.modules += new /obj/item/device/analyzer(src)
- src.modules += new /obj/item/gripper(src)
- src.modules += new /obj/item/gripper/no_use/loader(src)
- src.modules += new /obj/item/device/lightreplacer(src)
- src.modules += new /obj/item/inflatable_dispenser(src)
+ modules += new /obj/item/device/flash(src)
+ modules += new /obj/item/borg/sight/meson(src)
+ modules += new /obj/item/rfd/construction/borg/infinite(src)
+ modules += new /obj/item/extinguisher(src)
+ modules += new /obj/item/weldingtool/largetank(src)
+ modules += new /obj/item/screwdriver/robotic(src)
+ modules += new /obj/item/wrench/robotic(src)
+ modules += new /obj/item/crowbar/robotic(src)
+ modules += new /obj/item/wirecutters/robotic(src)
+ modules += new /obj/item/device/multitool/robotic(src)
+ modules += new /obj/item/device/t_scanner(src)
+ modules += new /obj/item/device/analyzer(src)
+ modules += new /obj/item/gripper(src)
+ modules += new /obj/item/gripper/no_use/loader(src)
+ modules += new /obj/item/device/lightreplacer(src)
+ modules += new /obj/item/inflatable_dispenser(src)
// Medical
- src.modules += new /obj/item/device/healthanalyzer(src)
- src.modules += new /obj/item/reagent_containers/hypospray/borghypo/medical(src)
- src.modules += new /obj/item/surgery/scalpel(src)
- src.modules += new /obj/item/surgery/hemostat(src)
- src.modules += new /obj/item/surgery/retractor(src)
- src.modules += new /obj/item/surgery/cautery(src)
- src.modules += new /obj/item/surgery/bonegel(src)
- src.modules += new /obj/item/surgery/FixOVein(src)
- src.modules += new /obj/item/surgery/bonesetter(src)
- src.modules += new /obj/item/surgery/circular_saw(src)
- src.modules += new /obj/item/surgery/surgicaldrill(src)
- src.modules += new /obj/item/gripper/chemistry(src)
- src.modules += new /obj/item/reagent_containers/dropper/industrial(src)
- src.modules += new /obj/item/reagent_containers/syringe(src)
- src.modules += new /obj/item/reagent_containers/hypospray/borghypo/rescue(src)
- src.modules += new /obj/item/roller_holder(src)
+ modules += new /obj/item/device/healthanalyzer(src)
+ modules += new /obj/item/reagent_containers/hypospray/borghypo/medical(src)
+ modules += new /obj/item/surgery/scalpel(src)
+ modules += new /obj/item/surgery/hemostat(src)
+ modules += new /obj/item/surgery/retractor(src)
+ modules += new /obj/item/surgery/cautery(src)
+ modules += new /obj/item/surgery/bonegel(src)
+ modules += new /obj/item/surgery/FixOVein(src)
+ modules += new /obj/item/surgery/bonesetter(src)
+ modules += new /obj/item/surgery/circular_saw(src)
+ modules += new /obj/item/surgery/surgicaldrill(src)
+ modules += new /obj/item/gripper/chemistry(src)
+ modules += new /obj/item/reagent_containers/dropper/industrial(src)
+ modules += new /obj/item/reagent_containers/syringe(src)
+ modules += new /obj/item/reagent_containers/hypospray/borghypo/rescue(src)
+ modules += new /obj/item/roller_holder(src)
// Security
- src.modules += new /obj/item/handcuffs/cyborg(src)
- src.modules += new /obj/item/melee/baton/robot(src)
- src.modules += new /obj/item/melee/hammer/powered(src)
- src.modules += new /obj/item/gun/energy/lasercannon/mounted/cyborg/overclocked(src)
- src.modules += new /obj/item/borg/combat/shield(src)
- src.modules += new /obj/item/borg/combat/mobility(src)
+ modules += new /obj/item/handcuffs/cyborg(src)
+ modules += new /obj/item/melee/baton/robot(src)
+ modules += new /obj/item/melee/hammer/powered(src)
+ modules += new /obj/item/gun/energy/lasercannon/mounted/cyborg/overclocked(src)
+ modules += new /obj/item/borg/combat/shield(src)
+ modules += new /obj/item/borg/combat/mobility(src)
// BST
- src.modules += new/obj/item/card/id/bst(src)
+ modules += new/obj/item/card/id/bst(src)
var/datum/matter_synth/metal = new /datum/matter_synth/metal(60000)
var/datum/matter_synth/glass = new /datum/matter_synth/glass(40000)
@@ -1129,39 +1133,39 @@ var/global/list/robot_modules = list(
var/obj/item/matter_decompiler/MD = new /obj/item/matter_decompiler(src)
MD.metal = metal
MD.glass = glass
- src.modules += MD
+ modules += MD
var/obj/item/stack/material/cyborg/steel/M = new (src)
M.synths = list(metal)
- src.modules += M
+ modules += M
var/obj/item/stack/material/cyborg/glass/G = new (src)
G.synths = list(glass)
- src.modules += G
+ modules += G
var/obj/item/stack/rods/cyborg/RO = new /obj/item/stack/rods/cyborg(src)
RO.synths = list(metal)
- src.modules += RO
+ modules += RO
var/obj/item/stack/cable_coil/cyborg/C = new /obj/item/stack/cable_coil/cyborg(src)
C.synths = list(wire)
- src.modules += C
+ modules += C
var/obj/item/stack/tile/floor/cyborg/S = new /obj/item/stack/tile/floor/cyborg(src)
S.synths = list(metal)
- src.modules += S
+ modules += S
var/obj/item/stack/material/cyborg/glass/reinforced/RG = new (src)
RG.synths = list(metal, glass)
- src.modules += RG
+ modules += RG
var/obj/item/stack/material/cyborg/plasteel/PL = new (src)
PL.synths = list(plasteel)
- src.modules += PL
+ modules += PL
var/obj/item/stack/tile/floor_dark/cyborg/FTD = new (src)
FTD.synths = list(plasteel)
- src.modules += FTD
+ modules += FTD
var/obj/item/stack/nanopaste/N = new /obj/item/stack/nanopaste(src)
var/obj/item/stack/medical/advanced/bruise_pack/B = new /obj/item/stack/medical/advanced/bruise_pack(src)
@@ -1171,15 +1175,15 @@ var/global/list/robot_modules = list(
B.uses_charge = 1
B.charge_costs = list(1000)
B.synths = list(medicine)
- src.modules += N
- src.modules += B
+ modules += N
+ modules += B
/obj/item/robot_module/bluespace/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
..()
- var/obj/item/melee/baton/robot/B = locate() in src.modules
+ var/obj/item/melee/baton/robot/B = locate() in modules
if(B?.bcell)
B.bcell.give(amount)
- var/obj/item/reagent_containers/syringe/S = locate() in src.modules
+ var/obj/item/reagent_containers/syringe/S = locate() in modules
if(S.mode == 2)
S.reagents.clear_reagents()
S.mode = initial(S.mode)
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index f89e4d15629..7c24c97e063 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -1257,3 +1257,21 @@ proc/is_blind(A)
/mob/proc/get_organ_name_from_zone(var/def_zone)
return parse_zone(def_zone)
+
+/mob/living/silicon/robot/set_name(var/new_name, var/prefix)
+ ..()
+ if(mmi)
+ mmi.brainmob.name = real_name
+ mmi.brainmob.real_name = real_name
+ mmi.name = "[initial(mmi.name)]: [real_name]"
+
+ // We also need to update our internal ID
+ if(id_card)
+ if(prefix)
+ id_card.assignment = prefix
+ id_card.registered_name = real_name
+ id_card.update_name()
+
+ //We also need to update name of internal camera.
+ if(camera)
+ camera.c_tag = real_name
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index a7201c65b21..f61f27aed90 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -483,7 +483,7 @@ obj/structure/cable/proc/cableColor(var/colorC)
throw_range = 5
matter = list(DEFAULT_WALL_MATERIAL = 50, MATERIAL_GLASS = 20)
recyclable = TRUE
- flags = CONDUCT
+ flags = HELDMAPTEXT|CONDUCT
slot_flags = SLOT_BELT
attack_verb = list("whipped", "lashed", "disciplined", "flogged")
stacktype = /obj/item/stack/cable_coil
@@ -630,6 +630,7 @@ obj/structure/cable/proc/cableColor(var/colorC)
update_held_icon()
cut_overlays()
add_overlay(overlay_image(icon, "[icon_state]_end", flags=RESET_COLOR))
+ check_maptext(SMALL_FONTS(7, get_amount()))
/obj/item/stack/cable_coil/attackby(var/obj/item/W, var/mob/user)
if(W.ismultitool())
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index 07b65783286..66b6078de61 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -325,7 +325,8 @@
/obj/machinery/disposal/attack_ai(mob/user as mob)
if(!ai_can_interact(user))
return
- interact(user, 1)
+ var/inside_bin = (user.loc == src)
+ interact(user, !inside_bin)
// human interact with machine
/obj/machinery/disposal/attack_hand(mob/user as mob)
@@ -333,7 +334,7 @@
if(stat & BROKEN)
return
- if(user && user.loc == src)
+ if(user.loc == src)
to_chat(usr, "You cannot reach the controls from inside.")
return
@@ -389,7 +390,7 @@
// handle machine interaction
/obj/machinery/disposal/Topic(href, href_list)
- if(usr.loc == src)
+ if(usr.loc == src && !issilicon(usr))
to_chat(usr, "You cannot reach the controls from inside.")
return
diff --git a/html/changelogs/geeves-drone_buffs.yml b/html/changelogs/geeves-drone_buffs.yml
new file mode 100644
index 00000000000..43d45512c43
--- /dev/null
+++ b/html/changelogs/geeves-drone_buffs.yml
@@ -0,0 +1,19 @@
+author: Geeves
+
+delete-after: True
+
+changes:
+ - tweak: "Broken airlock electronics are now classified as trash, which means maintenance drones can decompile them."
+ - rscadd: "Various stack items now make use of maptext to show how many things are left in the stack."
+ - tweak: "Activating a synthetic jetpack now activates both the thrusters and stabilizers."
+ - rscadd: "Examining maintenance, mining, and matriarch drone flavor text will now give an expanded description of their duties and interactions."
+ - rscadd: "You can now shut down mining drones by swiping your ID on them."
+ - rscadd: "Construction and matriarch drones can now pull larger objects."
+ - rscdel: "You can no longer swipe your ID on matriarch drones."
+ - rscadd: "Drone grippers now have a blacklist rather than a whitelist of items it can hold, meaning they can interact with more objects."
+ - bugfix: "Drone cameras should now be named properly."
+ - rscadd: "Stationbounds and drones now get a Rebuild Overlays button in the Robot Commands tab that lets them cut and rebuild their overlays, helping with the stuck talking indicator problem."
+ - tweak: "Drone inventories have been reorganized to make more sense."
+ - rscadd: "Drones now spawn with an engineering taperoll and an inflatables dispenser."
+ - rscadd: "Construction and matriarch drones now spawn with a mining drill."
+ - rscadd: "Drones can now activate disposal bins while sitting inside them."
\ No newline at end of file
diff --git a/icons/obj/doors/door_assembly.dmi b/icons/obj/doors/door_assembly.dmi
index 533cf8aa094..556796f04f2 100644
Binary files a/icons/obj/doors/door_assembly.dmi and b/icons/obj/doors/door_assembly.dmi differ
diff --git a/icons/obj/robot_items.dmi b/icons/obj/robot_items.dmi
index 5f02a0151f2..8c8978dc904 100644
Binary files a/icons/obj/robot_items.dmi and b/icons/obj/robot_items.dmi differ
diff --git a/icons/obj/trash.dmi b/icons/obj/trash.dmi
index b31ef3ef890..c60d2b055ec 100644
Binary files a/icons/obj/trash.dmi and b/icons/obj/trash.dmi differ
diff --git a/maps/dungeon_spawns/vault_unique.dmm b/maps/dungeon_spawns/vault_unique.dmm
index 937b4765e07..75b81ccf629 100644
--- a/maps/dungeon_spawns/vault_unique.dmm
+++ b/maps/dungeon_spawns/vault_unique.dmm
@@ -85,7 +85,7 @@
},
/obj/item/gun/energy/toxgun,
/obj/item/frame/apc,
-/obj/item/circuitboard/broken,
+/obj/item/trash/broken_electronics,
/turf/simulated/floor/holofloor/tiled/dark,
/area/turret_protected/corp_vault)
"m" = (