diff --git a/code/_helpers/logging_vr.dm b/code/_helpers/logging_vr.dm
index 2f4c48acc6..b87da0a8b5 100644
--- a/code/_helpers/logging_vr.dm
+++ b/code/_helpers/logging_vr.dm
@@ -1,11 +1,11 @@
-/proc/log_nsay(text,inside)
+/proc/log_nsay(text, inside, mob/speaker)
if (config.log_say)
- diary << "\[[time_stamp()]]NSAY (NIF:[inside]): [text][log_end]"
+ diary << "\[[time_stamp()]]NSAY (NIF:[inside]): [speaker.simple_info_line()]: [text][log_end]"
-/proc/log_nme(text,inside)
+/proc/log_nme(text, inside, mob/speaker)
if (config.log_emote)
- diary << "\[[time_stamp()]]NME (NIF:[inside]): [text][log_end]"
+ diary << "\[[time_stamp()]]NME (NIF:[inside]): [speaker.simple_info_line()]: [text][log_end]"
-/proc/log_subtle(text)
+/proc/log_subtle(text, mob/speaker)
if (config.log_emote)
- diary << "\[[time_stamp()]]SUBTLE: [text][log_end]"
+ diary << "\[[time_stamp()]]SUBTLE: [speaker.simple_info_line()]: [text][log_end]"
diff --git a/code/game/objects/structures/morgue_vr.dm b/code/game/objects/structures/morgue_vr.dm
index abe82bdbac..eaf27b5ad0 100644
--- a/code/game/objects/structures/morgue_vr.dm
+++ b/code/game/objects/structures/morgue_vr.dm
@@ -44,10 +44,6 @@
if (C.can_feel_pain())
C.emote("scream")
- //Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out.
- //M.attack_log += "\[[time_stamp()]\] Has been cremated by [user]/[user.ckey]" //No point in this when the mob's about to be deleted
- //user.attack_log +="\[[time_stamp()]\] Cremated [M]/[M.ckey]"
- //log_attack("\[[time_stamp()]\] [user]/[user.ckey] cremated [M]/[M.ckey]")
M.death(1)
M.ghostize()
qdel(M)
diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm
index fe1d90aae1..036cd1cc9d 100644
--- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm
@@ -437,9 +437,7 @@
C.absorbing_prey = 0
to_chat(C, "You have completely drained [T], causing them to pass out.")
to_chat(T, "You feel weak, as if you have no control over your body whatsoever as [C] finishes draining you.!")
- T.attack_log += text("\[[time_stamp()]\] Was drained by [key_name(C)]")
- C.attack_log += text("\[[time_stamp()]\] Drained [key_name(T)]")
- msg_admin_attack("[key_name(T)] was completely drained of all nutrition by [key_name(C)]")
+ add_attack_logs(C,T,"Succubus drained")
return
if(!do_mob(src, T, 50) || G.state != GRAB_NECK) //One drain tick every 5 seconds.
@@ -516,9 +514,7 @@
absorbing_prey = 0
to_chat(src, "You have completely drained [T], killing them.")
to_chat(T, "You feel... So... Weak...")
- T.attack_log += text("\[[time_stamp()]\] Was drained by [key_name(src)]")
- src.attack_log += text("\[[time_stamp()]\] Drained [key_name(T)]")
- msg_admin_attack("[key_name(T)] was completely drained of all nutrition by [key_name(src)]")
+ add_attack_logs(src,T,"Succubus drained (almost lethal)")
return
if(drain_finalized == 1 || T.getBrainLoss() < 55) //Let's not kill them with this unless the drain is finalized. This will still stack up to 55, since 60 is lethal.
T.adjustBrainLoss(5) //Will kill them after a short bit!
@@ -533,9 +529,7 @@
to_chat(src, "You have completely drained [T], killing them in the process.")
to_chat(T, "You... Feel... So... Weak...")
visible_message("[src] seems to finish whatever they were doing to [T].")
- T.attack_log += text("\[[time_stamp()]\] Was drained by [key_name(src)]")
- src.attack_log += text("\[[time_stamp()]\] Drained [key_name(T)]")
- msg_admin_attack("[key_name(T)] was completely drained of all nutrition by [key_name(src)]")
+ add_attack_logs(src,T,"Succubus drained (lethal)")
return
if(!do_mob(src, T, 50) || G.state != GRAB_NECK) //One drain tick every 5 seconds.
@@ -595,9 +589,7 @@
C.absorbing_prey = 0
to_chat(C, "You have completely fed [T] every part of your body!")
to_chat(T, "You feel quite strong and well fed, as [C] finishes feeding \himself to you!")
- T.attack_log += text("\[[time_stamp()]\] Was fed via slime feed by [key_name(C)]")
- C.attack_log += text("\[[time_stamp()]\] Fed via slime feed [key_name(T)]")
- msg_admin_attack("[key_name(C)] fed [key_name(T)] via slime feed, resulting in them being eaten!")
+ add_attack_logs(C,T,"Slime fed")
C.feed_grabbed_to_self_falling_nom(T,C) //Reused this proc instead of making a new one to cut down on code usage.
return
@@ -740,9 +732,7 @@
T.apply_damage(25, BRUTE, T_ext)
visible_message("[src] severely damages [T]'s [T_ext.name]!")
- src.attack_log += text("\[[time_stamp()]\] Shred_limb'd [T.real_name] ([T.ckey])")
- T.attack_log += text("\[[time_stamp()]\] [src.real_name] ([src.ckey]) shred_limb'd me")
- msg_admin_attack("[src.real_name] ([src.ckey]) shredded (shred_limb) [T.real_name] ([T.ckey]) (JMP)")
+ add_attack_logs(src,T,"Shredded (hardvore)")
/mob/living/proc/flying_toggle()
set name = "Toggle Flight"
diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm
index c0e7c6b9ce..5153a3c23f 100644
--- a/code/modules/mob/say_vr.dm
+++ b/code/modules/mob/say_vr.dm
@@ -36,13 +36,12 @@
input = message
if(input)
+ log_subtle(message,src)
message = "[src] [input]"
else
return
if (message)
- log_subtle("[name]/[key] : [message]")
-
var/list/vis = get_mobs_and_objs_in_view_fast(get_turf(src),1,2) //Turf, Range, and type 2 is emote
var/list/vis_mobs = vis["mobs"]
var/list/vis_objs = vis["objs"]
diff --git a/code/modules/nifsoft/software/13_soulcatcher.dm b/code/modules/nifsoft/software/13_soulcatcher.dm
index 8bd92831dc..dfa9e87246 100644
--- a/code/modules/nifsoft/software/13_soulcatcher.dm
+++ b/code/modules/nifsoft/software/13_soulcatcher.dm
@@ -77,7 +77,6 @@
proc/say_into(var/message, var/mob/living/sender, var/mob/eyeobj)
var/sender_name = eyeobj ? eyeobj.name : sender.name
- log_nsay("[sender_name]/[sender.key] : [message]",nif.human)
//AR Projecting
if(eyeobj)
@@ -85,15 +84,15 @@
//Not AR Projecting
else
- log_nsay("[sender_name]/[sender.key] : [message]",nif.human)
to_chat(nif.human,"\[\icon[nif.big_icon]NIF\] [sender_name] speaks, \"[message]\"")
for(var/brainmob in brainmobs)
var/mob/living/carbon/brain/caught_soul/CS = brainmob
to_chat(CS,"\[\icon[nif.big_icon]NIF\] [sender_name] speaks, \"[message]\"")
+ log_nsay(message,nif.human.real_name,src)
+
proc/emote_into(var/message, var/mob/living/sender, var/mob/eyeobj)
var/sender_name = eyeobj ? eyeobj.name : sender.name
- log_nme("[sender_name]/[sender.key] : [message]",nif.human)
//AR Projecting
if(eyeobj)
@@ -106,6 +105,8 @@
var/mob/living/carbon/brain/caught_soul/CS = brainmob
to_chat(CS,"\[\icon[nif.big_icon]NIF\] [sender_name] [message]")
+ log_nme(message,nif.human.real_name,src)
+
proc/show_settings(var/mob/living/carbon/human/H)
set waitfor = FALSE
var/settings_list = list(
diff --git a/code/modules/vehicles/Securitrain_vr.dm b/code/modules/vehicles/Securitrain_vr.dm
index 01ff285ada..2ab76f315c 100644
--- a/code/modules/vehicles/Securitrain_vr.dm
+++ b/code/modules/vehicles/Securitrain_vr.dm
@@ -183,8 +183,8 @@
var/mob/living/carbon/human/D = load
to_chat(D, "You ran over \the [H]!"
visible_message("\The [src] ran over \the [H]!")
+ add_attack_logs(D,H,"Ran over with [src.name]")
attack_log += text("\[[time_stamp()]\] ran over [H.name] ([H.ckey]), driven by [D.name] ([D.ckey])")
- msg_admin_attack("[D.name] ([D.ckey]) ran over [H.name] ([H.ckey]). (JMP)")
else
attack_log += text("\[[time_stamp()]\] ran over [H.name] ([H.ckey])")
diff --git a/code/modules/vehicles/rover_vr.dm b/code/modules/vehicles/rover_vr.dm
index aec7254bf7..3d7892b4b2 100644
--- a/code/modules/vehicles/rover_vr.dm
+++ b/code/modules/vehicles/rover_vr.dm
@@ -182,8 +182,8 @@
var/mob/living/carbon/human/D = load
to_chat(D, "You ran over \the [H]!")
visible_message("\The [src] ran over \the [H]!")
+ add_attack_logs(D,H,"Ran over with [src.name]")
attack_log += text("\[[time_stamp()]\] ran over [H.name] ([H.ckey]), driven by [D.name] ([D.ckey])")
- msg_admin_attack("[D.name] ([D.ckey]) ran over [H.name] ([H.ckey]). (JMP)")
else
attack_log += text("\[[time_stamp()]\] ran over [H.name] ([H.ckey])")
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index a1ce795bcc..1482e226b8 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -414,9 +414,9 @@
// Inform Admins
if (pred == user)
- msg_admin_attack("[key_name(pred)] ate [key_name(prey)]. ([pred ? "JMP" : "null"])")
+ add_attack_logs(pred,prey,"Eaten via [belly.name]")
else
- msg_admin_attack("[key_name(user)] forced [key_name(pred)] to eat [key_name(prey)]. ([pred ? "JMP" : "null"])")
+ add_attack_logs(user,pred,"Forced to eat [key_name(prey)]")
return 1
//
diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm
index d76955eb7f..05f9a377e2 100644
--- a/code/modules/vore/resizing/resize_vr.dm
+++ b/code/modules/vore/resizing/resize_vr.dm
@@ -233,7 +233,7 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2
tmob.resting = 1 //Force them down to the ground.
//Log it for admins (as opposed to walk which logs damage)
- admin_attack_log(src, tmob, "Pinned [tmob.name] under foot.", "Was pinned under foot by [src.name].", "Pinned [tmob.name] under foot.")
+ add_attack_logs(src,tmob,"Pinned underfoot")
//Not a human, or not a taur, generic message only
if(!H || !isTaurTail(H.tail_style))
@@ -255,7 +255,7 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2
tmob.resting = 1
//Log it for admins (as opposed to run which logs no damage)
- admin_attack_log(src, tmob, "Pinned [tmob.name] under foot for [damage] HALLOSS.", "Was pinned under foot by [src.name] for [damage] HALLOSS.", "Pinned [tmob.name] under foot for [damage] HALLOSS.")
+ add_attack_logs(src,tmob,"Pinned underfoot (+HALLOSS)")
//Not a human, or not a taur, generic message only
if(!H || !isTaurTail(H.tail_style))
@@ -306,7 +306,7 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2
for(var/obj/item/organ/external/I in Ht.organs)
I.take_damage(calculated_damage, 0) // 5 damage min, 26.25 damage max, depending on size & RNG. If they're only stepped on once, the damage will (probably not...) heal over time.
Ht.drip(0.1)
- admin_attack_log(src, Ht, "crushed [Ht] under foot for [calculated_damage * 11] damage.", "Was crushed under foot by [Ht] for [calculated_damage * 11] damage.", "Crushed [Ht] for [damage * 10] damage.")
+ add_attack_logs(src,tmob,"Crushed underfoot")
//Walking on I_HURT
else
@@ -318,7 +318,7 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2
for(var/obj/item/organ/I in Ht.organs)
I.take_damage(calculated_damage, 0)
Ht.drip(3)
- admin_attack_log(src, Ht, "Crushed [Ht] under foot for [calculated_damage * 11] damage.", "Was crushed under foot by [Ht] for [calculated_damage * 11] damage.", "Crushed [Ht] for [calculated_damage * 11] damage.")
+ add_attack_logs(src,tmob,"Crushed underfoot")
//Not a human, or not a taur, generic message only
if(!H || !isTaurTail(H.tail_style))
@@ -347,7 +347,7 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2
forceMove(tmob.loc)
//Log it for admins (still a mechanical attack due to the pin)
- admin_attack_log(src, tmob, "Pinned (grab w/ shoes) [tmob.name] under foot.", "Was pinned (grab w/ shoes) under foot by [src.name].", "Pinned (grab w/ shoes) [tmob.name] under foot.")
+ add_attack_logs(src,tmob,"Pinned (grab w/ shoes) underfoot")
//Not a human, or not a taur while wearing shoes = no grab
if(!H || (!isTaurTail(H.tail_style) && H.shoes))