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)