diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 78e68ee46fd..67f3d777443 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -861,6 +861,20 @@
m_amt = 1000
origin_tech = "combat=2;materials=2"
*/
+
+/obj/item/weapon/gun/projectile/detective
+ desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds."
+ name = ".38 revolver"
+ icon_state = "detective"
+ w_class = 3.0
+ throw_speed = 2
+ throw_range = 10
+ force = 14.0
+ m_amt = 1000
+ origin_tech = "combat=2;materials=2"
+
+
+
/obj/item/weapon/hand_tele
name = "hand tele"
icon = 'device.dmi'
@@ -1997,4 +2011,4 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
desc = "A container for hold compressed matter awaiting re-construction."
origin_tech = "materials=5"
rating = 3
- m_amt = 80
\ No newline at end of file
+ m_amt = 80
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index b56be7c689f..101fa269593 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -99,7 +99,6 @@ var/global/datum/controller/gameticker/ticker
if (S.name != "AI")
del(S)
- //Start master_controller.process()
world << "Enjoy the game!"
world << sound('welcome.ogg') // Skie
@@ -109,6 +108,7 @@ var/global/datum/controller/gameticker/ticker
event()
spawn() supply_ticker() // Added to kick-off the supply shuttle regenerating points -- TLE
+ //Start master_controller.process()
spawn master_controller.process()
if (config.sql_enabled)
spawn(3000)
diff --git a/code/game/objects/items/weapons/guns_new.dm b/code/game/objects/items/weapons/guns_new.dm
index f1aaefb5d49..37cbc1fe3ed 100644
--- a/code/game/objects/items/weapons/guns_new.dm
+++ b/code/game/objects/items/weapons/guns_new.dm
@@ -298,12 +298,12 @@ var/const/PROJECTILE_DART = 8
caliber = "38"
New()
- for(var/i = 1, i <= 5, i++)
+ for(var/i = 1, i <= 7, i++)
loaded += new /obj/item/ammo_casing/c38(src)
update_icon()
special_check(var/mob/living/carbon/human/M)
- if(istype(M) && M)
+ if(istype(M))
if(istype(M.w_uniform, /obj/item/clothing/under/det) && istype(M.head, /obj/item/clothing/head/det_hat) && istype(M.wear_suit, /obj/item/clothing/suit/det_suit))
return 1
M << "\red You just don't feel cool enough to use this gun looking like that."
@@ -637,7 +637,9 @@ var/const/PROJECTILE_DART = 8
for(var/obj/O in contents)
O.emp_act(severity)
- afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj)
+ afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
+ if (flag)
+ return //we're placing gun on a table or in backpack --rastaf0
if(istype(target, /obj/machinery/recharger) && istype(src, /obj/item/weapon/gun/energy))
return
if(istype(user, /mob/living))
@@ -648,20 +650,22 @@ var/const/PROJECTILE_DART = 8
M.drop_item()
del(src)
return
- if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey")
- user << "\red You don't have the dexterity to do this!"
+ if ( ! (istype(usr, /mob/living/carbon/human) || \
+ istype(usr, /mob/living/silicon/robot) || \
+ istype(usr, /mob/living/carbon/monkey) && ticker && ticker.mode.name == "monkey") )
+ usr << "\red You don't have the dexterity to do this!"
return
add_fingerprint(user)
var/turf/curloc = user.loc
- var/atom/targloc = get_turf(target)
- if (!targloc || !istype(targloc, /turf) || !curloc)
+ var/turf/targloc = get_turf(target)
+ if (!istype(targloc) || !istype(curloc))
return
if(badmin)
badmin_ammo()
- else if(!special_check())
+ else if(!special_check(user))
return
else if(!load_into_chamber())
user << "\red *click* *click*";
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index e4a96c9b584..1158794a47a 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -1375,9 +1375,9 @@
else
AddBan(M.ckey, M.computer_id, "Autobanning due to previous warn", ckey, 1, AUTOBATIME)
M << "\redYou have been autobanned by [ckey]. This is what we in the biz like to call a \"second warning\"."
- M << "\red This is a temporary ban; it will automatically be removed in AUTOBATIME minutes."
- log_admin("[ckey] warned [M.ckey], resulting in a AUTOBATIME minute autoban.")
- message_admins("\blue [ckey] warned [M.ckey], resulting in a AUTOBATIME minute autoban.")
+ M << "\red This is a temporary ban; it will automatically be removed in [AUTOBATIME] minutes."
+ log_admin("[ckey] warned [M.ckey], resulting in a [AUTOBATIME] minute autoban.")
+ message_admins("\blue [ckey] warned [M.ckey], resulting in a [AUTOBATIME] minute autoban.")
del(M.client)
//del(M)
diff --git a/maps/tgstation.2.0.7.dmm b/maps/tgstation.2.0.7.dmm
index 3dbe49ce8e9..c312ca08737 100644
--- a/maps/tgstation.2.0.7.dmm
+++ b/maps/tgstation.2.0.7.dmm
@@ -895,7 +895,7 @@
"ark" = (/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"arl" = (/obj/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"arm" = (/obj/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
-"arn" = (/obj/rack{dir = 8},/obj/item/weapon/storage/briefcase,/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
+"arn" = (/obj/rack{dir = 8},/obj/item/weapon/storage/briefcase,/obj/item/ammo_magazine/c38,/obj/item/weapon/gun/projectile/detective,/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"aro" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"arp" = (/obj/machinery/power/apc{dir = 1; name = "Law Office APC"; pixel_y = 24},/obj/machinery/light_switch{pixel_x = -20; pixel_y = 0},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
"arq" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)