From 6c3eef2b649ad2ebf023cb8c767bc30f74b32fc6 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Fri, 15 Nov 2019 03:24:52 -0500 Subject: [PATCH] [s] Fixes IED timer exploit (#47774) --- code/game/objects/items/grenades/ghettobomb.dm | 3 +++ code/game/objects/items/grenades/grenade.dm | 13 +++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items/grenades/ghettobomb.dm b/code/game/objects/items/grenades/ghettobomb.dm index 2d3d5e69b68..1295fe56f32 100644 --- a/code/game/objects/items/grenades/ghettobomb.dm +++ b/code/game/objects/items/grenades/ghettobomb.dm @@ -55,6 +55,9 @@ explosion(src.loc,-1,-1,2, flame_range = 4) // small explosion, plus a very large fireball. qdel(src) +/obj/item/grenade/iedcasing/change_det_time() + return //always be random. + /obj/item/grenade/iedcasing/examine(mob/user) . = ..() . += "You can't tell when it will explode!" diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index 47beefd83d9..4871a90f1ee 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -87,18 +87,19 @@ if(W.tool_behaviour == TOOL_MULTITOOL) var/newtime = text2num(stripped_input(user, "Please enter a new detonation time", name)) if (newtime != null && user.canUseTopic(src, BE_CLOSE)) - change_det_time(newtime) - to_chat(user, "You modify the time delay. It's set for [DisplayTimeText(det_time)].") - if (round(newtime * 10) != det_time) - to_chat(user, "The new value is out of bounds. The lowest possible time is 3 seconds and highest is 5 seconds. Instant detonations are also possible.") + if(change_det_time(newtime)) + to_chat(user, "You modify the time delay. It's set for [DisplayTimeText(det_time)].") + if (round(newtime * 10) != det_time) + to_chat(user, "The new value is out of bounds. The lowest possible time is 3 seconds and highest is 5 seconds. Instant detonations are also possible.") return else if(W.tool_behaviour == TOOL_SCREWDRIVER) - change_det_time() - to_chat(user, "You modify the time delay. It's set for [DisplayTimeText(det_time)].") + if(change_det_time()) + to_chat(user, "You modify the time delay. It's set for [DisplayTimeText(det_time)].") else return ..() /obj/item/grenade/proc/change_det_time(time) //Time uses real time. + . = TRUE if(time != null) if(time < 3) time = 3