diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 62acbe2d863e..06daebbcfeff 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -221,7 +221,7 @@ return TRUE else if(stage == READY && !nadeassembly) - det_time = det_time == 50 ? 30 : 50 //toggle between 30 and 50 + det_time = det_time == 5 SECONDS ? 3 SECONDS : 5 SECONDS // Toggle between 3 and 5 seconds. to_chat(user, "You modify the time delay. It's set for [det_time / 10] second\s.") return TRUE diff --git a/code/game/objects/items/weapons/grenades/clusterbuster.dm b/code/game/objects/items/weapons/grenades/clusterbuster.dm index 041fa0f20f0b..32922e07aff9 100644 --- a/code/game/objects/items/weapons/grenades/clusterbuster.dm +++ b/code/game/objects/items/weapons/grenades/clusterbuster.dm @@ -2,13 +2,17 @@ //Clusterbang //////////////////// /obj/item/grenade/clusterbuster - desc = "Use of this weapon may constitute a war crime in your area, consult your local captain." name = "clusterbang" + desc = "Use of this weapon may constitute a war crime in your area, consult your local captain." icon = 'icons/obj/grenade.dmi' icon_state = "clusterbang" item_state = "flashbang" var/payload = /obj/item/grenade/flashbang/cluster +/obj/item/grenade/clusterbuster/examine(mob/user) + . = ..() + . += "Upon detonating, this grenade will explode into a shower of bomblets that will all explode individually. Be ready to run away very fast." + /obj/item/grenade/clusterbuster/prime() update_mob() var/numspawned = rand(4,8) @@ -33,8 +37,8 @@ //Clusterbang segment ////////////////////// /obj/item/grenade/clusterbuster/segment - desc = "A smaller segment of a clusterbang. Better run." - name = "clusterbang segment" + name = "clusterbang bomblet" + desc = "A bomblet released by a clusterbang. Better run!" icon = 'icons/obj/grenade.dmi' icon_state = "clusterbang_segment" @@ -242,9 +246,11 @@ /obj/item/grenade/clusterbuster/mega_bang name = "For when stunlocking is just too short." + desc = "Simply owning one of these makes you an active war criminal in all Nian jurisdictions." payload = /obj/item/grenade/clusterbuster /obj/item/grenade/clusterbuster/mega_syndieminibomb name = "Mega SyndiWrath." + desc = "Proving once and for all that the maximum bomb explosion radius is just a suggestion." payload = /obj/item/grenade/clusterbuster/syndieminibomb diff --git a/code/game/objects/items/weapons/grenades/custom_grenades.dm b/code/game/objects/items/weapons/grenades/custom_grenades.dm index 7729b9f2fae4..26242373ee62 100644 --- a/code/game/objects/items/weapons/grenades/custom_grenades.dm +++ b/code/game/objects/items/weapons/grenades/custom_grenades.dm @@ -41,7 +41,7 @@ payload_name = "holy water" desc = "Then shalt thou count to three, no more, no less." stage = 2 - det_time = 30 + det_time = 3 SECONDS /obj/item/grenade/chem_grenade/holywater/Initialize(mapload) . = ..() diff --git a/code/game/objects/items/weapons/grenades/emgrenade.dm b/code/game/objects/items/weapons/grenades/emgrenade.dm index 8807391d52b1..d89f07c5b71a 100644 --- a/code/game/objects/items/weapons/grenades/emgrenade.dm +++ b/code/game/objects/items/weapons/grenades/emgrenade.dm @@ -1,6 +1,6 @@ /obj/item/grenade/empgrenade name = "classic EMP grenade" - desc = "It is designed to wreak havoc on electronic systems." + desc = "Upon detonation, releases a powerful EMP that will wreak havoc on electronic systems." icon_state = "emp" item_state = "emp" origin_tech = "magnets=3;combat=2" diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 148d86db3584..23d3a1e5fba8 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -1,5 +1,6 @@ /obj/item/grenade/flashbang name = "flashbang" + desc = "A less-than-lethal grenade designed for crowd control. Blinds all unprotected targets in range and disrupts their balance, sending them falling to the floor." icon_state = "flashbang" item_state = "flashbang" belt_icon = "flashbang" @@ -7,8 +8,10 @@ light_power = 10 light_color = LIGHT_COLOR_WHITE - var/light_time = 0.2 SECONDS // The duration the area is illuminated - var/range = 7 // The range in tiles of the flashbang + /// The duration the area is illuminated. + var/light_time = 0.2 SECONDS + /// The range in tiles of the flashbang. + var/range = 7 /obj/item/grenade/flashbang/prime() update_mob() diff --git a/code/game/objects/items/weapons/grenades/frag.dm b/code/game/objects/items/weapons/grenades/frag.dm index e93c923df9c7..ab6a3b8260bf 100644 --- a/code/game/objects/items/weapons/grenades/frag.dm +++ b/code/game/objects/items/weapons/grenades/frag.dm @@ -1,12 +1,14 @@ #define DEFAULT_SHRAPNEL_RANGE 5 /obj/item/grenade/frag - name = "frag grenade" - desc = "Fire in the hole." + name = "fragmentation grenade" + desc = "A grenade with a specially designed casing that will launch lethal fragments in all directions upon detonation. Fire in the hole!" icon_state = "frag" item_state = "grenade" origin_tech = "materials=3;magnets=4" + /// How much shrapnel the grenade will launch. var/shrapnel_contained = 20 + /// The type of projectile that will fired. var/embedded_type = /obj/item/projectile/bullet/shrapnel /obj/item/grenade/frag/prime() diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index 92310e2484c5..475a9e02aeec 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -2,7 +2,7 @@ /obj/item/grenade/iedcasing name = "improvised firebomb" - desc = "A weak, improvised incendiary device." + desc = "A sketchy improvised incendiary device." w_class = WEIGHT_CLASS_SMALL icon = 'icons/obj/grenade.dmi' icon_state = "improvised_grenade" @@ -14,8 +14,13 @@ active = FALSE det_time = 5 SECONDS display_timer = FALSE + modifiable_timer = FALSE var/list/times +/obj/item/grenade/iedcasing/examine(mob/user) + . = ..() + . += "You have no idea how long the fuze will last for until it explodes!" + /obj/item/grenade/iedcasing/Initialize(mapload) . = ..() overlays += "improvised_grenade_filled" @@ -60,7 +65,3 @@ update_mob() explosion(loc, -1, -1, 2, flame_range = 4) // small explosion, plus a very large fireball. qdel(src) - -/obj/item/grenade/iedcasing/examine(mob/user) - . = ..() - . += "You can't tell when it will explode!" diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index b76df931a0b4..b2e0fee35fdd 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -1,6 +1,6 @@ /obj/item/grenade name = "grenade" - desc = "A hand held grenade, with an adjustable timer." + desc = "A hand held grenade with an adjustable timer." w_class = WEIGHT_CLASS_SMALL icon = 'icons/obj/grenade.dmi' icon_state = "grenade" @@ -11,9 +11,29 @@ slot_flags = SLOT_FLAG_BELT resistance_flags = FLAMMABLE max_integrity = 40 + /// Has the pin been pulled? var/active = FALSE - var/det_time = 50 + /// Time between the pin being pulled and detonation. + var/det_time = 5 SECONDS + /// Does the grenade show the fuze's time setting on examine? var/display_timer = TRUE + /// Can the grenade's fuze time be changed? + var/modifiable_timer = TRUE + +/obj/item/grenade/examine(mob/user) + . = ..() + if(!display_timer) + return + + if(det_time > 1) + . += "The fuze is set to [det_time / 10] second\s." + else + . += "[src] is set for instant detonation." + + if(modifiable_timer) + . += "Use a screwdriver to modify the time on the fuze." + else + . += "The fuze's time cannot be modified." /obj/item/grenade/deconstruct(disassembled = TRUE) if(!disassembled) @@ -31,54 +51,30 @@ if(user) user.drop_item() prime() - return 0 - return 1 - - -/*/obj/item/grenade/afterattack(atom/target as mob|obj|turf|area, mob/user as mob) - if(istype(target, /obj/item/storage)) return ..() // Trying to put it in a full container - if(istype(target, /obj/item/gun/grenadelauncher)) return ..() - if((user.is_in_active_hand(src)) && (!active) && (clown_check(user)) && target.loc != src.loc) - to_chat(user, "You prime the [name]! [det_time/10] seconds!") - active = TRUE - icon_state = initial(icon_state) + "_active" - playsound(loc, 'sound/weapons/armbomb.ogg', 75, TRUE, -3) - spawn(det_time) - prime() - return - user.dir = get_dir(user, target) - user.drop_item() - var/t = (isturf(target) ? target : target.loc) - walk_towards(src, t, 3) - return*/ - - -/obj/item/grenade/examine(mob/user) - . = ..() - if(display_timer) - if(det_time > 1) - . += "The timer is set to [det_time/10] second\s." - else - . += "[src] is set for instant detonation." + return FALSE + return TRUE /obj/item/grenade/attack_self(mob/user as mob) - if(!active) - if(clown_check(user)) - to_chat(user, "You prime [src]! [det_time/10] seconds!") - active = TRUE - icon_state = initial(icon_state) + "_active" - add_fingerprint(user) - var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) - message_admins("[key_name_admin(usr)] has primed a [name] for detonation at [A.name] (JMP)") - log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])") - investigate_log("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])", INVESTIGATE_BOMB) - add_attack_logs(user, src, "has primed for detonation", ATKLOG_FEW) - if(iscarbon(user)) - var/mob/living/carbon/C = user - C.throw_mode_on() - spawn(det_time) - prime() + if(active) + return + if(!clown_check(user)) + return + + to_chat(user, "You prime [src]! [det_time / 10] seconds!") + active = TRUE + icon_state = initial(icon_state) + "_active" + add_fingerprint(user) + var/turf/bombturf = get_turf(src) + var/area/A = get_area(bombturf) + message_admins("[key_name_admin(user)] has primed a [name] for detonation at [A.name] (JMP)") + log_game("[key_name(user)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])") + investigate_log("[key_name(user)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])", INVESTIGATE_BOMB) + add_attack_logs(user, src, "has primed for detonation", ATKLOG_FEW) + if(iscarbon(user)) + var/mob/living/carbon/C = user + C.throw_mode_on() + spawn(det_time) + prime() /obj/item/grenade/proc/prime() return @@ -89,19 +85,22 @@ M.unEquip(src) /obj/item/grenade/screwdriver_act(mob/living/user, obj/item/I) + if(!modifiable_timer) + return + switch(det_time) - if(1) - det_time = 10 + if(1 DECISECONDS) + det_time = 1 SECONDS to_chat(user, "You set [src] for 1 second detonation time.") - if(10) - det_time = 30 + if(1 SECONDS) + det_time = 3 SECONDS to_chat(user, "You set [src] for 3 second detonation time.") - if(30) - det_time = 50 + if(3 SECONDS) + det_time = 5 SECONDS to_chat(user, "You set [src] for 5 second detonation time.") - if(50) - det_time = 1 - to_chat(user, "You set [src] for instant detonation.") + if(5 SECONDS) + det_time = 1 DECISECONDS + to_chat(user, "You set [src] for instant detonation.") add_fingerprint(user) return TRUE diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 854b921648b0..49908095d142 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -1,9 +1,10 @@ /obj/item/grenade/smokebomb - desc = "It is set to detonate in 2 seconds." name = "smoke bomb" + desc = "A grenade filled with chemical agents that will turn into a dense smoke when detonated, making it impossible to see through without specialised optics." icon = 'icons/obj/grenade.dmi' icon_state = "smoke" - det_time = 20 + det_time = 2 SECONDS + modifiable_timer = FALSE item_state = "smoke" slot_flags = SLOT_FLAG_BELT var/datum/effect_system/smoke_spread/bad/smoke diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm index 33a251640981..14973b096b2a 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm @@ -1,6 +1,6 @@ /obj/item/grenade/spawnergrenade - desc = "It is set to detonate in 5 seconds. It will unleash unleash an unspecified anomaly into the vicinity." name = "delivery grenade" + desc = "Upon detonation, this will unleash an unspecified anomaly into the vicinity." icon = 'icons/obj/grenade.dmi' icon_state = "delivery" item_state = "grenade" @@ -33,20 +33,24 @@ return /obj/item/grenade/spawnergrenade/manhacks - name = "manhack delivery grenade" + name = "viscerator delivery grenade" + desc = "This grenade contains 5 viscerators, tiny flying drones with lethally sharp blades. Upon detonation, they will be deployed and begin searching the area for targets." spawner_type = /mob/living/simple_animal/hostile/viscerator deliveryamt = 5 origin_tech = "materials=3;magnets=4;syndicate=3" /obj/item/grenade/spawnergrenade/spesscarp name = "carp delivery grenade" + desc = "This grenade contains 5 dehydrated space carp in a similar manner to dehydrated monkeys, which, upon detonation, \ + will be rehydrated by a small reservoir of water contained within the grenade. These space carp will then attack anything in sight." spawner_type = /mob/living/simple_animal/hostile/carp deliveryamt = 5 origin_tech = "materials=3;magnets=4;syndicate=3" /obj/item/grenade/spawnergrenade/feral_cats name = "feral cat delivery grenade" - desc = "This grenade contains 5 dehydrated feral cats in a similar manner to dehydrated monkeys, which, upon detonation, will be rehydrated by a small reservoir of water contained within the grenade. These cats will then attack anything in sight." + desc = "This grenade contains 5 dehydrated feral cats in a similar manner to dehydrated monkeys, which, upon detonation, \ + will be rehydrated by a small reservoir of water contained within the grenade. These cats will then attack anything in sight." spawner_type = /mob/living/simple_animal/hostile/feral_cat deliveryamt = 5 origin_tech = "materials=3;magnets=4;syndicate=3" diff --git a/code/game/objects/items/weapons/grenades/syndieminibomb.dm b/code/game/objects/items/weapons/grenades/syndieminibomb.dm index e2a779b9374a..3525dfcc99df 100644 --- a/code/game/objects/items/weapons/grenades/syndieminibomb.dm +++ b/code/game/objects/items/weapons/grenades/syndieminibomb.dm @@ -1,6 +1,6 @@ /obj/item/grenade/syndieminibomb - name = "syndicate minibomb" - desc = "A syndicate manufactured explosive used to sow destruction and chaos." + name = "\improper Syndicate minibomb" + desc = "A Syndicate-manufactured high-explosive grenade used to sow destruction and chaos." icon = 'icons/obj/grenade.dmi' icon_state = "syndicate" item_state = "grenade"