mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-14 09:35:30 +01:00
0b0c5ea91e
## About The Pull Request Extends the part of the crafting unit test that ensures consistency between the total mats of the components of a recipe (or rather, the result of said recipe) and a generic instance of the same type as its result, previously only implemented on food recipes. ## Why It's Good For The Game This ensures a degree of consistency with the material composition of various objects in the game. I couldn't do it in the original PR as that one was too big already and it took months to get it merged, and have the relative bugs fixed. Currently a WIP as I slowly deal with the unit test reports. ## Changelog 🆑 refactor: Follow-up to the crafting/material refactor from months ago. All objects crafted with stacks now inherit their mat composition (not necessarily the effects and color) by default, while previously only a few things like chair, sinks and toilets did. Report any object looking or behaving weirdly as a result. fix: The material composition of ammo boxes is no longer a 1/10 of what it's supposed to be. It was a shitty hack to make it harder to recycle empty ammo boxes. Instead, they lose materials as they're emptied now. /🆑
70 lines
2.4 KiB
Plaintext
70 lines
2.4 KiB
Plaintext
//If you're looking for spawners like ash walker eggs, check ghost_role_spawners.dm
|
|
|
|
///Wizard tower item
|
|
/obj/item/disk/design_disk/knight_gear
|
|
name = "Magic Disk of Smithing"
|
|
|
|
/obj/item/disk/design_disk/knight_gear/Initialize(mapload)
|
|
. = ..()
|
|
blueprints += new /datum/design/knight_armour
|
|
blueprints += new /datum/design/knight_helmet
|
|
|
|
//Free Golems
|
|
|
|
/obj/item/disk/design_disk/golem_shell
|
|
name = "Golem Creation Disk"
|
|
desc = "A gift from the Liberator."
|
|
icon_state = "datadisk1"
|
|
|
|
/obj/item/disk/design_disk/golem_shell/Initialize(mapload)
|
|
. = ..()
|
|
blueprints += new /datum/design/golem_shell
|
|
|
|
/datum/design/golem_shell
|
|
name = "Golem Shell Construction"
|
|
desc = "Allows for the construction of a Golem Shell."
|
|
id = "golem"
|
|
build_type = AUTOLATHE
|
|
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*20)
|
|
build_path = /obj/item/golem_shell
|
|
category = list(RND_CATEGORY_IMPORTED)
|
|
|
|
/obj/item/golem_shell
|
|
name = "incomplete free golem shell"
|
|
icon = 'icons/mob/shells.dmi'
|
|
icon_state = "shell_unfinished"
|
|
desc = "The incomplete body of a golem. Add ten sheets of certain minerals to finish."
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 20)
|
|
/// Amount of minerals you need to feed the shell to wake it up
|
|
var/required_stacks = 10
|
|
/// Type of shell to create
|
|
var/shell_type = /obj/effect/mob_spawn/ghost_role/human/golem
|
|
|
|
/obj/item/golem_shell/attackby(obj/item/potential_food, mob/user, list/modifiers, list/attack_modifiers)
|
|
. = ..()
|
|
if(!isstack(potential_food))
|
|
balloon_alert(user, "not a mineral!")
|
|
return
|
|
var/obj/item/stack/stack_food = potential_food
|
|
var/stack_type = stack_food.merge_type
|
|
if (!is_path_in_list(stack_type, GLOB.golem_stack_food_directory))
|
|
balloon_alert(user, "incompatible mineral!")
|
|
return
|
|
if(stack_food.amount < required_stacks)
|
|
balloon_alert(user, "not enough minerals!")
|
|
return
|
|
if(!do_after(user, delay = 4 SECONDS, target = src))
|
|
return
|
|
if(!stack_food.use(required_stacks))
|
|
balloon_alert(user, "not enough minerals!")
|
|
return
|
|
new shell_type(get_turf(src), /* creator = */ user, /* made_of = */ stack_type)
|
|
qdel(src)
|
|
|
|
///made with xenobiology, the golem obeys its creator
|
|
/obj/item/golem_shell/servant
|
|
name = "incomplete servant golem shell"
|
|
shell_type = /obj/effect/mob_spawn/ghost_role/human/golem/servant
|
|
custom_materials = list(/datum/material/adamantine = SHEET_MATERIAL_AMOUNT * 3)
|