diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index 3ed3e521e4..5d4cb3319d 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -410,6 +410,16 @@ else result.forceMove(user.drop_location()) to_chat(user, "[TR.name] constructed.") + + if (istype(result, /obj/item/grenade/iedcasing) || istype(result, /obj/item/reagent_containers/food/drinks/bottle/molotov)) + var/client/client = user.client + if (CONFIG_GET(flag/use_exp_tracking) && client && client.get_exp_living(TRUE) < 480) // Player with less than 8 hours playtime is making an IED or molotov cocktail. + if(client.next_ied_grief_warning < world.time) + var/turf/T = get_turf(user) + client.next_ied_grief_warning = world.time + 15 MINUTES // Wait 15 minutes before alerting admins again + message_admins("ANTI-GRIEF: New player [ADMIN_LOOKUPFLW(user)] has crafted an IED or Molotov at [ADMIN_VERBOSEJMP(T)].") + client.crafted_ied = TRUE + else to_chat(user, "Construction failed[result]") busy = FALSE diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index df74fdcabf..fc777629e6 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -82,11 +82,11 @@ /obj/item/transfer_valve/on_attack_hand(mob/living/user)//Triggers mousetraps . = ..() - var/turf/T = get_turf(src) var/client/client = user.client if (CONFIG_GET(flag/use_exp_tracking) && client && client.get_exp_living(TRUE) < 480) // Player with less than 8 hours playtime has touched a bomb valve. if(client.next_valve_grief_warning < world.time) - client.next_valve_grief_warning = world.time + 9000 // Wait 15 minutes before alerting admins again + var/turf/T = get_turf(src) + client.next_valve_grief_warning = world.time + 15 MINUTES // Wait 15 minutes before alerting admins again message_admins("ANTI-GRIEF: New player [ADMIN_LOOKUPFLW(user)] touched \a [src] at [ADMIN_VERBOSEJMP(T)].") client.touched_transfer_valve = TRUE diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index c61302fec8..f39e54fcdb 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -343,11 +343,11 @@ ui = new(user, src, "Canister", name) ui.open() - var/turf/T = get_turf(src) var/client/client = user.client if (CONFIG_GET(flag/use_exp_tracking) && client && client.get_exp_living(TRUE) < 480) // Player with less than 8 hours playtime is interacting with this canister. if(client.next_canister_grief_warning < world.time) - client.next_canister_grief_warning = world.time + 9000 // Wait 15 minutes before alerting admins again + var/turf/T = get_turf(src) + client.next_canister_grief_warning = world.time + 15 MINUTES // Wait 15 minutes before alerting admins again message_admins("ANTI-GRIEF: New player [ADMIN_LOOKUPFLW(user)] has touched \a [src] at [ADMIN_VERBOSEJMP(T)].") client.touched_canister = TRUE diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index e5cfd18547..26052adfba 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -190,12 +190,12 @@ ui.set_autoupdate(FALSE) //to not ruin the immersion by constantly changing the fake chemicals ui.open() - var/turf/T = get_turf(src) var/client/client = user.client if (CONFIG_GET(flag/use_exp_tracking) && client && client.get_exp_living(TRUE) < 480) // Player with less than 8 hours playtime is using this machine. if(client.next_chem_grief_warning < world.time) if(!istype(src, /obj/machinery/chem_dispenser/drinks) && !istype(src, /obj/machinery/chem_dispenser/mutagen) && !istype(src, /obj/machinery/chem_dispenser/mutagensaltpeter) && !istype(src, /obj/machinery/chem_dispenser/abductor)) // These types aren't used for grief - client.next_chem_grief_warning = world.time + 9000 // Wait 15 minutes before alerting admins again + var/turf/T = get_turf(src) + client.next_chem_grief_warning = world.time + 15 MINUTES // Wait 15 minutes before alerting admins again message_admins("ANTI-GRIEF: New player [ADMIN_LOOKUPFLW(user)] used \a [src] at [ADMIN_VERBOSEJMP(T)].") client.used_chem_dispenser = TRUE diff --git a/modular_splurt/code/modules/admin/playtimes.dm b/modular_splurt/code/modules/admin/playtimes.dm index c5fb16e7b3..a5e547321d 100644 --- a/modular_splurt/code/modules/admin/playtimes.dm +++ b/modular_splurt/code/modules/admin/playtimes.dm @@ -3,9 +3,11 @@ var/next_valve_grief_warning = 0 var/next_chem_grief_warning = 0 var/next_canister_grief_warning = 0 + var/next_ied_grief_warning = 0 var/touched_transfer_valve = FALSE var/used_chem_dispenser = FALSE var/touched_canister = FALSE + var/crafted_ied = FALSE /client/proc/cmd_player_playtimes() set category = "Admin" @@ -41,9 +43,7 @@ client["ckey"] = C.ckey client["playtime"] = C.get_exp_living(TRUE) client["playtime_hours"] = C.get_exp_living() - client["warning_valve"] = C.touched_transfer_valve - client["warning_chem"] = C.used_chem_dispenser - client["warning_canister"] = C.touched_canister + client["flags"] = check_flags(C) var/name = C.ckey var/mob/M = C.mob @@ -62,6 +62,35 @@ data["clients"] = clients return data +/datum/player_playtime/proc/check_flags(client/C) + var/list/flags = list() + + if (C.touched_transfer_valve) + var/list/flag = list() + flag["icon"] = "bomb" + flag["tooltip"] = "This player touched a Transfer Valve." + flags += list(flag) + + if (C.used_chem_dispenser) + var/list/flag = list() + flag["icon"] = "flask" + flag["tooltip"] = "This player used a Chem Dispenser." + flags += list(flag) + + if (C.touched_canister) + var/list/flag = list() + flag["icon"] = "spray-can" + flag["tooltip"] = "This player touched a gas canister." + flags += list(flag) + + if (C.crafted_ied) + var/list/flag = list() + flag["icon"] = "hammer" + flag["tooltip"] = "This player crafted an IED." + flags += list(flag) + + return flags + /datum/player_playtime/ui_act(action, params) if(..()) return diff --git a/tgui/packages/tgui/interfaces/PlayerPlaytimes.js b/tgui/packages/tgui/interfaces/PlayerPlaytimes.js index 2bb1285f48..d1fca6ea7f 100644 --- a/tgui/packages/tgui/interfaces/PlayerPlaytimes.js +++ b/tgui/packages/tgui/interfaces/PlayerPlaytimes.js @@ -28,27 +28,15 @@ export const PlayerPlaytimes = (props, context) => { onClick={() => act('observe', { ckey: client.ckey, })} /> - {!!client.warning_valve && ( + + {client.flags.map(flag => (