mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 10:11:09 +00:00
## 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. /🆑
18 lines
855 B
Plaintext
18 lines
855 B
Plaintext
// Its not full proof but it standerizes behavoir between gifts and lootboxes
|
|
/// Used for random item gen to try and generate a list of types that arent weird parent types and similar
|
|
/proc/get_sane_item_types(requested_type)
|
|
if(!ispath(requested_type, /obj/item))
|
|
return list()
|
|
var/list/all_valid_types = list()
|
|
for(var/obj/item/iter_type as anything in typesof(requested_type))
|
|
if((iter_type.abstract_type == iter_type) || (iter_type.item_flags & ABSTRACT))
|
|
continue
|
|
if(iter_type.spawn_blacklisted)
|
|
continue
|
|
// The original behavior also included inhand icon states but that seems dumb
|
|
// if(!iter_type.icon_state || !iter_type.inhand_icon_state)
|
|
if(!iter_type.icon_state)
|
|
continue // With the existance of abstract_type we could prob depricate this handling at some point
|
|
all_valid_types += iter_type
|
|
return all_valid_types
|