Files
Bubberstation/code/modules/projectiles/projectile/bullets/shotgun.dm
TemporalOroboros 9f598a9662 Makes the explosive compressor and blastcannon actually use the TTVs they're given + the explosion changes to support that. (#58015)
* Adds explosion SFX to the blastcannon and explosive compressor

- Extracts the explosion SFX and screenshake proc from the SSexplosions explosion handling proc and lets the explosive compressor and blastcannon use it.

* Miscellaneous changes

- Adds defines for the internal explosion arglist keys
- Reverses the values of the explosion severity defines
- Changes almost everything that uses `/proc/explosion` to use named arguments

- Removes a whole bunch of argname = 0 in explosion calls.

* Removes named callback arguments.

* Changes the explosion signals to just use the arguments list

Adds a simple framework to let objects respond to explosions occurring inside of them.

Changes a whole bunch of explosions to use the object being exploded as the origin of the explosion rather than the turf the object is on.

Makes the explosive compressor and blastcannon actually use the TTVs they are given.

Adds support for things responding to internal explosions.
Less snowflake code for the explosive compressor and blastcannon calculating bomb range.*
Less confusing explosion severity defines.
Less opaque explosion arguments

*does not guarantee that the solution to letting them actually use the TTV is any less snowflake.
2021-04-26 17:31:25 -07:00

125 lines
2.9 KiB
Plaintext

/obj/projectile/bullet/shotgun_slug
name = "12g shotgun slug"
damage = 50
sharpness = SHARP_POINTY
wound_bonus = 0
/obj/projectile/bullet/shotgun_slug/executioner
name = "executioner slug" // admin only, can dismember limbs
sharpness = SHARP_EDGED
wound_bonus = 80
/obj/projectile/bullet/shotgun_slug/pulverizer
name = "pulverizer slug" // admin only, can crush bones
sharpness = NONE
wound_bonus = 80
/obj/projectile/bullet/shotgun_beanbag
name = "beanbag slug"
damage = 10
stamina = 55
wound_bonus = 20
sharpness = NONE
embedding = null
/obj/projectile/bullet/incendiary/shotgun
name = "incendiary slug"
damage = 20
/obj/projectile/bullet/incendiary/shotgun/dragonsbreath
name = "dragonsbreath pellet"
damage = 5
/obj/projectile/bullet/shotgun_stunslug
name = "stunslug"
damage = 5
paralyze = 100
stutter = 5
jitter = 20
range = 7
icon_state = "spark"
color = "#FFFF00"
embedding = null
/obj/projectile/bullet/shotgun_meteorslug
name = "meteorslug"
icon = 'icons/obj/meteor.dmi'
icon_state = "dust"
damage = 30
paralyze = 15
knockdown = 80
hitsound = 'sound/effects/meteorimpact.ogg'
/obj/projectile/bullet/shotgun_meteorslug/on_hit(atom/target, blocked = FALSE)
. = ..()
if(ismovable(target))
var/atom/movable/M = target
var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src)))
M.safe_throw_at(throw_target, 3, 2)
/obj/projectile/bullet/shotgun_meteorslug/Initialize()
. = ..()
SpinAnimation()
/obj/projectile/bullet/shotgun_frag12
name ="frag12 slug"
damage = 15
paralyze = 10
/obj/projectile/bullet/shotgun_frag12/on_hit(atom/target, blocked = FALSE)
..()
explosion(target, devastation_range = -1, light_impact_range = 1)
return BULLET_ACT_HIT
/obj/projectile/bullet/pellet
var/tile_dropoff = 0.45
var/tile_dropoff_s = 0.5
/obj/projectile/bullet/pellet/shotgun_buckshot
name = "buckshot pellet"
damage = 7.5
wound_bonus = 5
bare_wound_bonus = 5
wound_falloff_tile = -2.5 // low damage + additional dropoff will already curb wounding potential anything past point blank
/obj/projectile/bullet/pellet/shotgun_rubbershot
name = "rubbershot pellet"
damage = 3
stamina = 11
sharpness = NONE
embedding = null
/obj/projectile/bullet/pellet/shotgun_incapacitate
name = "incapacitating pellet"
damage = 1
stamina = 6
embedding = null
/obj/projectile/bullet/pellet/Range()
..()
if(damage > 0)
damage -= tile_dropoff
if(stamina > 0)
stamina -= tile_dropoff_s
if(damage < 0 && stamina < 0)
qdel(src)
/obj/projectile/bullet/pellet/shotgun_improvised
tile_dropoff = 0.35 //Come on it does 6 damage don't be like that.
damage = 6
wound_bonus = 0
bare_wound_bonus = 7.5
/obj/projectile/bullet/pellet/shotgun_improvised/Initialize()
. = ..()
range = rand(1, 8)
/obj/projectile/bullet/pellet/shotgun_improvised/on_range()
do_sparks(1, TRUE, src)
..()
// Mech Scattershot
/obj/projectile/bullet/scattershot
damage = 24