.")
- log_game("[key_name(user)] has primed a [name] ([payload]) for detonation at [A.name][COORD(bombturf)]")
+ message_admins("[ADMIN_LOOKUPFLW(user)] has primed a [name] ([payload]) for detonation at [ADMIN_VERBOSEJMP(bombturf)].")
+ log_game("[key_name(user)] has primed a [name] ([payload]) for detonation at [AREACOORD(bombturf)]")
payload.adminlog = "The [name] that [key_name(user)] had primed detonated!"
///Bomb Subtypes///
@@ -523,12 +522,11 @@
to_chat(user, "[existant] found, [detonated] triggered.")
if(detonated)
var/turf/T = get_turf(src)
- var/area/A = get_area(T)
detonated--
- var/log_str = "[ADMIN_LOOKUPFLW(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] [ADMIN_JMP(T)]."
+ var/log_str = "[ADMIN_LOOKUPFLW(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [ADMIN_VERBOSEJMP(T)]."
GLOB.bombers += log_str
message_admins(log_str)
- log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name][COORD(T)]")
+ log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [AREACOORD(T)]")
detonated = 0
existant = 0
timer = world.time + BUTTON_COOLDOWN
diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm
index 0d1651c491..b7796849f1 100644
--- a/code/game/mecha/equipment/tools/other_tools.dm
+++ b/code/game/mecha/equipment/tools/other_tools.dm
@@ -58,8 +58,8 @@
return
var/list/obj/effect/portal/created = create_portal_pair(get_turf(src), target_turf, src, 300, 1, /obj/effect/portal/anom)
var/turf/T = get_turf(target)
- message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Wormhole Generator in [ADMIN_COORDJMP(T)]",0,1)
- log_game("[key_name(chassis.occupant)] used a Wormhole Generator in [COORD(T)]")
+ message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Wormhole Generator in [ADMIN_VERBOSEJMP(T)]")
+ log_game("[key_name(chassis.occupant)] used a Wormhole Generator in [AREACOORD(T)]")
src = null
QDEL_LIST_IN(created, rand(150,300))
return 1
@@ -97,7 +97,7 @@
locked.throw_at(target, 14, 1.5)
locked = null
send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info())
- log_game("[key_name(chassis.occupant)] used a Gravitational Catapult to throw [locked]([COORD(orig)]) at [target]([COORD(targ)]).")
+ log_game("[key_name(chassis.occupant)] used a Gravitational Catapult to throw [locked] (From [AREACOORD(orig)]) at [target] ([AREACOORD(targ)]).")
return TRUE
else
locked = null
@@ -118,7 +118,7 @@
step_away(A,target)
sleep(2)
var/turf/T = get_turf(target)
- log_game("[key_name(chassis.occupant)] used a Gravitational Catapult repulse wave on ([COORD(T)])")
+ log_game("[key_name(chassis.occupant)] used a Gravitational Catapult repulse wave on [AREACOORD(T)]")
return TRUE
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index 50d1f0be0d..fe10bf510b 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -186,8 +186,8 @@
log_message("Honked from [src.name]. HONK!")
var/turf/T = get_turf(src)
- message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Mecha Honker in [ADMIN_COORDJMP(T)]",0,1)
- log_game("[chassis.occupant.ckey]([chassis.occupant]) used a Mecha Honker in [COORD(T)]")
+ message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Mecha Honker in [ADMIN_VERBOSEJMP(T)]")
+ log_game("[chassis.occupant.ckey]([chassis.occupant]) used a Mecha Honker in [AREACOORD(T)]")
return 1
@@ -336,8 +336,8 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/proj_init(var/obj/item/grenade/flashbang/F)
var/turf/T = get_turf(src)
- message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] fired a [src] in [ADMIN_COORDJMP(T)]",0,1)
- log_game("[key_name(chassis.occupant)] fired a [src] [COORD(T)]")
+ message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] fired a [src] in [ADMIN_VERBOSEJMP(T)]")
+ log_game("[key_name(chassis.occupant)] fired a [src] in [AREACOORD(T)]")
addtimer(CALLBACK(F, /obj/item/grenade/flashbang.proc/prime), det_time)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang //Because I am a heartless bastard -Sieve //Heartless? for making the poor man's honkblast? - Kaze
diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm
index 80e5877fe7..5618ca9a91 100644
--- a/code/game/objects/effects/effect_system/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/effects_smoke.dm
@@ -279,20 +279,19 @@
contained += " [reagent] "
if(contained)
contained = "\[[contained]\]"
- var/area/A = get_area(location)
- var/where = "[A.name] | [location.x], [location.y]"
+ var/where = "[AREACOORD(location)]"
var/whereLink = "[where]"
if(carry.my_atom.fingerprintslast)
var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast)
var/more = ""
if(M)
- more = "(?) (FLW) "
- message_admins("Smoke: ([whereLink])[contained]. Key: [carry.my_atom.fingerprintslast][more].", 0, 1)
+ more = "[ADMIN_LOOKUPFLW(M)] "
+ message_admins("Smoke: ([whereLink])[contained]. Key: [more ? more : carry.my_atom.fingerprintslast].")
log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].")
else
- message_admins("Smoke: ([whereLink])[contained]. No associated key.", 0, 1)
+ message_admins("Smoke: ([whereLink])[contained]. No associated key.")
log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.")
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index 65e216fd4c..e3a5c85719 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -153,7 +153,7 @@
if(!force && (!ismecha(M) && !istype(M, /obj/item/projectile) && M.anchored && !allow_anchored))
return
if(ismegafauna(M))
- message_admins("[M] has used a portal at [ADMIN_COORDJMP(src)] made by [usr].")
+ message_admins("[M] has used a portal at [ADMIN_VERBOSEJMP(src)] made by [usr].")
if(do_teleport(M, real_target, innate_accuracy_penalty))
if(istype(M, /obj/item/projectile))
var/obj/item/projectile/P = M
diff --git a/code/game/objects/effects/spawners/xeno_egg_delivery.dm b/code/game/objects/effects/spawners/xeno_egg_delivery.dm
index 593c953adf..a41f4b4c9b 100644
--- a/code/game/objects/effects/spawners/xeno_egg_delivery.dm
+++ b/code/game/objects/effects/spawners/xeno_egg_delivery.dm
@@ -7,14 +7,13 @@
/obj/effect/spawner/xeno_egg_delivery/Initialize(mapload)
..()
var/turf/T = get_turf(src)
- var/area/A = get_area(T)
new /obj/structure/alien/egg(T)
new /obj/effect/temp_visual/gravpush(T)
playsound(T, 'sound/items/party_horn.ogg', 50, 1, -1)
- message_admins("An alien egg has been delivered to [A] at [ADMIN_COORDJMP(T)].")
- log_game("An alien egg has been delivered to [A] at [COORD(T)]")
- var/message = "Attention [station_name()], we have entrusted you with a research specimen in [A]. Remember to follow all safety precautions when dealing with the specimen."
+ message_admins("An alien egg has been delivered to [ADMIN_VERBOSEJMP(T)].")
+ log_game("An alien egg has been delivered to [AREACOORD(T)]")
+ var/message = "Attention [station_name()], we have entrusted you with a research specimen in [get_area_name(T, TRUE)]. Remember to follow all safety precautions when dealing with the specimen."
SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/addtimer, CALLBACK(GLOBAL_PROC, /.proc/print_command_report, message), announcement_time))
return INITIALIZE_HINT_QDEL
diff --git a/code/game/objects/items/AI_modules.dm b/code/game/objects/items/AI_modules.dm
index 5d83f3ac1e..5d41b90dc0 100644
--- a/code/game/objects/items/AI_modules.dm
+++ b/code/game/objects/items/AI_modules.dm
@@ -55,7 +55,7 @@ AI MODULES
tot_laws++
if(tot_laws > CONFIG_GET(number/silicon_max_law_amount) && !bypass_law_amt_check)//allows certain boards to avoid this check, eg: reset
to_chat(user, "Not enough memory allocated to [law_datum.owner ? law_datum.owner : "the AI core"]'s law processor to handle this amount of laws.")
- message_admins("[key_name_admin(user)] tried to upload laws to [law_datum.owner ? key_name_admin(law_datum.owner) : "an AI core"] that would exceed the law cap.")
+ message_admins("[ADMIN_LOOKUPFLW(user)] tried to upload laws to [law_datum.owner ? ADMIN_LOOKUPFLW(law_datum.owner) : "an AI core"] that would exceed the law cap.")
overflow = TRUE
var/law2log = transmitInstructions(law_datum, user, overflow) //Freeforms return something extra we need to log
@@ -69,8 +69,8 @@ AI MODULES
var/ainame = law_datum.owner ? law_datum.owner.name : "empty AI core"
var/aikey = law_datum.owner ? law_datum.owner.ckey : "null"
GLOB.lawchanges.Add("[time] : [user.name]([user.key]) used [src.name] on [ainame]([aikey]).[law2log ? " The law specified [law2log]" : ""]")
- log_law("[user.key]/[user.name] used [src.name] on [aikey]/([ainame]).[law2log ? " The law specified [law2log]" : ""]")
- message_admins("[key_name_admin(user)] used [src.name] on [key_name_admin(law_datum.owner)].[law2log ? " The law specified [law2log]" : ""]")
+ log_law("[user.key]/[user.name] used [src.name] on [aikey]/([ainame]) from [AREACOORD(user)].[law2log ? " The law specified [law2log]" : ""]")
+ message_admins("[ADMIN_LOOKUPFLW(user)] used [src.name] on [ADMIN_LOOKUPFLW(law_datum.owner)] from [AREACOORD(user)].[law2log ? " The law specified [law2log]" : ""]")
//The proc that actually changes the silicon's laws.
/obj/item/aiModule/proc/transmitInstructions(datum/ai_laws/law_datum, mob/sender, overflow = FALSE)
diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm
index 9401579e61..8daf0f5202 100644
--- a/code/game/objects/items/cigs_lighters.dm
+++ b/code/game/objects/items/cigs_lighters.dm
@@ -72,8 +72,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(!isliving(M))
return
if(lit && M.IgniteMob())
- message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire")
- log_game("[key_name(user)] set [key_name(M)] on fire")
+ message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(M)] on fire with [src] at [AREACOORD(user)]")
+ log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]")
var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M)
if(lit && cig && user.a_intent == INTENT_HELP)
if(cig.lit)
@@ -582,8 +582,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/lighter/attack(mob/living/carbon/M, mob/living/carbon/user)
if(lit && M.IgniteMob())
- message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire")
- log_game("[key_name(user)] set [key_name(M)] on fire")
+ message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(M)] on fire with [src] at [AREACOORD(user)]")
+ log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]")
var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M)
if(lit && cig && user.a_intent == INTENT_HELP)
if(cig.lit)
diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm
index dfbf6db88c..2544cc0154 100644
--- a/code/game/objects/items/devices/PDA/virus_cart.dm
+++ b/code/game/objects/items/devices/PDA/virus_cart.dm
@@ -75,10 +75,8 @@
if(!target.detonatable || prob(difficulty * 15) || (hidden_uplink))
U.show_message("An error flashes on your [src].", 1)
else
- var/turf/T = get_turf(target)
- var/area/A = get_area(T)
- message_admins("[!is_special_character(U) ? "Non-antag " : ""][key_name_admin(U)][ADMIN_FLW(U)] triggered a PDA explosion on [target.name] at [A] [ADMIN_COORDJMP(T)].")
- var/message_log = "triggered a PDA explosion on [target.name] at at [A] [COORD(T)]."
+ message_admins("[!is_special_character(U) ? "Non-antag " : ""][ADMIN_LOOKUPFLW(U)] triggered a PDA explosion on [target.name] at [ADMIN_VERBOSEJMP(target)].")
+ var/message_log = "triggered a PDA explosion on [target.name] at at [AREACOORD(target)]."
U.log_message(message_log, INDIVIDUAL_ATTACK_LOG)
log_game("[key_name(U)] [message_log]")
log_attack("[key_name(U)] [message_log]")
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index 063676ea62..a059c06284 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -142,20 +142,6 @@
detect_state = PROXIMITY_NEAR
break
-/obj/item/multitool/ai_detect/admin
- desc = "Used for pulsing wires to test which to cut. Not recommended by doctors. Has a strange tag that says 'Grief in Safety'." //What else should I say for a meme item?
- track_delay = 5
-
-/obj/item/multitool/ai_detect/admin/multitool_detect()
- var/turf/our_turf = get_turf(src)
- for(var/mob/J in urange(rangewarning,our_turf))
- if(GLOB.admin_datums[J.ckey])
- detect_state = PROXIMITY_NEAR
- var/turf/detect_turf = get_turf(J)
- if(get_dist(our_turf, detect_turf) < rangealert)
- detect_state = PROXIMITY_ON_SCREEN
- break
-
/obj/item/multitool/cyborg
name = "multitool"
desc = "Optimised and stripped-down version of a regular multitool."
diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm
index bc24e4bf83..737f71a978 100644
--- a/code/game/objects/items/devices/paicard.dm
+++ b/code/game/objects/items/devices/paicard.dm
@@ -22,7 +22,8 @@
/obj/item/paicard/Destroy()
//Will stop people throwing friend pAIs into the singularity so they can respawn
SSpai.pai_card_list -= src
- QDEL_NULL(pai)
+ if (!QDELETED(pai))
+ QDEL_NULL(pai)
return ..()
/obj/item/paicard/attack_self(mob/user)
@@ -90,7 +91,7 @@
to_chat(pai, "Byte by byte you lose your sense of self.")
to_chat(pai, "Your mental faculties leave you.")
to_chat(pai, "oblivion... ")
- removePersonality()
+ qdel(pai)
if(href_list["wires"])
var/wire = text2num(href_list["wires"])
if(pai.radio)
@@ -122,11 +123,6 @@
playsound(loc, 'sound/effects/pai_boot.ogg', 50, 1, -1)
audible_message("\The [src] plays a cheerful startup noise!")
-/obj/item/paicard/proc/removePersonality()
- QDEL_NULL(pai)
- cut_overlays()
- add_overlay("pai-off")
-
/obj/item/paicard/proc/setEmotion(emotion)
if(pai)
src.cut_overlays()
diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
index 8d36fd9986..1a5c7a9b43 100644
--- a/code/game/objects/items/devices/powersink.dm
+++ b/code/game/objects/items/devices/powersink.dm
@@ -100,8 +100,8 @@
"[user] activates \the [src]!", \
"You activate \the [src].",
"You hear a click.")
- message_admins("Power sink activated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(src)]")
- log_game("Power sink activated by [key_name(user)] at [COORD(src)]")
+ message_admins("Power sink activated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(src)]")
+ log_game("Power sink activated by [key_name(user)] at [AREACOORD(src)]")
set_mode(OPERATING)
if(OPERATING)
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index c6028b1193..0ef20dea19 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -52,7 +52,7 @@
A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
GLOB.bombers += "[key_name(user)] attached a [item] to a transfer valve."
- message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.")
+ message_admins("[ADMIN_LOOKUPFLW(user)] attached a [item] to a transfer valve.")
log_game("[key_name(user)] attached a [item] to a transfer valve.")
attacher = user
return
@@ -184,41 +184,33 @@
if(!valve_open && tank_one && tank_two)
valve_open = TRUE
var/turf/bombturf = get_turf(src)
- var/area/A = get_area(bombturf)
- var/attachment = "no device"
+ var/attachment
if(attached_device)
if(istype(attached_device, /obj/item/assembly/signaler))
attachment = "[attached_device]"
else
attachment = attached_device
- var/attacher_name = ""
- if(!attacher)
- attacher_name = "Unknown"
- else
- attacher_name = "[key_name_admin(attacher)]"
+ var/admin_attachment_message
+ var/attachment_message
+ if(attachment)
+ admin_attachment_message = " with [attachment] attached by [attacher ? ADMIN_LOOKUPFLW(attacher) : "Unknown"]"
+ attachment_message = " with [attachment] attached by [attacher ? key_name_admin(attacher) : "Unknown"]"
- var/log_str1 = "Bomb valve opened in "
- var/log_str2 = "with [attachment] attacher: [attacher_name]"
+ var/mob/bomber = get_mob_by_key(fingerprintslast)
+ var/admin_bomber_message
+ var/bomber_message
+ if(bomber)
+ admin_bomber_message = " - Last touched by: [ADMIN_LOOKUPFLW(bomber)]"
+ bomber_message = " - Last touched by: [key_name_admin(bomber)]"
- var/log_attacher = ""
- if(attacher)
- log_attacher = "[ADMIN_QUE(attacher)] [ADMIN_FLW(attacher)]"
- var/mob/mob = get_mob_by_key(src.fingerprintslast)
- var/last_touch_info = ""
- if(mob)
- last_touch_info = "[ADMIN_QUE(mob)] [ADMIN_FLW(mob)]"
+ var/admin_bomb_message = "Bomb valve opened in [ADMIN_VERBOSEJMP(bombturf)][admin_attachment_message][admin_bomber_message]"
+ GLOB.bombers += admin_bomb_message
+ message_admins(admin_bomb_message, 0, 1)
+ log_game("Bomb valve opened in [AREACOORD(bombturf)][attachment_message][bomber_message]")
- var/log_str3 = " Last touched by: [key_name_admin(mob)]"
-
- var/bomb_message = "[log_str1] [A.name][ADMIN_JMP(bombturf)] [log_str2][log_attacher] [log_str3][last_touch_info]"
-
- GLOB.bombers += bomb_message
-
- message_admins(bomb_message, 0, 1)
- log_game("[log_str1] [A.name][COORD(bombturf)] [log_str2] [log_str3]")
merge_gases()
for(var/i in 1 to 6)
addtimer(CALLBACK(src, .proc/update_icon), 20 + (i - 1) * 10)
diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm
index 0e8c82d963..a4b9cf708b 100644
--- a/code/game/objects/items/dna_injector.dm
+++ b/code/game/objects/items/dna_injector.dm
@@ -38,7 +38,7 @@
HM.force_lose(M)
for(var/datum/mutation/human/HM in add_mutations)
if(HM.name == RACEMUT)
- message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the [name] (MONKEY)")
+ message_admins("[ADMIN_LOOKUPFLW(user)] injected [key_name_admin(M)] with the [name] (MONKEY)")
log_msg += " (MONKEY)"
HM.force_give(M)
if(fields)
@@ -328,7 +328,7 @@
if((HM in M.dna.mutations) && !(M.dna.temporary_mutations[HM.name]))
continue //Skip permanent mutations we already have.
if(HM.name == RACEMUT && ishuman(M))
- message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the [name] (MONKEY)")
+ message_admins("[ADMIN_LOOKUPFLW(user)] injected [key_name_admin(M)] with the [name] (MONKEY)")
log_msg += " (MONKEY)"
M = HM.force_give(M)
else
diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm
index 8bc1665a3f..bed7ba24e4 100644
--- a/code/game/objects/items/grenades/chem_grenade.dm
+++ b/code/game/objects/items/grenades/chem_grenade.dm
@@ -174,15 +174,13 @@
stage_change(EMPTY)
return
- var/areas_name = get_area_name(src, TRUE)
-
if(nadeassembly)
var/mob/M = get_mob_by_ckey(assemblyattacher)
var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast)
- message_admins("grenade primed by an assembly, attached by [ADMIN_LOOKUPFLW(M)] and last touched by [ADMIN_LOOKUPFLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [areas_name] [ADMIN_JMP(detonation_turf)].")
- log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [areas_name] [COORD(detonation_turf)]")
+ message_admins("grenade primed by an assembly, attached by [ADMIN_LOOKUPFLW(M)] and last touched by [ADMIN_LOOKUPFLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [ADMIN_VERBOSEJMP(detonation_turf)].")
+ log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [AREACOORD(detonation_turf)]")
- log_game("A grenade detonated at [areas_name] [COORD(detonation_turf)]")
+ log_game("A grenade detonated at [AREACOORD(detonation_turf)]")
update_mob()
@@ -284,18 +282,15 @@
RC.reagents.trans_to(reactants, RC.reagents.total_volume*fraction, threatscale, 1, 1)
chem_splash(get_turf(src), affected_area, list(reactants), ignition_temp, threatscale)
+ var/turf/DT = get_turf(src)
if(nadeassembly)
var/mob/M = get_mob_by_ckey(assemblyattacher)
var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast)
- var/turf/T = get_turf(src)
- var/area/A = get_area(T)
- message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) (FLW) and last touched by [key_name_admin(last)](?) (FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).")
- log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])")
+ message_admins("grenade primed by an assembly at [AREACOORD(DT)], attached by [ADMIN_LOOKUPFLW(M)] and last touched by [ADMIN_LOOKUPFLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]).")
+ log_game("grenade primed by an assembly at [AREACOORD(DT)], attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name])")
else
addtimer(CALLBACK(src, .proc/prime), det_time)
- var/turf/DT = get_turf(src)
- var/area/DA = get_area(DT)
- log_game("A grenade detonated at [DA.name] ([DT.x], [DT.y], [DT.z])")
+ log_game("A grenade detonated at [AREACOORD(DT)]")
diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm
index 6a08777e61..b627d42ab2 100644
--- a/code/game/objects/items/grenades/grenade.dm
+++ b/code/game/objects/items/grenades/grenade.dm
@@ -61,10 +61,10 @@
preprime(user)
/obj/item/grenade/proc/log_grenade(mob/user, turf/T)
- var/message = "[ADMIN_LOOKUPFLW(user)]) has primed \a [src] for detonation at [ADMIN_COORDJMP(T)]"
+ var/message = "[ADMIN_LOOKUPFLW(user)]) has primed \a [src] for detonation at [ADMIN_VERBOSEJMP(T)]"
GLOB.bombers += message
message_admins(message)
- log_game("[key_name(user)] has primed \a [src] for detonation at [get_area_name(T, TRUE)] [COORD(T)].")
+ log_game("[key_name(user)] has primed \a [src] for detonation at [AREACOORD(T)].")
/obj/item/grenade/proc/preprime(mob/user, delayoverride, msg = TRUE, volume = 60)
var/turf/T = get_turf(src)
diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm
index 28be94afb4..8e96e97389 100644
--- a/code/game/objects/items/grenades/plastic.dm
+++ b/code/game/objects/items/grenades/plastic.dm
@@ -111,8 +111,8 @@
return
target = AM
- message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [det_time] second fuse",0,1)
- log_game("[key_name(user)] planted [name] on [target.name] at [COORD(src)] with [det_time] second fuse")
+ message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_VERBOSEJMP(target)] with [det_time] second fuse")
+ log_game("[key_name(user)] planted [name] on [target.name] at [AREACOORD(user)] with [det_time] second fuse")
moveToNullspace() //Yep
@@ -148,8 +148,8 @@
M.say(message_say)
/obj/item/grenade/plastic/suicide_act(mob/user)
- message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [src] at [ADMIN_COORDJMP(user)]",0,1)
- log_game("[key_name(user)] suicided with [src] at [COORD(user)]")
+ message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [src] at [ADMIN_VERBOSEJMP(user)]")
+ log_game("[key_name(user)] suicided with [src] at [AREACOORD(user)]")
user.visible_message("[user] activates [src] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!")
shout_syndicate_crap(user)
explosion(user,0,2,0) //Cheap explosion imitation because putting prime() here causes runtimes
@@ -188,8 +188,8 @@
user.visible_message("[user] activates the [src.name] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!")
shout_syndicate_crap(user)
target = user
- message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [name] at [ADMIN_COORDJMP(src)]",0,1)
- message_admins("[key_name(user)] suicided with [name] at ([x],[y],[z])")
+ message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [name] at [ADMIN_VERBOSEJMP(src)]")
+ log_game("[key_name(user)] suicided with [name] at [AREACOORD(user)]")
sleep(10)
explode(get_turf(user))
user.gib(1, 1)
@@ -228,10 +228,10 @@
src.target = AM
moveToNullspace()
- var/message = "[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [timer] second fuse"
+ var/message = "[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_VERBOSEJMP(target)] with [timer] second fuse"
GLOB.bombers += message
message_admins(message,0,1)
- log_game("[key_name(user)] planted [name] on [target.name] at [COORD(target)] with [timer] second fuse")
+ log_game("[key_name(user)] planted [name] on [target.name] at [AREACOORD(target)] with [timer] second fuse")
target.add_overlay(plastic_overlay, TRUE)
to_chat(user, "You plant the bomb. Timer counting down from [timer].")
diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm
index 9777deaf6d..c374ab94fd 100644
--- a/code/game/objects/items/hot_potato.dm
+++ b/code/game/objects/items/hot_potato.dm
@@ -139,8 +139,8 @@
detonation_timerid = addtimer(CALLBACK(src, .proc/detonate), delay, TIMER_STOPPABLE)
START_PROCESSING(SSfastprocess, src)
var/turf/T = get_turf(src)
- message_admins("[user? "[ADMIN_LOOKUPFLW(user)] has primed [src]" : "A [src] has been primed"] (Timer:[delay],Explosive:[detonate_explosion],Range:[detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [COORD(T)]([T.loc])")
- log_game("[user? "[user] has primed [src]" : "A [src] has been primed"] ([detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [COORD(T)]([T.loc])")
+ message_admins("[user? "[ADMIN_LOOKUPFLW(user)] has primed [src]" : "A [src] has been primed"] (Timer:[delay],Explosive:[detonate_explosion],Range:[detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [ADMIN_VERBOSEJMP(T)]")
+ log_game("[user? "[user] has primed [src]" : "A [src] has been primed"] ([detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [AREACOORD(T)]")
active = TRUE
/obj/item/hot_potato/proc/deactivate()
diff --git a/code/game/objects/items/implants/implant_explosive.dm b/code/game/objects/items/implants/implant_explosive.dm
index 0dc22c3d83..5aa0e31d08 100644
--- a/code/game/objects/items/implants/implant_explosive.dm
+++ b/code/game/objects/items/implants/implant_explosive.dm
@@ -41,8 +41,7 @@
to_chat(imp_in, "You activate your [name].")
active = TRUE
var/turf/boomturf = get_turf(imp_in)
- var/area/A = get_area(boomturf)
- message_admins("[ADMIN_LOOKUPFLW(imp_in)] has activated their [name] at [A.name] [ADMIN_JMP(boomturf)], with cause of [cause].")
+ message_admins("[ADMIN_LOOKUPFLW(imp_in)] has activated their [name] at [ADMIN_VERBOSEJMP(boomturf)], with cause of [cause].")
//If the delay is short, just blow up already jeez
if(delay <= 7)
explosion(src,heavy,medium,weak,weak, flame_range = weak)
diff --git a/code/game/objects/items/implants/implantchair.dm b/code/game/objects/items/implants/implantchair.dm
index e6d1486053..a135cc3af4 100644
--- a/code/game/objects/items/implants/implantchair.dm
+++ b/code/game/objects/items/implants/implantchair.dm
@@ -183,11 +183,11 @@
if(!user || !user.Adjacent(src))
return FALSE
objective = stripped_input(usr,"What order do you want to imprint on [C]?","Enter the order","",120)
- message_admins("[key_name_admin(user)] set brainwash machine objective to '[objective]'.")
+ message_admins("[ADMIN_LOOKUPFLW(user)] set brainwash machine objective to '[objective]'.")
log_game("[key_name(user)] set brainwash machine objective to '[objective]'.")
if(C.isloyal())
return FALSE
brainwash(C, objective)
- message_admins("[key_name_admin(user)] brainwashed [key_name_admin(C)] with objective '[objective]'.")
+ message_admins("[ADMIN_LOOKUPFLW(user)] brainwashed [key_name_admin(C)] with objective '[objective]'.")
log_game("[key_name(user)] brainwashed [key_name(C)] with objective '[objective]'.")
return TRUE
\ No newline at end of file
diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
index ae73692cd4..0d993da41b 100644
--- a/code/game/objects/items/plushes.dm
+++ b/code/game/objects/items/plushes.dm
@@ -141,8 +141,8 @@
user.visible_message("[user] slides [grenade] into [src].", \
"You slide [I] into [src].")
grenade = I
- var/turf/T = get_turf(user)
- log_game("[key_name(user)] added a grenade ([I.name]) to [src] at [COORD(T)].")
+ var/turf/grenade_turf = get_turf(src)
+ log_game("[key_name(user)] added a grenade ([I.name]) to [src] at [AREACOORD(grenade_turf)].")
return
if(istype(I, /obj/item/toy/plush))
love(I, user)
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index be7507e3d2..300f18cbeb 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -172,8 +172,8 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \
/obj/item/stack/sheet/mineral/plasma/attackby(obj/item/W as obj, mob/user as mob, params)
if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite
var/turf/T = get_turf(src)
- message_admins("Plasma sheets ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1)
- log_game("Plasma sheets ignited by [key_name(user)] in [COORD(T)]")
+ message_admins("Plasma sheets ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]")
+ log_game("Plasma sheets ignited by [key_name(user)] in [AREACOORD(T)]")
fire_act(W.is_hot())
else
return ..()
diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm
index b8eb2dcc00..70ec8243b2 100644
--- a/code/game/objects/items/tanks/watertank.dm
+++ b/code/game/objects/items/tanks/watertank.dm
@@ -291,7 +291,7 @@
resin_cooldown = TRUE
R.remove_any(100)
var/obj/effect/resin_container/A = new (get_turf(src))
- log_game("[key_name(user)] used Resin Launcher at [get_area(user)] [COORD(user)].")
+ log_game("[key_name(user)] used Resin Launcher at [AREACOORD(user)].")
playsound(src,'sound/items/syringeproj.ogg',40,1)
for(var/a=0, a<5, a++)
step_towards(A, target)
diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm
index dc6fbfe25b..a16e3faa81 100644
--- a/code/game/objects/items/teleportation.dm
+++ b/code/game/objects/items/teleportation.dm
@@ -204,7 +204,7 @@
active_portal_pairs[created[1]] = created[2]
var/obj/effect/portal/c1 = created[1]
var/obj/effect/portal/c2 = created[2]
- investigate_log("was used by [key_name(user)] at [COORD(user)] to create a portal pair with destinations [COORD(c1)] and [COORD(c2)].", INVESTIGATE_PORTAL)
+ investigate_log("was used by [key_name(user)] at [AREACOORD(user)] to create a portal pair with destinations [AREACOORD(c1)] and [AREACOORD(c2)].", INVESTIGATE_PORTAL)
add_fingerprint(user)
/obj/item/hand_tele/proc/on_portal_destroy(obj/effect/portal/P)
diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm
index 4875ef324c..c343abaa68 100644
--- a/code/game/objects/items/theft_tools.dm
+++ b/code/game/objects/items/theft_tools.dm
@@ -34,7 +34,7 @@
cooldown = world.time
flick(pulseicon, src)
radiation_pulse(src, 400, 2)
-
+
/obj/item/nuke_core/suicide_act(mob/user)
user.visible_message("[user] is rubbing [src] against [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!")
return (TOXLOSS)
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index 229aa70ee0..08d0b8bd30 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -136,13 +136,13 @@
if(isliving(O))
var/mob/living/L = O
if(L.IgniteMob())
- message_admins("[key_name_admin(user)] set [key_name_admin(L)] on fire")
- log_game("[key_name(user)] set [key_name(L)] on fire")
+ message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(L)] on fire with [src] at [AREACOORD(user)]")
+ log_game("[key_name(user)] set [key_name(L)] on fire with [src] at [AREACOORD(user)]")
/obj/item/weldingtool/attack_self(mob/user)
if(src.reagents.has_reagent("plasma"))
- message_admins("[key_name_admin(user)] activated a rigged welder.")
+ message_admins("[ADMIN_LOOKUPFLW(user)] activated a rigged welder at [AREACOORD(user)].")
explode()
switched_on(user)
if(welding)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm b/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm
index 995f858fb0..79af1e0bdc 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm
@@ -106,11 +106,13 @@
/obj/effect/DPtarget/Initialize(mapload, var/SO, var/podID, var/target)
. = ..()
- var/delayTime = 30//default time is 30 seconds
+ var/delayTime = 17 //We're forcefully adminspawned, make it faster
switch(podID)
+ if(POD_STANDARD)
+ delayTime = 30
if(POD_BLUESPACE)
delayTime = 15
- if(POD_CENTCOM)
+ if(POD_CENTCOM) //Admin smite, even faster.
delayTime = 5//speedy delivery
addtimer(CALLBACK(src, .proc/beginLaunch, SO, podID), delayTime)//standard pods take 3 seconds to come in, bluespace pods take 1.5
@@ -121,18 +123,21 @@
addtimer(CALLBACK(src, .proc/endLaunch, SO, podID), 3, TIMER_CLIENT_TIME)//fall 0.3seconds
/obj/effect/DPtarget/proc/endLaunch(var/SO, var/podID)
- if (podID == POD_STANDARD)
+ if(podID == POD_STANDARD)
new /obj/structure/closet/supplypod(drop_location(), SO)//pod is created
explosion(src,0,0,2, flame_range = 3) //less advanced equipment than bluespace pod, so larger explosion when landing
- else if (podID == POD_BLUESPACE)
+ else if(podID == POD_BLUESPACE)
new /obj/structure/closet/supplypod/bluespacepod(drop_location(), SO)//pod is created
explosion(src,0,0,2, flame_range = 1) //explosion and camshake (shoutout to @cyberboss)
- else
+ else if(podID == POD_CENTCOM)
new /obj/structure/closet/supplypod/bluespacepod/centcompod(drop_location(), SO)//CentCom supplypods dont create explosions; instead they directly deal 40 fire damage to people on the turf
var/turf/T = get_turf(src)
T.hotspot_expose(700, 50, 1)//same as fireball
for(var/mob/living/M in T.contents)
M.adjustFireLoss(40)
+ else //We're buildmoded or directly spawned, blow them up damnit.
+ new /obj/structure/closet/supplypod/bluespacepod/centcompod(drop_location(), SO)
+ explosion(src, 0, 0, 2, flame_range = 3)
qdel(src)
/obj/effect/DPtarget/Destroy()
@@ -146,4 +151,4 @@
icon = 'icons/obj/module.dmi'
icon_state = "cargodisk"
item_state = "card-id"
- w_class = WEIGHT_CLASS_SMALL
\ No newline at end of file
+ w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm
index 4ffc2fe060..a98b800e09 100644
--- a/code/game/objects/structures/divine.dm
+++ b/code/game/objects/structures/divine.dm
@@ -18,7 +18,7 @@
return
to_chat(user, "You attempt to sacrifice [L] by invoking the sacrificial ritual.")
L.gib()
- message_admins("[key_name_admin(user)] has sacrificed [key_name_admin(L)] on the sacrifical altar.")
+ message_admins("[ADMIN_LOOKUPFLW(user)] has sacrificed [key_name_admin(L)] on the sacrifical altar at [AREACOORD(src)].")
/obj/structure/healingfountain
name = "healing fountain"
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index 842e540551..c877488601 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -245,8 +245,8 @@
/obj/structure/falsewall/plasma/attackby(obj/item/W, mob/user, params)
if(W.is_hot() > 300)
var/turf/T = get_turf(src)
- message_admins("Plasma falsewall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1)
- log_game("Plasma falsewall ignited by [key_name(user)] in [COORD(T)]")
+ message_admins("Plasma falsewall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]")
+ log_game("Plasma falsewall ignited by [key_name(user)] in [AREACOORD(T)]")
burnbabyburn()
else
return ..()
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index f2635770c6..561cc8ef8c 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -204,8 +204,8 @@
/obj/structure/mineral_door/transparent/plasma/attackby(obj/item/W, mob/user, params)
if(W.is_hot())
var/turf/T = get_turf(src)
- message_admins("Plasma mineral door ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1)
- log_game("Plasma mineral door ignited by [key_name(user)] in [COORD(T)]")
+ message_admins("Plasma mineral door ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]")
+ log_game("Plasma mineral door ignited by [key_name(user)] in [AREACOORD(T)]")
TemperatureAct()
else
return ..()
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 1f7991e374..d22dbddd52 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -123,18 +123,18 @@
if(burn)
var/turf/T = get_turf(src)
if(Proj.firer)
- message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(Proj.firer)] in [ADMIN_COORDJMP(T)]",0,1)
- log_game("Plasma statue ignited by [key_name(Proj.firer)] in [COORD(T)]")
+ message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(Proj.firer)] in [ADMIN_VERBOSEJMP(T)]")
+ log_game("Plasma statue ignited by [key_name(Proj.firer)] in [AREACOORD(T)]")
else
- message_admins("Plasma statue ignited by [Proj]. No known firer, in [ADMIN_COORDJMP(T)]",0,1)
- log_game("Plasma statue ignited by [Proj] in [COORD(T)]. No known firer.")
+ message_admins("Plasma statue ignited by [Proj]. No known firer, in [ADMIN_VERBOSEJMP(T)]")
+ log_game("Plasma statue ignited by [Proj] in [AREACOORD(T)]. No known firer.")
..()
/obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params)
if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite
var/turf/T = get_turf(src)
- message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1)
- log_game("Plasma statue ignited by [key_name(user)] in [COORD(T)]")
+ message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]")
+ log_game("Plasma statue ignited by [key_name(user)] in [AREACOORD(T)]")
ignite(W.is_hot())
else
return ..()
diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm
index 396358ae47..0f68e68b7b 100644
--- a/code/game/shuttle_engines.dm
+++ b/code/game/shuttle_engines.dm
@@ -42,7 +42,7 @@
switch(state)
if(ENGINE_UNWRENCHED)
to_chat(user, "The [src.name] needs to be wrenched to the floor!")
- if(EM_SECURED)
+ if(ENGINE_WRENCHED)
if(!I.tool_start_check(user, amount=0))
return TRUE
@@ -55,7 +55,7 @@
to_chat(user, "You weld \the [src] to the floor.")
alter_engine_power(engine_power)
- if(EM_WELDED)
+ if(ENGINE_WELDED)
if(!I.tool_start_check(user, amount=0))
return TRUE
@@ -149,3 +149,8 @@
bound_width = 96
bound_height = 96
appearance_flags = 0
+
+#undef ENGINE_UNWRENCHED
+#undef ENGINE_WRENCHED
+#undef ENGINE_WELDED
+#undef ENGINE_WELDTIME
diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm
index 657bf89a34..db1dba66cf 100644
--- a/code/game/turfs/closed.dm
+++ b/code/game/turfs/closed.dm
@@ -36,6 +36,14 @@
icon = 'icons/turf/shuttleold.dmi'
icon_state = "block"
+/turf/closed/indestructible/sandstone
+ name = "sandstone wall"
+ desc = "A wall with sandstone plating. Rough."
+ icon = 'icons/turf/walls/sandstone_wall.dmi'
+ icon_state = "sandstone"
+ baseturfs = /turf/closed/indestructible/sandstone
+ smooth = SMOOTH_TRUE
+
/turf/closed/indestructible/oldshuttle/corner
icon_state = "corner"
@@ -152,4 +160,4 @@
name = "wall"
desc = "A wall made out of a strange metal. The squares on it pulse in a predictable pattern."
icon = 'icons/turf/walls/hierophant_wall.dmi'
- icon_state = "wall"
\ No newline at end of file
+ icon_state = "wall"
diff --git a/code/game/turfs/simulated/floor/mineral_floor.dm b/code/game/turfs/simulated/floor/mineral_floor.dm
index e2e3356684..0ac7154592 100644
--- a/code/game/turfs/simulated/floor/mineral_floor.dm
+++ b/code/game/turfs/simulated/floor/mineral_floor.dm
@@ -44,8 +44,8 @@
/turf/open/floor/mineral/plasma/attackby(obj/item/W, mob/user, params)
if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite
- message_admins("Plasma flooring was ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]",0,1)
- log_game("Plasma flooring was ignited by [key_name(user)] in [COORD(src)]")
+ message_admins("Plasma flooring was ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]")
+ log_game("Plasma flooring was ignited by [key_name(user)] in [AREACOORD(src)]")
ignite(W.is_hot())
return
..()
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index 9928f9cdc5..5393df669b 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -451,20 +451,19 @@
stage = GIBTONITE_ACTIVE
visible_message("There was gibtonite inside! It's going to explode!")
var/turf/bombturf = get_turf(src)
- var/area/A = get_area(bombturf)
var/notify_admins = 0
if(z != 5)
notify_admins = 1
if(!triggered_by_explosion)
- message_admins("[ADMIN_LOOKUPFLW(user)] has triggered a gibtonite deposit reaction at [A.name] [ADMIN_JMP(bombturf)].")
+ message_admins("[ADMIN_LOOKUPFLW(user)] has triggered a gibtonite deposit reaction at [ADMIN_VERBOSEJMP(bombturf)].")
else
- message_admins("An explosion has triggered a gibtonite deposit reaction at [A.name] [ADMIN_JMP(bombturf)].")
+ message_admins("An explosion has triggered a gibtonite deposit reaction at [ADMIN_VERBOSEJMP(bombturf)].")
if(!triggered_by_explosion)
- log_game("[key_name(user)] has triggered a gibtonite deposit reaction at [A.name] [COORD(bombturf)].")
+ log_game("[key_name(user)] has triggered a gibtonite deposit reaction at [AREACOORD(bombturf)].")
else
- log_game("An explosion has triggered a gibtonite deposit reaction at [A.name] [COORD(bombturf)]")
+ log_game("An explosion has triggered a gibtonite deposit reaction at [AREACOORD(bombturf)]")
countdown(notify_admins)
diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm
index c8ec3a5c5f..94e5a0a063 100644
--- a/code/game/turfs/simulated/wall/mineral_walls.dm
+++ b/code/game/turfs/simulated/wall/mineral_walls.dm
@@ -94,8 +94,8 @@
/turf/closed/wall/mineral/plasma/attackby(obj/item/W, mob/user, params)
if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite
- message_admins("Plasma wall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]",0,1)
- log_game("Plasma wall ignited by [key_name(user)] in [COORD(src)]")
+ message_admins("Plasma wall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]")
+ log_game("Plasma wall ignited by [key_name(user)] in [AREACOORD(src)]")
ignite(W.is_hot())
return
..()
diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm
index 90eac62b16..09d0d5d2e2 100644
--- a/code/modules/admin/DB_ban/functions.dm
+++ b/code/modules/admin/DB_ban/functions.dm
@@ -266,7 +266,7 @@
var/datum/DBQuery/query_edit_ban_reason = SSdbcore.NewQuery("UPDATE [format_table_name("ban")] SET reason = '[value]', edits = CONCAT(edits,'- [eckey] changed ban reason from \\\"[reason]\\\" to \\\"[value]\\\"
') WHERE id = [banid]")
if(!query_edit_ban_reason.warn_execute())
return
- message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s reason from [reason] to [value]",1)
+ message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s reason from [reason] to [value]")
if("duration")
if(!value)
value = input("Insert the new duration (in minutes) for [pckey]'s ban", "New Duration", "[duration]", null) as null|num
@@ -277,7 +277,7 @@
var/datum/DBQuery/query_edit_ban_duration = SSdbcore.NewQuery("UPDATE [format_table_name("ban")] SET duration = [value], edits = CONCAT(edits,'- [eckey] changed ban duration from [duration] to [value]
'), expiration_time = DATE_ADD(bantime, INTERVAL [value] MINUTE) WHERE id = [banid]")
if(!query_edit_ban_duration.warn_execute())
return
- message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s duration from [duration] to [value]",1)
+ message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s duration from [duration] to [value]")
if("unban")
if(alert("Unban [pckey]?", "Unban?", "Yes", "No") == "Yes")
DB_ban_unban_by_id(banid)
@@ -328,7 +328,7 @@
var/datum/DBQuery/query_unban = SSdbcore.NewQuery(sql_update)
if(!query_unban.warn_execute())
return
- message_admins("[key_name_admin(usr)] has lifted [pckey]'s ban.",1)
+ message_admins("[key_name_admin(usr)] has lifted [pckey]'s ban.")
/client/proc/DB_ban_panel()
set category = "Admin"
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index d67bbfd6c5..7958e8e943 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -63,7 +63,11 @@
body += "PM - "
body += "SM - "
body += "FLW - "
- body += "LOGS\]
"
+ //Default to client logs if available
+ var/source = LOGSRC_MOB
+ if(M.client)
+ source = LOGSRC_CLIENT
+ body += "LOGS\]
"
body += "Mob type = [M.type]
"
diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm
index 5138089a6c..a3f7823b58 100644
--- a/code/modules/admin/secrets.dm
+++ b/code/modules/admin/secrets.dm
@@ -367,7 +367,7 @@
continue
if(is_special_character(H))
continue
- var/datum/antagonist/traitor/human/T = new()
+ var/datum/antagonist/traitor/T = new()
T.give_objectives = FALSE
var/datum/objective/new_objective = new
new_objective.owner = H
diff --git a/code/modules/admin/sound_emitter.dm b/code/modules/admin/sound_emitter.dm
index 298e38f295..028af313b0 100644
--- a/code/modules/admin/sound_emitter.dm
+++ b/code/modules/admin/sound_emitter.dm
@@ -143,7 +143,7 @@
if(M.client.prefs.toggles & SOUND_MIDI)
M.playsound_local(M, sound_file, sound_volume, FALSE, channel = CHANNEL_ADMIN, pressure_affected = FALSE)
if(user)
- log_admin("[ADMIN_LOOKUPFLW(user)] activated a sound emitter with file \"[sound_file]\" at [COORD(src)]")
+ log_admin("[ADMIN_LOOKUPFLW(user)] activated a sound emitter with file \"[sound_file]\" at [AREACOORD(src)]")
flick("shield1", src)
#undef SOUND_EMITTER_LOCAL
diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm
index 83b3d48380..d4dd5951d2 100644
--- a/code/modules/admin/sql_message_system.dm
+++ b/code/modules/admin/sql_message_system.dm
@@ -146,9 +146,9 @@
if(!SSdbcore.Connect())
to_chat(usr, "Failed to establish database connection.")
return
- var/output
+ var/list/output = list()
var/ruler = "
"
- var/navbar = "\[All\]|\[#\]"
+ var/list/navbar = list("\[All\]|\[#\]")
for(var/letter in GLOB.alphabet)
navbar += "|\[[letter]\]"
navbar += "|\[Memos\]|\[Watchlist\]"
@@ -198,9 +198,9 @@
var/datum/DBQuery/query_get_messages = SSdbcore.NewQuery("SELECT type, secret, id, adminckey, text, timestamp, server, lasteditor, DATEDIFF(NOW(), timestamp) AS `age` FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey = '[target_ckey]' AND deleted = 0 ORDER BY timestamp DESC")
if(!query_get_messages.warn_execute())
return
- var/messagedata
- var/watchdata
- var/notedata
+ var/list/messagedata = list()
+ var/list/watchdata = list()
+ var/list/notedata = list()
var/skipped = 0
while(query_get_messages.NextRow())
type = query_get_messages.item[1]
@@ -230,8 +230,7 @@
skipped = TRUE
alphatext = "filter: alpha(opacity=[alpha]); opacity: [alpha/100];"
- var/data
- data += " [timestamp] | [server] | [admin_ckey]"
+ var/list/data = list("
[timestamp] | [server] | [admin_ckey]")
if(!linkless)
data += " \[Delete\]"
if(type == "note")
@@ -304,7 +303,7 @@
else if(!type && !target_ckey && !index)
output += "
\[Add message\]\[Add watchlist entry\]\[Add note\]"
output += ruler
- usr << browse({"[output]"}, "window=browse_messages;size=900x500")
+ usr << browse({"[jointext(output, "")]"}, "window=browse_messages;size=900x500")
proc/get_message_output(type, target_ckey)
if(!SSdbcore.Connect())
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index b4d92b1fbe..0eacdd5c5e 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1905,7 +1905,7 @@
to_chat(usr, "This can only be used on instances of type /mob.")
return
- show_individual_logging_panel(M, href_list["log_type"])
+ show_individual_logging_panel(M, href_list["log_src"], href_list["log_type"])
else if(href_list["languagemenu"])
if(!check_rights(R_ADMIN))
return
diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm
index 0136efc3b3..6dcd4e98ca 100644
--- a/code/modules/admin/verbs/adminjump.dm
+++ b/code/modules/admin/verbs/adminjump.dm
@@ -20,8 +20,8 @@
to_chat(src, "Nowhere to jump to!")
return
usr.forceMove(T)
- log_admin("[key_name(usr)] jumped to [A]")
- message_admins("[key_name_admin(usr)] jumped to [A]")
+ log_admin("[key_name(usr)] jumped to [AREACOORD(A)]")
+ message_admins("[key_name_admin(usr)] jumped to [AREACOORD(A)]")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Area") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/jumptoturf(turf/T in world)
@@ -31,8 +31,8 @@
to_chat(src, "Only administrators may use this command.")
return
- log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]")
- message_admins("[key_name_admin(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]")
+ log_admin("[key_name(usr)] jumped to [AREACOORD(T)]")
+ message_admins("[key_name_admin(usr)] jumped to [AREACOORD(T)]")
usr.forceMove(T)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Turf") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
@@ -46,7 +46,7 @@
return
log_admin("[key_name(usr)] jumped to [key_name(M)]")
- message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]")
+ message_admins("[key_name_admin(usr)] jumped to [ADMIN_LOOKUPFLW(M)] at [AREACOORD(M)]")
if(src.mob)
var/mob/A = src.mob
var/turf/T = get_turf(M)
@@ -89,7 +89,7 @@
return
var/mob/M = selection.mob
log_admin("[key_name(usr)] jumped to [key_name(M)]")
- message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]")
+ message_admins("[key_name_admin(usr)] jumped to [ADMIN_LOOKUPFLW(M)]")
usr.forceMove(M.loc)
@@ -104,8 +104,8 @@
return
var/atom/loc = get_turf(usr)
- log_admin("[key_name(usr)] teleported [key_name(M)] to [COORD(loc)]")
- var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)] to [ADMIN_COORDJMP(loc)]"
+ log_admin("[key_name(usr)] teleported [key_name(M)] to [AREACOORD(loc)]")
+ var/msg = "[key_name_admin(usr)] teleported [ADMIN_LOOKUPFLW(M)] to [ADMIN_VERBOSEJMP(loc)]"
message_admins(msg)
admin_ticket_log(M, msg)
M.forceMove(loc)
@@ -131,7 +131,7 @@
if(!M)
return
log_admin("[key_name(usr)] teleported [key_name(M)]")
- var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)]"
+ var/msg = "[key_name_admin(usr)] teleported [ADMIN_LOOKUPFLW(M)]"
message_admins(msg)
admin_ticket_log(M, msg)
if(M)
@@ -149,8 +149,8 @@
if(A && istype(A))
if(M.forceMove(safepick(get_area_turfs(A))))
- log_admin("[key_name(usr)] teleported [key_name(M)] to [A]")
- var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)] to [A]"
+ log_admin("[key_name(usr)] teleported [key_name(M)] to [AREACOORD(A)]")
+ var/msg = "[key_name_admin(usr)] teleported [ADMIN_LOOKUPFLW(M)] to [AREACOORD(A)]"
message_admins(msg)
admin_ticket_log(M, msg)
else
diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm
index 1f14934065..75407eae9c 100644
--- a/code/modules/admin/verbs/atmosdebug.dm
+++ b/code/modules/admin/verbs/atmosdebug.dm
@@ -9,17 +9,17 @@
//all plumbing - yes, some things might get stated twice, doesn't matter.
for (var/obj/machinery/atmospherics/plumbing in GLOB.machines)
if (plumbing.nodealert)
- to_chat(usr, "Unconnected [plumbing.name] located at [ADMIN_COORDJMP(plumbing)] ([get_area(plumbing.loc)])")
+ to_chat(usr, "Unconnected [plumbing.name] located at [ADMIN_VERBOSEJMP(plumbing)]")
//Manifolds
for (var/obj/machinery/atmospherics/pipe/manifold/pipe in GLOB.machines)
if (!pipe.nodes[1] || !pipe.nodes[2] || !pipe.nodes[3])
- to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_COORDJMP(pipe)] ([get_area(pipe.loc)])")
+ to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]")
//Pipes
for (var/obj/machinery/atmospherics/pipe/simple/pipe in GLOB.machines)
if (!pipe.nodes[1] || !pipe.nodes[2])
- to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_COORDJMP(pipe)] ([get_area(pipe.loc)])")
+ to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]")
/client/proc/powerdebug()
set category = "Mapping"
@@ -33,9 +33,9 @@
if (!PN.nodes || !PN.nodes.len)
if(PN.cables && (PN.cables.len > 1))
var/obj/structure/cable/C = PN.cables[1]
- to_chat(usr, "Powernet with no nodes! (number [PN.number]) - example cable at [ADMIN_COORDJMP(C)] in area [get_area(C.loc)]")
+ to_chat(usr, "Powernet with no nodes! (number [PN.number]) - example cable at [ADMIN_VERBOSEJMP(C)]")
if (!PN.cables || (PN.cables.len < 10))
if(PN.cables && (PN.cables.len > 1))
var/obj/structure/cable/C = PN.cables[1]
- to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [ADMIN_COORDJMP(C)] in area [get_area(C.loc)]")
+ to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [ADMIN_VERBOSEJMP(C)]")
diff --git a/code/modules/admin/verbs/borgpanel.dm b/code/modules/admin/verbs/borgpanel.dm
index 8a162e7794..ec921e78bc 100644
--- a/code/modules/admin/verbs/borgpanel.dm
+++ b/code/modules/admin/verbs/borgpanel.dm
@@ -87,11 +87,11 @@
var/newcharge = input("New charge (0-[borg.cell.maxcharge]):", borg.name, borg.cell.charge) as num|null
if (newcharge)
borg.cell.charge = CLAMP(newcharge, 0, borg.cell.maxcharge)
- message_admins("[key_name_admin(user)] set the charge of [key_name_admin(borg)][ADMIN_FLW(borg)] to [borg.cell.charge].")
+ message_admins("[key_name_admin(user)] set the charge of [ADMIN_LOOKUPFLW(borg)] to [borg.cell.charge].")
log_admin("[key_name(user)] set the charge of [key_name(borg)] to [borg.cell.charge].")
if ("remove_cell")
QDEL_NULL(borg.cell)
- message_admins("[key_name_admin(user)] deleted the cell of [key_name_admin(borg)][ADMIN_FLW(borg)].")
+ message_admins("[key_name_admin(user)] deleted the cell of [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] deleted the cell of [key_name(borg)].")
if ("change_cell")
var/chosen = pick_closest_path(null, make_types_fancy(typesof(/obj/item/stock_parts/cell)))
@@ -104,45 +104,45 @@
borg.cell = new_cell
borg.cell.charge = borg.cell.maxcharge
borg.diag_hud_set_borgcell()
- message_admins("[key_name_admin(user)] changed the cell of [key_name_admin(borg)][ADMIN_FLW(borg)] to [new_cell].")
+ message_admins("[key_name_admin(user)] changed the cell of [ADMIN_LOOKUPFLW(borg)] to [new_cell].")
log_admin("[key_name(user)] changed the cell of [key_name(borg)] to [new_cell].")
if ("toggle_emagged")
borg.SetEmagged(!borg.emagged)
if (borg.emagged)
- message_admins("[key_name_admin(user)] emagged [key_name_admin(borg)][ADMIN_FLW(borg)].")
+ message_admins("[key_name_admin(user)] emagged [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] emagged [key_name(borg)].")
else
- message_admins("[key_name_admin(user)] un-emagged [key_name_admin(borg)][ADMIN_FLW(borg)].")
+ message_admins("[key_name_admin(user)] un-emagged [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] un-emagged [key_name(borg)].")
if ("toggle_lawupdate")
borg.lawupdate = !borg.lawupdate
if (borg.lawupdate)
- message_admins("[key_name_admin(user)] enabled lawsync on [key_name_admin(borg)][ADMIN_FLW(borg)].")
+ message_admins("[key_name_admin(user)] enabled lawsync on [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] enabled lawsync on [key_name(borg)].")
else
- message_admins("[key_name_admin(user)] disabled lawsync on [key_name_admin(borg)][ADMIN_FLW(borg)].")
+ message_admins("[key_name_admin(user)] disabled lawsync on [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] disabled lawsync on [key_name(borg)].")
if ("toggle_lockdown")
borg.SetLockdown(!borg.lockcharge)
if (borg.lockcharge)
- message_admins("[key_name_admin(user)] locked down [key_name_admin(borg)][ADMIN_FLW(borg)].")
+ message_admins("[key_name_admin(user)] locked down [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] locked down [key_name(borg)].")
else
- message_admins("[key_name_admin(user)] released [key_name_admin(borg)][ADMIN_FLW(borg)] from lockdown.")
+ message_admins("[key_name_admin(user)] released [ADMIN_LOOKUPFLW(borg)] from lockdown.")
log_admin("[key_name(user)] released [key_name(borg)] from lockdown.")
if ("toggle_scrambledcodes")
borg.scrambledcodes = !borg.scrambledcodes
if (borg.scrambledcodes)
- message_admins("[key_name_admin(user)] enabled scrambled codes on [key_name_admin(borg)][ADMIN_FLW(borg)].")
+ message_admins("[key_name_admin(user)] enabled scrambled codes on [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] enabled scrambled codes on [key_name(borg)].")
else
- message_admins("[key_name_admin(user)] disabled scrambled codes on [key_name_admin(borg)][ADMIN_FLW(borg)].")
+ message_admins("[key_name_admin(user)] disabled scrambled codes on [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] disabled scrambled codes on [key_name(borg)].")
if ("rename")
var/new_name = stripped_input(user,"What would you like to name this cyborg?","Input a name",borg.real_name,MAX_NAME_LEN)
if(!new_name)
return
- message_admins("[key_name_admin(user)] renamed [key_name_admin(borg)][ADMIN_FLW(borg)] to [new_name].")
+ message_admins("[key_name_admin(user)] renamed [ADMIN_LOOKUPFLW(borg)] to [new_name].")
log_admin("[key_name(user)] renamed [key_name(borg)] to [new_name].")
borg.fully_replace_character_name(borg.real_name,new_name)
if ("toggle_upgrade")
@@ -151,14 +151,14 @@
if (installedupgrade)
installedupgrade.deactivate(borg, user)
borg.upgrades -= installedupgrade
- message_admins("[key_name_admin(user)] removed the [installedupgrade] upgrade from [key_name_admin(borg)][ADMIN_FLW(borg)].")
+ message_admins("[key_name_admin(user)] removed the [installedupgrade] upgrade from [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] removed the [installedupgrade] upgrade from [key_name(borg)].")
qdel(installedupgrade)
else
var/obj/item/borg/upgrade/upgrade = new upgradepath(borg)
upgrade.action(borg, user)
borg.upgrades += upgrade
- message_admins("[key_name_admin(user)] added the [upgrade] borg upgrade to [key_name_admin(borg)][ADMIN_FLW(borg)].")
+ message_admins("[key_name_admin(user)] added the [upgrade] borg upgrade to [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] added the [upgrade] borg upgrade to [key_name(borg)].")
if ("toggle_radio")
var/channel = params["channel"]
@@ -175,7 +175,7 @@
borg.radio.keyslot.syndie = FALSE
else if (channel == "CentCom")
borg.radio.keyslot.independent = FALSE
- message_admins("[key_name_admin(user)] removed the [channel] radio channel from [key_name_admin(borg)][ADMIN_FLW(borg)].")
+ message_admins("[key_name_admin(user)] removed the [channel] radio channel from [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] removed the [channel] radio channel from [key_name(borg)].")
else // We're adding a channel
if (!borg.radio.keyslot) // Assert that an encryption key exists
@@ -185,14 +185,14 @@
borg.radio.keyslot.syndie = TRUE
else if (channel == "CentCom")
borg.radio.keyslot.independent = TRUE
- message_admins("[key_name_admin(user)] added the [channel] radio channel to [key_name_admin(borg)][ADMIN_FLW(borg)].")
+ message_admins("[key_name_admin(user)] added the [channel] radio channel to [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] added the [channel] radio channel to [key_name(borg)].")
borg.radio.recalculateChannels()
if ("setmodule")
var/newmodulepath = text2path(params["module"])
if (ispath(newmodulepath))
borg.module.transform_to(newmodulepath)
- message_admins("[key_name_admin(user)] changed the module of [key_name_admin(borg)][ADMIN_FLW(borg)] to [newmodulepath].")
+ message_admins("[key_name_admin(user)] changed the module of [ADMIN_LOOKUPFLW(borg)] to [newmodulepath].")
log_admin("[key_name(user)] changed the module of [key_name(borg)] to [newmodulepath].")
if ("slavetoai")
var/mob/living/silicon/ai/newai = locate(params["slavetoai"]) in GLOB.ai_list
@@ -202,14 +202,14 @@
borg.undeploy()
borg.connected_ai = newai
borg.notify_ai(TRUE)
- message_admins("[key_name_admin(user)] slaved [key_name_admin(borg)][ADMIN_FLW(borg)] to the AI [key_name_admin(newai)][ADMIN_FLW(newai)].")
+ message_admins("[key_name_admin(user)] slaved [ADMIN_LOOKUPFLW(borg)] to the AI [ADMIN_LOOKUPFLW(newai)].")
log_admin("[key_name(user)] slaved [key_name(borg)] to the AI [key_name(newai)].")
else if (params["slavetoai"] == "null")
borg.notify_ai(DISCONNECT)
if(borg.shell)
borg.undeploy()
borg.connected_ai = null
- message_admins("[key_name_admin(user)] freed [key_name_admin(borg)][ADMIN_FLW(borg)] from being slaved to an AI.")
+ message_admins("[key_name_admin(user)] freed [ADMIN_LOOKUPFLW(borg)] from being slaved to an AI.")
log_admin("[key_name(user)] freed [key_name(borg)] from being slaved to an AI.")
if (borg.lawupdate)
borg.lawsync()
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index e837953f4e..e6ddd72e3a 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -333,8 +333,8 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
if(ishuman(M))
INVOKE_ASYNC(M, /mob/living/carbon/human/proc/Alienize)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Alien") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
- log_admin("[key_name(usr)] made [key_name(M)] into an alien.")
- message_admins("[key_name_admin(usr)] made [key_name(M)] into an alien.")
+ log_admin("[key_name(usr)] made [key_name(M)] into an alien at [AREACOORD(M)].")
+ message_admins("[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] into an alien.")
else
alert("Invalid mob")
@@ -348,8 +348,8 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
if(ishuman(M))
INVOKE_ASYNC(M, /mob/living/carbon/human/proc/slimeize)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Slime") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
- log_admin("[key_name(usr)] made [key_name(M)] into a slime.")
- message_admins("[key_name_admin(usr)] made [key_name(M)] into a slime.")
+ log_admin("[key_name(usr)] made [key_name(M)] into a slime at [AREACOORD(M)].")
+ message_admins("[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] into a slime.")
else
alert("Invalid mob")
@@ -434,7 +434,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
qdel(O)
CHECK_TICK
log_admin("[key_name(src)] has deleted all ([counter]) instances of [hsbitem].")
- message_admins("[key_name_admin(src)] has deleted all ([counter]) instances of [hsbitem].", 0)
+ message_admins("[key_name_admin(src)] has deleted all ([counter]) instances of [hsbitem].")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Delete All") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -443,7 +443,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
set name = "Make Powernets"
SSmachines.makepowernets()
log_admin("[key_name(src)] has remade the powernet. makepowernets() called.")
- message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.", 0)
+ message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Powernets") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_grantfullaccess(mob/M in GLOB.mob_list)
@@ -522,7 +522,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
var/bad_shit = 0
for(var/obj/machinery/computer/atmos_control/tank/console in GLOB.atmos_air_controllers)
- dat += "[console] at [get_area_name(console, TRUE)] [COORD(console)]:
"
+ dat += "[console] at [AREACOORD(console)]:
"
if(console.input_tag == console.output_tag)
dat += "Error: input_tag is the same as the output_tag, \"[console.input_tag]\"!
"
bad_shit++
@@ -752,7 +752,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention)
H.regenerate_icons()
log_admin("[key_name(usr)] changed the equipment of [key_name(H)] to [dresscode].")
- message_admins("[key_name_admin(usr)] changed the equipment of [key_name_admin(H)] to [dresscode].")
+ message_admins("[key_name_admin(usr)] changed the equipment of [ADMIN_LOOKUPFLW(H)] to [dresscode].")
/client/proc/robust_dress_shop()
var/list/outfits = list("Cancel","Naked","Custom","As Job...")
diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm
index 5e21955800..2bd67eaf37 100644
--- a/code/modules/admin/verbs/diagnostics.dm
+++ b/code/modules/admin/verbs/diagnostics.dm
@@ -7,7 +7,7 @@
if(T.active_hotspot)
burning = TRUE
- var/list/lines = list("[COORD(target)]: [env.temperature] K ([env.temperature - T0C] C), [env.return_pressure()] kPa[(burning)?(", burning"):(null)]")
+ var/list/lines = list("[AREACOORD(target)]: [env.temperature] K ([env.temperature - T0C] C), [env.return_pressure()] kPa[(burning)?(", burning"):(null)]")
for(var/id in env_gases)
var/gas = env_gases[id]
var/moles = gas[MOLES]
@@ -49,8 +49,8 @@
log_admin("DEBUG: [key_name(M)] next_move = [M.next_move] lastDblClick = [M.next_click] world.time = [world.time]")
M.next_move = 1
M.next_click = 0
- message_admins("[key_name_admin(largest_move_mob)] had the largest move delay with [largest_move_time] frames / [DisplayTimeText(largest_move_time)]!")
- message_admins("[key_name_admin(largest_click_mob)] had the largest click delay with [largest_click_time] frames / [DisplayTimeText(largest_click_time)]!")
+ message_admins("[ADMIN_LOOKUPFLW(largest_move_mob)] had the largest move delay with [largest_move_time] frames / [DisplayTimeText(largest_move_time)]!")
+ message_admins("[ADMIN_LOOKUPFLW(largest_click_mob)] had the largest click delay with [largest_click_time] frames / [DisplayTimeText(largest_click_time)]!")
message_admins("world.time = [world.time]")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Unfreeze Everyone") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
diff --git a/code/modules/admin/verbs/individual_logging.dm b/code/modules/admin/verbs/individual_logging.dm
index 50b00da9a6..df151cfef9 100644
--- a/code/modules/admin/verbs/individual_logging.dm
+++ b/code/modules/admin/verbs/individual_logging.dm
@@ -1,32 +1,52 @@
-/proc/show_individual_logging_panel(mob/M, type = INDIVIDUAL_ATTACK_LOG)
+/proc/show_individual_logging_panel(mob/M, source = LOGSRC_CLIENT, type = INDIVIDUAL_ATTACK_LOG)
if(!M || !ismob(M))
return
- var/dat = "Attack log | "
- dat += "Say log | "
- dat += "Emote log | "
- dat += "OOC log | "
- dat += "Show all | "
- dat += "Refresh"
+
+ //Add client links
+ var/dat = ""
+ if(M.client)
+ dat += "Client
"
+ dat += "Attack log | "
+ dat += "Say log | "
+ dat += "Emote log | "
+ dat += "OOC log | "
+ dat += "Show all | "
+ dat += "Refresh"
+ else
+ dat += " No client attached to mob
"
+
+ dat += "
"
+ dat += "Mob
"
+ //Add the links for the mob specific log
+ dat += "Attack log | "
+ dat += "Say log | "
+ dat += "Emote log | "
+ dat += "OOC log | "
+ dat += "Show all | "
+ dat += "Refresh"
dat += "
"
+ var/log_source = M.logging;
+ if(source == LOGSRC_CLIENT && M.client) //if client doesn't exist just fall back to the mob log
+ log_source = M.client.player_details.logging //should exist, if it doesn't that's a bug, don't check for it not existing
if(type == INDIVIDUAL_SHOW_ALL_LOG)
- dat += "Displaying all logs of [key_name(M)]
"
- for(var/log_type in M.logging)
+ dat += "Displaying all [source] logs of [key_name(M)]
"
+ for(var/log_type in log_source)
dat += "[log_type]
"
- var/list/reversed = M.logging[log_type]
+ var/list/reversed = log_source[log_type]
if(islist(reversed))
reversed = reverseRange(reversed.Copy())
for(var/entry in reversed)
dat += "[entry]: [reversed[entry]]
"
dat += "
"
else
- dat += "[type] of [key_name(M)]
"
- var/list/reversed = M.logging[type]
+ dat += "[source] [type] of [key_name(M)]
"
+ var/list/reversed = log_source[type]
if(reversed)
reversed = reverseRange(reversed.Copy())
for(var/entry in reversed)
dat += "[entry]: [reversed[entry]]
"
- usr << browse(dat, "window=invidual_logging_[M];size=600x480")
+ usr << browse(dat, "window=invidual_logging_[key_name(M)];size=600x480")
diff --git a/code/modules/admin/verbs/manipulate_organs.dm b/code/modules/admin/verbs/manipulate_organs.dm
index e82a99815e..4d1de50e47 100644
--- a/code/modules/admin/verbs/manipulate_organs.dm
+++ b/code/modules/admin/verbs/manipulate_organs.dm
@@ -15,7 +15,7 @@
organ = new organ
organ.Insert(C)
log_admin("[key_name(usr)] has added organ [organ.type] to [key_name(C)]")
- message_admins("[key_name_admin(usr)] has added organ [organ.type] to [key_name(C)]")
+ message_admins("[key_name_admin(usr)] has added organ [organ.type] to [ADMIN_LOOKUPFLW(C)]")
if("add implant")
for(var/path in subtypesof(/obj/item/implant))
@@ -27,7 +27,7 @@
organ = new organ
organ.implant(C)
log_admin("[key_name(usr)] has added implant [organ.type] to [key_name(C)]")
- message_admins("[key_name_admin(usr)] has added implant [organ.type] to [key_name(C)]")
+ message_admins("[key_name_admin(usr)] has added implant [organ.type] to [ADMIN_LOOKUPFLW(C)]")
if("drop organ/implant", "remove organ/implant")
for(var/X in C.internal_organs)
@@ -46,7 +46,7 @@
var/obj/item/implant/I
log_admin("[key_name(usr)] has removed [organ.type] from [key_name(C)]")
- message_admins("[key_name_admin(usr)] has removed [organ.type] from [key_name(C)]")
+ message_admins("[key_name_admin(usr)] has removed [organ.type] from [ADMIN_LOOKUPFLW(C)]")
if(isorgan(organ))
O = organ
diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm
index c62ee34dac..800a94c4ba 100644
--- a/code/modules/admin/verbs/mapping.dm
+++ b/code/modules/admin/verbs/mapping.dm
@@ -105,11 +105,11 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list(
for(var/obj/machinery/camera/C2 in CL)
if(C1 != C2)
if(C1.c_tag == C2.c_tag)
- output += "c_tag match for cameras at [ADMIN_COORDJMP(C1)] ([C1.loc.loc]) and [ADMIN_COORDJMP(C2)] ([C2.loc.loc]) - c_tag is [C1.c_tag]"
+ output += "c_tag match for cameras at [ADMIN_VERBOSEJMP(C1)] and [ADMIN_VERBOSEJMP(C2)] - c_tag is [C1.c_tag]"
if(C1.loc == C2.loc && C1.dir == C2.dir && C1.pixel_x == C2.pixel_x && C1.pixel_y == C2.pixel_y)
- output += "FULLY overlapping cameras at [ADMIN_COORDJMP(C1)] ([C1.loc.loc]) Networks: [json_encode(C1.network)] and [json_encode(C2.network)]"
+ output += "FULLY overlapping cameras at [ADMIN_VERBOSEJMP(C1)] Networks: [json_encode(C1.network)] and [json_encode(C2.network)]"
if(C1.loc == C2.loc)
- output += "Overlapping cameras at [ADMIN_COORDJMP(C1)] ([C1.loc.loc]) Networks: [json_encode(C1.network)] and [json_encode(C2.network)]"
+ output += "Overlapping cameras at [ADMIN_VERBOSEJMP(C1)] Networks: [json_encode(C1.network)] and [json_encode(C2.network)]"
var/turf/T = get_step(C1,turn(C1.dir,180))
if(!T || !isturf(T) || !T.density )
if(!(locate(/obj/structure/grille) in T))
@@ -119,7 +119,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list(
window_check = 1
break
if(!window_check)
- output += "Camera not connected to wall at [ADMIN_COORDJMP(C1)] ([C1.loc.loc]) Network: [json_encode(C1.network)]"
+ output += "Camera not connected to wall at [ADMIN_VERBOSEJMP(C1)] Network: [json_encode(C1.network)]"
output += ""
usr << browse(output,"window=airreport;size=1000x500")
@@ -153,7 +153,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list(
for(var/t in GLOB.active_turfs_startlist)
var/turf/T = t
- dat += "[ADMIN_COORDJMP(T)]\n"
+ dat += "[ADMIN_VERBOSEJMP(T)]\n"
dat += "
"
usr << browse(dat, "window=at_list")
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 07c19e2b43..f97cdd7d57 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -14,7 +14,7 @@
M.regenerate_icons()
log_admin("[key_name(usr)] made [key_name(M)] drop everything!")
- var/msg = "[key_name_admin(usr)] made [key_name_admin(M)] drop everything!"
+ var/msg = "[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] drop everything!"
message_admins(msg)
admin_ticket_log(M, msg)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Everything") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -149,8 +149,8 @@
for(var/mob/M in view(range,A))
to_chat(M, msg)
- log_admin("LocalNarrate: [key_name(usr)] at [get_area(A)][COORD(A)]: [msg]")
- message_admins(" LocalNarrate: [key_name_admin(usr)] at [get_area(A)][ADMIN_JMP(A)]: [msg]
")
+ log_admin("LocalNarrate: [key_name(usr)] at [AREACOORD(A)]: [msg]")
+ message_admins(" LocalNarrate: [key_name_admin(usr)] at [ADMIN_VERBOSEJMP(A)]: [msg]
")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Local Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_godmode(mob/M in GLOB.mob_list)
@@ -163,7 +163,7 @@
to_chat(usr, "Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]")
log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]")
- var/msg = "[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]"
+ var/msg = "[key_name_admin(usr)] has toggled [ADMIN_LOOKUPFLW(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]"
message_admins(msg)
admin_ticket_log(M, msg)
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Godmode", "[M.status_flags & GODMODE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -504,7 +504,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
M.revive(full_heal = 1, admin_revive = 1)
log_admin("[key_name(usr)] healed / revived [key_name(M)]")
- var/msg = "Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!"
+ var/msg = "Admin [key_name_admin(usr)] healed / revived [ADMIN_LOOKUPFLW(M)]!"
message_admins(msg)
admin_ticket_log(M, msg)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Rejuvinate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -609,8 +609,8 @@ Traitors and the like can also be revived with the previous role mostly intact.
return
explosion(O, devastation, heavy, light, flash, null, null,flames)
- log_admin("[key_name(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at ([O.x],[O.y],[O.z])")
- message_admins("[key_name_admin(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at ([O.x],[O.y],[O.z])")
+ log_admin("[key_name(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at [AREACOORD(O)]")
+ message_admins("[key_name_admin(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at [AREACOORD(O)]")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Explosion") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
else
@@ -633,8 +633,8 @@ Traitors and the like can also be revived with the previous role mostly intact.
if (heavy || light)
empulse(O, heavy, light)
- log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])")
- message_admins("[key_name_admin(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])")
+ log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at [AREACOORD(O)]")
+ message_admins("[key_name_admin(usr)] created an EM Pulse ([heavy],[light]) at [AREACOORD(O)]")
SSblackbox.record_feedback("tally", "admin_verb", 1, "EM Pulse") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
@@ -821,7 +821,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
N.set_active()
log_admin("[key_name(usr)] [N.timing ? "activated" : "deactivated"] a nuke at ([N.x],[N.y],[N.z]).")
- message_admins("[ADMIN_LOOKUPFLW(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [ADMIN_COORDJMP(N)].")
+ message_admins("[ADMIN_LOOKUPFLW(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [ADMIN_VERBOSEJMP(N)].")
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Nuke", "[N.timing]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index a1241d5998..0dcd5e6c21 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -497,12 +497,12 @@ structure_check() searches for nearby cultist structures required for the invoca
user.visible_message("[user.name] begins erasing [src]...", "You begin erasing [src]...")
if(do_after(user, 50, target = src)) //Prevents accidental erasures.
log_game("Summon Narsie rune erased by [user.mind.key] (ckey) with [I.name]")
- message_admins("[key_name_admin(user)] erased a Narsie rune with [I.name]")
+ message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with [I.name]")
..()
else
if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me.
log_game("Summon Narsie rune erased by [user.mind.key] (ckey) using a null rod")
- message_admins("[key_name_admin(user)] erased a Narsie rune with a null rod")
+ message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with a null rod")
..()
//Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every sacrifice your cult has carried out.
diff --git a/code/modules/antagonists/disease/disease_event.dm b/code/modules/antagonists/disease/disease_event.dm
index ad66ee0cbb..7183ed5455 100644
--- a/code/modules/antagonists/disease/disease_event.dm
+++ b/code/modules/antagonists/disease/disease_event.dm
@@ -20,7 +20,7 @@
var/mob/camera/disease/virus = new /mob/camera/disease(SSmapping.get_station_center())
virus.key = selected.key
INVOKE_ASYNC(virus, /mob/camera/disease/proc/pick_name)
- message_admins("[key_name_admin(virus)] has been made into a sentient disease by an event.")
+ message_admins("[ADMIN_LOOKUPFLW(virus)] has been made into a sentient disease by an event.")
log_game("[key_name(virus)] was spawned as a sentient disease by an event.")
spawned_mobs += virus
return SUCCESSFUL_SPAWN
diff --git a/code/modules/antagonists/morph/morph.dm b/code/modules/antagonists/morph/morph.dm
index 6572584eab..12f8d22897 100644
--- a/code/modules/antagonists/morph/morph.dm
+++ b/code/modules/antagonists/morph/morph.dm
@@ -238,7 +238,7 @@
player_mind.add_antag_datum(/datum/antagonist/morph)
to_chat(S, S.playstyle_string)
SEND_SOUND(S, sound('sound/magic/mutate.ogg'))
- message_admins("[key_name_admin(S)] has been made into a morph by an event.")
+ message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a morph by an event.")
log_game("[key_name(S)] was spawned as a morph by an event.")
spawned_mobs += S
return SUCCESSFUL_SPAWN
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index 4d3ccf8a34..1beb60f624 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -371,11 +371,11 @@
if(timing)
previous_level = get_security_level()
bomb_set = TRUE
- set_security_level("delta")
detonation_timer = world.time + (timer_set * 10)
for(var/obj/item/pinpointer/nuke/syndicate/S in GLOB.pinpointer_list)
S.switch_mode_to(TRACK_INFILTRATOR)
countdown.start()
+ set_security_level("delta")
else
bomb_set = FALSE
detonation_timer = null
diff --git a/code/modules/antagonists/revenant/revenant_spawn_event.dm b/code/modules/antagonists/revenant/revenant_spawn_event.dm
index 483be4dc34..c9a892cd64 100644
--- a/code/modules/antagonists/revenant/revenant_spawn_event.dm
+++ b/code/modules/antagonists/revenant/revenant_spawn_event.dm
@@ -53,7 +53,7 @@
var/mob/living/simple_animal/revenant/revvie = new(pick(spawn_locs))
revvie.key = selected.key
- message_admins("[key_name_admin(revvie)] [ADMIN_FLW(revvie)] has been made into a revenant by an event.")
+ message_admins("[ADMIN_LOOKUPFLW(revvie)] has been made into a revenant by an event.")
log_game("[key_name(revvie)] was spawned as a revenant by an event.")
spawned_mobs += revvie
return SUCCESSFUL_SPAWN
diff --git a/code/modules/antagonists/slaughter/slaughterevent.dm b/code/modules/antagonists/slaughter/slaughterevent.dm
index 38054fccec..4d81741c91 100644
--- a/code/modules/antagonists/slaughter/slaughterevent.dm
+++ b/code/modules/antagonists/slaughter/slaughterevent.dm
@@ -41,7 +41,7 @@
to_chat(S, S.playstyle_string)
to_chat(S, "You are currently not currently in the same plane of existence as the station. Blood Crawl near a blood pool to manifest.")
SEND_SOUND(S, 'sound/magic/demon_dies.ogg')
- message_admins("[key_name_admin(S)] has been made into a slaughter demon by an event.")
+ message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a slaughter demon by an event.")
log_game("[key_name(S)] was spawned as a slaughter demon by an event.")
spawned_mobs += S
return SUCCESSFUL_SPAWN
diff --git a/code/modules/antagonists/traitor/IAA/internal_affairs.dm b/code/modules/antagonists/traitor/IAA/internal_affairs.dm
index 605db9797d..28f562d23e 100644
--- a/code/modules/antagonists/traitor/IAA/internal_affairs.dm
+++ b/code/modules/antagonists/traitor/IAA/internal_affairs.dm
@@ -6,11 +6,10 @@
/datum/antagonist/traitor/internal_affairs
name = "Internal Affairs Agent"
- human_datum = /datum/antagonist/traitor/human/internal_affairs
- ai_datum = /datum/antagonist/traitor/AI/internal_affairs
antagpanel_category = "IAA"
-/datum/antagonist/traitor/AI/internal_affairs
+
+/datum/antagonist/traitor/internal_affairs
name = "Internal Affairs Agent"
employer = "Nanotrasen"
special_role = "internal affairs agent"
@@ -20,47 +19,29 @@
var/list/datum/mind/targets_stolen
-/datum/antagonist/traitor/human/internal_affairs
- name = "Internal Affairs Agent"
- employer = "Nanotrasen"
- special_role = "internal affairs agent"
- antagpanel_category = "IAA"
- var/syndicate = FALSE
- var/last_man_standing = FALSE
- var/list/datum/mind/targets_stolen
-
-
-/datum/antagonist/traitor/human/internal_affairs/proc/give_pinpointer()
+/datum/antagonist/traitor/internal_affairs/proc/give_pinpointer()
if(owner && owner.current)
owner.current.apply_status_effect(/datum/status_effect/agent_pinpointer)
-/datum/antagonist/traitor/human/internal_affairs/apply_innate_effects()
+/datum/antagonist/traitor/internal_affairs/apply_innate_effects()
.=..() //in case the base is used in future
if(owner && owner.current)
give_pinpointer(owner.current)
-/datum/antagonist/traitor/human/internal_affairs/remove_innate_effects()
+/datum/antagonist/traitor/internal_affairs/remove_innate_effects()
.=..()
if(owner && owner.current)
owner.current.remove_status_effect(/datum/status_effect/agent_pinpointer)
-/datum/antagonist/traitor/human/internal_affairs/on_gain()
+/datum/antagonist/traitor/internal_affairs/on_gain()
START_PROCESSING(SSprocessing, src)
.=..()
-/datum/antagonist/traitor/human/internal_affairs/on_removal()
+/datum/antagonist/traitor/internal_affairs/on_removal()
STOP_PROCESSING(SSprocessing,src)
.=..()
-/datum/antagonist/traitor/human/internal_affairs/process()
+/datum/antagonist/traitor/internal_affairs/process()
iaa_process()
-/datum/antagonist/traitor/AI/internal_affairs/on_gain()
- START_PROCESSING(SSprocessing, src)
- .=..()
-/datum/antagonist/traitor/AI/internal_affairs/on_removal()
- STOP_PROCESSING(SSprocessing,src)
- .=..()
-/datum/antagonist/traitor/AI/internal_affairs/process()
- iaa_process()
/datum/status_effect/agent_pinpointer
id = "agent_pinpointer"
@@ -142,21 +123,14 @@
continue
remove_objective(objective_)
-/datum/antagonist/traitor/human/internal_affairs/reinstate_escape_objective()
+/datum/antagonist/traitor/internal_affairs/reinstate_escape_objective()
..()
- var/datum/objective/escape/escape_objective = new
+ var/objtype = traitor_kind == TRAITOR_HUMAN ? /datum/objective/escape : /datum/objective/survive
+ var/datum/objective/escape_objective = new objtype
escape_objective.owner = owner
add_objective(escape_objective)
-/datum/antagonist/traitor/AI/internal_affairs/reinstate_escape_objective()
- ..()
- var/datum/objective/survive/survive_objective = new
- survive_objective.owner = owner
- add_objective(survive_objective)
-
-/datum/antagonist/traitor/proc/steal_targets(datum/mind/victim)
- var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA
-
+/datum/antagonist/traitor/internal_affairs/proc/steal_targets(datum/mind/victim)
if(!owner.current||owner.current.stat==DEAD)
return
to_chat(owner.current, " Target eliminated: [victim.name]")
@@ -165,13 +139,13 @@
var/datum/objective/assassinate/internal/objective = objective_
if(objective.target==owner)
continue
- else if(this.targets_stolen.Find(objective.target) == 0)
+ else if(targets_stolen.Find(objective.target) == 0)
var/datum/objective/assassinate/internal/new_objective = new
new_objective.owner = owner
new_objective.target = objective.target
new_objective.update_explanation_text()
add_objective(new_objective)
- this.targets_stolen += objective.target
+ targets_stolen += objective.target
var/status_text = objective.check_completion() ? "neutralised" : "active"
to_chat(owner.current, " New target added to database: [objective.target.name] ([status_text]) ")
else if(istype(objective_, /datum/objective/destroy/internal))
@@ -179,31 +153,30 @@
var/datum/objective/destroy/internal/new_objective = new
if(objective.target==owner)
continue
- else if(this.targets_stolen.Find(objective.target) == 0)
+ else if(targets_stolen.Find(objective.target) == 0)
new_objective.owner = owner
new_objective.target = objective.target
new_objective.update_explanation_text()
add_objective(new_objective)
- this.targets_stolen += objective.target
+ targets_stolen += objective.target
var/status_text = objective.check_completion() ? "neutralised" : "active"
to_chat(owner.current, " New target added to database: [objective.target.name] ([status_text]) ")
- this.last_man_standing = TRUE
+ last_man_standing = TRUE
for(var/objective_ in owner.objectives)
if(!is_internal_objective(objective_))
continue
var/datum/objective/assassinate/internal/objective = objective_
if(!objective.check_completion())
- this.last_man_standing = FALSE
+ last_man_standing = FALSE
return
- if(this.last_man_standing)
- if(this.syndicate)
+ if(last_man_standing)
+ if(syndicate)
to_chat(owner.current," All the loyalist agents are dead, and no more is required of you. Die a glorious death, agent. ")
else
to_chat(owner.current," All the other agents are dead, and you're the last loose end. Stage a Syndicate terrorist attack to cover up for today's events. You no longer have any limits on collateral damage.")
replace_escape_objective(owner)
-/datum/antagonist/traitor/proc/iaa_process()
- var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA
+/datum/antagonist/traitor/internal_affairs/proc/iaa_process()
if(owner&&owner.current&&owner.current.stat!=DEAD)
for(var/objective_ in owner.objectives)
if(!is_internal_objective(objective_))
@@ -220,20 +193,18 @@
else
if(objective.stolen)
var/fail_msg = "Your sensors tell you that [objective.target.current.real_name], one of the targets you were meant to have killed, pulled one over on you, and is still alive - do the job properly this time! "
- if(this.last_man_standing)
- if(this.syndicate)
+ if(last_man_standing)
+ if(syndicate)
fail_msg += " You no longer have permission to die. "
else
fail_msg += " The truth could still slip out! Cease any terrorist actions as soon as possible, unneeded property damage or loss of employee life will lead to your contract being terminated."
reinstate_escape_objective(owner)
- this.last_man_standing = FALSE
+ last_man_standing = FALSE
to_chat(owner.current, fail_msg)
objective.stolen = FALSE
-/datum/antagonist/traitor/proc/forge_iaa_objectives()
- var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA
+/datum/antagonist/traitor/internal_affairs/proc/forge_iaa_objectives()
if(SSticker.mode.target_list.len && SSticker.mode.target_list[owner]) // Is a double agent
-
// Assassinate
var/datum/mind/target_mind = SSticker.mode.target_list[owner]
if(issilicon(target_mind.current))
@@ -253,31 +224,25 @@
employer = "The Syndicate"
owner.special_role = TRAITOR_AGENT_ROLE
special_role = TRAITOR_AGENT_ROLE
- this.syndicate = TRUE
+ syndicate = TRUE
forge_single_objective()
-
else
..() // Give them standard objectives.
return
-/datum/antagonist/traitor/human/internal_affairs/forge_traitor_objectives()
+/datum/antagonist/traitor/internal_affairs/forge_traitor_objectives()
forge_iaa_objectives()
- var/datum/objective/escape/escape_objective = new
+
+ var/objtype = traitor_kind == TRAITOR_HUMAN ? /datum/objective/escape : /datum/objective/survive
+ var/datum/objective/escape_objective = new objtype
escape_objective.owner = owner
add_objective(escape_objective)
-/datum/antagonist/traitor/AI/internal_affairs/forge_traitor_objectives()
- forge_iaa_objectives()
- var/datum/objective/survive/survive_objective = new
- survive_objective.owner = owner
- add_objective(survive_objective)
-
-/datum/antagonist/traitor/proc/greet_iaa()
- var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA
+/datum/antagonist/traitor/internal_affairs/proc/greet_iaa()
var/crime = pick("distribution of contraband" , "unauthorized erotic action on duty", "embezzlement", "piloting under the influence", "dereliction of duty", "syndicate collaboration", "mutiny", "multiple homicides", "corporate espionage", "recieving bribes", "malpractice", "worship of prohbited life forms", "possession of profane texts", "murder", "arson", "insulting their manager", "grand theft", "conspiracy", "attempting to unionize", "vandalism", "gross incompetence")
to_chat(owner.current, "You are the [special_role].")
- if(this.syndicate)
+ if(syndicate)
to_chat(owner.current, "Your target has been framed for [crime], and you have been tasked with eliminating them to prevent them defending themselves in court.")
to_chat(owner.current, "Any damage you cause will be a further embarrassment to Nanotrasen, so you have no limits on collateral damage.")
to_chat(owner.current, " You have been provided with a standard uplink to accomplish your task. ")
@@ -289,13 +254,9 @@
to_chat(owner.current, "Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.")
owner.announce_objectives()
-/datum/antagonist/traitor/AI/internal_affairs/greet()
+/datum/antagonist/traitor/internal_affairs/greet()
greet_iaa()
-/datum/antagonist/traitor/human/internal_affairs/greet()
- greet_iaa()
-
-
#undef PROB_ACTUAL_TRAITOR
#undef PINPOINTER_EXTRA_RANDOM_RANGE
#undef PINPOINTER_MINIMUM_RANGE
diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm
index ae750adebc..9066759648 100644
--- a/code/modules/antagonists/traitor/datum_traitor.dm
+++ b/code/modules/antagonists/traitor/datum_traitor.dm
@@ -1,39 +1,23 @@
+#define TRAITOR_HUMAN "human"
+#define TRAITOR_AI "AI"
+
/datum/antagonist/traitor
name = "Traitor"
roundend_category = "traitors"
antagpanel_category = "Traitor"
job_rank = ROLE_TRAITOR
antag_moodlet = /datum/mood_event/focused
- var/should_specialise = TRUE //do we split into AI and human, set to true on inital assignment only
- var/ai_datum = /datum/antagonist/traitor/AI
- var/human_datum = /datum/antagonist/traitor/human
var/special_role = ROLE_TRAITOR
var/employer = "The Syndicate"
var/give_objectives = TRUE
var/should_give_codewords = TRUE
-
-
-
-/datum/antagonist/traitor/human
- show_in_antagpanel = FALSE
- should_specialise = FALSE
var/should_equip = TRUE
-
-
-/datum/antagonist/traitor/AI
- show_in_antagpanel = FALSE
- should_specialise = FALSE
-
-/datum/antagonist/traitor/specialization(datum/mind/new_owner)
- if(should_specialise)
- if(new_owner.current && isAI(new_owner.current))
- return new ai_datum()
- else
- return new human_datum()
- else
- return ..()
+ var/traitor_kind = TRAITOR_HUMAN //Set on initial assignment
/datum/antagonist/traitor/on_gain()
+ if(owner.current && isAI(owner.current))
+ traitor_kind = TRAITOR_AI
+
SSticker.mode.traitors += owner
owner.special_role = special_role
if(give_objectives)
@@ -56,19 +40,18 @@
traitor_mob.dna.add_mutation(CLOWNMUT)
/datum/antagonist/traitor/on_removal()
- SSticker.mode.traitors -= owner
- if(!silent && owner.current)
- to_chat(owner.current," You are no longer the [special_role]! ")
- owner.special_role = null
- ..()
-
-/datum/antagonist/traitor/AI/on_removal()
- if(owner.current && isAI(owner.current))
+ //Remove malf powers.
+ if(traitor_kind == TRAITOR_AI && owner.current && isAI(owner.current))
var/mob/living/silicon/ai/A = owner.current
A.set_zeroth_law("")
A.verbs -= /mob/living/silicon/ai/proc/choose_modules
A.malf_picker.remove_malf_verbs(A)
qdel(A.malf_picker)
+
+ SSticker.mode.traitors -= owner
+ if(!silent && owner.current)
+ to_chat(owner.current," You are no longer the [special_role]! ")
+ owner.special_role = null
..()
/datum/antagonist/traitor/proc/add_objective(var/datum/objective/O)
@@ -80,9 +63,13 @@
objectives -= O
/datum/antagonist/traitor/proc/forge_traitor_objectives()
- return
+ switch(traitor_kind)
+ if(TRAITOR_AI)
+ forge_ai_objectives()
+ else
+ forge_human_objectives()
-/datum/antagonist/traitor/human/forge_traitor_objectives()
+/datum/antagonist/traitor/proc/forge_human_objectives()
var/is_hijacker = FALSE
if (GLOB.joined_player_list.len >= 30) // Less murderboning on lowpop thanks
is_hijacker = prob(10)
@@ -127,7 +114,7 @@
add_objective(escape_objective)
return
-/datum/antagonist/traitor/AI/forge_traitor_objectives()
+/datum/antagonist/traitor/proc/forge_ai_objectives()
var/objective_count = 0
if(prob(30))
@@ -142,9 +129,16 @@
var/datum/objective/survive/exist/exist_objective = new
exist_objective.owner = owner
add_objective(exist_objective)
+
+
/datum/antagonist/traitor/proc/forge_single_objective()
- return 0
-/datum/antagonist/traitor/human/forge_single_objective() //Returns how many objectives are added
+ switch(traitor_kind)
+ if(TRAITOR_AI)
+ return forge_single_AI_objective()
+ else
+ return forge_single_human_objective()
+
+/datum/antagonist/traitor/proc/forge_single_human_objective() //Returns how many objectives are added
.=1
if(prob(50))
var/list/active_ais = active_ais()
@@ -175,7 +169,7 @@
steal_objective.find_target()
add_objective(steal_objective)
-/datum/antagonist/traitor/AI/forge_single_objective()
+/datum/antagonist/traitor/proc/forge_single_AI_objective()
.=1
var/special_pick = rand(1,4)
switch(special_pick)
@@ -209,34 +203,41 @@
if(should_give_codewords)
give_codewords()
+/datum/antagonist/traitor/proc/update_traitor_icons_added(datum/mind/traitor_mind)
+ var/datum/atom_hud/antag/traitorhud = GLOB.huds[ANTAG_HUD_TRAITOR]
+ traitorhud.join_hud(owner.current)
+ set_antag_hud(owner.current, "traitor")
+
+/datum/antagonist/traitor/proc/update_traitor_icons_removed(datum/mind/traitor_mind)
+ var/datum/atom_hud/antag/traitorhud = GLOB.huds[ANTAG_HUD_TRAITOR]
+ traitorhud.leave_hud(owner.current)
+ set_antag_hud(owner.current, null)
+
/datum/antagonist/traitor/proc/finalize_traitor()
- SSticker.mode.update_traitor_icons_added(owner)
- return
+ switch(traitor_kind)
+ if(TRAITOR_AI)
+ add_law_zero()
+ owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/malf.ogg', 100, FALSE, pressure_affected = FALSE)
+ owner.current.grant_language(/datum/language/codespeak)
+ if(TRAITOR_HUMAN)
+ if(should_equip)
+ equip(silent)
+ owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/tatoralert.ogg', 100, FALSE, pressure_affected = FALSE)
-/datum/antagonist/traitor/AI/finalize_traitor()
- ..()
- add_law_zero()
- owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/malf.ogg', 100, FALSE, pressure_affected = FALSE)
- owner.current.grant_language(/datum/language/codespeak)
-
-/datum/antagonist/traitor/AI/apply_innate_effects(mob/living/mob_override)
+/datum/antagonist/traitor/apply_innate_effects(mob/living/mob_override)
. = ..()
+ update_traitor_icons_added()
var/mob/living/silicon/ai/A = mob_override || owner.current
- if(istype(A))
+ if(istype(A) && traitor_kind == TRAITOR_AI)
A.hack_software = TRUE
-/datum/antagonist/traitor/AI/remove_innate_effects(mob/living/mob_override)
+/datum/antagonist/traitor/remove_innate_effects(mob/living/mob_override)
. = ..()
+ update_traitor_icons_removed()
var/mob/living/silicon/ai/A = mob_override || owner.current
- if(istype(A))
+ if(istype(A) && traitor_kind == TRAITOR_AI)
A.hack_software = FALSE
-/datum/antagonist/traitor/human/finalize_traitor()
- ..()
- if(should_equip)
- equip(silent)
- owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/tatoralert.ogg', 100, FALSE, pressure_affected = FALSE)
-
/datum/antagonist/traitor/proc/give_codewords()
if(!owner.current)
return
@@ -251,7 +252,7 @@
to_chat(traitor_mob, "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe.")
-/datum/antagonist/traitor/AI/proc/add_law_zero()
+/datum/antagonist/traitor/proc/add_law_zero()
var/mob/living/silicon/ai/killer = owner.current
if(!killer || !istype(killer))
return
@@ -263,12 +264,10 @@
killer.add_malf_picker()
/datum/antagonist/traitor/proc/equip(var/silent = FALSE)
- return
+ if(traitor_kind == TRAITOR_HUMAN)
+ owner.equip_traitor(employer, silent, src)
-/datum/antagonist/traitor/human/equip(var/silent = FALSE)
- owner.equip_traitor(employer, silent, src)
-
-/datum/antagonist/traitor/human/proc/assign_exchange_role()
+/datum/antagonist/traitor/proc/assign_exchange_role()
//set faction
var/faction = "red"
if(owner == SSticker.mode.exchange_blue)
diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm
index 9e3ffaf483..d40666babb 100644
--- a/code/modules/assembly/bomb.dm
+++ b/code/modules/assembly/bomb.dm
@@ -52,7 +52,7 @@
if(I.use_tool(src, user, 0, volume=40))
status = TRUE
GLOB.bombers += "[key_name(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]"
- message_admins("[key_name_admin(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]")
+ message_admins("[ADMIN_LOOKUPFLW(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]")
to_chat(user, "A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.")
add_fingerprint(user)
return TRUE
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index 4a6c9d2db3..fe6e94605b 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -33,6 +33,7 @@
/obj/item/assembly/infra/Destroy()
STOP_PROCESSING(SSobj, src)
+ QDEL_NULL(listener)
QDEL_LIST(beams)
. = ..()
@@ -166,7 +167,9 @@
listener = newloc.AddComponent(/datum/component/redirect, COMSIG_ATOM_EXITED, CALLBACK(src, .proc/check_exit))
/obj/item/assembly/infra/proc/check_exit(atom/movable/offender)
- if(offender && ((offender.flags_1 & ABSTRACT_1) || offender == src))
+ if(QDELETED(src))
+ return
+ if(offender == src || istype(offender,/obj/effect/beam/i_beam))
return
return refreshBeam()
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index 132e750343..1771609125 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -437,8 +437,8 @@
danger[gas[GAS_META][META_GAS_NAME]] = gas[MOLES] //ex. "plasma" = 20
if(danger.len)
- message_admins("[ADMIN_LOOKUPFLW(usr)] opened a canister that contains the following: [ADMIN_JMP(src)]")
- log_admin("[key_name(usr)] opened a canister that contains the following at [COORD(src)]:")
+ message_admins("[ADMIN_LOOKUPFLW(usr)] opened a canister that contains the following at [ADMIN_VERBOSEJMP(src)]:")
+ log_admin("[key_name(usr)] opened a canister that contains the following at [AREACOORD(src)]:")
for(var/name in danger)
var/msg = "[name]: [danger[name]] moles."
log_admin(msg)
diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm
index 88b7f2d38a..c0658c781d 100644
--- a/code/modules/atmospherics/machinery/portable/pump.dm
+++ b/code/modules/atmospherics/machinery/portable/pump.dm
@@ -114,9 +114,8 @@
var/plasma = air_contents.gases[/datum/gas/plasma]
var/n2o = air_contents.gases[/datum/gas/nitrous_oxide]
if(n2o || plasma)
- var/area/A = get_area(src)
- message_admins("[ADMIN_LOOKUPFLW(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [A][ADMIN_JMP(src)]")
- log_admin("[key_name(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [A][COORD(src)]")
+ message_admins("[ADMIN_LOOKUPFLW(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [ADMIN_VERBOSEJMP(src)]")
+ log_admin("[key_name(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [AREACOORD(src)]")
else if(on && direction == PUMP_OUT)
investigate_log("[key_name(usr)] started a transfer into [holding].
", INVESTIGATE_ATMOS)
. = TRUE
diff --git a/code/modules/awaymissions/bluespaceartillery.dm b/code/modules/awaymissions/bluespaceartillery.dm
index ad6f9e24a5..9bebcfe546 100644
--- a/code/modules/awaymissions/bluespaceartillery.dm
+++ b/code/modules/awaymissions/bluespaceartillery.dm
@@ -46,7 +46,7 @@
return
if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr))
priority_announce("Bluespace artillery fire detected. Brace for impact.")
- message_admins("[key_name_admin(usr)] has launched an artillery strike.")
+ message_admins("[ADMIN_LOOKUPFLW(usr)] has launched an artillery strike.")
var/list/L = list()
for(var/turf/T in get_area_turfs(thearea.type))
L+=T
diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm
index ae119db9e7..b233235d81 100644
--- a/code/modules/awaymissions/mission_code/Academy.dm
+++ b/code/modules/awaymissions/mission_code/Academy.dm
@@ -131,7 +131,7 @@
if(LAZYLEN(candidates))
var/mob/dead/observer/C = pick(candidates)
- message_admins("[key_name_admin(C)] was spawned as Wizard Academy Defender")
+ message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Wizard Academy Defender")
current_wizard.ghostize() // on the off chance braindead defender gets back in
current_wizard.key = C.key
@@ -273,7 +273,7 @@
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [user.real_name] Servant?", ROLE_WIZARD, null, ROLE_WIZARD, 50, H)
if(LAZYLEN(candidates))
var/mob/dead/observer/C = pick(candidates)
- message_admins("[key_name_admin(C)] was spawned as Dice Servant")
+ message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Dice Servant")
H.key = C.key
var/obj/effect/proc_holder/spell/targeted/summonmob/S = new
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index 2723370cb9..f3e2ad84ec 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -62,7 +62,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
topiclimiter[ADMINSWARNED_AT] = minute
msg += " Administrators have been informed."
log_game("[key_name(src)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute")
- message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute")
+ message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute")
to_chat(src, "[msg]")
return
@@ -684,11 +684,11 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
msg += " Administrators have been informed."
if (ab)
log_game("[key_name(src)] is using the middle click aimbot exploit")
- message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] is using the middle click aimbot exploit")
+ message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] is using the middle click aimbot exploit")
add_system_note("aimbot", "Is using the middle click aimbot exploit")
log_game("[key_name(src)] Has hit the per-minute click limit of [mcl] clicks in a given game minute")
- message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute click limit of [mcl] clicks in a given game minute")
+ message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] Has hit the per-minute click limit of [mcl] clicks in a given game minute")
to_chat(src, "[msg]")
return
diff --git a/code/modules/client/player_details.dm b/code/modules/client/player_details.dm
index a842607235..ecc113b89c 100644
--- a/code/modules/client/player_details.dm
+++ b/code/modules/client/player_details.dm
@@ -1,2 +1,3 @@
/datum/player_details
- var/list/player_actions = list()
\ No newline at end of file
+ var/list/player_actions = list()
+ var/list/logging = list(INDIVIDUAL_ATTACK_LOG, INDIVIDUAL_SAY_LOG, INDIVIDUAL_EMOTE_LOG, INDIVIDUAL_OOC_LOG)
diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm
index c968cc9c76..06e555bb32 100644
--- a/code/modules/client/verbs/suicide.dm
+++ b/code/modules/client/verbs/suicide.dm
@@ -199,16 +199,10 @@
death(0)
/mob/living/proc/suicide_log()
- var/turf/T = get_turf(src)
-
- log_game("[key_name(src)] committed suicide at [get_area(src)][COORD(T)] as [src.type].")
- message_admins("[key_name(src)] committed suicide at [get_area(src)] as [src.type].")
+ log_game("[key_name(src)] committed suicide at [AREACOORD(src)] as [src.type].")
/mob/living/carbon/human/suicide_log()
- var/turf/T = get_turf(src)
-
- log_game("[key_name(src)] (job: [src.job ? "[src.job]" : "None"]) committed suicide at [get_area(src)][COORD(T)].")
- message_admins("[key_name(src)] (job: [job ? "[job]" : "None"]) committed suicide at [get_area(src)].")
+ log_game("[key_name(src)] (job: [src.job ? "[src.job]" : "None"]) committed suicide at [AREACOORD(src)].")
/mob/living/proc/canSuicide()
if(stat == CONSCIOUS)
diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm
index c3345dc761..e71704132a 100644
--- a/code/modules/clothing/suits/reactive_armour.dm
+++ b/code/modules/clothing/suits/reactive_armour.dm
@@ -10,8 +10,8 @@
var/static/list/anomaly_armour_types = list(
/obj/effect/anomaly/grav = /obj/item/clothing/suit/armor/reactive/repulse,
/obj/effect/anomaly/flux = /obj/item/clothing/suit/armor/reactive/tesla,
- /obj/effect/anomaly/bluespace = /obj/item/clothing/suit/armor/reactive/teleport,
- /obj/effect/anomaly/pyro = /obj/item/clothing/suit/armor/reactive/fire)
+ /obj/effect/anomaly/bluespace = /obj/item/clothing/suit/armor/reactive/teleport
+ )
if(istype(I, /obj/item/assembly/signaler/anomaly))
var/obj/item/assembly/signaler/anomaly/A = I
diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm
index 87b12ad4cf..ddc75830d6 100644
--- a/code/modules/events/alien_infestation.dm
+++ b/code/modules/events/alien_infestation.dm
@@ -65,7 +65,7 @@
spawncount--
successSpawn = TRUE
- message_admins("[key_name_admin(new_xeno)] has been made into an alien by an event.")
+ message_admins("[ADMIN_LOOKUPFLW(new_xeno)] has been made into an alien by an event.")
log_game("[key_name(new_xeno)] was spawned as an alien by an event.")
spawned_mobs += new_xeno
diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm
index 45968df0cf..c17918d733 100644
--- a/code/modules/events/blob.dm
+++ b/code/modules/events/blob.dm
@@ -34,6 +34,6 @@
var/mob/dead/observer/new_blob = pick(candidates)
var/mob/camera/blob/BC = new_blob.become_overmind()
spawned_mobs += BC
- message_admins("[key_name_admin(BC)] has been made into a blob overmind by an event.")
+ message_admins("[ADMIN_LOOKUPFLW(BC)] has been made into a blob overmind by an event.")
log_game("[key_name(BC)] was spawned as a blob overmind by an event.")
return SUCCESSFUL_SPAWN
diff --git a/code/modules/events/devil.dm b/code/modules/events/devil.dm
index 83c6dcb83d..3760cbe05d 100644
--- a/code/modules/events/devil.dm
+++ b/code/modules/events/devil.dm
@@ -34,7 +34,7 @@
add_devil(devil, ascendable = FALSE)
spawned_mobs += devil
- message_admins("[key_name_admin(devil)] has been made into a devil by an event.")
+ message_admins("[ADMIN_LOOKUPFLW(devil)] has been made into a devil by an event.")
log_game("[key_name(devil)] was spawned as a devil by an event.")
var/datum/job/jobdatum = SSjob.GetJob("Assistant")
devil.job = jobdatum.title
diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm
index b19c8358c2..81e93244ea 100644
--- a/code/modules/events/disease_outbreak.dm
+++ b/code/modules/events/disease_outbreak.dm
@@ -70,7 +70,7 @@
var/list/name_symptoms = list() //for feedback
for(var/datum/symptom/S in A.symptoms)
name_symptoms += S.name
- message_admins("An event has triggered a random advanced virus outbreak on [key_name_admin(H)]! It has these symptoms: [english_list(name_symptoms)]")
+ message_admins("An event has triggered a random advanced virus outbreak on [ADMIN_LOOKUPFLW(H)]! It has these symptoms: [english_list(name_symptoms)]")
log_game("An event has triggered a random advanced virus outbreak on [key_name(H)]! It has these symptoms: [english_list(name_symptoms)]")
break
diff --git a/code/modules/events/nightmare.dm b/code/modules/events/nightmare.dm
index b1cebb98c5..698f5130f1 100644
--- a/code/modules/events/nightmare.dm
+++ b/code/modules/events/nightmare.dm
@@ -37,7 +37,7 @@
player_mind.add_antag_datum(/datum/antagonist/nightmare)
S.set_species(/datum/species/shadow/nightmare)
playsound(S, 'sound/magic/ethereal_exit.ogg', 50, 1, -1)
- message_admins("[key_name_admin(S)] has been made into a Nightmare by an event.")
+ message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Nightmare by an event.")
log_game("[key_name(S)] was spawned as a Nightmare by an event.")
spawned_mobs += S
return SUCCESSFUL_SPAWN
diff --git a/code/modules/events/operative.dm b/code/modules/events/operative.dm
index 424888f99b..7fca4188b7 100644
--- a/code/modules/events/operative.dm
+++ b/code/modules/events/operative.dm
@@ -33,7 +33,7 @@
Mind.transfer_to(operative)
Mind.add_antag_datum(/datum/antagonist/nukeop/lone)
- message_admins("[key_name_admin(operative)] has been made into lone operative by an event.")
+ message_admins("[ADMIN_LOOKUPFLW(operative)] has been made into lone operative by an event.")
log_game("[key_name(operative)] was spawned as a lone operative by an event.")
spawned_mobs += operative
return SUCCESSFUL_SPAWN
diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
index cda2f50ca2..7153587c79 100644
--- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
@@ -422,12 +422,10 @@
/obj/item/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params)
if(I.is_hot() && !active)
active = 1
- var/turf/bombturf = get_turf(src)
- var/area/bombarea = get_area(bombturf)
- var/message = "[ADMIN_LOOKUP(user)] has primed a [name] for detonation at [ADMIN_COORDJMP(bombturf)]."
+ var/message = "[ADMIN_LOOKUP(user)] has primed a [name] for detonation at [ADMIN_VERBOSEJMP(user)]."
GLOB.bombers += message
message_admins(message)
- log_game("[key_name(user)] has primed a [name] for detonation at [bombarea] [COORD(bombturf)].")
+ log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(user)].")
to_chat(user, "You light [src] on fire.")
add_overlay(GLOB.fire_overlay)
diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm
index 8affd79e52..bd1dbc4f8e 100644
--- a/code/modules/food_and_drinks/food/snacks_meat.dm
+++ b/code/modules/food_and_drinks/food/snacks_meat.dm
@@ -189,7 +189,7 @@
var/mob/living/carbon/monkey/bananas = new(drop_location(), TRUE, spammer)
if (!QDELETED(bananas))
visible_message("[src] expands!")
- bananas.log_message("Spawned via [src] at [COORD(src)], Last attached mob: [key_name(spammer)].", INDIVIDUAL_ATTACK_LOG)
+ bananas.log_message("Spawned via [src] at [AREACOORD(src)], Last attached mob: [key_name(spammer)].", INDIVIDUAL_ATTACK_LOG)
else if (!spammer) // Visible message in case there are no fingerprints
visible_message("[src] fails to expand!")
qdel(src)
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
index 38f8a40ec3..30b4865a9d 100644
--- a/code/modules/hydroponics/grown/citrus.dm
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -111,12 +111,11 @@
foodtype = FRUIT
/obj/item/reagent_containers/food/snacks/grown/firelemon/attack_self(mob/living/user)
- var/area/A = get_area(user)
user.visible_message("[user] primes [src]!", "You prime [src]!")
- var/message = "[ADMIN_LOOKUPFLW(user)] primed a combustible lemon for detonation at [A] [ADMIN_COORDJMP(user)]"
+ var/message = "[ADMIN_LOOKUPFLW(user)] primed a combustible lemon for detonation at [ADMIN_VERBOSEJMP(user)]"
GLOB.bombers += message
message_admins(message)
- log_game("[key_name(user)] primed a combustible lemon for detonation at [A] [COORD(user)].")
+ log_game("[key_name(user)] primed a combustible lemon for detonation at [AREACOORD(user)].")
if(iscarbon(user))
var/mob/living/carbon/C = user
C.throw_mode_on()
diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm
index 8455df887e..62c3c0b064 100644
--- a/code/modules/hydroponics/grown/flowers.dm
+++ b/code/modules/hydroponics/grown/flowers.dm
@@ -195,8 +195,8 @@
to_chat(M, "You are lit on fire from the intense heat of the [name]!")
M.adjust_fire_stacks(seed.potency / 20)
if(M.IgniteMob())
- message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire")
- log_game("[key_name(user)] set [key_name(M)] on fire")
+ message_admins("[ADMIN_LOOKUPFLW(user)] set [ADMIN_LOOKUPFLW(M)] on fire with [src] at [AREACOORD(user)]")
+ log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]")
/obj/item/grown/novaflower/afterattack(atom/A as mob|obj, mob/user,proximity)
if(!proximity)
diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm
index c35281088d..e9dec09799 100644
--- a/code/modules/hydroponics/grown/kudzu.dm
+++ b/code/modules/hydroponics/grown/kudzu.dm
@@ -36,8 +36,8 @@
to_chat(user, "There is too much kudzu here to plant [src].")
return FALSE
to_chat(user, "You plant [src].")
- message_admins("Kudzu planted by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(user)]",0,1)
- investigate_log("was planted by [key_name(user)] at [COORD(user)]", INVESTIGATE_BOTANY)
+ message_admins("Kudzu planted by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(user)]")
+ investigate_log("was planted by [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY)
new /datum/spacevine_controller(get_turf(user), mutations, potency, production)
qdel(src)
diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm
index 5a7c8c93cf..82ff56e7c9 100644
--- a/code/modules/hydroponics/grown/misc.dm
+++ b/code/modules/hydroponics/grown/misc.dm
@@ -136,10 +136,9 @@
max_integrity = 40
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/attack_self(mob/living/user)
- var/area/A = get_area(user)
user.visible_message("[user] plucks the stem from [src]!", "You pluck the stem from [src], which begins to hiss loudly!")
- message_admins("[ADMIN_LOOKUPFLW(user)] primed a cherry bomb for detonation at [A] [ADMIN_COORDJMP(user)]")
- log_game("[key_name(user)] primed a cherry bomb for detonation at [A] [COORD(user)].")
+ message_admins("[ADMIN_LOOKUPFLW(user)] primed a cherry bomb for detonation at [ADMIN_VERBOSEJMP(user)]")
+ log_game("[key_name(user)] primed a cherry bomb for detonation at [AREACOORD(user)].")
prime()
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/deconstruct(disassembled = TRUE)
diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm
index 352d4eff7b..4668f12c3c 100644
--- a/code/modules/hydroponics/grown/mushrooms.dm
+++ b/code/modules/hydroponics/grown/mushrooms.dm
@@ -303,7 +303,7 @@
/obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom/attack_self(mob/user)
. = ..()
if(.)
- investigate_log("was planted by [key_name(user)] at [COORD(user)]", INVESTIGATE_BOTANY)
+ investigate_log("was planted by [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY)
//// LAVALAND MUSHROOMS ////
diff --git a/code/modules/jobs/job_types/silicon.dm b/code/modules/jobs/job_types/silicon.dm
index 28ee321f50..c53e034ddf 100644
--- a/code/modules/jobs/job_types/silicon.dm
+++ b/code/modules/jobs/job_types/silicon.dm
@@ -60,9 +60,7 @@ AI
/datum/job/ai/announce(mob/living/silicon/ai/AI)
. = ..()
- var/area/A = get_area(AI)
- var/turf/T = get_turf(AI)
- SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "[AI] has been downloaded to an empty bluespace-networked AI core at [COORD(T)], [A.name]."))
+ SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "[AI] has been downloaded to an empty bluespace-networked AI core at [AREACOORD(AI)]."))
/datum/job/ai/config_check()
return CONFIG_GET(flag/allow_ai)
diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm
index 0cfdf322c4..2cc5a74b6b 100644
--- a/code/modules/mapping/map_template.dm
+++ b/code/modules/mapping/map_template.dm
@@ -59,7 +59,6 @@
repopulate_sorted_areas()
- SSlighting.initialize_lighting_objects(block(locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]),locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ])))
//initialize things that are normally initialized after map load
initTemplateBounds(bounds)
smooth_zlevel(world.maxz)
diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm
index 9fed915c98..8a7f5cb91e 100644
--- a/code/modules/mapping/mapping_helpers.dm
+++ b/code/modules/mapping/mapping_helpers.dm
@@ -9,7 +9,7 @@
var/list/baseturf_to_replace
var/baseturf
-
+
layer = POINT_LAYER
/obj/effect/baseturf_helper/Initialize()
@@ -30,7 +30,7 @@
var/area/our_area = get_area(src)
for(var/i in get_area_turfs(our_area, z))
replace_baseturf(i)
-
+
qdel(src)
/obj/effect/baseturf_helper/proc/replace_baseturf(turf/thing)
@@ -108,11 +108,11 @@
var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in loc
if(airlock)
if(airlock.cyclelinkeddir)
- log_world("### MAP WARNING, [src] at [COORD(src)] tried to set [airlock] cyclelinkeddir, but it's already set!")
+ log_world("### MAP WARNING, [src] at [AREACOORD(src)] tried to set [airlock] cyclelinkeddir, but it's already set!")
else
airlock.cyclelinkeddir = dir
else
- log_world("### MAP WARNING, [src] failed to find an airlock at [COORD(src)]")
+ log_world("### MAP WARNING, [src] failed to find an airlock at [AREACOORD(src)]")
/obj/effect/mapping_helpers/airlock/locked
@@ -127,11 +127,11 @@
var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in loc
if(airlock)
if(airlock.locked)
- log_world("### MAP WARNING, [src] at [COORD(src)] tried to bolt [airlock] but it's already locked!")
+ log_world("### MAP WARNING, [src] at [AREACOORD(src)] tried to bolt [airlock] but it's already locked!")
else
airlock.locked = TRUE
else
- log_world("### MAP WARNING, [src] failed to find an airlock at [COORD(src)]")
+ log_world("### MAP WARNING, [src] failed to find an airlock at [AREACOORD(src)]")
//needs to do its thing before spawn_rivers() is called
diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm
index 8ad4053f6a..9ad6d59c3a 100644
--- a/code/modules/mining/equipment/survival_pod.dm
+++ b/code/modules/mining/equipment/survival_pod.dm
@@ -57,12 +57,12 @@
used = FALSE
return
- playsound(get_turf(src), 'sound/effects/phasein.ogg', 100, 1)
+ playsound(src, 'sound/effects/phasein.ogg', 100, 1)
var/turf/T = deploy_location
if(!is_mining_level(T.z)) //only report capsules away from the mining/lavaland level
- message_admins("[ADMIN_LOOKUPFLW(usr)] activated a bluespace capsule away from the mining level! [ADMIN_JMP(T)]")
- log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [get_area(T)][COORD(T)]")
+ message_admins("[ADMIN_LOOKUPFLW(usr)] activated a bluespace capsule away from the mining level! [ADMIN_VERBOSEJMP(T)]")
+ log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [AREACOORD(T)]")
template.load(deploy_location, centered = TRUE)
new /obj/effect/particle_effect/smoke(get_turf(src))
qdel(src)
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 953eb1d02c..de5dd92879 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -266,26 +266,29 @@
/obj/item/wisp_lantern/attack_self(mob/user)
if(!wisp)
to_chat(user, "The wisp has gone missing!")
+ icon_state = "lantern"
return
+
if(wisp.loc == src)
to_chat(user, "You release the wisp. It begins to bob around your head.")
- user.sight |= SEE_MOBS
icon_state = "lantern"
wisp.orbit(user, 20)
+ user.update_sight()
SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Freed")
else
to_chat(user, "You return the wisp to the lantern.")
+ var/mob/target
if(wisp.orbiting)
- var/atom/A = wisp.orbiting.orbiting
- if(isliving(A))
- var/mob/living/M = A
- M.sight &= ~SEE_MOBS
- to_chat(M, "Your vision returns to normal.")
-
+ target = wisp.orbiting.orbiting
wisp.stop_orbit()
wisp.forceMove(src)
+
+ if (istype(target))
+ target.update_sight()
+ to_chat(target, "Your vision returns to normal.")
+
icon_state = "lantern-blue"
SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Returned")
@@ -308,6 +311,8 @@
icon_state = "orb"
light_range = 7
layer = ABOVE_ALL_MOB_LAYER
+ var/sight_flags = SEE_MOBS
+ var/lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
//Red/Blue Cubes
/obj/item/warp_cube
@@ -915,8 +920,8 @@
var/old_name = T.name
if(T.TerraformTurf(turf_type))
user.visible_message("[user] turns \the [old_name] into [transform_string]!")
- message_admins("[key_name_admin(user)] fired the lava staff at [get_area(target)]. [ADMIN_COORDJMP(T)]")
- log_game("[key_name(user)] fired the lava staff at [get_area(target)] [COORD(T)].")
+ message_admins("[ADMIN_LOOKUPFLW(user)] fired the lava staff at [ADMIN_VERBOSEJMP(T)]")
+ log_game("[key_name(user)] fired the lava staff at [AREACOORD(T)].")
timer = world.time + create_cooldown
playsound(T,'sound/magic/fireball.ogg', 200, 1)
else
@@ -968,7 +973,7 @@
INVOKE_ASYNC(B, /obj/effect/mine/pickup/bloodbath/.proc/mineEffect, H)
to_chat(user, "You shatter the bottle!")
playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1)
- message_admins("[key_name_admin(user)][ADMIN_FLW(user)] has activated a bottle of mayhem!")
+ message_admins("[ADMIN_LOOKUPFLW(user)] has activated a bottle of mayhem!")
add_logs(user, null, "activated a bottle of mayhem", src)
qdel(src)
@@ -1008,7 +1013,7 @@
var/mob/living/L = choice
- message_admins("[key_name_admin(L)][ADMIN_FLW(L)] has been marked for death by [key_name_admin(user)]!")
+ message_admins("[ADMIN_LOOKUPFLW(L)] has been marked for death by [ADMIN_LOOKUPFLW(user)]!")
var/datum/objective/survive/survive = new
survive.owner = L.mind
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 62ef7bde65..2835323172 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -263,25 +263,24 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,1)
icon_state = "Gibtonite active"
var/turf/bombturf = get_turf(src)
- var/area/A = get_area(bombturf)
var/notify_admins = 0
if(z != 5)//Only annoy the admins ingame if we're triggered off the mining zlevel
notify_admins = 1
if(notify_admins)
if(triggered_by == 1)
- message_admins("An explosion has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)].")
+ message_admins("An explosion has triggered a [name] to detonate at [ADMIN_VERBOSEJMP(bombturf)].")
else if(triggered_by == 2)
- message_admins("A signal has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)]. Igniter attacher: [ADMIN_LOOKUPFLW(attacher)]")
+ message_admins("A signal has triggered a [name] to detonate at [ADMIN_VERBOSEJMP(bombturf)]. Igniter attacher: [ADMIN_LOOKUPFLW(attacher)]")
else
- message_admins("[ADMIN_LOOKUPFLW(attacher)] has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)].")
+ message_admins("[ADMIN_LOOKUPFLW(attacher)] has triggered a [name] to detonate at [ADMIN_VERBOSEJMP(bombturf)].")
if(triggered_by == 1)
- log_game("An explosion has primed a [name] for detonation at [A][COORD(bombturf)]")
+ log_game("An explosion has primed a [name] for detonation at [AREACOORD(bombturf)]")
else if(triggered_by == 2)
- log_game("A signal has primed a [name] for detonation at [A][COORD(bombturf)]. Igniter attacher: [key_name(attacher)].")
+ log_game("A signal has primed a [name] for detonation at [AREACOORD(bombturf)]. Igniter attacher: [key_name(attacher)].")
else
user.visible_message("[user] strikes \the [src], causing a chain reaction!", "You strike \the [src], causing a chain reaction.")
- log_game("[key_name(user)] has primed a [name] for detonation at [A][COORD(bombturf)]")
+ log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(bombturf)]")
det_timer = addtimer(CALLBACK(src, .proc/detonate, notify_admins), det_time, TIMER_STOPPABLE)
/obj/item/twohanded/required/gibtonite/proc/detonate(notify_admins)
diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm
index 8699e02b29..b44daefd3f 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories.dm
@@ -777,6 +777,32 @@
icon_state = "female_commie"
gender = FEMALE
+/datum/sprite_accessory/underwear/swimsuit
+ name = "Ladies Black Swimsuit"
+ icon_state = "swim_black"
+ gender = FEMALE
+
+/datum/sprite_accessory/underwear/swimsuit_blue
+ name = "Ladies Blue Swimsuit"
+ icon_state = "swim_blue"
+ gender = FEMALE
+
+/datum/sprite_accessory/underwear/swimsuit_green
+ name = "Ladies Green Swimsuit"
+ icon_state = "swim_green"
+ gender = FEMALE
+
+/datum/sprite_accessory/underwear/swimsuit_purple
+ name = "Ladies Purple Swimsuit"
+ icon_state = "swim_purple"
+ gender = FEMALE
+
+/datum/sprite_accessory/underwear/swimsuit_red
+ name = "Ladies Red Swimsuit"
+ icon_state = "swim_red"
+ gender = FEMALE
+
+
////////////////////////////
// Undershirt Definitions //
////////////////////////////
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index e11a4fc886..5715a1fe87 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -79,7 +79,6 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
var/mob/body = loc
if(ismob(body))
T = get_turf(body) //Where is the body located?
- logging = body.logging //preserve our logs by copying them to our ghost
gender = body.gender
if(body.mind && body.mind.name)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index e4e76f16b9..ffeee159ee 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -169,9 +169,7 @@
var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors
var/turf/end_T = get_turf(target)
if(start_T && end_T)
- var/start_T_descriptor = "tile in [get_area_name(start_T, TRUE)] ([start_T.x],[start_T.y],[start_T.z])"
- var/end_T_descriptor = "tile at [get_area_name(end_T, TRUE)] ([end_T.x],[end_T.y],[end_T.z])"
- add_logs(src, throwable_mob, "thrown", addition="grab from [start_T_descriptor] towards [end_T_descriptor]")
+ add_logs(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]")
else if(!(I.flags_1 & (NODROP_1|ABSTRACT_1)))
thrown_thing = I
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 944e5774ad..4a8870281b 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -392,7 +392,7 @@
if(R)
if(H.canUseHUD())
if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.getorganslot(ORGAN_SLOT_HUD), /obj/item/organ/cyberimp/eyes/hud/security))
- investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", INVESTIGATE_RECORDS)
+ investigate_log("[key_name(src)] has been set from [R.fields["criminal"]] to [setcriminal] by [key_name(usr)].", INVESTIGATE_RECORDS)
R.fields["criminal"] = setcriminal
sec_hud_set_security_status()
return
@@ -434,6 +434,7 @@
return
var/crime = GLOB.data_core.createCrimeEntry(t1, t2, allowed_access, station_time_timestamp())
GLOB.data_core.addMinorCrime(R.fields["id"], crime)
+ investigate_log("New Minor Crime: [t1]: [t2] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS)
to_chat(usr, "Successfully added a minor crime.")
return
if("Major Crime")
@@ -449,6 +450,7 @@
return
var/crime = GLOB.data_core.createCrimeEntry(t1, t2, allowed_access, station_time_timestamp())
GLOB.data_core.addMajorCrime(R.fields["id"], crime)
+ investigate_log("New Major Crime: [t1]: [t2] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS)
to_chat(usr, "Successfully added a major crime.")
return
@@ -916,6 +918,9 @@
/mob/living/carbon/human/species/corporate
race = /datum/species/corporate
+/mob/living/carbon/human/species/dullahan
+ race = /datum/species/dullahan
+
/mob/living/carbon/human/species/fly
race = /datum/species/fly
@@ -979,18 +984,36 @@
/mob/living/carbon/human/species/golem/plastic
race = /datum/species/golem/plastic
+/mob/living/carbon/human/species/golem/clockwork
+ race = /datum/species/golem/clockwork
+
+/mob/living/carbon/human/species/golem/clockwork/no_scrap
+ race = /datum/species/golem/clockwork/no_scrap
+
/mob/living/carbon/human/species/jelly
race = /datum/species/jelly
/mob/living/carbon/human/species/jelly/slime
race = /datum/species/jelly/slime
+/mob/living/carbon/human/species/jelly/stargazer
+ race = /datum/species/jelly/stargazer
+
+/mob/living/carbon/human/species/jelly/luminescent
+ race = /datum/species/jelly/luminescent
+
/mob/living/carbon/human/species/lizard
race = /datum/species/lizard
/mob/living/carbon/human/species/lizard/ashwalker
race = /datum/species/lizard/ashwalker
+/mob/living/carbon/human/species/moth
+ race = /datum/species/moth
+
+/mob/living/carbon/human/species/mush
+ race = /datum/species/mush
+
/mob/living/carbon/human/species/plasma
race = /datum/species/plasmaman
@@ -1000,6 +1023,9 @@
/mob/living/carbon/human/species/shadow
race = /datum/species/shadow
+/mob/living/carbon/human/species/shadow/nightmare
+ race = /datum/species/shadow/nightmare
+
/mob/living/carbon/human/species/skeleton
race = /datum/species/skeleton
@@ -1009,6 +1035,9 @@
/mob/living/carbon/human/species/synth/military
race = /datum/species/synth/military
+/mob/living/carbon/human/species/vampire
+ race = /datum/species/vampire
+
/mob/living/carbon/human/species/zombie
race = /datum/species/zombie
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 2b5ed79d7b..9d32cab4a8 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1260,6 +1260,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
. += ((health_deficiency-39) / 75) // CIT CHANGE - adds -39 to health deficiency penalty to make the transition to low health movement a little less jarring
else
. += ((health_deficiency-39) / 25) // CIT CHANGE - ditto
+ if(CONFIG_GET(flag/disable_human_mood))
+ var/hungry = (500 - H.nutrition) / 5 //So overeat would be 100 and default level would be 80
+ if((hungry >= 70) && !flight) //Being hungry will still allow you to use a flightsuit/wings.
+ . += hungry / 50
GET_COMPONENT_FROM(mood, /datum/component/mood, H)
if(mood && !flight) //How can depression slow you down if you can just fly away from your problems?
diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm
index 3ad39bb016..c5820eb8c1 100644
--- a/code/modules/mob/living/silicon/ai/say.dm
+++ b/code/modules/mob/living/silicon/ai/say.dm
@@ -45,10 +45,10 @@
var/turf/padturf = get_turf(T)
var/padloc
if(padturf)
- padloc = COORD(padturf)
+ padloc = AREACOORD(padturf)
else
padloc = "(UNKNOWN)"
- log_talk(src,"HOLOPAD [padloc]: [key_name(src)] : [message]", LOGSAY)
+ log_talk(src,"HOLOPAD in [padloc]: [key_name(src)] : [message]", LOGSAY)
send_speech(message, 7, T, "robot", get_spans(), language)
to_chat(src, "Holopad transmitted, [real_name] \"[message]\"")
else
diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm
index a75089ed68..f558ff3907 100644
--- a/code/modules/mob/living/silicon/pai/death.dm
+++ b/code/modules/mob/living/silicon/pai/death.dm
@@ -3,8 +3,6 @@
return
stat = DEAD
canmove = 0
- card.removePersonality()
- card.forceMove(loc)
update_sight()
clear_fullscreens()
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 29ae671d03..0135fca88e 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -90,6 +90,11 @@
return FALSE
/mob/living/silicon/pai/Destroy()
+ if (loc != card)
+ card.forceMove(drop_location())
+ card.pai = null
+ card.cut_overlays()
+ card.add_overlay("pai-off")
GLOB.pai_list -= src
return ..()
diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm
index ce2605e2cf..41bd62ea16 100644
--- a/code/modules/mob/living/silicon/pai/pai_shell.dm
+++ b/code/modules/mob/living/silicon/pai/pai_shell.dm
@@ -57,7 +57,7 @@
if(client)
client.perspective = EYE_PERSPECTIVE
client.eye = card
- var/turf/T = get_turf(src)
+ var/turf/T = drop_location()
card.forceMove(T)
forceMove(card)
canmove = FALSE
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index ef1da59c36..0356c934ff 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -130,7 +130,7 @@
SetStun(60) //Borgs were getting into trouble because they would attack the emagger before the new laws were shown
lawupdate = 0
connected_ai = null
- message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.")
+ message_admins("[ADMIN_LOOKUPFLW(user)] emagged cyborg [ADMIN_LOOKUPFLW(src)]. Laws overridden.")
log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.")
var/time = time2text(world.realtime,"hh:mm:ss")
GLOB.lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])")
diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm
index 90532829df..51698d1ddb 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -558,7 +558,7 @@
name = "Lisa"
real_name = "Lisa"
gender = FEMALE
- desc = "It's a corgi with a cute pink bow."
+ desc = "She's tearing you apart."
gold_core_spawnable = NO_SPAWN
unique_pet = TRUE
icon_state = "lisa"
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 61e7153434..dc917f4210 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -108,6 +108,15 @@
/mob/living/simple_animal/Destroy()
GLOB.simple_animals[AIStatus] -= src
+
+ if(nest)
+ nest.spawned_mobs -= src
+ nest = null
+
+ var/turf/T = get_turf(src)
+ if (T && AIStatus == AI_Z_OFF)
+ SSidlenpcpool.idle_mobs_by_zlevel[T.z] -= src
+
return ..()
/mob/living/simple_animal/updatehealth()
@@ -424,16 +433,6 @@
if(changed)
animate(src, transform = ntransform, time = 2, easing = EASE_IN|EASE_OUT)
-
-
-/mob/living/simple_animal/Destroy()
- if(nest)
- nest.spawned_mobs -= src
- nest = null
- GLOB.simple_animals -= src
- return ..()
-
-
/mob/living/simple_animal/proc/sentience_act() //Called when a simple animal gains sentience via gold slime potion
toggle_ai(AI_OFF) // To prevent any weirdness.
diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm
index 6dd8b73a4b..80af604d99 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -48,7 +48,4 @@
for(var/datum/action/A in client.player_details.player_actions)
A.Grant(src)
- if(!GLOB.individual_log_list[ckey])
- GLOB.individual_log_list[ckey] = logging
- else
- logging = GLOB.individual_log_list[ckey]
+ log_message("Client [key_name(src)] has taken ownership of mob [src]", INDIVIDUAL_OWNERSHIP_LOG)
diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm
index aadb7e6d58..fbd29e86a5 100644
--- a/code/modules/mob/logout.dm
+++ b/code/modules/mob/logout.dm
@@ -1,4 +1,5 @@
/mob/Logout()
+ log_message("[key_name(src)] is no longer owning mob [src]", INDIVIDUAL_OWNERSHIP_LOG)
SStgui.on_logout(src)
unset_machine()
GLOB.player_list -= src
@@ -8,4 +9,4 @@
if(loc)
loc.on_log(FALSE)
- return TRUE
\ No newline at end of file
+ return TRUE
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index c9ec43c387..931eb68f13 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -785,6 +785,7 @@
//This will update a mob's name, real_name, mind.name, GLOB.data_core records, pda, id and traitor text
//Calling this proc without an oldname will only update the mob and skip updating the pda, id and records ~Carn
/mob/proc/fully_replace_character_name(oldname,newname)
+ log_message("[src] name changed from [oldname] to [newname]", INDIVIDUAL_OWNERSHIP_LOG)
if(!newname)
return 0
real_name = newname
@@ -841,6 +842,14 @@
return
/mob/proc/update_sight()
+ for(var/O in orbiters)
+ var/datum/orbit/orbit = O
+ var/obj/effect/wisp/wisp = orbit.orbiter
+ if (istype(wisp))
+ sight |= wisp.sight_flags
+ if(!isnull(wisp.lighting_alpha))
+ lighting_alpha = min(lighting_alpha, wisp.lighting_alpha)
+
sync_lighting_plane_alpha()
/mob/proc/sync_lighting_plane_alpha()
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 67f77307e5..4cb9723dbd 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -67,8 +67,6 @@
var/research_scanner = 0 //For research scanner equipped mobs. Enable to show research data when examining.
- var/list/mapobjs = list()
-
var/in_throw_mode = 0
var/job = null//Living
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 8ef39f3b06..55e6798053 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -434,7 +434,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
to_chat(M, "Control of your mob has been offered to dead players.")
if(usr)
log_admin("[key_name(usr)] has offered control of ([key_name(M)]) to ghosts.")
- message_admins("[key_name_admin(usr)] has offered control of ([key_name_admin(M)]) to ghosts")
+ message_admins("[key_name_admin(usr)] has offered control of ([ADMIN_LOOKUPFLW(M)]) to ghosts")
var/poll_message = "Do you want to play as [M.real_name]?"
if(M.mind && M.mind.assigned_role)
poll_message = "[poll_message] Job:[M.mind.assigned_role]."
@@ -455,7 +455,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
return TRUE
else
to_chat(M, "There were no ghosts willing to take control.")
- message_admins("No ghosts were willing to take control of [key_name_admin(M)])")
+ message_admins("No ghosts were willing to take control of [ADMIN_LOOKUPFLW(M)])")
return FALSE
/mob/proc/is_flying(mob/M = src)
@@ -477,12 +477,18 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
if(!LAZYLEN(message) || !message_type)
return
+ if(client)
+ if(!islist(client.player_details.logging[message_type]))
+ client.player_details.logging[message_type] = list()
+
if(!islist(logging[message_type]))
logging[message_type] = list()
var/list/timestamped_message = list("[LAZYLEN(logging[message_type]) + 1]\[[time_stamp()]\] [key_name(src)]" = message)
logging[message_type] += timestamped_message
+ if(client)
+ client.player_details.logging[message_type] += timestamped_message
/mob/proc/can_hear()
. = TRUE
diff --git a/code/modules/ninja/ninja_event.dm b/code/modules/ninja/ninja_event.dm
index 258f470e3f..9fd8e4baf2 100644
--- a/code/modules/ninja/ninja_event.dm
+++ b/code/modules/ninja/ninja_event.dm
@@ -72,7 +72,7 @@ Contents:
throw EXCEPTION("Ninja created with incorrect mind")
spawned_mobs += Ninja
- message_admins("[key_name_admin(Ninja)] has been made into a ninja by an event.")
+ message_admins("[ADMIN_LOOKUPFLW(Ninja)] has been made into a ninja by an event.")
log_game("[key_name(Ninja)] was spawned as a ninja by an event.")
return SUCCESSFUL_SPAWN
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 66b90f4a1e..a2bbe73937 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -140,7 +140,7 @@ By design, d1 is the smallest direction and d2 is the highest
return
user.visible_message("[user] cuts the cable.", "You cut the cable.")
stored.add_fingerprint(user)
- investigate_log("was cut by [key_name(usr, usr.client)] in [get_area(T)]", INVESTIGATE_WIRES)
+ investigate_log("was cut by [key_name(usr, usr.client)] in [AREACOORD(src)]", INVESTIGATE_WIRES)
deconstruct()
return
diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm
index 0ea6a8a6f0..0e6c3176e7 100644
--- a/code/modules/power/gravitygenerator.dm
+++ b/code/modules/power/gravitygenerator.dm
@@ -289,18 +289,17 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
use_power = on ? ACTIVE_POWER_USE : IDLE_POWER_USE
// Sound the alert if gravity was just enabled or disabled.
var/alert = FALSE
- var/area/A = get_area(src)
if(SSticker.IsRoundInProgress())
if(on) // If we turned on and the game is live.
if(gravity_in_level() == 0)
alert = 1
investigate_log("was brought online and is now producing gravity for this level.", INVESTIGATE_GRAVITY)
- message_admins("The gravity generator was brought online [A][ADMIN_COORDJMP(src)]")
+ message_admins("The gravity generator was brought online [ADMIN_VERBOSEJMP(src)]")
else
if(gravity_in_level() == 1)
alert = 1
investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY)
- message_admins("The gravity generator was brought offline with no backup generator. [A][ADMIN_COORDJMP(src)]")
+ message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_VERBOSEJMP(src)]")
update_icon()
update_list()
diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm
index f3c6da7631..79e94be7f0 100644
--- a/code/modules/power/rtg.dm
+++ b/code/modules/power/rtg.dm
@@ -82,8 +82,8 @@
/obj/machinery/power/rtg/abductor/bullet_act(obj/item/projectile/Proj)
..()
if(!going_kaboom && istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)))
- message_admins("[key_name_admin(Proj.firer)] triggered an Abductor Core explosion via projectile.")
- log_game("[key_name(Proj.firer)] triggered an Abductor Core explosion via projectile.")
+ message_admins("[ADMIN_LOOKUPFLW(Proj.firer)] triggered an Abductor Core explosion at [AREACOORD(src)] via projectile.")
+ log_game("[key_name(Proj.firer)] triggered an Abductor Core explosion at [AREACOORD(src)] via projectile.")
overload()
/obj/machinery/power/rtg/abductor/blob_act(obj/structure/blob/B)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 27ba1dcaf5..670dd0a8e1 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -1,3 +1,8 @@
+//emitter construction defines
+#define EMITTER_UNWRENCHED 0
+#define EMITTER_WRENCHED 1
+#define EMITTER_WELDED 2
+
/obj/machinery/power/emitter
name = "emitter"
desc = "A heavy-duty industrial laser, often used in containment fields and power generation."
@@ -14,14 +19,14 @@
active_power_usage = 300
var/icon_state_on = "emitter_+a"
- var/active = 0
- var/powered = 0
+ var/active = FALSE
+ var/powered = FALSE
var/fire_delay = 100
var/maximum_fire_delay = 100
var/minimum_fire_delay = 20
var/last_shot = 0
var/shot_number = 0
- var/state = 0
+ var/state = EMITTER_UNWRENCHED
var/locked = FALSE
var/allow_switch_interact = TRUE
@@ -46,14 +51,14 @@
idle_power_usage = FALSE
locked = TRUE
req_access_txt = "100"
- state = 2
+ state = EMITTER_WELDED
use_power = FALSE
/obj/machinery/power/emitter/Initialize()
. = ..()
RefreshParts()
wires = new /datum/wires/emitter(src)
- if(state == 2 && anchored)
+ if(state == EMITTER_WELDED && anchored)
connect_to_network()
sparks = new
@@ -93,9 +98,9 @@
/obj/machinery/power/emitter/Destroy()
if(SSticker.IsRoundInProgress())
var/turf/T = get_turf(src)
- message_admins("Emitter deleted at [ADMIN_COORDJMP(T)]",0,1)
- log_game("Emitter deleted at [COORD(T)]")
- investigate_log("deleted at [get_area(src)] [COORD(T)]", INVESTIGATE_SINGULO)
+ message_admins("Emitter deleted at [ADMIN_VERBOSEJMP(T)]")
+ log_game("Emitter deleted at [AREACOORD(T)]")
+ investigate_log("deleted at [AREACOORD(T)]", INVESTIGATE_SINGULO)
QDEL_NULL(sparks)
return ..()
@@ -108,33 +113,35 @@
/obj/machinery/power/emitter/interact(mob/user)
add_fingerprint(user)
- if(state == 2)
+ if(state == EMITTER_WELDED)
if(!powernet)
- to_chat(user, "The emitter isn't connected to a wire!")
- return 1
+ to_chat(user, "\The [src] isn't connected to a wire!")
+ return TRUE
if(!locked && allow_switch_interact)
- if(src.active==1)
- src.active = 0
- to_chat(user, "You turn off \the [src].")
- message_admins("Emitter turned off by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]",0,1)
- log_game("Emitter turned off by [key_name(user)] in [COORD(src)]")
- investigate_log("turned off by [key_name(user)] at [get_area(src)]", INVESTIGATE_SINGULO)
+ if(active == TRUE)
+ active = FALSE
+ to_chat(user, "You turn off [src].")
else
- src.active = 1
- to_chat(user, "You turn on \the [src].")
- src.shot_number = 0
- src.fire_delay = maximum_fire_delay
- investigate_log("turned on by [key_name(user)] at [get_area(src)]", INVESTIGATE_SINGULO)
+ active = TRUE
+ to_chat(user, "You turn on [src].")
+ shot_number = 0
+ fire_delay = maximum_fire_delay
+
+ message_admins("Emitter turned [active ? "ON" : "OFF"] by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]")
+ log_game("Emitter turned [active ? "ON" : "OFF"] by [key_name(user)] in [AREACOORD(src)]")
+ investigate_log("turned [active ? "ON" : "OFF"] by [key_name(user)] at [AREACOORD(src)]", INVESTIGATE_SINGULO)
+
update_icon()
+
else
to_chat(user, "The controls are locked!")
else
to_chat(user, "[src] needs to be firmly secured to the floor first!")
- return 1
+ return TRUE
/obj/machinery/power/emitter/attack_animal(mob/living/simple_animal/M)
if(ismegafauna(M) && anchored)
- state = 0
+ state = EMITTER_UNWRENCHED
anchored = FALSE
M.visible_message("[M] rips [src] free from its moorings!")
else
@@ -145,26 +152,26 @@
/obj/machinery/power/emitter/process()
if(stat & (BROKEN))
return
- if(src.state != 2 || (!powernet && active_power_usage))
- src.active = 0
+ if(state != EMITTER_WELDED || (!powernet && active_power_usage))
+ active = FALSE
update_icon()
return
- if(src.active == 1)
+ if(active == TRUE)
if(!active_power_usage || avail(active_power_usage))
add_load(active_power_usage)
if(!powered)
- powered = 1
+ powered = TRUE
update_icon()
- investigate_log("regained power and turned on at [get_area(src)]", INVESTIGATE_SINGULO)
+ investigate_log("regained power and turned ON at [AREACOORD(src)]", INVESTIGATE_SINGULO)
else
if(powered)
- powered = 0
+ powered = FALSE
update_icon()
- investigate_log("lost power and turned off at [get_area(src)]", INVESTIGATE_SINGULO)
- log_game("Emitter lost power in ([x],[y],[z])")
+ investigate_log("lost power and turned OFF at [AREACOORD(src)]", INVESTIGATE_SINGULO)
+ log_game("Emitter lost power in [AREACOORD(src)]")
return
- if(charge <=80)
- charge+=5
+ if(charge <= 80)
+ charge += 5
if(!check_delay() || manual == TRUE)
return FALSE
fire_beam()
@@ -177,7 +184,7 @@
/obj/machinery/power/emitter/proc/fire_beam_pulse()
if(!check_delay())
return FALSE
- if(state != 2)
+ if(state != EMITTER_WELDED)
return FALSE
if(avail(active_power_usage))
add_load(active_power_usage)
@@ -185,7 +192,7 @@
/obj/machinery/power/emitter/proc/fire_beam(mob/user)
var/obj/item/projectile/P = new projectile_type(get_turf(src))
- playsound(get_turf(src), projectile_sound, 50, 1)
+ playsound(get_turf(src), projectile_sound, 50, TRUE)
if(prob(35))
sparks.start()
P.firer = user? user : src
@@ -212,7 +219,7 @@
to_chat(user, "Turn \the [src] off first!")
return FAILED_UNFASTEN
- else if(state == EM_WELDED)
+ else if(state == EMITTER_WELDED)
if(!silent)
to_chat(user, "[src] is welded to the floor!")
return FAILED_UNFASTEN
@@ -223,9 +230,9 @@
. = ..()
if(. == SUCCESSFUL_UNFASTEN)
if(anchored)
- state = EM_SECURED
+ state = EMITTER_WRENCHED
else
- state = EM_UNSECURED
+ state = EMITTER_UNWRENCHED
/obj/machinery/power/emitter/wrench_act(mob/living/user, obj/item/I)
default_unfasten_wrench(user, I)
@@ -237,26 +244,26 @@
return TRUE
switch(state)
- if(EM_UNSECURED)
+ if(EMITTER_UNWRENCHED)
to_chat(user, "The [src.name] needs to be wrenched to the floor!")
- if(EM_SECURED)
+ if(EMITTER_WRENCHED)
if(!I.tool_start_check(user, amount=0))
return TRUE
user.visible_message("[user.name] starts to weld the [name] to the floor.", \
"You start to weld \the [src] to the floor...", \
"You hear welding.")
if(I.use_tool(src, user, 20, volume=50))
- state = EM_WELDED
+ state = EMITTER_WELDED
to_chat(user, "You weld \the [src] to the floor.")
connect_to_network()
- if(EM_WELDED)
+ if(EMITTER_WELDED)
if(!I.tool_start_check(user, amount=0))
return TRUE
user.visible_message("[user.name] starts to cut the [name] free from the floor.", \
"You start to cut \the [src] free from the floor...", \
"You hear welding.")
if(I.use_tool(src, user, 20, volume=50))
- state = EM_SECURED
+ state = EMITTER_WRENCHED
to_chat(user, "You cut \the [src] free from the floor.")
disconnect_from_network()
@@ -307,14 +314,14 @@
icon_state = "protoemitter"
icon_state_on = "protoemitter_+a"
can_buckle = TRUE
- buckle_lying = 0
+ buckle_lying = FALSE
var/view_range = 12
var/datum/action/innate/protoemitter/firing/auto
//BUCKLE HOOKS
/obj/machinery/power/emitter/prototype/unbuckle_mob(mob/living/buckled_mob,force = 0)
- playsound(src,'sound/mecha/mechmove01.ogg', 50, 1)
+ playsound(src,'sound/mecha/mechmove01.ogg', 50, TRUE)
manual = FALSE
for(var/obj/item/I in buckled_mob.held_items)
if(istype(I, /obj/item/turret_control))
@@ -335,7 +342,7 @@
return
M.forceMove(get_turf(src))
..()
- playsound(src,'sound/mecha/mechmove01.ogg', 50, 1)
+ playsound(src,'sound/mecha/mechmove01.ogg', 50, TRUE)
M.pixel_y = 14
layer = 4.1
if(M.client)
@@ -362,7 +369,7 @@
/datum/action/innate/protoemitter/firing/Activate()
if(PE.manual)
- playsound(PE,'sound/mecha/mechmove01.ogg', 50, 1)
+ playsound(PE,'sound/mecha/mechmove01.ogg', 50, TRUE)
PE.manual = FALSE
name = "Switch to Manual Firing"
desc = "The emitter will only fire on your command and at your designated target"
@@ -373,7 +380,7 @@
UpdateButtonIcon()
return
else
- playsound(PE,'sound/mecha/mechmove01.ogg', 50, 1)
+ playsound(PE,'sound/mecha/mechmove01.ogg', 50, TRUE)
name = "Switch to Automatic Firing"
desc = "Emitters will switch to periodic firing at your last target"
button_icon_state = "mech_zoom_off"
@@ -444,4 +451,9 @@
E.fire_beam(user)
delay = world.time + 10
else if (E.charge < 10)
- playsound(get_turf(user),'sound/machines/buzz-sigh.ogg', 50, 1)
+ playsound(src,'sound/machines/buzz-sigh.ogg', 50, TRUE)
+
+
+#undef EMITTER_UNWRENCHED
+#undef EMITTER_WRENCHED
+#undef EMITTER_WELDED
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 909feeea07..4399939caf 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -332,9 +332,8 @@ field_generator power level display
if((world.time - O.last_warning) > 50) //to stop message-spam
temp = 0
var/turf/T = get_turf(src)
- var/area/A = get_area(T)
- message_admins("A singulo exists and a containment field has failed at [A] [ADMIN_COORDJMP(T)].")
- investigate_log("has failed whilst a singulo exists at [A] [COORD(T)].", INVESTIGATE_SINGULO)
+ message_admins("A singulo exists and a containment field has failed at [ADMIN_VERBOSEJMP(T)].")
+ investigate_log("has failed whilst a singulo exists at [AREACOORD(T)].", INVESTIGATE_SINGULO)
O.last_warning = world.time
/obj/machinery/field/generator/shock(mob/living/user)
diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm
index 4d4eb73687..66870d73e8 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_control.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm
@@ -119,9 +119,9 @@
strength++
strength_change()
- message_admins("PA Control Computer increased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_COORDJMP(src)]",0,1)
- log_game("PA Control Computer increased to [strength] by [key_name(usr)] in [COORD(src)]")
- investigate_log("increased to [strength] by [key_name(usr)]", INVESTIGATE_SINGULO)
+ message_admins("PA Control Computer increased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_VERBOSEJMP(src)]")
+ log_game("PA Control Computer increased to [strength] by [key_name(usr)] in [AREACOORD(src)]")
+ investigate_log("increased to [strength] by [key_name(usr)] at [AREACOORD(src)]", INVESTIGATE_SINGULO)
/obj/machinery/particle_accelerator/control_box/proc/remove_strength(s)
@@ -129,9 +129,9 @@
strength--
strength_change()
- message_admins("PA Control Computer decreased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_COORDJMP(src)]",0,1)
- log_game("PA Control Computer decreased to [strength] by [key_name(usr)] in [COORD(src)]")
- investigate_log("decreased to [strength] by [key_name(usr)]", INVESTIGATE_SINGULO)
+ message_admins("PA Control Computer decreased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_VERBOSEJMP(src)]")
+ log_game("PA Control Computer decreased to [strength] by [key_name(usr)] in [AREACOORD(src)]")
+ investigate_log("decreased to [strength] by [key_name(usr)] at [AREACOORD(src)]", INVESTIGATE_SINGULO)
/obj/machinery/particle_accelerator/control_box/power_change()
@@ -206,9 +206,9 @@
/obj/machinery/particle_accelerator/control_box/proc/toggle_power()
active = !active
- investigate_log("turned [active?"ON":"OFF"] by [usr ? key_name(usr) : "outside forces"]", INVESTIGATE_SINGULO)
- message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? key_name_admin(usr) : "outside forces"][ADMIN_QUE(usr)] [ADMIN_FLW(usr)] in [ADMIN_COORDJMP(src)]",0,1)
- log_game("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? "[key_name(usr)]" : "outside forces"] in [COORD(src)]")
+ investigate_log("turned [active?"ON":"OFF"] by [usr ? key_name(usr) : "outside forces"] at [AREACOORD(src)]", INVESTIGATE_SINGULO)
+ message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? ADMIN_LOOKUPFLW(usr) : "outside forces"] in [ADMIN_VERBOSEJMP(src)]")
+ log_game("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? "[key_name(usr)]" : "outside forces"] at [AREACOORD(src)]")
if(active)
use_power = ACTIVE_POWER_USE
for(var/CP in connected_parts)
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index 5df8fb1d13..25623661d6 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -129,12 +129,11 @@
/obj/singularity/proc/admin_investigate_setup()
var/turf/T = get_turf(src)
- var/area/A = get_area(T)
last_warning = world.time
var/count = locate(/obj/machinery/field/containment) in urange(30, src, 1)
if(!count)
- message_admins("A singulo has been created without containment fields active at [A] [ADMIN_COORDJMP(T)].")
- investigate_log("was created at [A] [COORD(T)]. [count?"":"No containment fields were active"]", INVESTIGATE_SINGULO)
+ message_admins("A singulo has been created without containment fields active at [ADMIN_VERBOSEJMP(T)].")
+ investigate_log("was created at [AREACOORD(T)]. [count?"":"No containment fields were active"]", INVESTIGATE_SINGULO)
/obj/singularity/proc/dissipate()
if(!dissipate)
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index 7bfdd86dfa..8612b2d9ec 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -151,9 +151,9 @@
//crowbarring it !
var/turf/T = get_turf(src)
if(default_deconstruction_crowbar(I))
- message_admins("[src] has been deconstructed by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1)
- log_game("[src] has been deconstructed by [key_name(user)]")
- investigate_log("SMES deconstructed by [key_name(user)]", INVESTIGATE_SINGULO)
+ message_admins("[src] has been deconstructed by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]")
+ log_game("[src] has been deconstructed by [key_name(user)] at [AREACOORD(src)]")
+ investigate_log("SMES deconstructed by [key_name(user)] at [AREACOORD(src)]", INVESTIGATE_SINGULO)
return
else if(panel_open && istype(I, /obj/item/crowbar))
return
@@ -173,11 +173,10 @@
/obj/machinery/power/smes/Destroy()
if(SSticker.IsRoundInProgress())
- var/area/A = get_area(src)
var/turf/T = get_turf(src)
- message_admins("SMES deleted at [A][ADMIN_JMP(T)]")
- log_game("SMES deleted at [A][COORD(T)]")
- investigate_log("deleted at [A][COORD(T)]", INVESTIGATE_SINGULO)
+ message_admins("SMES deleted at [ADMIN_VERBOSEJMP(T)]")
+ log_game("SMES deleted at [AREACOORD(T)]")
+ investigate_log("deleted at [AREACOORD(T)]", INVESTIGATE_SINGULO)
if(terminal)
disconnect_terminal()
return ..()
diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm
index 9a6d8ed3af..cf9b697d00 100644
--- a/code/modules/projectiles/guns/energy/pulse.dm
+++ b/code/modules/projectiles/guns/energy/pulse.dm
@@ -21,7 +21,7 @@
. = ..()
GLOB.poi_list += src
var/turf/T = get_turf(src)
- var/msg = "A pulse rifle prize has been created at [ADMIN_COORDJMP(T)]"
+ var/msg = "A pulse rifle prize has been created at [ADMIN_VERBOSEJMP(T)]"
message_admins(msg)
log_game(msg)
diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm
index 7c7af4e27b..e7b628653f 100644
--- a/code/modules/projectiles/guns/misc/blastcannon.dm
+++ b/code/modules/projectiles/guns/misc/blastcannon.dm
@@ -83,7 +83,7 @@
playsound(user, "explosion", 100, 1)
var/turf/starting = get_turf(user)
var/turf/targturf = get_turf(target)
- var/log_str = "Blast wave fired from [ADMIN_COORDJMP(starting)] ([get_area_name(user, TRUE)]) at [ADMIN_COORDJMP(targturf)] ([target.name]) by [user.name]([user.ckey]) with power [heavy]/[medium]/[light]."
+ var/log_str = "Blast wave fired from [ADMIN_VERBOSEJMP(starting)] ([get_area_name(user, TRUE)]) at [ADMIN_VERBOSEJMP(targturf)] ([target.name]) by [user.name]([user.ckey]) with power [heavy]/[medium]/[light]."
message_admins(log_str)
log_game(log_str)
var/obj/item/projectile/blastwave/BW = new(loc, heavy, medium, light)
diff --git a/code/modules/projectiles/guns/misc/grenade_launcher.dm b/code/modules/projectiles/guns/misc/grenade_launcher.dm
index e57d77bdf9..e51c3573e3 100644
--- a/code/modules/projectiles/guns/misc/grenade_launcher.dm
+++ b/code/modules/projectiles/guns/misc/grenade_launcher.dm
@@ -44,8 +44,8 @@
grenades -= F
F.forceMove(user.loc)
F.throw_at(target, 30, 2, user)
- message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).")
- log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).")
+ message_admins("[ADMIN_LOOKUPFLW(user)] fired a grenade ([F.name]) from a grenade launcher ([src]) from [AREACOORD(user)] at [target] [AREACOORD(target)].")
+ log_game("[key_name(user)] fired a grenade ([F.name]) with a grenade launcher ([src]) from [AREACOORD(user)] at [target] [AREACOORD(target)].")
F.active = 1
F.icon_state = initial(F.icon_state) + "_active"
playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index cf06f55e79..94d4d49ded 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -231,7 +231,6 @@
if(!new_mob)
return
new_mob.grant_language(/datum/language/common)
- new_mob.logging = M.logging
// Some forms can still wear some items
for(var/obj/item/W in contents)
diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm
index d64096c71f..a8b0919906 100644
--- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm
+++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm
@@ -142,9 +142,9 @@
on = !on
update_icon()
if(on)
- message_admins("[key_name_admin(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [ADMIN_COORDJMP(src)].")
- log_game("[key_name(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [COORD(src)].")
- add_logs(usr, src, "has activated [src] which contains [english_list(reagents.reagent_list)].")
+ message_admins("[ADMIN_LOOKUPFLW(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [ADMIN_VERBOSEJMP(src)].")
+ log_game("[key_name(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [AREACOORD(src)].")
+ add_logs(usr, src, "has activated [src] which contains [english_list(reagents.reagent_list)] at [AREACOORD(src)].")
if("goScreen")
screen = params["screen"]
. = TRUE
diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm
index 51fda371c1..e19d2c20d7 100644
--- a/code/modules/reagents/chemistry/recipes.dm
+++ b/code/modules/reagents/chemistry/recipes.dm
@@ -24,7 +24,7 @@
if(holder && holder.my_atom)
var/atom/A = holder.my_atom
var/turf/T = get_turf(A)
- var/message = "A [reaction_name] reaction has occurred in [get_area_name(T)] [ADMIN_COORDJMP(T)]"
+ var/message = "A [reaction_name] reaction has occurred in [ADMIN_VERBOSEJMP(T)]"
message += " (VV)"
var/mob/M = get(A, /mob)
@@ -34,7 +34,7 @@
message += " - Last Fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]"
message_admins(message, 0, 1)
- log_game("[reaction_name] chemical mob spawn reaction occuring at [COORD(T)]([get_area_name(T)]) carried by [key_name(M)] with last fingerprint [A.fingerprintslast? A.fingerprintslast : "N/A"]")
+ log_game("[reaction_name] chemical mob spawn reaction occuring at [AREACOORD(T)] carried by [key_name(M)] with last fingerprint [A.fingerprintslast? A.fingerprintslast : "N/A"]")
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
index 1e65a96389..8b8c009a43 100644
--- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
+++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
@@ -6,18 +6,17 @@
/datum/chemical_reaction/reagent_explosion/on_reaction(datum/reagents/holder, created_volume)
var/turf/T = get_turf(holder.my_atom)
- var/area/A = get_area(T)
var/inside_msg
if(ismob(holder.my_atom))
var/mob/M = holder.my_atom
- inside_msg = " inside [key_name_admin(M)]"
+ inside_msg = " inside [ADMIN_LOOKUPFLW(M)]"
var/lastkey = holder.my_atom.fingerprintslast
var/touch_msg = "N/A"
if(lastkey)
var/mob/toucher = get_mob_by_key(lastkey)
touch_msg = "[ADMIN_LOOKUPFLW(toucher)]"
- message_admins("Reagent explosion reaction occurred at [A] [ADMIN_COORDJMP(T)][inside_msg]. Last Fingerprint: [touch_msg].")
- log_game("Reagent explosion reaction occurred at [A] [COORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"]." )
+ message_admins("Reagent explosion reaction occurred at [ADMIN_VERBOSEJMP(T)][inside_msg]. Last Fingerprint: [touch_msg].")
+ log_game("Reagent explosion reaction occurred at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"]." )
var/datum/effect_system/reagents_explosion/e = new()
e.set_up(modifier + round(created_volume/strengthdiv, 1), T, 0, 0)
e.start()
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index 0ab98a1f99..c68c0a16b0 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -428,14 +428,13 @@
/datum/chemical_reaction/slime/slimeexplosion/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
- var/area/A = get_area(T)
var/lastkey = holder.my_atom.fingerprintslast
var/touch_msg = "N/A"
if(lastkey)
var/mob/toucher = get_mob_by_key(lastkey)
touch_msg = "[ADMIN_LOOKUPFLW(toucher)]."
- message_admins("Slime Explosion reaction started at [A] [ADMIN_COORDJMP(T)]. Last Fingerprint: [touch_msg]")
- log_game("Slime Explosion reaction started at [A] [COORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"].")
+ message_admins("Slime Explosion reaction started at [ADMIN_VERBOSEJMP(T)]. Last Fingerprint: [touch_msg]")
+ log_game("Slime Explosion reaction started at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"].")
T.visible_message("The slime extract begins to vibrate violently !")
addtimer(CALLBACK(src, .proc/boom, holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 054fe077c3..4a40addc5d 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -110,9 +110,9 @@
else
if(isturf(target) && reagents.reagent_list.len && thrownby)
- add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "at [target][COORD(target)]")
- log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] at [COORD(target)].")
- message_admins("[key_name_admin(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] at [ADMIN_COORDJMP(target)].")
+ add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]")
+ log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].")
+ message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [ADMIN_VERBOSEJMP(target)].")
visible_message("[src] spills its contents all over [target].")
reagents.reaction(target, TOUCH)
if(QDELETED(src))
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 7dfe095a6d..3a64da8f04 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -29,9 +29,9 @@
R += A.id + " ("
R += num2text(A.volume) + "),"
if(isturf(target) && reagents.reagent_list.len && thrownby)
- add_logs(thrownby, target, "splashed [english_list(reagents.reagent_list)]", "at [target][COORD(target)]")
- log_game("[key_name(thrownby)] splashed [english_list(reagents.reagent_list)] at [COORD(target)].")
- message_admins("[key_name_admin(thrownby)] splashed [english_list(reagents.reagent_list)] at [ADMIN_COORDJMP(target)].")
+ add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]")
+ log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].")
+ message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] at [ADMIN_VERBOSEJMP(target)].")
reagents.reaction(M, TOUCH)
add_logs(user, M, "splashed", R)
reagents.clear_reagents()
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 9a492d9a33..b0e101f76a 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -50,16 +50,15 @@
user.changeNext_move(CLICK_CD_RANGE*2)
user.newtonian_move(get_dir(A, user))
var/turf/T = get_turf(src)
- var/area/area = get_area(src)
if(reagents.has_reagent("sacid"))
- message_admins("[ADMIN_LOOKUPFLW(user)] fired sulphuric acid from \a [src] at [area] [ADMIN_COORDJMP(T)].")
- log_game("[key_name(user)] fired sulphuric acid from \a [src] at [area] ([T.x], [T.y], [T.z]).")
+ message_admins("[ADMIN_LOOKUPFLW(user)] fired sulphuric acid from \a [src] at [ADMIN_VERBOSEJMP(T)].")
+ log_game("[key_name(user)] fired sulphuric acid from \a [src] at [AREACOORD(T)].")
if(reagents.has_reagent("facid"))
- message_admins("[ADMIN_LOOKUPFLW(user)] fired Fluacid from \a [src] at [area] [ADMIN_COORDJMP(T)].")
- log_game("[key_name(user)] fired Fluacid from \a [src] at [area] [COORD(T)].")
+ message_admins("[ADMIN_LOOKUPFLW(user)] fired Fluacid from \a [src] at [ADMIN_VERBOSEJMP(T)].")
+ log_game("[key_name(user)] fired Fluacid from \a [src] at [AREACOORD(T)].")
if(reagents.has_reagent("lube"))
- message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [area] [ADMIN_COORDJMP(T)].")
- log_game("[key_name(user)] fired Space lube from \a [src] at [area] [COORD(T)].")
+ message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [ADMIN_VERBOSEJMP(T)].")
+ log_game("[key_name(user)] fired Space lube from \a [src] at [AREACOORD(T)].")
return
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index ddc88301b2..508f3815a0 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -78,7 +78,7 @@
..()
if(!QDELETED(src)) //wasn't deleted by the projectile's effects.
if(!P.nodamage && ((P.damage_type == BURN) || (P.damage_type == BRUTE)))
- var/boom_message = "[key_name_admin(P.firer)] triggered a fueltank explosion via projectile."
+ var/boom_message = "[ADMIN_LOOKUPFLW(P.firer)] triggered a fueltank explosion via projectile."
GLOB.bombers += boom_message
message_admins(boom_message)
var/log_message = "triggered a fueltank explosion via projectile."
@@ -102,12 +102,11 @@
W.update_icon()
else
var/turf/T = get_turf(src)
- var/area/A = get_area(T)
user.visible_message("[user] catastrophically fails at refilling [user.p_their()] [W.name]!", "That was stupid of you.")
- var/message_admins = "[key_name_admin(user)] triggered a fueltank explosion via welding tool at [A] [ADMIN_COORDJMP(T)]."
+ var/message_admins = "[ADMIN_LOOKUPFLW(user)] triggered a fueltank explosion via welding tool at [ADMIN_VERBOSEJMP(T)]."
GLOB.bombers += message_admins
message_admins(message_admins)
- var/message_log = "triggered a fueltank explosion via welding tool at [A] [COORD(T)]."
+ var/message_log = "triggered a fueltank explosion via welding tool at [AREACOORD(T)]."
user.log_message(message_log, INDIVIDUAL_ATTACK_LOG)
log_game("[key_name(user)] [message_log]")
log_attack("[key_name(user)] [message_log]")
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index 889bb2e0c5..a29722b4af 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -31,7 +31,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
/obj/machinery/conveyor/inverted/Initialize(mapload)
. = ..()
if(mapload && !(dir in GLOB.diagonals))
- log_game("### MAPPING ERROR: [src] at [COORD(src)] spawned without using a diagonal dir. Please replace with a normal version.")
+ log_game("### MAPPING ERROR: [src] at [AREACOORD(src)] spawned without using a diagonal dir. Please replace with a normal version.")
// Auto conveyour is always on unless unpowered
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index 1e4536058a..5b42c777f1 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -512,8 +512,8 @@
/obj/machinery/rnd/experimentor/proc/warn_admins(user, ReactionName)
var/turf/T = get_turf(user)
- message_admins("Experimentor reaction: [ReactionName] generated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(T)]",0,1)
- log_game("Experimentor reaction: [ReactionName] generated by [key_name(user)] in ([T.x],[T.y],[T.z])")
+ message_admins("Experimentor reaction: [ReactionName] generated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(T)]")
+ log_game("Experimentor reaction: [ReactionName] generated by [key_name(user)] in [AREACOORD(T)]")
#undef SCANTYPE_POKE
#undef SCANTYPE_IRRADIATE
@@ -658,8 +658,8 @@
//Admin Warning proc for relics
/obj/item/relic/proc/warn_admins(mob/user, RelicType, priority = 1)
var/turf/T = get_turf(src)
- var/log_msg = "[RelicType] relic used by [key_name(user)] in ([T.x],[T.y],[T.z])"
+ var/log_msg = "[RelicType] relic used by [key_name(user)] in [AREACOORD(T)]"
if(priority) //For truly dangerous relics that may need an admin's attention. BWOINK!
- message_admins("[RelicType] relic activated by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1)
+ message_admins("[RelicType] relic activated by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]")
log_game(log_msg)
investigate_log(log_msg, "experimentor")
diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
index cf45b91dfe..d37ecfe052 100644
--- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
+++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
@@ -176,7 +176,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
message_admins("Legion took damage while the necropolis gate was closed, and has released itself!")
log_game("Legion took damage while the necropolis gate was closed and released itself.")
else
- message_admins("[user ? key_name_admin(user):"Unknown"] has released Legion!")
+ message_admins("[user ? ADMIN_LOOKUPFLW(user):"Unknown"] has released Legion!")
log_game("[user ? key_name(user):"Unknown"] released Legion.")
var/sound/legion_sound = sound('sound/creatures/legion_spawn.ogg')
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index 8c5f5aec8d..fc32b60e6d 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -104,7 +104,7 @@
authorized += ID
- message_admins("[ADMIN_LOOKUPFLW(user)] has authorized early shuttle launch", 0, 1)
+ message_admins("[ADMIN_LOOKUPFLW(user)] has authorized early shuttle launch")
log_game("[key_name(user)] has authorized early shuttle launch in [COORD(src)]")
// Now check if we're on our way
. = TRUE
@@ -143,12 +143,8 @@
return
var/time = TIME_LEFT
- message_admins("[key_name_admin(user.client)] \
- (?) \
- (FLW) \
- has emagged the emergency shuttle [time] seconds before launch.", 0, 1)
- log_game("[key_name(user)] has emagged the emergency shuttle in \
- [COORD(src)] [time] seconds before launch.")
+ message_admins("[ADMIN_LOOKUPFLW(user.client)] has emagged the emergency shuttle [time] seconds before launch.")
+ log_game("[key_name(user)] has emagged the emergency shuttle in [COORD(src)] [time] seconds before launch.")
obj_flags |= EMAGGED
SSshuttle.emergency.movement_force = list("KNOCKDOWN" = 60, "THROW" = 20)//YOUR PUNY SEATBELTS can SAVE YOU NOW, MORTAL
var/datum/species/S = new
diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm
index cab76612b9..bfdd391f05 100644
--- a/code/modules/shuttle/manipulator.dm
+++ b/code/modules/shuttle/manipulator.dm
@@ -155,8 +155,7 @@
if(M.id == params["id"] && M.timer && M.timeLeft() >= 50)
M.setTimer(50)
. = TRUE
- message_admins("[key_name_admin(usr)] fast travelled \
- [M]")
+ message_admins("[key_name_admin(usr)] fast travelled [M]")
log_admin("[key_name(usr)] fast travelled [M]")
SSblackbox.record_feedback("text", "shuttle_manipulator", 1, "[M.name]")
break
@@ -181,10 +180,8 @@
var/obj/docking_port/mobile/mdp = action_load(S)
if(mdp)
user.forceMove(get_turf(mdp))
- message_admins("[key_name_admin(usr)] loaded [mdp] \
- with the shuttle manipulator.")
- log_admin("[key_name(usr)] loaded [mdp] with the \
- shuttle manipulator.")
+ message_admins("[key_name_admin(usr)] loaded [mdp] with the shuttle manipulator.")
+ log_admin("[key_name(usr)] loaded [mdp] with the shuttle manipulator.")
SSblackbox.record_feedback("text", "shuttle_manipulator", 1, "[mdp.name]")
update_icon()
diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm
index 6a14fca455..f42f7bfc9c 100644
--- a/code/modules/shuttle/supply.dm
+++ b/code/modules/shuttle/supply.dm
@@ -102,7 +102,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
SSblackbox.record_feedback("nested tally", "cargo_imports", 1, list("[SO.pack.cost]", "[SO.pack.name]"))
investigate_log("Order #[SO.id] ([SO.pack.name], placed by [key_name(SO.orderer_ckey)]) has shipped.", INVESTIGATE_CARGO)
if(SO.pack.dangerous)
- message_admins("\A [SO.pack.name] ordered by [key_name_admin(SO.orderer_ckey)] has shipped.")
+ message_admins("\A [SO.pack.name] ordered by [ADMIN_LOOKUPFLW(SO.orderer_ckey)] has shipped.")
purchases++
investigate_log("[purchases] orders in this shipment, worth [value] credits. [SSshuttle.points] credits left.", INVESTIGATE_CARGO)
diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm
index 92db588be1..414aa10933 100644
--- a/code/modules/spells/spell_types/rightandwrong.dm
+++ b/code/modules/spells/spell_types/rightandwrong.dm
@@ -137,7 +137,7 @@ GLOBAL_VAR_INIT(summon_magic_triggered, FALSE)
/proc/rightandwrong(summon_type, mob/user, survivor_probability)
if(user) //in this case either someone holding a spellbook or a badmin
to_chat(user, "You summoned [summon_type]!")
- message_admins("[key_name_admin(user, 1)] summoned [summon_type]!")
+ message_admins("[key_name_admin(user, TRUE)] summoned [summon_type]!")
log_game("[key_name(user)] summoned [summon_type]!")
if(summon_type == SUMMON_MAGIC)
diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm
index 9e56e94d74..be2c4f92bd 100644
--- a/code/modules/station_goals/bsa.dm
+++ b/code/modules/station_goals/bsa.dm
@@ -185,7 +185,7 @@
T.ex_act(EXPLODE_DEVASTATE)
point.Beam(get_target_turf(),icon_state="bsa_beam",time=50,maxdistance = world.maxx) //ZZZAP
- message_admins("[key_name_admin(user)] has launched an artillery strike.")
+ message_admins("[ADMIN_LOOKUPFLW(user)] has launched an artillery strike.")
explosion(bullseye,ex_power,ex_power*2,ex_power*4)
reload()
diff --git a/code/modules/surgery/advanced/brainwashing.dm b/code/modules/surgery/advanced/brainwashing.dm
index 0c67b8267d..03215aa6d6 100644
--- a/code/modules/surgery/advanced/brainwashing.dm
+++ b/code/modules/surgery/advanced/brainwashing.dm
@@ -46,7 +46,7 @@
user.visible_message("[user] successfully brainwashes [target]!", "You succeed in brainwashing [target].")
to_chat(target, "A new compulsion fills your mind... you feel forced to obey it!")
brainwash(target, objective)
- message_admins("[key_name_admin(user)] surgically brainwashed [key_name_admin(target)] with the objective '[objective]'.")
+ message_admins("[ADMIN_LOOKUPFLW(user)] surgically brainwashed [ADMIN_LOOKUPFLW(target)] with the objective '[objective]'.")
log_game("[key_name(user)] surgically brainwashed [key_name(target)] with the objective '[objective]'.")
return TRUE
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 10c825cb4a..2521037963 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -569,7 +569,7 @@
cooldown = COOLDOWN_NONE
if(message_admins)
- message_admins("[key_name_admin(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
+ message_admins("[ADMIN_LOOKUPFLW(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
log_game("[key_name(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
SSblackbox.record_feedback("tally", "voice_of_god", 1, log_message)
diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm
index 2738e18b19..f5f7bf1d9d 100644
--- a/code/modules/vending/boozeomat.dm
+++ b/code/modules/vending/boozeomat.dm
@@ -38,6 +38,18 @@
req_access_txt = "25"
refill_canister = /obj/item/vending_refill/boozeomat
+/obj/machinery/vending/boozeomat/maint
+ products = list(/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1,
+ /obj/item/reagent_containers/food/drinks/bottle/absinthe = 1,
+ /obj/item/reagent_containers/food/drinks/bottle/limejuice = 1,
+ /obj/item/reagent_containers/food/drinks/bottle/cream = 1,
+ /obj/item/reagent_containers/food/drinks/soda_cans/tonic = 1,
+ /obj/item/reagent_containers/food/drinks/drinkingglass = 10,
+ /obj/item/reagent_containers/food/drinks/ice = 3,
+ /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 6,
+ /obj/item/reagent_containers/food/drinks/flask = 1)
+ req_access_txt = "0"
+
/obj/item/vending_refill/boozeomat
machine_name = "Booze-O-Mat"
icon_state = "refill_booze"
diff --git a/html/changelogs/AutoChangeLog-pr-7022.yml b/html/changelogs/AutoChangeLog-pr-7022.yml
new file mode 100644
index 0000000000..7c9f43d2de
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7022.yml
@@ -0,0 +1,5 @@
+author: "iksyp"
+delete-after: True
+changes:
+ - bugfix: "Ever since the great emotion purge of 2558, people were able to work at top efficiency, even while starving to death. This is no longer the case, Nanotrasen Scientists say."
+ - admin: "Hunger slowdown only applies if mood is disabled in the config."
diff --git a/html/changelogs/AutoChangeLog-pr-7024.yml b/html/changelogs/AutoChangeLog-pr-7024.yml
new file mode 100644
index 0000000000..133c0feb43
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7024.yml
@@ -0,0 +1,4 @@
+author: "Denton"
+delete-after: True
+changes:
+ - bugfix: "The Pubbystation maint bar Booze-O-Mat now shows its contents correctly."
diff --git a/html/changelogs/AutoChangeLog-pr-7030.yml b/html/changelogs/AutoChangeLog-pr-7030.yml
new file mode 100644
index 0000000000..5f89cc6abb
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7030.yml
@@ -0,0 +1,4 @@
+author: "CitadelStationBot"
+delete-after: True
+changes:
+ - tweak: "Vehicle speed changes now happen immediately instead of on the next movement cycle"
diff --git a/html/changelogs/AutoChangeLog-pr-7031.yml b/html/changelogs/AutoChangeLog-pr-7031.yml
new file mode 100644
index 0000000000..cb65231c9e
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7031.yml
@@ -0,0 +1,4 @@
+author: "CitadelStationBot"
+delete-after: True
+changes:
+ - bugfix: "Picture-in-picture objects now are no longer overlapped by other certain objects"
diff --git a/html/changelogs/AutoChangeLog-pr-7039.yml b/html/changelogs/AutoChangeLog-pr-7039.yml
new file mode 100644
index 0000000000..4c5fce38d2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7039.yml
@@ -0,0 +1,4 @@
+author: "CitadelStationBot"
+delete-after: True
+changes:
+ - bugfix: "A pAI dying while in holoform no longer deletes the card, instead merely emptying it."
diff --git a/html/changelogs/AutoChangeLog-pr-7040.yml b/html/changelogs/AutoChangeLog-pr-7040.yml
new file mode 100644
index 0000000000..0da19e008e
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7040.yml
@@ -0,0 +1,4 @@
+author: "Denton"
+delete-after: True
+changes:
+ - tweak: "Added a warning to the shuttle purchase menu."
diff --git a/html/changelogs/AutoChangeLog-pr-7041.yml b/html/changelogs/AutoChangeLog-pr-7041.yml
new file mode 100644
index 0000000000..c6f54eb459
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7041.yml
@@ -0,0 +1,4 @@
+author: "CitadelStationBot"
+delete-after: True
+changes:
+ - bugfix: "The thermal sight benefits of lantern wisps no longer disappear if you change glasses."
diff --git a/html/changelogs/AutoChangeLog-pr-7042.yml b/html/changelogs/AutoChangeLog-pr-7042.yml
new file mode 100644
index 0000000000..2a5553f3e2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7042.yml
@@ -0,0 +1,4 @@
+author: "CitadelStationBot"
+delete-after: True
+changes:
+ - imageadd: "sandstone wall sprite for indestructible object"
diff --git a/html/changelogs/AutoChangeLog-pr-7045.yml b/html/changelogs/AutoChangeLog-pr-7045.yml
new file mode 100644
index 0000000000..65bd3e0c46
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7045.yml
@@ -0,0 +1,5 @@
+author: "Toriate"
+delete-after: True
+changes:
+ - rscadd: "It appears that ancient pieces of armor have wound up on the open market! These armors have degraded beyond usefulness. Grab one now in the loadout!"
+ - imageadd: "added flak jacket and M1 Helmet sprites"
diff --git a/html/changelogs/AutoChangeLog-pr-7059.yml b/html/changelogs/AutoChangeLog-pr-7059.yml
new file mode 100644
index 0000000000..ee666b26e1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7059.yml
@@ -0,0 +1,4 @@
+author: "XDTM"
+delete-after: True
+changes:
+ - bugfix: "Fixed anti-magic not working at all."
diff --git a/html/changelogs/AutoChangeLog-pr-7062.yml b/html/changelogs/AutoChangeLog-pr-7062.yml
new file mode 100644
index 0000000000..7a7917c2f3
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-7062.yml
@@ -0,0 +1,4 @@
+author: "CameronWoof"
+delete-after: True
+changes:
+ - tweak: "Quartermaster added to the list of changeling and traitor restricted jobs"
diff --git a/icons/mob/underwear.dmi b/icons/mob/underwear.dmi
index 483883b94c..385cd21516 100644
Binary files a/icons/mob/underwear.dmi and b/icons/mob/underwear.dmi differ
diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi
index c6f6798076..38d97e0440 100644
Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ
diff --git a/modular_citadel/code/game/machinery/cryopod.dm b/modular_citadel/code/game/machinery/cryopod.dm
index 87089d57fd..d4d982d5e6 100644
--- a/modular_citadel/code/game/machinery/cryopod.dm
+++ b/modular_citadel/code/game/machinery/cryopod.dm
@@ -165,7 +165,10 @@
)
// These items will NOT be preserved
var/list/do_not_preserve_items = list (
- /obj/item/mmi/posibrain
+ /obj/item/mmi/posibrain,
+ /obj/item/gun/energy/disabler/cyborg,
+ /obj/item/gun/energy/kinetic_accelerator/cyborg,
+ /obj/item/gun/energy/laser/cyborg
)
/obj/machinery/cryopod/Initialize()
diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm
index 7c72350a17..c70b6179b0 100644
--- a/modular_citadel/code/modules/client/loadout/__donator.dm
+++ b/modular_citadel/code/modules/client/loadout/__donator.dm
@@ -290,6 +290,12 @@ datum/gear/darksabresheath
path = /obj/item/custom/leechjar
ckeywhitelist = list("sgtryder")
+/datum/gear/darkarmor
+ name = "Dark Armor"
+ category = SLOT_IN_BACKPACK
+ path = /obj/item/clothing/suit/armor/vest/darkcarapace
+ ckeywhitelist = list("inferno707")
+
/datum/gear/devilwings
name = "Strange Wings"
category = SLOT_NECK
diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/head.dm
index 45bf7a3058..1ef203d538 100644
--- a/modular_citadel/code/modules/client/loadout/head.dm
+++ b/modular_citadel/code/modules/client/loadout/head.dm
@@ -48,6 +48,12 @@
category = SLOT_HEAD
path = /obj/item/clothing/head/that
+/datum/gear/flakhelm
+ name = "Flak Helmet"
+ category = SLOT_HEAD
+ path = /obj/item/clothing/head/flakhelm
+ cost = 2
+
//trek fancy Hats!
/datum/gear/trekcap
name = "Federation Officer's Cap"
diff --git a/modular_citadel/code/modules/client/loadout/suit.dm b/modular_citadel/code/modules/client/loadout/suit.dm
index 1e1610ae75..9d3a6b9a02 100644
--- a/modular_citadel/code/modules/client/loadout/suit.dm
+++ b/modular_citadel/code/modules/client/loadout/suit.dm
@@ -74,6 +74,12 @@
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/ianshirt
+/datum/gear/flakjack
+ name = "Flak Jacket"
+ category = SLOT_WEAR_SUIT
+ path = /obj/item/clothing/suit/flakjack
+ cost = 2
+
/datum/gear/trekds9_coat
name = "DS9 Overcoat (use uniform)"
category = SLOT_WEAR_SUIT
diff --git a/modular_citadel/code/modules/clothing/head/head.dm b/modular_citadel/code/modules/clothing/head/head.dm
new file mode 100644
index 0000000000..03b092d038
--- /dev/null
+++ b/modular_citadel/code/modules/clothing/head/head.dm
@@ -0,0 +1,14 @@
+/*/////////////////////////////////////////////////////////////////////////////////
+/////// ///////
+/////// Cit's exclusive hats, helmets, etc. go here ///////
+/////// ///////
+*//////////////////////////////////////////////////////////////////////////////////
+
+/obj/item/clothing/head/flakhelm
+ name = "flak helmet"
+ icon = 'modular_citadel/icons/obj/clothing/space_nam.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/clothing/space_nam.dmi'
+ icon_state = "m1helm"
+ item_state = "helmet"
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0.1, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = -1)
+ desc = "A dilapidated helmet used in ancient wars. This one is brittle and essentially useless. An ace of spades is tucked into the band around the outer shell."
\ No newline at end of file
diff --git a/modular_citadel/code/modules/clothing/suits/suits.dm b/modular_citadel/code/modules/clothing/suits/suits.dm
index 60b951bdb4..8d7de7be01 100644
--- a/modular_citadel/code/modules/clothing/suits/suits.dm
+++ b/modular_citadel/code/modules/clothing/suits/suits.dm
@@ -11,7 +11,7 @@
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
icon_state = "hostrench"
item_state = "hostrench"
-
+
/obj/item/clothing/suit/hooded/cloak/david
name = "red cloak"
icon_state = "goliath_cloak"
@@ -24,3 +24,15 @@
icon_state = "golhood"
desc = "conceal your face in shame with this nanotrasen brand hood"
flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
+
+/obj/item/clothing/suit/flakjack
+ name = "flak jacket"
+ desc = "A dilapidated jacket made of a supposedly bullet-proof material (Hint: It isn't.). Smells faintly of napalm."
+ icon = 'modular_citadel/icons/obj/clothing/space_nam.dmi'
+ alternate_worn_icon = 'modular_citadel/icons/mob/clothing/space_nam.dmi'
+ icon_state = "flakjack"
+ item_state = "redtag"
+ blood_overlay_type = "armor"
+ body_parts_covered = CHEST
+ resistance_flags = NONE
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = -5, "acid" = -15) //nylon sucks against acid
\ No newline at end of file
diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm
index 8c18755c82..82d5865a64 100644
--- a/modular_citadel/code/modules/custom_loadout/custom_items.dm
+++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm
@@ -328,6 +328,18 @@
/obj/item/toy/sword/darksabre
))
+/obj/item/clothing/suit/armor/vest/darkcarapace
+ name = "Dark Armor"
+ desc = "A dark, non-functional piece of armor sporting a red and black finish."
+ icon = 'icons/obj/custom.dmi'
+ icon_override = 'icons/mob/custom_w.dmi'
+ icon_state = "darkcarapace"
+ item_state = "darkcarapace"
+ blood_overlay_type = "armor"
+ dog_fashion = /datum/dog_fashion/back
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+
+
/obj/item/clothing/neck/cloak/green
name = "Generic Green Cloak"
desc = "This cloak doesn't seem too special."
diff --git a/modular_citadel/icons/mob/clothing/space_nam.dmi b/modular_citadel/icons/mob/clothing/space_nam.dmi
new file mode 100644
index 0000000000..05eb00a346
Binary files /dev/null and b/modular_citadel/icons/mob/clothing/space_nam.dmi differ
diff --git a/modular_citadel/icons/obj/clothing/space_nam.dmi b/modular_citadel/icons/obj/clothing/space_nam.dmi
new file mode 100644
index 0000000000..79e1bd6d77
Binary files /dev/null and b/modular_citadel/icons/obj/clothing/space_nam.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index b895f951bb..527db71b8c 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -560,7 +560,6 @@
#include "code\game\machinery\mass_driver.dm"
#include "code\game\machinery\navbeacon.dm"
#include "code\game\machinery\newscaster.dm"
-#include "code\game\machinery\overview.dm"
#include "code\game\machinery\PDApainter.dm"
#include "code\game\machinery\quantum_pad.dm"
#include "code\game\machinery\recharger.dm"
@@ -2774,6 +2773,7 @@
#include "modular_citadel\code\modules\client\verbs\who.dm"
#include "modular_citadel\code\modules\clothing\clothing.dm"
#include "modular_citadel\code\modules\clothing\glasses\phantomthief.dm"
+#include "modular_citadel\code\modules\clothing\head\head.dm"
#include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm"
#include "modular_citadel\code\modules\clothing\suits\polychromic_cloaks.dm"
#include "modular_citadel\code\modules\clothing\suits\suits.dm"