diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm
index aec9b2580b5..497e69bc10c 100644
--- a/code/game/dna/genes/vg_powers.dm
+++ b/code/game/dna/genes/vg_powers.dm
@@ -224,7 +224,7 @@ Obviously, requires DNA2.
var/list/validtargets = new /list()
for(var/mob/M in living_mob_list)
if(M && M.mind)
- if(isAntag(M))
+ if(M.z != user.z || isNonCrewAntag(M))
continue
validtargets += M
@@ -277,17 +277,22 @@ Obviously, requires DNA2.
action_icon_state = "genetic_view"
-/obj/effect/proc_holder/spell/targeted/remoteview/choose_targets(mob/user = usr)
+/obj/effect/proc_holder/spell/targeted/remoteview/choose_targets(mob/user = usr)
var/list/targets = living_mob_list
- var/list/remoteviewers = new /list()
+ var/list/validtargets = new /list()
for(var/mob/M in targets)
- if(REMOTE_VIEW in M.mutations)
- remoteviewers += M
- if(!remoteviewers.len || remoteviewers.len == 1)
+ if(M && M.mind)
+ if(M.z != user.z || isNonCrewAntag(M))
+ continue
+
+ validtargets += M
+
+ if(!validtargets.len || validtargets.len == 1)
usr << "No valid targets with remote view were found!"
start_recharge()
return
- targets += input("Choose the target to spy on.", "Targeting") as mob in remoteviewers
+
+ targets += input("Choose the target to spy on.", "Targeting") as mob in validtargets
perform(targets)
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index d0e2228162c..8809476c3ed 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -238,7 +238,7 @@
var/list/suspects = list()
for(var/mob/living/carbon/human/man in player_list) if(man.client && man.mind)
// NT relation option
- if(isAntag(man))
+ if(isNonCrewAntag(man))
continue //NT intelligence ruled out possiblity that those are too classy to pretend to be a crew.
if(man.client.prefs.nanotrasen_relation == "Opposed" && prob(50) || \
man.client.prefs.nanotrasen_relation == "Skeptical" && prob(20))
@@ -246,6 +246,7 @@
// Antags
else if(special_role == "traitor" && prob(40) || \
special_role == "Changeling" && prob(50) || \
+ special_role == "Vampire" && prob(40) || \
special_role == "Cultist" && prob(30) || \
special_role == "Head Revolutionary" && prob(30) || \
special_role == "Shadowling" && prob(15))
diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm
index db49facd824..7c08f2ebd07 100644
--- a/code/game/machinery/kitchen/gibber.dm
+++ b/code/game/machinery/kitchen/gibber.dm
@@ -374,11 +374,11 @@
new /obj/effect/decal/cleanable/blood/gibs(src)
if(!UserOverride)
- src.occupant.attack_log += "\[[time_stamp()]\] Was gibbed by [user]/[user.ckey]" //One shall not simply gib a mob unnoticed!
- user.attack_log += "\[[time_stamp()]\] Gibbed [src.occupant]/[src.occupant.ckey]"
+ src.occupant.attack_log += "\[[time_stamp()]\] Was gibbed by [key_name(user)]" //One shall not simply gib a mob unnoticed!
+ user.attack_log += "\[[time_stamp()]\] Gibbed [key_name(occupant)]"
if(src.occupant.ckey)
- msg_admin_attack("[user.name] ([user.ckey])[isAntag(user) ? "(ANTAG)" : ""] gibbed [src.occupant] ([src.occupant.ckey]) (JMP)")
+ msg_admin_attack("[key_name_admin(user)] gibbed [key_name_admin(occupant)]")
if(!iscarbon(user))
src.occupant.LAssailant = null
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index a71b1c76df4..b94337a118c 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -258,7 +258,7 @@
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
return
else if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && src.welding)
- msg_admin_attack("[key_name_admin(user)][isAntag(user) ? "(ANTAG)" : ""] triggered a fueltank explosion.")
+ msg_admin_attack("[key_name_admin(user)] triggered a fueltank explosion.")
log_game("[key_name(user)] triggered a fueltank explosion.")
user << "\red That was stupid of you."
var/obj/structure/reagent_dispensers/fueltank/tank = O
diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm
index 8085fefd999..ec2277c22dd 100644
--- a/code/modules/assembly/bomb.dm
+++ b/code/modules/assembly/bomb.dm
@@ -44,12 +44,12 @@
if((istype(W, /obj/item/weapon/weldingtool) && W:welding))
if(!status)
status = 1
- bombers += "[key_name(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]"
- msg_admin_attack("[key_name_admin(user)][isAntag(user) ? "(ANTAG)" : ""] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]")
+ bombers += "[key_name(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]"
+ msg_admin_attack("[key_name_admin(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]")
user << "A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited."
else
status = 0
- bombers += "[key_name(user)] unwelded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]"
+ bombers += "[key_name(user)] unwelded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]"
user << "The hole has been closed."
add_fingerprint(user)
..()
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 17417104463..f494d7336db 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -302,9 +302,9 @@
user.lastattacked = M
M.lastattacker = user
- user.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])"
- M.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])"
- msg_admin_attack("[user.name] ([user.ckey])[isAntag(user) ? "(ANTAG)" : ""] attacked [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])" )
+ user.attack_log += "\[[time_stamp()]\] Attacked [key_name(M)] with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])"
+ M.attack_log += "\[[time_stamp()]\] Attacked by [key_name(user)] with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])"
+ msg_admin_attack("[key_name_admin(user)] attacked [key_name_admin(M)] with [name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(damtype)])" )
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm
index 6c3a5d35046..4144c4ef5cc 100644
--- a/code/modules/karma/karma.dm
+++ b/code/modules/karma/karma.dm
@@ -63,7 +63,7 @@ var/list/karma_spenders = list()
var/list/karma_list = list("Cancel")
for(var/mob/M in player_list) if(M.client && M.mind)
- if(isAntag(M)) // Don't include special roles, because players use it to meta
+ if(isNonCrewAntag(M)) // Don't include special roles, because players use it to meta
continue
karma_list += M
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index a67a2eed0d9..31f1c84e09c 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -174,6 +174,18 @@ proc/isAntag(A)
if(C.mind && C.mind.special_role)
return 1
return 0
+
+proc/isNonCrewAntag(A)
+ if(!isAntag(A))
+ return 0
+
+ var/mob/living/carbon/C = A
+ var/special_role = C.mind.special_role
+ var/list/crew_roles = list("traitor", "Changeling", "Vampire", "Cultist", "Head Revolutionary", "Revolutionary", "malfunctioning AI", "Shadowling", "loyalist", "mutineer", "Response Team")
+ if((special_role in allowed_roles))
+ return 0
+
+ return 1
proc/isnewplayer(A)
if(istype(A, /mob/new_player))
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index eb13ba91b21..b0d3a7e4a85 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -135,8 +135,8 @@
var/obj/item/device/assembly_holder/H = W
if (istype(H.a_left,/obj/item/device/assembly/igniter) || istype(H.a_right,/obj/item/device/assembly/igniter))
- msg_admin_attack("[key_name_admin(user)][isAntag(user) ? "(ANTAG)" : ""] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion.")
- log_game("[key_name(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion.")
+ msg_admin_attack("[key_name_admin(user)] rigged a fueltank for explosion (JMP)")
+ log_game("[key_name(user)] rigged fueltank a fueltank for explosion at [loc.x], [loc.y], [loc.z]")
rig = W
user.drop_item()
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index 21cbcd5c49d..e6a16f00765 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -169,10 +169,10 @@
msg = "[user.name] stuffs [target.name] into the [src]!"
user << "You stuff [target.name] into the [src]!"
- user.attack_log += text("\[[time_stamp()]\] Has placed [target.name] ([target.ckey]) in disposals.")
- target.attack_log += text("\[[time_stamp()]\] Has been placed in disposals by [user.name] ([user.ckey])")
+ user.attack_log += text("\[[time_stamp()]\] Has placed [key_name(target)] in disposals.")
+ target.attack_log += text("\[[time_stamp()]\] Has been placed in disposals by [key_name(user)]")
if(target.ckey)
- msg_admin_attack("[user] ([user.ckey])[isAntag(user) ? "(ANTAG)" : ""] placed [target] ([target.ckey]) in a disposals unit. (JMP)")
+ msg_admin_attack("[key_name_admin(user)] placed [key_name_admin(target)] in a disposals unit")
else
return
if (target.client)
diff --git a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm
index bb1d7e30c4f..6df826f3792 100644
--- a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm
+++ b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm
@@ -210,6 +210,6 @@
M.lastattacker = user
if(inserted_battery.battery_effect)
- user.attack_log += "\[[time_stamp()]\] Tapped [M.name] ([M.ckey]) with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])"
- M.attack_log += "\[[time_stamp()]\] Tapped by [user.name] ([user.ckey]) with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])"
- msg_admin_attack("[key_name(user)][isAntag(user) ? "(ANTAG)" : ""] tapped [key_name(M)] with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])" )
+ user.attack_log += "\[[time_stamp()]\] Tapped [key_name(M)] with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])"
+ M.attack_log += "\[[time_stamp()]\] Tapped by [key_name(user)] with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])"
+ msg_admin_attack("[key_name_admin(user)] tapped [key_name_admin(M)] with [name] (EFFECT: [inserted_battery.battery_effect.effecttype])" )
diff --git a/code/modules/vehicle/train/trains/cargo/cargo_train.dm b/code/modules/vehicle/train/trains/cargo/cargo_train.dm
index 1daee673201..a8f50cd5463 100644
--- a/code/modules/vehicle/train/trains/cargo/cargo_train.dm
+++ b/code/modules/vehicle/train/trains/cargo/cargo_train.dm
@@ -144,7 +144,7 @@
/obj/vehicle/train/cargo/trolley/RunOver(var/mob/living/carbon/human/H)
..()
- attack_log += text("\[[time_stamp()]\] ran over [H.name] ([H.ckey])")
+ attack_log += text("\[[time_stamp()]\] ran over [key_name(H)]")
/obj/vehicle/train/cargo/engine/RunOver(var/mob/living/carbon/human/H)
..()
@@ -153,10 +153,10 @@
var/mob/living/carbon/human/D = load
D << "\red \b You ran over [H]!"
visible_message("\red \The [src] ran over [H]!")
- attack_log += text("\[[time_stamp()]\] ran over [H.name] ([H.ckey]), driven by [D.name] ([D.ckey])")
- msg_admin_attack("[D.name] ([D.ckey])[isAntag(D) ? "(ANTAG)" : ""] ran over [H.name] ([H.ckey]). (JMP)")
+ attack_log += text("\[[time_stamp()]\] ran over [key_name(H)], driven by [key_name(D)]")
+ msg_admin_attack("[key_name_admin(D)] ran over [key_name_admin(H)]")
else
- attack_log += text("\[[time_stamp()]\] ran over [H.name] ([H.ckey])")
+ attack_log += text("\[[time_stamp()]\] ran over [key_name(H)]")
//-------------------------------------------