diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm
index ab19b0e525..3989e7d880 100644
--- a/code/WorkInProgress/surgery.dm
+++ b/code/WorkInProgress/surgery.dm
@@ -308,6 +308,9 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/fix_vein
required_tool = /obj/item/weapon/FixOVein
+ min_duration = 70
+ max_duration = 90
+
can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/external/affected = target.get_organ(target_zone)
@@ -855,7 +858,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
target.cores--
user.visible_message("\blue [user] cuts out one of [target]'s cores with \the [tool].",, \
"\blue You cut out one of [target]'s cores with \the [tool]. [target.cores] cores left.")
- new/obj/item/metroid_core(target.loc)
+ if(target.cores >= 0)
+ new/obj/item/metroid_core(target.loc)
if(target.cores <= 0)
target.icon_state = "baby roro dead-nocore"
diff --git a/code/WorkInProgress/virus2/dishincubator.dm b/code/WorkInProgress/virus2/dishincubator.dm
index e6d0da1239..f2aefe07ea 100644
--- a/code/WorkInProgress/virus2/dishincubator.dm
+++ b/code/WorkInProgress/virus2/dishincubator.dm
@@ -165,5 +165,5 @@
if(beaker)
if(!beaker.reagents.remove_reagent("virusfood",5))
foodsupply += 10
- if(!beaker.reagents.remove_reagent("toxins",1))
+ if(!beaker.reagents.remove_reagent("toxin",1))
toxins += 1
\ No newline at end of file
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index e98c28e7dc..555dbe1cae 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -124,8 +124,8 @@
usr << "You can't clear the memory while playing or recording!"
return
else
- storedinfo -= storedinfo
- timestamp -= timestamp
+ if(storedinfo) storedinfo.Cut()
+ if(timestamp) timestamp.Cut()
timerecorded = 0
usr << "Memory cleared."
return
diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm
index b91b5a560d..2ab6bbc9ca 100644
--- a/code/game/objects/items/weapons/kitchen.dm
+++ b/code/game/objects/items/weapons/kitchen.dm
@@ -86,13 +86,12 @@
else
H.Stun(time)
if(H.stat != 2) H.stat = 1
- for(var/mob/O in viewers(H, null))
- O.show_message(text("\red [] has been knocked unconscious!", H), 1, "\red You hear someone fall.", 2)
+ user.visible_message("\red [H] has been knocked unconscious!", "\red You knock [H] unconscious!")
+ return
else
- H << text("\red [] tried to knock you unconscious!",user)
+ H.visible_message("\red [user] tried to knock [H] unconscious!", "\red [user] tried to knock you unconscious!")
H.eye_blurry += 3
-
- return
+ return ..()
/*
* Trays - Agouri
diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm
index f567abc87e..8175482402 100644
--- a/code/modules/admin/verbs/adminsay.dm
+++ b/code/modules/admin/verbs/adminsay.dm
@@ -25,7 +25,7 @@
for (var/client/C in admin_list)
if (src.holder.rank == "Admin Observer")
C << "ADMIN: [key_name(usr, C)]: [msg]"
- else if(C.holder.level != 0)
+ else if(C.holder && C.holder.level != 0)
C << "ADMIN: [key_name(usr, C)] (JMP): [msg]"
/client/proc/cmd_mod_say(msg as text)
diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm
index 1eb1d159c9..34d0195367 100644
--- a/code/modules/mob/living/silicon/robot/emote.dm
+++ b/code/modules/mob/living/silicon/robot/emote.dm
@@ -195,10 +195,13 @@
m_type = 2
if("law")
- message = "[src] shows its legal authorization barcode."
+ if (istype(module,/obj/item/weapon/robot_module/security))
+ message = "[src] shows its legal authorization barcode."
- playsound(src.loc, 'biamthelaw.ogg', 50, 0)
- m_type = 2
+ playsound(src.loc, 'biamthelaw.ogg', 50, 0)
+ m_type = 2
+ else
+ src << "You are not THE LAW, pal."
else
src << text("Invalid Emote: []", act)
if ((message && src.stat == 0))
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 16fa20c5de..c007425c9b 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -226,7 +226,7 @@
/obj/item/weapon/paper/Topic(href, href_list)
..()
- if((usr.stat || usr.restrained()))
+ if(!usr || (usr.stat || usr.restrained()))
return
if(href_list["write"])
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index 63f9f9ab3d..a0f320873a 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -61,7 +61,7 @@
/obj/machinery/power/smes/proc/chargedisplay()
- return round(5.5*charge/capacity)
+ return round(5.5*charge/(capacity ? capacity : 5e6))
#define SMESRATE 0.05 // rate of internal charge to external power
diff --git a/code/modules/research/xenoarchaeology/artifact_analysis.dm b/code/modules/research/xenoarchaeology/artifact_analysis.dm
index 1a83768937..5225b650e7 100644
--- a/code/modules/research/xenoarchaeology/artifact_analysis.dm
+++ b/code/modules/research/xenoarchaeology/artifact_analysis.dm
@@ -221,7 +221,7 @@
findarti++
cur_artifact = A
if (findarti == 1)
- if(cur_artifact.being_used)
+ if(cur_artifact && cur_artifact.being_used)
var/message = "[src] states, \"Cannot analyse. Excess energy drain is disrupting signal.\""
src.visible_message(message, message)
else
diff --git a/code/world.dm b/code/world.dm
index b73100d519..917ccc1d3c 100644
--- a/code/world.dm
+++ b/code/world.dm
@@ -18,8 +18,8 @@
src.load_mode()
src.load_motd()
- src.load_mods()
src.load_admins()
+ src.load_mods()
investigate_reset()
if (config.usewhitelist)
load_whitelist()