Effect grenade fix (#18762)

* effect sprayer grenade code unified

* fixed arg

* condensed

* start arg
This commit is contained in:
Will
2025-11-14 19:11:59 -05:00
committed by GitHub
parent a606e956ba
commit e4abb48b31
3 changed files with 18 additions and 27 deletions
@@ -20,15 +20,7 @@
return ..()
/obj/item/grenade/confetti/detonate() //Find a good confetti firework or pop sound effect later
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1, -3)
src.confetti_spread.set_up(10, 0, usr.loc)
spawn(0)
for(var/i = 1 to confetti_strength)
src.confetti_spread.start()
sleep(10)
qdel(src)
return
start_effect_sprayer(confetti_spread, confetti_strength, 'sound/effects/snap.ogg')
/obj/item/grenade/confetti/party_ball //Intended to be used only with the confetti cannon.
name = "party ball"
@@ -40,12 +32,4 @@
throwforce = 0 //Confetti cannon is only fun to shoot at people if it deals no damage.
/obj/item/grenade/confetti/party_ball/detonate() //Could condense this by making the sound a variable in the parent but I'm lazy.
playsound(src.loc, 'sound/effects/confetti_ball.ogg', 50, 1, -3)
src.confetti_spread.set_up(10, 0, usr.loc)
spawn(0)
for(var/i = 1 to confetti_strength)
src.confetti_spread.start()
sleep(10)
qdel(src)
return
start_effect_sprayer(confetti_spread, confetti_strength, 'sound/effects/confetti_ball.ogg')
@@ -116,3 +116,18 @@
/obj/item/grenade/vendor_action(var/obj/machinery/vending/V)
activate(V)
/obj/item/grenade/proc/start_effect_sprayer(var/datum/effect/effect/system/spraying, duration, sound_play, start_data = null)
playsound(loc, sound_play, 50, 1, -3)
spraying.set_up(10, 0, loc)
effect_spraying(spraying, duration, start_data)
/obj/item/grenade/proc/effect_spraying(var/datum/effect/effect/system/spraying, duration, start_data)
SHOULD_NOT_OVERRIDE(TRUE)
PRIVATE_PROC(TRUE)
spraying.start(start_data)
if(duration > 0)
addtimer(CALLBACK(src, PROC_REF(effect_spraying), spraying, --duration), 1 SECOND, TIMER_DELETE_ME)
return
qdel(src)
@@ -22,15 +22,7 @@
return ..()
/obj/item/grenade/smokebomb/detonate()
playsound(src, 'sound/effects/smoke.ogg', 50, 1, -3)
src.smoke.set_up(10, 0, usr.loc)
spawn(0)
for(var/i = 1 to smoke_strength)
src.smoke.start(smoke_color)
sleep(10)
qdel(src)
return
start_effect_sprayer(smoke, smoke_strength, 'sound/effects/smoke.ogg', smoke_color)
/obj/item/grenade/smokebomb/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I,/obj/item/multitool))