mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 15:47:15 +01: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. /🆑
61 lines
1.9 KiB
Plaintext
61 lines
1.9 KiB
Plaintext
// **********************
|
|
// Other harvested materials from plants (that are not food)
|
|
// **********************
|
|
|
|
/obj/item/grown // Grown weapons
|
|
name = "grown_weapon"
|
|
icon = 'icons/obj/service/hydroponics/harvest.dmi'
|
|
worn_icon = 'icons/mob/clothing/head/hydroponics.dmi'
|
|
abstract_type = /obj/item/grown
|
|
resistance_flags = FLAMMABLE
|
|
var/obj/item/seeds/seed = null // type path, gets converted to item on New(). It's safe to assume it's always a seed item.
|
|
/// Should we pixel offset ourselves at init? for mapping
|
|
var/offset_at_init = TRUE
|
|
/// The reagent this plant distill to. If NULL, it uses a generic fruit_wine reagent and adjusts its variables.
|
|
var/distill_reagent
|
|
|
|
// This may look like it's doing nothing but it's necessary, we do this to have kwargs work in New (for passing into Initialize)
|
|
/obj/item/grown/New(loc, obj/item/seeds/new_seed)
|
|
return ..()
|
|
|
|
/obj/item/grown/Initialize(mapload, obj/item/seeds/new_seed)
|
|
. = ..()
|
|
create_reagents(100)
|
|
|
|
if(istype(new_seed))
|
|
seed = new_seed.Copy()
|
|
|
|
else if(ispath(seed))
|
|
// This is for adminspawn or map-placed growns. They get the default stats of their seed type.
|
|
seed = new seed()
|
|
seed.adjust_potency(50-seed.potency)
|
|
|
|
if(offset_at_init)
|
|
pixel_x = base_pixel_x + rand(-5, 5)
|
|
pixel_y = base_pixel_y + rand(-5, 5)
|
|
|
|
if(seed)
|
|
// Go through all traits in their genes and call on_new_plant from them.
|
|
for(var/datum/plant_gene/trait/trait in seed.genes)
|
|
trait.on_new_plant(src, loc)
|
|
|
|
if(istype(src, seed.product)) // no adding reagents if it is just a trash item
|
|
seed.prepare_result(src)
|
|
transform *= TRANSFORM_USING_VARIABLE(seed.potency, 100) + 0.5
|
|
add_juice()
|
|
|
|
/obj/item/grown/Destroy()
|
|
if(isatom(seed))
|
|
QDEL_NULL(seed)
|
|
return ..()
|
|
|
|
/obj/item/grown/proc/add_juice()
|
|
if(reagents)
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/obj/item/grown/on_grind()
|
|
. = ..()
|
|
for(var/i in 1 to grind_results.len)
|
|
grind_results[grind_results[i]] = round(seed.potency)
|