mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-26 17:41:05 +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. /🆑
75 lines
2.1 KiB
Plaintext
75 lines
2.1 KiB
Plaintext
/**
|
|
* # Shell Item
|
|
*
|
|
* Printed out by protolathes. Screwdriver to complete the shell.
|
|
*/
|
|
/obj/item/shell
|
|
name = "assembly"
|
|
desc = "A shell assembly that can be completed by screwdrivering it."
|
|
icon = 'icons/obj/science/circuits.dmi'
|
|
abstract_type = /obj/item/shell
|
|
var/shell_to_spawn
|
|
var/screw_delay = 3 SECONDS
|
|
|
|
/obj/item/shell/screwdriver_act(mob/living/user, obj/item/tool)
|
|
user.visible_message(span_notice("[user] begins finishing [src]."), span_notice("You begin finishing [src]."))
|
|
tool.play_tool_sound(src)
|
|
if(!do_after(user, screw_delay, src))
|
|
return
|
|
user.visible_message(span_notice("[user] finishes [src]."), span_notice("You finish [src]."))
|
|
|
|
var/turf/drop_loc = drop_location()
|
|
|
|
qdel(src)
|
|
if(drop_loc)
|
|
new shell_to_spawn(drop_loc)
|
|
|
|
return TRUE
|
|
|
|
/obj/item/shell/bot
|
|
name = "bot assembly"
|
|
icon_state = "setup_medium_box-open"
|
|
shell_to_spawn = /obj/structure/bot
|
|
|
|
/obj/item/shell/money_bot
|
|
name = "money bot assembly"
|
|
icon_state = "setup_large-open"
|
|
shell_to_spawn = /obj/structure/money_bot
|
|
|
|
/obj/item/shell/drone
|
|
name = "drone assembly"
|
|
icon_state = "setup_medium_med-open"
|
|
shell_to_spawn = /mob/living/circuit_drone
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
|
|
/obj/item/shell/server
|
|
name = "server assembly"
|
|
icon_state = "setup_stationary-open"
|
|
shell_to_spawn = /obj/structure/server
|
|
screw_delay = 10 SECONDS
|
|
|
|
/obj/item/shell/airlock
|
|
name = "circuit airlock assembly"
|
|
icon = 'icons/obj/doors/airlocks/station/public.dmi'
|
|
icon_state = "construction"
|
|
shell_to_spawn = /obj/machinery/door/airlock/shell
|
|
screw_delay = 10 SECONDS
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
|
|
/obj/item/shell/dispenser
|
|
name = "circuit dispenser assembly"
|
|
icon_state = "setup_drone_arms-open"
|
|
shell_to_spawn = /obj/structure/dispenser_bot
|
|
|
|
/obj/item/shell/bci
|
|
name = "brain-computer interface assembly"
|
|
icon_state = "bci-open"
|
|
shell_to_spawn = /obj/item/organ/cyberimp/bci
|
|
w_class = WEIGHT_CLASS_TINY
|
|
|
|
/obj/item/shell/scanner_gate
|
|
name = "scanner gate assembly"
|
|
icon = 'icons/obj/machines/scangate.dmi'
|
|
icon_state = "scangate_black_open"
|
|
shell_to_spawn = /obj/structure/scanner_gate_shell
|