diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 8db58102b3f..e6370055370 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1283,8 +1283,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits pod.damage = 40 pod.explosionSize = list(0,0,0,2) pod.effectStun = TRUE - if (isnull(target_path)) - alert("ERROR: NULL path given.") + if (isnull(target_path)) //The user pressed "Cancel" return if (target_path != "empty")//if you didn't type empty, we want to load the pod with a delivery var/delivery = text2path(target_path) @@ -1292,6 +1291,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits delivery = pick_closest_path(target_path) if(!delivery) alert("ERROR: Incorrect / improper path given.") + return new delivery(pod) new /obj/effect/DPtarget(get_turf(target), pod) if(ADMIN_PUNISHMENT_SUPPLYPOD) @@ -1306,17 +1306,20 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits plaunch.temp_pod.explosionSize = list(0,0,0,2) plaunch.temp_pod.effectStun = TRUE plaunch.ui_interact(usr) + return //We return here because punish_log() is handled by the centcom_podlauncher datum if(ADMIN_PUNISHMENT_MAZING) if(!puzzle_imprison(target)) to_chat(usr,"Imprisonment failed!") return - var/msg = "[key_name_admin(usr)] punished [key_name_admin(target)] with [punishment]." - message_admins(msg) - admin_ticket_log(target, msg) - log_admin("[key_name(usr)] punished [key_name(target)] with [punishment].") + punish_log(target, punishment) +/client/proc/punish_log(var/whom, var/punishment) + var/msg = "[key_name_admin(usr)] punished [key_name_admin(whom)] with [punishment]." + message_admins(msg) + admin_ticket_log(whom, msg) + log_admin("[key_name(usr)] punished [key_name(whom)] with [punishment].") /client/proc/trigger_centcom_recall() if(!check_rights(R_ADMIN)) diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm index 9acddf67ca3..7f21b36549c 100644 --- a/code/modules/cargo/centcom_podlauncher.dm +++ b/code/modules/cargo/centcom_podlauncher.dm @@ -32,7 +32,7 @@ var/effectAnnounce = TRUE var/numTurfs = 0 //Counts the number of turfs with things we can launch in the chosen bay (in the centcom map) var/launchCounter = 1 //Used with the "Ordered" launch mode (launchChoice = 1) to see what item is launched - var/specificTarget //Do we want to target a specific mob instead of where we click? Also used for smiting + var/atom/specificTarget //Do we want to target a specific mob instead of where we click? Also used for smiting var/list/orderedArea = list() //Contains an ordered list of turfs in an area (filled in the createOrderedArea() proc), read top-left to bottom-right. Used for the "ordered" launch mode (launchChoice = 1) var/list/acceptableTurfs = list() //Contians a list of turfs (in the "bay" area on centcom) that have items that can be launched. Taken from orderedArea var/list/launchList = list() //Contains whatever is going to be put in the supplypod and fired. Taken from acceptableTurfs @@ -412,13 +412,17 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm if(left_click) //When we left click: preLaunch() //Fill the acceptableTurfs list from the orderedArea list. Then, fill up the launchList list with items from the acceptableTurfs list based on the manner of launch (ordered, random, etc) if (!isnull(specificTarget)) - target = get_turf(specificTarget) //if we have a specific mob target, then always launch the pod at the turf of the mob + target = get_turf(specificTarget) //if we have a specific target, then always launch the pod at the turf of the target else if (target) target = get_turf(target) //Make sure we're aiming at a turf rather than an item or effect or something else return //if target is null and we don't have a specific target, cancel if (effectAnnounce) deadchat_broadcast("A special package is being launched at the station!", turf_target = target) + var/list/bouttaDie = list() + for (var/mob/living/M in target) + bouttaDie.Add(M) + supplypod_punish_log(bouttaDie) if (!effectBurst) //If we're not using burst mode, just launch normally. launch(target) else @@ -432,7 +436,6 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm else launch(target) //If we couldn't locate an adjacent turf, just launch at the normal target sleep(rand()*2) //looks cooler than them all appearing at once. Gives the impression of burst fire. - log_admin("Centcom Supplypod Launch: [key_name(user)] launched a supplypod in [AREACOORD(target)]") /datum/centcom_podlauncher/proc/refreshBay() //Called whenever the bay is switched, as well as wheneber a pod is launched orderedArea = createOrderedArea(bay) //Create an ordered list full of turfs form the bay @@ -518,4 +521,25 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm updateCursor(FALSE) //Make sure our moues cursor resets to default. False means we are not in launch mode qdel(temp_pod) //Delete the temp_pod qdel(selector) //Delete the selector effect - . = ..() \ No newline at end of file + . = ..() + +/datum/centcom_podlauncher/proc/supplypod_punish_log(var/list/whoDyin) + var/podString = effectBurst ? "5 pods" : "a pod" + var/whomString = "" + if (LAZYLEN(whoDyin)) + for (var/mob/living/M in whoDyin) + whomString += "[key_name(M)], " + + var/delayString = temp_pod.landingDelay == initial(temp_pod.landingDelay) ? "" : " Delay=[temp_pod.landingDelay*0.1]s" + var/damageString = temp_pod.damage == 0 ? "" : " Dmg=[temp_pod.damage]" + var/explosionString = "" + if (counterlist_sum(temp_pod.explosionSize) != 0) + explosionString = " Boom=|" + for (var/X in temp_pod.explosionSize) + explosionString += "[X]|" + + var/msg = "launched [podString][whomString].[delayString][damageString][explosionString]]" + message_admins("[key_name_admin(usr)] [msg] in [AREACOORD(specificTarget)].") + if (!isemptylist(whoDyin)) + for (var/mob/living/M in whoDyin) + admin_ticket_log(M, "[key_name_admin(usr)] [msg]") \ No newline at end of file diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm index f748be97de7..6296e8e95e4 100644 --- a/code/modules/cargo/supplypod.dm +++ b/code/modules/cargo/supplypod.dm @@ -127,7 +127,7 @@ M.gib() //After adjusting the fuck outta that brute loss we finish the job with some satisfying gibs M.adjustBruteLoss(damage) - if (B[1] || B[2] || B[3] || B[4]) //If the explosion list isn't all zeroes, call an explosion + if (counterlist_sum(explosionSize) != 0) //If the explosion list isn't all zeroes, call an explosion explosion(get_turf(src), B[1], B[2], B[3], flame_range = B[4], silent = effectQuiet, ignorecap = istype(src, /obj/structure/closet/supplypod/centcompod)) //less advanced equipment than bluespace pod, so larger explosion when landing else if (!effectQuiet) //If our explosion list IS all zeroes, we still make a nice explosion sound (unless the effectQuiet var is true) playsound(src, "explosion", landingSound ? 15 : 80, 1)