mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 22:50:26 +01:00
Adds Rocket Backblast (#55681)
This PR adds the backblast element, which when attached to a gun, creates giant plumes of fire when said gun is fired. The PM9 rocket launcher that nuke ops can buy kinda sucks and even a direct hit with the standard rockets loaded isn't enough to guarantee a one-hit crit on a direct hit against an armored opponent, which sucks for how much you pay for it. In that vein, I've also buffed the standard rockets a bit, they now do 50 brute up from 30 on a direct hit, and they create flames on their explosion. Also makes a tweak to /proc/get_turf_in_angle(), since tile coordinates start at 1,1 instead of 0,0 that proc is now clamped to min 1,1 rather than 0,0
This commit is contained in:
@@ -139,19 +139,19 @@
|
||||
* * O- Our parent, the thing making the shrapnel obviously (grenade or landmine)
|
||||
* * punishable_triggerer- For grenade lances or people who step on the landmines (if we shred the triggerer), we spawn extra shrapnel for them in addition to the normal spread
|
||||
*/
|
||||
/datum/component/pellet_cloud/proc/create_blast_pellets(obj/O, mob/living/punishable_triggerer)
|
||||
SIGNAL_HANDLER_DOES_SLEEP
|
||||
/datum/component/pellet_cloud/proc/create_blast_pellets(obj/O, mob/living/triggerer)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
var/atom/A = parent
|
||||
|
||||
if(isgrenade(parent)) // handle_martyrs can reduce the radius and thus the number of pellets we produce if someone dives on top of a frag grenade
|
||||
handle_martyrs(punishable_triggerer) // note that we can modify radius in this proc
|
||||
INVOKE_ASYNC(src, .proc/handle_martyrs, triggerer) // note that we can modify radius in this proc
|
||||
else if(islandmine(parent))
|
||||
var/obj/effect/mine/shrapnel/triggered_mine = parent
|
||||
if(triggered_mine.shred_triggerer && istype(punishable_triggerer)) // free shrapnel for the idiot who stepped on it if we're a mine that shreds the triggerer
|
||||
if(triggered_mine.shred_triggerer && istype(triggerer)) // free shrapnel for the idiot who stepped on it if we're a mine that shreds the triggerer
|
||||
pellet_delta += radius // so they don't count against the later total
|
||||
for(var/i in 1 to radius)
|
||||
pew(punishable_triggerer, TRUE)
|
||||
INVOKE_ASYNC(src, .proc/pew, triggerer, TRUE)
|
||||
|
||||
if(radius < 1)
|
||||
return
|
||||
@@ -161,7 +161,7 @@
|
||||
|
||||
for(var/T in all_the_turfs_were_gonna_lacerate)
|
||||
var/turf/shootat_turf = T
|
||||
pew(shootat_turf)
|
||||
INVOKE_ASYNC(src, .proc/pew, shootat_turf)
|
||||
|
||||
/**
|
||||
* handle_martyrs() is used for grenades that shoot shrapnel to check if anyone threw themselves/were thrown on top of the grenade, thus absorbing a good chunk of the shrapnel
|
||||
|
||||
Reference in New Issue
Block a user