What if meteorslugs were mini cannonballs (#71137)

## About The Pull Request

Meteorslug shells fire effectively mini cannonballs. They're not as
strong, but they tear through everything they shoot, including walls and
airlocks. They're not as lethal as the real deal or go nearly as far
(range of 7, not even a screens length), but they are still pretty
destructive. They don't fling people, but they could potentially barrel
over several people, which I think is a good trade-off.

Meteorslugs need gunpowder (for a bigger shot) and rum (yarr) to
construct.

## Why It's Good For The Game

Only through sleep deprivation do I get such diabolical ideas.

Also, the original functionality wasn't very interesting except for
like, maybe a few niche silly things, but the real value was using them
to get into places. This version still definitely does that. But it's
_cooler_.

(The object displacement was pretty jank and I think this accomplishes a
very similar effect without actively harming why people would look to
use meteorslugs)

## Changelog
🆑
balance: Meteorslugs are now miniature cannonballs. They also need more
gunpowder and rum to be constructed.
/🆑
This commit is contained in:
necromanceranne
2022-11-21 21:03:26 -08:00
committed by GitHub
parent 27f597e9f9
commit 87f5f2ecfa
5 changed files with 32 additions and 25 deletions
@@ -483,6 +483,8 @@
result = /obj/item/ammo_casing/shotgun/meteorslug
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
/obj/item/rcd_ammo = 1,
/datum/reagent/gunpowder = 10,
/datum/reagent/consumable/ethanol/rum = 10,
/obj/item/stock_parts/manipulator = 2)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 0.5 SECONDS
@@ -58,7 +58,7 @@
name = "meteorslug shell"
desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired."
icon_state = "mshell"
projectile_type = /obj/projectile/bullet/shotgun_meteorslug
projectile_type = /obj/projectile/bullet/cannonball/meteorslug
/obj/item/ammo_casing/shotgun/pulseslug
name = "pulse slug"
@@ -11,16 +11,28 @@
embedding = null
hitsound = 'sound/effects/meteorimpact.ogg'
hitsound_wall = 'sound/weapons/sonic_jackhammer.ogg'
/// If our cannonball hits something, it reduces the damage by this value.
var/damage_decrease_on_hit = 10
/// This is the cutoff point of our cannonball, so that it stops piercing past this value.
var/stop_piercing_threshold = 40
/// This is the damage value we do to objects on hit. Usually, more than the actual projectile damage
var/object_damage = 80
/// Whether or not our cannonball loses object damage upon hitting an object.
var/object_damage_decreases = FALSE
/// How much our object damage decreases on hit, similar to normal damage.
var/object_damage_decrease_on_hit = 0
/obj/projectile/bullet/cannonball/on_hit(atom/target, blocked = FALSE)
damage -= 10
if(damage < 40)
damage -= damage_decrease_on_hit
if(object_damage_decreases)
object_damage -= min(damage, object_damage_decrease_on_hit)
if(damage < stop_piercing_threshold)
projectile_piercing = NONE //so it finishes its rampage
if(blocked == 100)
return ..()
if(isobj(target))
var/obj/hit_object = target
hit_object.take_damage(80, BRUTE, BULLET, FALSE)
hit_object.take_damage(object_damage, BRUTE, BULLET, FALSE)
else if(isclosedturf(target))
damage -= max(damage - 30, 10) //lose extra momentum from busting through a wall
if(!isindestructiblewall(target))
@@ -62,3 +74,16 @@
name = "trashball"
icon_state = "trashball"
damage = 90 //better than the biggest one but no explosion, so kinda just a worse normal cannonball
/obj/projectile/bullet/cannonball/meteorslug
name = "meteorslug"
icon = 'icons/obj/meteor.dmi'
icon_state = "small"
damage = 40 //REALLY not as bad as a real cannonball but they'll fucking hurt
paralyze = 1 SECONDS //The original stunned, okay?
knockdown = 8 SECONDS
stutter = null
stop_piercing_threshold = 10
object_damage_decreases = TRUE
object_damage_decrease_on_hit = 40
range = 7 //let's keep it a bit sane, okay?
@@ -49,26 +49,6 @@
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, force = MOVE_FORCE_EXTREMELY_STRONG)
/obj/projectile/bullet/shotgun_meteorslug/Initialize(mapload)
. = ..()
SpinAnimation()
/obj/projectile/bullet/shotgun_frag12
name ="frag12 slug"
icon_state = "pellet"
+1 -1
View File
@@ -254,7 +254,7 @@
/datum/uplink_item/ammo/shotgun/meteor
name = "12g Meteorslug Shells"
desc = "An alternative 8-round meteorslug magazine for use in the Bulldog shotgun. \
Great for blasting airlocks off their frames and knocking down enemies."
Great for blasting holes into the hull and knocking down enemies."
item = /obj/item/ammo_box/magazine/m12g/meteor
purchasable_from = UPLINK_NUKE_OPS