diff --git a/code/defines/procs/gamehelpers.dm b/code/defines/procs/gamehelpers.dm index 59a9a636f3e..c182249a242 100644 --- a/code/defines/procs/gamehelpers.dm +++ b/code/defines/procs/gamehelpers.dm @@ -267,4 +267,10 @@ proc/isInSight(var/atom/A, var/atom/B) if(dx > 0) return get_step(start, WEST) else - return get_step(start, EAST) \ No newline at end of file + return get_step(start, EAST) + +/proc/get_mob_by_key(var/key) + for(var/mob/M in mob_list) + if(M.ckey == lowertext(key)) + return M + return null diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index a7470a6fab9..51bd7dee36e 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -1,6 +1,7 @@ /mob/proc/rightandwrong() + message_admins("[key_name_admin(usr, 1)] summoned guns!") for(var/mob/living/carbon/human/H in player_list) if(H.stat == 2 || !(H.client)) continue if(is_special_character(H)) continue diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 23ee3d3f6aa..7e0eda9e342 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -441,11 +441,6 @@ steam.start() -- spawns the effect cardinals = c carry.copy_to(chemholder, carry.total_volume) - /* - if((src.reagents.has_reagent("pacid")) || (src.reagents.has_reagent("lube"))) // Messages admins if someone sprays polyacid or space lube from a Cleaner bottle. - message_admins("[key_name_admin(user)] fired Polyacid/Space lube from a Cleaner bottle.") // Polymorph - log_game("[key_name(user)] fired Polyacid/Space lube from a Cleaner bottle.") -*/ if(istype(loca, /turf/)) location = loca @@ -454,12 +449,26 @@ steam.start() -- spawns the effect if(direct) direction = direct + var/contained = "" + for(var/reagent in carry.reagent_list) + contained += " [reagent] " + if(contained) + contained = "\[[contained]\]" + var/area/A = get_area(location) + + var/where = "[A.name] | [location.x], [location.y]" + var/whereLink = "[where]" + if(carry.my_atom.fingerprintslast) - message_admins("A chemical smoke reaction has taken place in ([location.x], [location.y]). Last associated key is [carry.my_atom.fingerprintslast].") - log_game("A chemical smoke reaction has taken place in ([location.x], [location.y]). Last associated key is [carry.my_atom.fingerprintslast].") + var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast) + var/more = "" + if(M) + more = "(?)" + message_admins("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", 0, 1) + log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].") else - message_admins("A chemical smoke reaction has taken place in ([location.x], [location.y]). No associated key.") - log_game("A chemical smoke reaction has taken place in ([location.x], [location.y]). No associated key.") + message_admins("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", 0, 1) + log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.") start() var/i = 0 diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 05705c3a357..89f98691793 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -6,7 +6,7 @@ var/obj/item/weapon/tank/tank_one var/obj/item/weapon/tank/tank_two var/obj/item/device/attached_device - var/mob/attacher = "Unknown" + var/mob/attacher = null var/valve_open = 0 var/toggle = 1 @@ -52,7 +52,7 @@ bombers += "[key_name(user)] attached a [item] to a transfer valve." message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.") log_game("[key_name_admin(user)] attached a [item] to a transfer valve.") - attacher = key_name(user) + attacher = user return @@ -156,10 +156,28 @@ if(valve_open==0 && (tank_one && tank_two)) valve_open = 1 var/turf/bombturf = get_turf(src) - var/bombarea = bombturf.loc.name - var/log_str = "Bomb valve opened in [bombarea] with [attached_device ? attached_device : "no device"] attacher: [attacher]. Last touched by: [src.fingerprintslast]" + var/area/A = get_area(bombturf) + + var/attacher_name = "" + if(!attacher) + attacher_name = "Unknown" + else + attacher_name = "[attacher.name]([attacher.ckey])" + + var/log_str = "Bomb valve opened in [A.name] " + log_str += "with [attached_device ? attached_device : "no device"] attacher: [attacher_name]" + + if(attacher) + log_str += "(?)" + + var/mob/mob = get_mob_by_key(src.fingerprintslast) + var/last_touch_info = "" + if(mob) + last_touch_info = "(?)" + + log_str += " Last touched by: [src.fingerprintslast][last_touch_info]" bombers += log_str - message_admins(log_str) + message_admins(log_str, 0, 1) log_game(log_str) merge_gases() spawn(20) // In case one tank bursts diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 17289687a01..2c2f7fa40a0 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -1217,6 +1217,25 @@ var/global/floorIsLava = 0 sleep(2) C.jumptomob(M) + if (href_list["adminplayerobservecoodjump"]) + + var/x = text2num(href_list["X"]) + var/y = text2num(href_list["Y"]) + var/z = text2num(href_list["Z"]) + + if(src && src.owner) + var/client/C + if(istype(src.owner,/client)) + C = src.owner + else if(ismob(src.owner)) + var/mob/MO = src.owner + C = MO.client + if(C) + if(state == 1) + C.admin_ghost() + sleep(2) + C.jumptocoord(x, y, z) + if (href_list["adminchecklaws"]) if(src && src.owner) output_ai_laws() @@ -2110,16 +2129,17 @@ var/global/floorIsLava = 0 spawn(0) for(var/i = i, i < length, i++) // 180 = 3 minutes - for(var/mob/living/carbon/L in living_mob_list) - if(istype(L.loc, /turf/simulated/floor)) // Are they on LAVA?! - var/turf/simulated/floor/F = L.loc - var/safe = 0 - for(var/obj/structure/O in F.contents) - if(O.level > F.level && !istype(O, /obj/structure/window)) // Something to stand on and it isn't under the floor! - safe = 1 - break - if(!safe) - L.adjustFireLoss(damage) + if(damage) + for(var/mob/living/carbon/L in living_mob_list) + if(istype(L.loc, /turf/simulated/floor)) // Are they on LAVA?! + var/turf/simulated/floor/F = L.loc + var/safe = 0 + for(var/obj/structure/O in F.contents) + if(O.level > F.level && !istype(O, /obj/structure/window)) // Something to stand on and it isn't under the floor! + safe = 1 + break + if(!safe) + L.adjustFireLoss(damage) sleep(10) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index a37450941fb..edc7516f86e 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -502,6 +502,9 @@ var/global/list/uneatable = list( continue if(cult_nh_mind.current.stat) continue + var/turf/pos = get_turf(cult_nh_mind.current) + if(pos.z != src.z) + continue cultists += cult_nh_mind.current if(cultists.len) acquire(pick(cultists)) @@ -510,6 +513,9 @@ var/global/list/uneatable = list( for(var/mob/living/carbon/human/food in living_mob_list) if(food.stat) continue + var/turf/pos = get_turf(food) + if(pos.z != src.z) + continue cultists += food if(cultists.len) acquire(pick(cultists)) @@ -518,6 +524,9 @@ var/global/list/uneatable = list( for(var/mob/dead/observer/ghost in player_list) if(!ghost.client) continue + var/turf/pos = get_turf(ghost) + if(pos.z != src.z) + continue cultists += ghost if(cultists.len) acquire(pick(cultists))