diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index e1c2f9796d4..c09aef55f4f 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -413,7 +413,16 @@
update_icon()
return 1
+
//This proc is called when you want to place an item into the storage item.
+//Its a safe proc for adding things to the storage that does the necessary checks. Object will not be moved if it fails
+/obj/item/weapon/storage/proc/insert_into_storage(obj/item/W as obj, var/prevent_messages = 1)
+ if(!can_be_inserted(W, prevent_messages))
+ return
+
+ return handle_item_insertion(W, prevent_messages)
+
+
/obj/item/weapon/storage/attackby(obj/item/W as obj, mob/user as mob)
..()
diff --git a/code/modules/mob/living/silicon/robot/login.dm b/code/modules/mob/living/silicon/robot/login.dm
index 9d9117b9330..72493c1617e 100644
--- a/code/modules/mob/living/silicon/robot/login.dm
+++ b/code/modules/mob/living/silicon/robot/login.dm
@@ -6,5 +6,5 @@
winset(src, null, "mainwindow.macro=borgmacro hotkey_toggle.is-checked=false input.focus=true input.background-color=#D3B5B5")
// Forces synths to select an icon relevant to their module
- if(!icon_selected)
+ if(module && !icon_selected)
choose_icon(icon_selection_tries, module_sprites)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 1954adaed71..b168c5561df 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -254,7 +254,7 @@
if(new_sprites && new_sprites.len)
module_sprites = new_sprites.Copy()
//Custom_sprite check and entry
-
+
if (custom_sprite == 1)
var/list/valid_states = icon_states(CUSTOM_ITEM_SYNTH)
if("[ckey]-[modtype]" in valid_states)
@@ -268,7 +268,7 @@
else
icontype = module_sprites[1]
icon_state = module_sprites[icontype]
-
+
updateicon()
return module_sprites
@@ -463,7 +463,7 @@
/mob/living/silicon/robot/bullet_act(var/obj/item/projectile/Proj)
..(Proj)
- if(prob(75) && Proj.damage > 0)
+ if(prob(75) && Proj.damage > 0)
spark_system.queue()
return 2
@@ -1031,6 +1031,7 @@
verbs -= /mob/living/silicon/robot/proc/choose_icon
src << "Your icon has been set. You now require a module reset to change it."
+
/mob/living/silicon/robot/proc/sensor_mode() //Medical/Security HUD controller for borgs
set name = "Set Sensor Augmentation"
set category = "Robot Commands"
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 8879295541c..8e7f6fd35b8 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -173,6 +173,7 @@ var/global/list/robot_modules = list(
)
/obj/item/weapon/robot_module/standard/New()
+ ..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/weapon/melee/baton/loaded(src)
src.modules += new /obj/item/weapon/extinguisher(src)
@@ -180,7 +181,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/crowbar(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.emag = new /obj/item/weapon/melee/energy/sword(src)
- ..()
+
/obj/item/weapon/robot_module/medical
name = "medical robot module"
@@ -194,7 +195,7 @@ var/global/list/robot_modules = list(
"Heavy" = "heavyMed",
"Needles" = "medicalrobot",
"Standard" = "surgeon",
- "Advanced Droid - Medical" = "droid-surgery",
+ "Advanced Droid - Medical" = "droid-medical",
"Advanced Droid - Chemistry" = "droid-chemistry",
"Drone - Medical" = "drone-surgery",
"Drone - Chemistry" = "drone-chemistry",
@@ -241,7 +242,6 @@ var/global/list/robot_modules = list(
src.modules += N
src.modules += B
- ..()
/obj/item/weapon/robot_module/medical/general/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules
@@ -307,7 +307,6 @@ var/global/list/robot_modules = list(
src.modules += B
src.modules += S
- ..()
/obj/item/weapon/robot_module/medical/rescue/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules
@@ -388,6 +387,7 @@ var/global/list/robot_modules = list(
src.modules += RG
/obj/item/weapon/robot_module/engineering/general/New()
+ ..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/meson(src)
src.modules += new /obj/item/weapon/extinguisher(src)
@@ -450,8 +450,6 @@ var/global/list/robot_modules = list(
PL.synths = list(plasteel)
src.modules += PL
- ..()
-
/obj/item/weapon/robot_module/security
name = "security robot module"
channels = list("Security" = 1)
@@ -477,6 +475,7 @@ var/global/list/robot_modules = list(
supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack)
/obj/item/weapon/robot_module/security/general/New()
+ ..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/hud/sec(src)
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
@@ -485,7 +484,6 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/taperoll/police(src)
src.modules += new /obj/item/device/holowarrant(src)
src.emag = new /obj/item/weapon/gun/energy/laser/mounted(src)
- ..()
/obj/item/weapon/robot_module/security/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
..()
@@ -513,6 +511,7 @@ var/global/list/robot_modules = list(
)
/obj/item/weapon/robot_module/janitor/New()
+ ..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/weapon/soap/nanotrasen(src)
src.modules += new /obj/item/weapon/storage/bag/trash(src)
@@ -521,7 +520,6 @@ var/global/list/robot_modules = list(
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.emag.reagents.add_reagent("lube", 250)
src.emag.name = "Lube spray"
- ..()
/obj/item/weapon/robot_module/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
..()
@@ -563,6 +561,7 @@ var/global/list/robot_modules = list(
/obj/item/weapon/robot_module/clerical/butler/New()
+ ..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/weapon/gripper/service(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src)
@@ -593,19 +592,18 @@ var/global/list/robot_modules = list(
R.my_atom = src.emag
R.add_reagent("beer2", 50)
src.emag.name = "Mickey Finn's Special Brew"
- ..()
/obj/item/weapon/robot_module/clerical/general
name = "clerical robot module"
/obj/item/weapon/robot_module/clerical/general/New()
+ ..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/weapon/pen/robopen(src)
src.modules += new /obj/item/weapon/form_printer(src)
src.modules += new /obj/item/weapon/gripper/paperwork(src)
src.modules += new /obj/item/weapon/hand_labeler(src)
src.emag = new /obj/item/weapon/stamp/denied(src)
- ..()
/obj/item/weapon/robot_module/general/butler/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
..()
@@ -632,6 +630,7 @@ var/global/list/robot_modules = list(
supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack)
/obj/item/weapon/robot_module/miner/New()
+ ..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/material(src)
src.modules += new /obj/item/weapon/wrench(src)
@@ -643,7 +642,6 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/mining_scanner(src)
src.modules += new /obj/item/weapon/crowbar(src)
src.emag = new /obj/item/weapon/pickaxe/plasmacutter(src)
- ..()
/obj/item/weapon/robot_module/research
name = "research module"
@@ -657,6 +655,7 @@ var/global/list/robot_modules = list(
)
/obj/item/weapon/robot_module/research/New()
+ ..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/weapon/portable_destructive_analyzer(src)
src.modules += new /obj/item/weapon/gripper/research(src)
@@ -687,8 +686,6 @@ var/global/list/robot_modules = list(
N.synths = list(nanite)
src.modules += N
- ..()
-
/obj/item/weapon/robot_module/syndicate
name = "syndicate robot module"
languages = list(
@@ -733,6 +730,7 @@ var/global/list/robot_modules = list(
supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack)
/obj/item/weapon/robot_module/combat/New()
+ ..()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/hud/sec(src)
src.modules += new /obj/item/weapon/gun/energy/laser/mounted(src)
@@ -741,7 +739,6 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/borg/combat/mobility(src)
src.modules += new /obj/item/weapon/crowbar(src)
src.emag = new /obj/item/weapon/gun/energy/lasercannon/mounted(src)
- ..()
/obj/item/weapon/robot_module/drone
name = "drone module"
@@ -749,6 +746,7 @@ var/global/list/robot_modules = list(
networks = list(NETWORK_ENGINEERING)
/obj/item/weapon/robot_module/drone/New(var/mob/living/silicon/robot/robot)
+ ..()
src.modules += new /obj/item/weapon/weldingtool(src)
src.modules += new /obj/item/weapon/screwdriver(src)
src.modules += new /obj/item/weapon/wrench(src)
@@ -823,16 +821,14 @@ var/global/list/robot_modules = list(
P.synths = list(plastic)
src.modules += P
- ..()
-
/obj/item/weapon/robot_module/drone/construction
name = "construction drone module"
channels = list("Engineering" = 1)
languages = list()
/obj/item/weapon/robot_module/drone/construction/New()
- src.modules += new /obj/item/weapon/rcd/borg(src)
..()
+ src.modules += new /obj/item/weapon/rcd/borg(src)
/obj/item/weapon/robot_module/drone/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/device/lightreplacer/LR = locate() in src.modules
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 4f8b7304b6f..54007df2d6d 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -184,9 +184,7 @@
P.icon_state = "pill"+pillsprite
reagents.trans_to_obj(P,amount_per_pill)
if(src.loaded_pill_bottle)
- if(loaded_pill_bottle.contents.len < loaded_pill_bottle.max_storage_space)
- P.loc = loaded_pill_bottle
- src.updateUsrDialog()
+ loaded_pill_bottle.insert_into_storage(P)
else if (href_list["createbottle"])
if(!condi)
@@ -243,7 +241,7 @@
if(!beaker)
dat = "Please insert beaker.
"
if(src.loaded_pill_bottle)
- dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]
"
+ dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.max_storage_space]\]
"
else
dat += "No pill bottle inserted.
"
dat += "Close"
@@ -251,7 +249,7 @@
var/datum/reagents/R = beaker:reagents
dat += "Eject beaker and Clear Buffer
"
if(src.loaded_pill_bottle)
- dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]
"
+ dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.max_storage_space]\]
"
else
dat += "No pill bottle inserted.
"
if(!R.total_volume)
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 8b2919c3d4f..f5208bc45cd 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -766,7 +766,7 @@ datum/design/item/experimental_welder
name = "Experimental Welding Tool"
desc = "A scientifically-enhanced welding tool that uses fuel-producing microbes to gradually replenish its fuel supply"
id = "experimental_welder"
- req_tech = list(ENGINEERING = 4, TECH_MATERIAL = 4)
+ req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 4)
materials = list(DEFAULT_WALL_MATERIAL = 500)
build_path =/obj/item/weapon/weldingtool/experimental
sort_string = "VABAJ"
diff --git a/code/modules/surgery/bones.dm b/code/modules/surgery/bones.dm
index 25addbd40a4..1ba5179fd88 100644
--- a/code/modules/surgery/bones.dm
+++ b/code/modules/surgery/bones.dm
@@ -6,7 +6,7 @@
/datum/surgery_step/glue_bone
allowed_tools = list(
/obj/item/weapon/bonegel = 100, \
- /obj/item/weapon/screwdriver = 75
+ /obj/item/weapon/tape_roll = 60
)
can_infect = 1
blood_level = 1
@@ -18,7 +18,7 @@
if (!hasorgans(target))
return 0
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- return affected && !(affected.status & ORGAN_ROBOT) && affected.open >= 2 && affected.stage == 0
+ return affected && !(affected.status & ORGAN_ROBOT) && affected.open >= 2 && affected.open < 3 && affected.stage == 0
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
@@ -115,7 +115,7 @@
/datum/surgery_step/finish_bone
allowed_tools = list(
/obj/item/weapon/bonegel = 100, \
- /obj/item/weapon/screwdriver = 75
+ /obj/item/weapon/tape_roll = 60
)
can_infect = 1
blood_level = 1
@@ -127,7 +127,7 @@
if (!hasorgans(target))
return 0
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- return affected && affected.open >= 2 && !(affected.status & ORGAN_ROBOT) && affected.stage == 2
+ return affected && affected.open >= 2 && affected.open < 3 && !(affected.status & ORGAN_ROBOT) && affected.stage == 2
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
diff --git a/code/modules/surgery/encased.dm b/code/modules/surgery/encased.dm
index 762c2b71c46..fbd1e8b8d89 100644
--- a/code/modules/surgery/encased.dm
+++ b/code/modules/surgery/encased.dm
@@ -17,7 +17,9 @@
/datum/surgery_step/open_encased/saw
allowed_tools = list(
- /obj/item/weapon/circular_saw = 100, \
+ /obj/item/weapon/circular_saw = 100,
+ /obj/item/weapon/melee/energy = 100,
+ /obj/item/weapon/melee/chainsword = 70,
/obj/item/weapon/material/hatchet = 75
)
@@ -172,7 +174,7 @@
affected.createwound(BRUISE, 20)
affected.fracture()
-
+
if(affected.internal_organs && affected.internal_organs.len)
if(prob(40))
var/obj/item/organ/O = pick(affected.internal_organs) //TODO weight by organ size
@@ -182,7 +184,7 @@
/datum/surgery_step/open_encased/mend
allowed_tools = list(
/obj/item/weapon/bonegel = 100, \
- /obj/item/weapon/screwdriver = 75
+ /obj/item/weapon/tape_roll = 60
)
min_duration = 20
diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm
index 867e222c3bd..34d34a380ca 100644
--- a/code/modules/surgery/robotics.dm
+++ b/code/modules/surgery/robotics.dm
@@ -205,11 +205,11 @@
max_duration = 90
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
-
if (!hasorgans(target))
return
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- if(!affected) return
+ if(!affected)
+ return
var/is_organ_damaged = 0
for(var/obj/item/organ/I in affected.internal_organs)
if(I.damage > 0 && I.robotic >= 2)
diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm
index e582d1222f7..30d9e86f8a1 100644
--- a/code/modules/surgery/surgery.dm
+++ b/code/modules/surgery/surgery.dm
@@ -110,6 +110,7 @@ proc/do_surgery(mob/living/carbon/M, mob/living/user, obj/item/tool)
if (user.a_intent == I_HELP)
user << "You can't see any useful way to use [tool] on [M]."
+ return 1 //Prevents attacking your patient on help intent
return 0
proc/sort_surgeries()
diff --git a/html/changelogs/Nanako-Techfixes.yml b/html/changelogs/Nanako-Techfixes.yml
new file mode 100644
index 00000000000..42faab0d30b
--- /dev/null
+++ b/html/changelogs/Nanako-Techfixes.yml
@@ -0,0 +1,41 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Nanako
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - bugfix: "Fixed being unable to repair mechanical organs with nanopaste or screwdriver, these both work now."
+ - tweak: "Screwdriver can no longer be used as a ghetto alternative to bone gel. Use duct tape instead."
+ - tweak: "Energy swords and chainswords can be used to cut open ribs in surgery."
+ - bugfix: "Fixed attacking your patient with tools on help intent when there wasnt a valid surgery step."
+ - bugfix: "Fixed pillbottle interactions with chemmaster machines."
+ - bugfix: "Fixed being asked to pick a cyborg sprite multiple times. Also fixed a missing sprite."