mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-23 08:02:20 +00:00
## About The Pull Request
- Juggernaut and Rust Walker projectiles were subtyped off of magic,
which is `nodamage`.
- The juggernaut actually had a copy+paste error with their type
`on_hit` which caused none of their special effects on hit ("relative
patching catches this")
- Then I realized projectiles have this var `nodamage` which is, for all
intents and purposes, just `damage > 0`. it's not checked for pacifism,
it's just that. This is dumb. So very dumb, so I removed it.
- There are, however, a few situations which used it in a unique way,
such as the blast wave cannon. This is why I replaced it with a proc,
`is_hostile_projectile`, for certain situations to actually find out if
the projectile is damaging. Projectiles can override this on a per type
basis by default, damaging projectiles = hostile.
- This has a chance to break some things, but I ... kinda doubt it will.
Fixes #73756
## Why It's Good For The Game
Projectiles that act as they should, less dumb vars
## Changelog
🆑 Melbert
fix: Fixes Juggernaut / Rust Walker projectiles doing zero damage
fix: Fixes Juggernaut projectiles not doing bonus damage to nearby
structures
code: Removed projectile nodamage var, replaces it with just checking
for damage
/🆑
42 lines
1.1 KiB
Plaintext
42 lines
1.1 KiB
Plaintext
/obj/projectile/bullet/reusable/foam_dart
|
|
name = "foam dart"
|
|
desc = "I hope you're wearing eye protection."
|
|
damage = 0 // It's a damn toy.
|
|
damage_type = OXY
|
|
icon = 'icons/obj/weapons/guns/toy.dmi'
|
|
icon_state = "foamdart_proj"
|
|
base_icon_state = "foamdart_proj"
|
|
ammo_type = /obj/item/ammo_casing/caseless/foam_dart
|
|
range = 10
|
|
var/modified = FALSE
|
|
var/obj/item/pen/pen = null
|
|
|
|
/obj/projectile/bullet/reusable/foam_dart/handle_drop()
|
|
if(dropped)
|
|
return
|
|
var/turf/T = get_turf(src)
|
|
dropped = 1
|
|
var/obj/item/ammo_casing/caseless/foam_dart/newcasing = new ammo_type(T)
|
|
newcasing.modified = modified
|
|
var/obj/projectile/bullet/reusable/foam_dart/newdart = newcasing.loaded_projectile
|
|
newdart.modified = modified
|
|
newdart.damage_type = damage_type
|
|
if(pen)
|
|
newdart.pen = pen
|
|
pen.forceMove(newdart)
|
|
pen = null
|
|
newdart.damage = 5
|
|
newdart.update_appearance()
|
|
|
|
|
|
/obj/projectile/bullet/reusable/foam_dart/Destroy()
|
|
pen = null
|
|
return ..()
|
|
|
|
/obj/projectile/bullet/reusable/foam_dart/riot
|
|
name = "riot foam dart"
|
|
icon_state = "foamdart_riot_proj"
|
|
base_icon_state = "foamdart_riot_proj"
|
|
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
|
|
stamina = 25
|