diff --git a/code/defines/global.dm b/code/defines/global.dm
index ba57071920c..635dea405ce 100644
--- a/code/defines/global.dm
+++ b/code/defines/global.dm
@@ -69,6 +69,7 @@ var
dna_ident = 1
abandon_allowed = 1
enter_allowed = 1
+ guests_allowed = 1
shuttle_frozen = 0
shuttle_left = 0
tinted_weldhelh = 1 //as soon as the thing is sprited, we'll code in the toggle verb, bot for now, it should stay on by default. -errorage //Until you have the actual functionality for it, don't set this on by default. You're putting the cart before the horse. --DH
diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm
index 373ddcf665c..87f47f14286 100644
--- a/code/game/machinery/bots/ed209bot.dm
+++ b/code/game/machinery/bots/ed209bot.dm
@@ -667,10 +667,11 @@ Auto Patrol: []"},
return
return
-/obj/machinery/bot/ed209/Bumped(M as mob|obj)
+/obj/machinery/bot/ed209/Bumped(atom/movable/M as mob|obj)
spawn(0)
- var/turf/T = get_turf(src)
- M:loc = T
+ if (M)
+ var/turf/T = get_turf(src)
+ M:loc = T
/obj/machinery/bot/ed209/proc/speak(var/message)
for(var/mob/O in hearers(src, null))
diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm
index da887bd8378..c9295285a97 100644
--- a/code/game/machinery/bots/medbot.dm
+++ b/code/game/machinery/bots/medbot.dm
@@ -482,11 +482,11 @@
return
return
-/obj/machinery/bot/medbot/Bumped(M as mob|obj)
+/obj/machinery/bot/medbot/Bumped(atom/movable/M as mob|obj)
spawn(0)
- var/turf/T = get_turf(src)
- M:loc = T
-
+ if (M)
+ var/turf/T = get_turf(src)
+ M:loc = T
/*
* Pathfinding procs, allow the medibot to path through doors it has access to.
diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm
index fcfdd23a8b4..79d29824b8b 100644
--- a/code/game/machinery/bots/secbot.dm
+++ b/code/game/machinery/bots/secbot.dm
@@ -648,10 +648,11 @@ Auto Patrol: []"},
return
return
-/obj/machinery/bot/secbot/Bumped(M as mob|obj)
+/obj/machinery/bot/secbot/Bumped(atom/movable/M as mob|obj)
spawn(0)
- var/turf/T = get_turf(src)
- M:loc = T
+ if (M)
+ var/turf/T = get_turf(src)
+ M:loc = T
/obj/machinery/bot/secbot/proc/speak(var/message)
for(var/mob/O in hearers(src, null))
diff --git a/code/game/objects/items/weapons/guns_ammo.dm b/code/game/objects/items/weapons/guns_ammo.dm
index 94b1c7b2762..639f1e8b0e7 100644
--- a/code/game/objects/items/weapons/guns_ammo.dm
+++ b/code/game/objects/items/weapons/guns_ammo.dm
@@ -443,7 +443,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
/obj/item/weapon/gun/detectiverevolver/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
- var/detective = (istype(user:w_uniform, /obj/item/clothing/under/det) && istype(user:head, /obj/item/clothing/head/det_hat) && istype(user:wear_suit, /obj/item/clothing/suit/det_suit))
+ var/detective = ((istype(user:w_uniform, /obj/item/clothing/under/det) || !istype(user, /mob/living/carbon/human)) && istype(user:head, /obj/item/clothing/head/det_hat) && istype(user:wear_suit, /obj/item/clothing/suit/det_suit))
if (flag)
return
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index e2b8cf07582..e7d1bf2d60c 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -2241,6 +2241,19 @@ var/showadminmessages = 1
world << "The tinted_weldhelh has been disabled!"
log_admin("[key_name(usr)] toggled tinted_weldhelh.")
message_admins("[key_name_admin(usr)] toggled tinted_weldhelh.", 1)
+
+/obj/admins/proc/toggleguests()
+ set category = "Server"
+ set desc="Guests can't enter"
+ set name="Toggle guests"
+ guests_allowed = !( guests_allowed )
+ if (!( guests_allowed ))
+ world << "Guests may no longer enter the game."
+ else
+ world << "Guests may now enter the game."
+ log_admin("[key_name(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.")
+ message_admins("\blue [key_name_admin(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.", 1)
+
//
//
//ALL DONE
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 3e1b0b80b20..d1787a5b4bb 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -37,6 +37,7 @@
src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
src.verbs += /obj/admins/proc/toggleooc //toggle ooc
src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -176,6 +177,7 @@
src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
src.verbs += /obj/admins/proc/toggleooc //toggle ooc
src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -306,6 +308,7 @@
src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
src.verbs += /obj/admins/proc/toggleooc //toggle ooc
src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -461,6 +464,7 @@
//src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
//src.verbs += /obj/admins/proc/toggleooc //toggle ooc
//src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -606,6 +610,7 @@
//src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
//src.verbs += /obj/admins/proc/toggleooc //toggle ooc
//src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -747,6 +752,7 @@
//src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
//src.verbs += /obj/admins/proc/toggleooc //toggle ooc
//src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -871,6 +877,7 @@
//src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
src.verbs += /obj/admins/proc/toggleooc //toggle ooc
src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -1026,6 +1033,7 @@
src.verbs -= /obj/admins/proc/toggleaban //abandon mob
src.verbs -= /obj/admins/proc/toggleAI //Toggle the AI
src.verbs -= /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs -= /obj/admins/proc/toggleguests //Toggle guests entering
src.verbs -= /obj/admins/proc/toggleooc //toggle ooc
src.verbs -= /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
src.verbs -= /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -1455,6 +1463,7 @@
src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
src.verbs += /obj/admins/proc/toggleooc //toggle ooc
src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -1485,6 +1494,7 @@
src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
src.verbs += /obj/admins/proc/toggleooc //toggle ooc
src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -1515,6 +1525,7 @@
src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
src.verbs += /obj/admins/proc/toggleooc //toggle ooc
src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -1552,6 +1563,7 @@
//src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
//src.verbs += /obj/admins/proc/toggleooc //toggle ooc
//src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -1589,6 +1601,7 @@
//src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
//src.verbs += /obj/admins/proc/toggleooc //toggle ooc
//src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -1614,6 +1627,7 @@
//src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
//src.verbs += /obj/admins/proc/toggleooc //toggle ooc
//src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
@@ -1644,6 +1658,7 @@
//src.verbs += /obj/admins/proc/toggleaban //abandon mob
src.verbs += /obj/admins/proc/toggleAI //Toggle the AI
src.verbs += /obj/admins/proc/toggleenter //Toggle enterting
+ src.verbs += /obj/admins/proc/toggleguests //Toggle guests entering
src.verbs += /obj/admins/proc/toggleooc //toggle ooc
src.verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
//src.verbs += /obj/admins/proc/toggletraitorscaling //toggle traitor scaling
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 726038221fb..2fe9a1d3392 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -1866,6 +1866,11 @@
alert(src,"You have been banned.\nReason : [isbanned]","Ban","Ok")
del(src)
+ if (!guests_allowed && IsGuestKey(src.key))
+ log_access("Failed Login: [src] - Guests not allowed")
+ message_admins("\blue Failed Login: [src] - Guests not allowed")
+ alert(src,"You cannot play here.\nReason : Guests not allowed","Guests not allowed","Ok")
+ del(src)
if (((world.address == src.address || !(src.address)) && !(host)))
host = src.key
diff --git a/code/unused/gamemodes/monkey.dm b/code/unused/gamemodes/monkey.dm
index 18747bdad85..5df1b06f337 100644
--- a/code/unused/gamemodes/monkey.dm
+++ b/code/unused/gamemodes/monkey.dm
@@ -62,8 +62,8 @@
else
world << "The Research Staff has stopped the monkey invasion!"
- for(var/mob/living/carbon/human/human_player in world)
- if (human_player.client)
- world << "[human_player.key] was [human_player.real_name]."
+ for(var/mob/living/carbon/monkey/monkey_player in world)
+ if (monkey_player.client)
+ world << "[monkey_player.key] was a monkey."
return 1
\ No newline at end of file