mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-12 10:42:37 +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. /🆑
49 lines
1.6 KiB
Plaintext
49 lines
1.6 KiB
Plaintext
///Get a random food item exluding the blocked ones
|
|
/proc/get_random_food()
|
|
var/static/list/allowed_food = list()
|
|
|
|
if(!LAZYLEN(allowed_food)) //it's static so we only ever do this once
|
|
var/list/blocked = list() // This used to be populated
|
|
|
|
allowed_food = get_sane_item_types(/obj/item/food) - blocked
|
|
|
|
return pick(allowed_food)
|
|
|
|
///Gets a random drink excluding the blocked type
|
|
/proc/get_random_drink()
|
|
var/static/list/allowed_drinks = list()
|
|
|
|
if(!LAZYLEN(allowed_drinks))
|
|
var/list/blocked = list(
|
|
/obj/item/reagent_containers/cup/glass/bottle
|
|
)
|
|
|
|
allowed_drinks = get_sane_item_types(/obj/item/reagent_containers/cup/glass) + get_sane_item_types(/obj/item/reagent_containers/cup/soda_cans) - blocked
|
|
|
|
return pick(allowed_drinks)
|
|
|
|
///Picks a string of symbols to display as the law number for hacked or ion laws
|
|
/proc/ion_num() //! is at the start to prevent us from changing say modes via get_message_mode()
|
|
return "![pick("!","@","#","$","%","^","&")][pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")]"
|
|
|
|
///Returns a string for a random nuke code
|
|
/proc/random_nukecode()
|
|
var/val = rand(0, 99999)
|
|
var/str = "[val]"
|
|
while(length(str) < 5)
|
|
str = "0" + str
|
|
. = str
|
|
|
|
///Gets a random coin excluding the blocked type and including extra coins which aren't pathed like coins.
|
|
/proc/get_random_coin()
|
|
var/list/blocked = list(
|
|
/obj/item/coin/gold/debug,
|
|
/obj/item/coin/eldritch,
|
|
/obj/item/coin/mythril,
|
|
)
|
|
var/list/extra_coins = list(
|
|
/obj/item/food/chococoin,
|
|
)
|
|
var/list/allowed_coins = subtypesof(/obj/item/coin) - blocked + extra_coins
|
|
return pick(allowed_coins)
|