moves abstract_type up to datum, spawners wont spawn them (#92909)

## About The Pull Request
moves all implementations (im aware of) for "Im a parent type dont spawn
me please" to the datum layer to standardized behavior
adds a standerized proc for filtering out "bad" items that we dont want
spawning. applies to it the subtype vendor, gifts, and a new spawner and
mystery box for a random gun (neither playerfacing)
"port" of https://github.com/shiptest-ss13/Shiptest/pull/4621



https://github.com/user-attachments/assets/22f6f0b2-b44e-411a-b3dc-6b97dc0287aa

small warning: I dont have EVERY abstract type defined right now but,
ive done a good enough job for now. Im tired of data entry rn
## Why It's Good For The Game
standardizing behavior. Might be a micro hit to performance however

having this lets us not rely on icon state to determine whether
something is a parent type and makes it much easier to tell something is
a parent type (could be applied further to things like admin spawning
menus and things like that).

need feedback on if this is actually good for the game.
## Changelog
🆑
add: Soda cans show up in the silver slime drink table.
add: Examine tag for items that are not mean to show up ingame.
refactor: Standardizes how gifts rule out abstract types.
fix: gifts no longer check if something has an inhand, massively
expanding the list of potential items.
/🆑
This commit is contained in:
FalloutFalcon
2025-09-13 00:36:15 +02:00
committed by GitHub
parent 71c49cb4d1
commit d2f34e33be
165 changed files with 289 additions and 101 deletions
@@ -3,6 +3,7 @@
name = "ammo box (null_reference_exception)"
desc = "A box of ammo."
icon = 'icons/obj/weapons/guns/ammo.dmi'
abstract_type = /obj/item/ammo_box
obj_flags = CONDUCTS_ELECTRICITY
slot_flags = ITEM_SLOT_BELT
inhand_icon_state = "syringe_kit"
@@ -258,6 +259,7 @@
/obj/item/ammo_box/magazine
name = "A magazine (what?)"
desc = "A magazine of rounds, they look like error signs... this should probably be reported somewhere."
abstract_type = /obj/item/ammo_box/magazine
ammo_box_multiload = AMMO_BOX_MULTILOAD_IN // so you can't use a magazine like a bootleg speedloader
drop_sound = 'sound/items/handling/gun/ballistics/magazine/magazine_drop1.ogg'
pickup_sound = 'sound/items/handling/gun/ballistics/magazine/magazine_pickup1.ogg'
@@ -1,6 +1,7 @@
/obj/item/ammo_box/magazine/toy
name = "foam force META magazine"
desc = "A magazine specifically designed for foam force \"firearms\". Probably not great for actually killing your fellow spaceman."
abstract_type = /obj/item/ammo_box/magazine/toy
ammo_type = /obj/item/ammo_casing/foam_dart
caliber = CALIBER_FOAM
@@ -1,5 +1,7 @@
/obj/item/ammo_box/magazine/internal
desc = "Oh god, this shouldn't be here"
abstract_type = /obj/item/ammo_box/magazine/internal
spawn_blacklisted = TRUE
obj_flags = CONDUCTS_ELECTRICITY
item_flags = ABSTRACT