Files
Bubberstation/code/game/objects/effects/effects.dm
SkyratBot 5563e27f14 [MIRROR] Shuttle gibbing code improvements (#26814)
* Shuttle gibbing code improvements (#81726)

## About The Pull Request

Adds a resistance flag, `SHUTTLE_CRUSH_PROOF`, adds it to the existing
things that have it, and adds it to the immortality spectres.

## Why It's Good For The Game

Gets rid of some hardcoded checks, making it easier for future code (or
admins) to make things immune to shuttle crushing.

Also makes it so immortality spectres are immune to being shuttle
crushed, as that kinda ruins the whole "immortality" thing...

## Changelog
🆑
refactor: Improved shuttle gibbing code, adding a new resistance flag,
`SHUTTLE_CRUSH_PROOF`.
fix: Immortality revival spectres can no longer be crushed by shuttles.
add: The ghost of Poly can no longer be shuttle-crushed, nor can
anything incorporeal.
/🆑

Co-authored-by: san7890 <the@ san7890.com>

* Shuttle gibbing code improvements

---------

Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: san7890 <the@ san7890.com>
2024-03-09 14:25:05 -05:00

67 lines
1.8 KiB
Plaintext

//objects in /obj/effect should never be things that are attackable, use obj/structure instead.
//Effects are mostly temporary visual effects like sparks, smoke, as well as decals, etc...
/obj/effect
icon = 'icons/effects/effects.dmi'
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
move_resist = INFINITY
obj_flags = NONE
blocks_emissive = EMISSIVE_BLOCK_GENERIC
uses_integrity = FALSE
/obj/effect/attackby(obj/item/weapon, mob/user, params)
if(SEND_SIGNAL(weapon, COMSIG_ITEM_ATTACK_EFFECT, src, user, params) & COMPONENT_NO_AFTERATTACK)
return TRUE
// I'm not sure why these are snowflaked to early return but they are
if(istype(weapon, /obj/item/mop) || istype(weapon, /obj/item/soap))
return
return ..()
/obj/effect/attack_generic(mob/user, damage_amount, damage_type, damage_flag, sound_effect, armor_penetration)
return
/obj/effect/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
return
/obj/effect/fire_act(exposed_temperature, exposed_volume)
return
/obj/effect/acid_act()
return FALSE
/obj/effect/blob_act(obj/structure/blob/B)
return
/obj/effect/attack_hulk(mob/living/carbon/human/user)
return FALSE
/obj/effect/experience_pressure_difference()
return
/obj/effect/ex_act(severity, target)
return FALSE
/obj/effect/singularity_act()
qdel(src)
///The abstract effect ignores even more effects and is often typechecked for atoms that should truly not be fucked with.
/obj/effect/abstract
resistance_flags = parent_type::resistance_flags | SHUTTLE_CRUSH_PROOF
/obj/effect/abstract/singularity_pull()
return
/obj/effect/abstract/singularity_act()
return
/obj/effect/abstract/has_gravity(turf/gravity_turf)
return FALSE
/obj/effect/dummy/singularity_pull()
return
/obj/effect/dummy/singularity_act()
return