diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index b5dc159caf0..553b8d2f59e 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -188,6 +188,9 @@
M.regenerate_icons()
M.update_body()
+ if(!the_bomb)
+ the_bomb = locate(/obj/machinery/nuclearbomb/syndicate) in GLOB.poi_list
+
if(the_bomb)
synd_mind.store_memory("Syndicate [the_bomb.name] Code: [the_bomb.r_code]")
to_chat(synd_mind.current, "The code for \the [the_bomb.name] is: [the_bomb.r_code]")
diff --git a/code/game/objects/items/tools/tool_behaviour.dm b/code/game/objects/items/tools/tool_behaviour.dm
index 136bea77e6a..8770c1d6383 100644
--- a/code/game/objects/items/tools/tool_behaviour.dm
+++ b/code/game/objects/items/tools/tool_behaviour.dm
@@ -57,4 +57,8 @@
// Used in a callback that is passed by use_tool into do_after call. Do not override, do not call manually.
/obj/item/proc/tool_check_callback(mob/living/user, atom/target, amount, datum/callback/extra_checks)
- return tool_use_check(user, amount) && (extra_checks && !extra_checks.Invoke())
+ if(!tool_use_check(user, amount))
+ return TRUE
+ if(extra_checks && !extra_checks.Invoke())
+ return TRUE
+ return FALSE
diff --git a/code/game/objects/items/tools/welder.dm b/code/game/objects/items/tools/welder.dm
index 8ab4c12cf0f..6feb76fa8df 100644
--- a/code/game/objects/items/tools/welder.dm
+++ b/code/game/objects/items/tools/welder.dm
@@ -16,7 +16,7 @@
w_class = WEIGHT_CLASS_SMALL
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
resistance_flags = FIRE_PROOF
- materials = list(MAT_METAL=70, MAT_GLASS=30)
+ materials = list(MAT_METAL = 70, MAT_GLASS = 20)
origin_tech = "engineering=1;plasmatech=1"
tool_behaviour = TOOL_WELDER
toolspeed = 1
@@ -131,7 +131,7 @@
/obj/item/weldingtool/tool_check_callback(mob/living/user, amount, datum/callback/extra_checks)
. = ..()
- if(. && user)
+ if(!. && user)
if(progress_flash_divisor == 0)
user.flash_eyes(min(light_intensity, 1))
progress_flash_divisor = initial(progress_flash_divisor)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index 8bf44346e72..2bf2b03b4a2 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -69,6 +69,8 @@
togglelock(user)
/obj/structure/closet/secure_closet/AltClick(mob/user)
+ if(opened)
+ return ..()
if(Adjacent(user))
togglelock(user)
@@ -78,7 +80,7 @@
locked = FALSE
icon_state = icon_off
flick(icon_broken, src)
- to_chat(user, "You break the lock on \the [src].")
+ to_chat(user, "You break the lock on [src].")
/obj/structure/closet/secure_closet/attack_hand(mob/user)
add_fingerprint(user)
diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm
index 17112901b29..5a5a7c4696f 100644
--- a/code/modules/reagents/reagent_containers/patch.dm
+++ b/code/modules/reagents/reagent_containers/patch.dm
@@ -18,7 +18,8 @@
return FALSE
bitesize = 0
if(M.eat(src, user))
- user.drop_item()
+ if(user.get_active_hand() == src)
+ user.drop_item() // Only drop if they're holding the patch directly
forceMove(M)
LAZYADD(M.processing_patches, src)
return TRUE
diff --git a/code/modules/ruins/lavalandruin_code/puzzle.dm b/code/modules/ruins/lavalandruin_code/puzzle.dm
index 0220498df5e..2a3ae55bd4b 100644
--- a/code/modules/ruins/lavalandruin_code/puzzle.dm
+++ b/code/modules/ruins/lavalandruin_code/puzzle.dm
@@ -194,7 +194,7 @@
/obj/structure/puzzle_element
name = "mysterious pillar"
- desc = "puzzling..."
+ desc = "Puzzling..."
icon = 'icons/obj/lavaland/artefacts.dmi'
icon_state = "puzzle_pillar"
anchored = FALSE
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index ee017cfa4e5..a0c2c10308e 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -64,8 +64,9 @@
/obj/item/organ/internal/heart/prepare_eat()
var/obj/S = ..()
- S.icon_state = dead_icon
- return S
+ if(S)
+ S.icon_state = dead_icon
+ return S
/obj/item/organ/internal/heart/cursed
name = "cursed heart"
diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm
index 12cc87aeb3f..8250665d587 100644
--- a/code/modules/surgery/organs/lungs.dm
+++ b/code/modules/surgery/organs/lungs.dm
@@ -304,8 +304,9 @@
/obj/item/organ/internal/lungs/prepare_eat()
var/obj/S = ..()
- S.reagents.add_reagent("salbutamol", 5)
- return S
+ if(S)
+ S.reagents.add_reagent("salbutamol", 5)
+ return S
/obj/item/organ/internal/lungs/plasmaman
name = "plasma filter"
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index 0564a4b7c7b..9b9702e53c3 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ