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
@@ -1,4 +1,5 @@
/obj/item/antag_spawner
abstract_type = /obj/item/antag_spawner
throw_speed = 1
throw_range = 5
w_class = WEIGHT_CLASS_TINY
@@ -2,6 +2,7 @@
icon = 'icons/obj/antags/abductor.dmi'
lefthand_file = 'icons/mob/inhands/antag/abductor_lefthand.dmi'
righthand_file = 'icons/mob/inhands/antag/abductor_righthand.dmi'
abstract_type = /obj/item/abductor
/obj/item/proc/AbductorCheck(mob/user)
if (HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING))
@@ -3,6 +3,7 @@
*/
/datum/action/changeling
abstract_type = /datum/action/changeling
name = "Prototype Sting - Debug button, ahelp this"
background_icon_state = "bg_changeling"
overlay_icon_state = "bg_changeling_border"
@@ -11,6 +11,7 @@
//Parent to shields and blades because muh copypasted code.
/datum/action/changeling/weapon
abstract_type = /datum/action/changeling/weapon
name = "Organic Weapon"
desc = "Go tell a coder if you see this"
helptext = "Yell at Miauw and/or Perakp"
@@ -87,6 +88,7 @@
//Parent to space suits and armor.
/datum/action/changeling/suit
abstract_type = /datum/action/changeling/suit
name = "Organic Suit"
desc = "Go tell a coder if you see this"
helptext = "Yell at Miauw and/or Perakp"
@@ -9,6 +9,7 @@
/obj/item/clothing/glasses/changeling
name = "flesh"
spawn_blacklisted = TRUE
item_flags = DROPDEL
//ATTACK HAND IGNORING PARENT RETURN VALUE
@@ -24,6 +25,7 @@
/obj/item/clothing/under/changeling
name = "flesh"
spawn_blacklisted = TRUE
item_flags = DROPDEL
//ATTACK HAND IGNORING PARENT RETURN VALUE
@@ -39,6 +41,7 @@
/obj/item/clothing/suit/changeling
name = "flesh"
spawn_blacklisted = TRUE
allowed = list(/obj/item/changeling)
item_flags = DROPDEL
@@ -56,6 +59,7 @@
/obj/item/clothing/head/changeling
name = "flesh"
icon_state = null
spawn_blacklisted = TRUE
item_flags = DROPDEL
//ATTACK HAND IGNORING PARENT RETURN VALUE
@@ -71,6 +75,7 @@
/obj/item/clothing/shoes/changeling
name = "flesh"
spawn_blacklisted = TRUE
item_flags = DROPDEL
//ATTACK HAND IGNORING PARENT RETURN VALUE
@@ -86,6 +91,7 @@
/obj/item/clothing/gloves/changeling
name = "flesh"
spawn_blacklisted = TRUE
item_flags = DROPDEL
//ATTACK HAND IGNORING PARENT RETURN VALUE
@@ -101,6 +107,7 @@
/obj/item/clothing/mask/changeling
name = "flesh"
spawn_blacklisted = TRUE
item_flags = DROPDEL
//ATTACK HAND IGNORING PARENT RETURN VALUE
@@ -116,6 +123,7 @@
/obj/item/changeling
name = "flesh"
spawn_blacklisted = TRUE
slot_flags = ALL
item_flags = DROPDEL