diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index a6400142086..fb1f930e6fb 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -656,7 +656,20 @@ var/list/ai_verbs_default = list(
return
if(href_list["ai_take_control"]) //Mech domination
+
var/obj/mecha/M = locate(href_list["ai_take_control"])
+
+ if(!M)
+ return
+
+ var/mech_has_controlbeacon = FALSE
+ for(var/obj/item/mecha_parts/mecha_tracking/ai_control/A in M.trackers)
+ mech_has_controlbeacon = TRUE
+ break
+ if(!can_dominate_mechs && !mech_has_controlbeacon)
+ message_admins("Warning: [key_name(usr)] attempted control of a mecha without can_dominate_mechs or a control beacon in the mech.")
+ return
+
if(controlled_mech)
to_chat(src, "You are already loaded into an onboard computer!")
return
@@ -670,7 +683,7 @@ var/list/ai_verbs_default = list(
to_chat(src, "You aren't in your core!")
return
if(M)
- M.transfer_ai(AI_MECH_HACK,src, usr) //Called om the mech itself.
+ M.transfer_ai(AI_MECH_HACK, src, usr) //Called om the mech itself.
else if(href_list["faketrack"])
var/mob/target = locate(href_list["track"]) in GLOB.mob_list
diff --git a/code/modules/nano/modules/law_manager.dm b/code/modules/nano/modules/law_manager.dm
index 04a98aa25a9..6294d22e99a 100644
--- a/code/modules/nano/modules/law_manager.dm
+++ b/code/modules/nano/modules/law_manager.dm
@@ -31,6 +31,10 @@
if(..())
return 1
+ if(!can_still_topic())
+ message_admins("Warning: [key_name(usr)] failed initial can_still_topic in nano_module/law_manager/Topic")
+ return 1
+
if(href_list["set_view"])
current_view = text2num(href_list["set_view"])
return 1