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."