mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-25 14:08:31 +01:00
Refactors sheet crafting to better support directional construction (#74572)
## About The Pull Request https://github.com/tgstation/tgstation/blob/0426f7ddbaa91439c7278189101f5db9c7f2ed95/code/game/objects/items/stacks/stack.dm#L449 Ok, but can we not? This PR refactors sheet crafting to generalize all the cases that were previously locked behind grille/window type checks and such. In their stead there are bitflags that can be set to achieve certain behaviors. All the behavior from before should be preserved, but now it can be extended to other items. E.g. if you want a railing that can be crafted underneath directional windows, or an item that behaves like a grille does--it's just a matter of setting the right obj_flags for it now. This makes it very simple and painless to add new recipes that use directional crafting! It's all modular now. <details><summary>Details</summary> --- ### What I've done: -Eliminated all the type checks, instead it will now be handled by object flags and recipe vars, making for a much more configurable system. -Added two new obj_flags: `BLOCKS_CONSTRUCTION_DIR` and `IGNORE_DENSITY`. -Additionally, I renamed the existing flag `NO_BUILD` to `BLOCKS_CONSTRUCTION`. -Changes the proc `valid_window_location` to `valid_build_direction`, and makes it work for things other than windows. -Removed a deprecated `window_checks` var from the stack_recipe datum. -Added three more vars to the stack_recipe datum: `check_direction` and `check_density`, `is_fulltile` -Decoupled `on_solid_ground` from the object density check. Now you can set those separately, allowing you to make recipes that forbid/allow building things over other things while in space. --- ### What the new flags do: `BLOCKS_CONSTRUCTION` works as before---prevents objects from being built on the object. I felt that the previous name was not descriptive enough, you should know exactly what it does just from looking at the name. _example: dna scanner_ `BLOCKS_CONSTRUCTION_DIR` -- setting this on an object will prevent objects from being built on it when their directions are the same. _example: directional windows, windoors, railings_ `IGNORE_DENSITY` -- setting this on an object will cause its density to be ignored when performing the construction density check. This could have other potential uses as well in the future. _example: grilles, directional windows, tables_ These three flags cover all the bases for the types of items that are currently craftable, so there is no more need for any type checking or weird snowflake window checks. Simply set the appropriate flag and it'll work as you would expect. --- ### What the recipe vars do: `check_direction` tells the recipe to check if there's something in that direction with the `BLOCKS_CONSTRUCTION_DIR` flag set. `check_density` tells the recipe to run the density check when set. This is true by default. There are very few items in the game that currently have this set to false--namely grilles. Setting this to false will make it so that the object can be constructed regardless of what is in that tile (unless `one_per_turf` is also set, which will make it so that you can't craft the same thing twice in the same turf). `is_fulltile` is used for fulltile windows, but it doesn't necessarily have to be--you can give this to any recipe and it will adopt the same properties as that of the fulltile window. Basically they have a special case where they shouldn't be able to be built over directional constructions, where normally things would be able to be. Setting this makes check_direction true as well. --- ### In summary: Sheet crafting still works just as it did before. But the backend of it has gotten a glow up and will be able to more easily support new behaviors. </details> ## Why It's Good For The Game This makes the crafting system much more flexible to add recipes to, and will prevent bad code practices of stacking more conditionals down the line whenever someone wants to add an item that behaves like grilles or directional windows in how they are constructed. It had to be done. Those window checks were a mess. ## Changelog 🆑 qol: added fifty stack versions of remaining glass sheet stacks for ease of debugging refactor: refactored sheet crafting to better support directional constructions that aren't windows /🆑 --------- Co-authored-by: san7890 <the@san7890.com>
This commit is contained in:
@@ -11,7 +11,9 @@
|
||||
#define BLOCK_Z_OUT_UP (1<<7) // Should this object block z uprise from loc?
|
||||
#define BLOCK_Z_IN_DOWN (1<<8) // Should this object block z falling from above?
|
||||
#define BLOCK_Z_IN_UP (1<<9) // Should this object block z uprise from below?
|
||||
#define NO_BUILD (1<<10) // Can we build on this object?
|
||||
#define BLOCKS_CONSTRUCTION (1<<10) //! Does this object prevent things from being built on it?
|
||||
#define BLOCKS_CONSTRUCTION_DIR (1<<11) //! Does this object prevent same-direction things from being built on it?
|
||||
#define IGNORE_DENSITY (1<<12) //! Can we ignore density when building on this object? (for example, directional windows and grilles)
|
||||
|
||||
// If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support
|
||||
|
||||
|
||||
+8
-18
@@ -361,35 +361,25 @@ Turf and target are separate in case you want to teleport some distance from a t
|
||||
return target
|
||||
|
||||
/**
|
||||
* Checks whether the target turf is in a valid state to accept a directional window
|
||||
* or other directional pseudo-dense object such as railings.
|
||||
* Checks whether the target turf is in a valid state to accept a directional construction
|
||||
* such as windows or railings.
|
||||
*
|
||||
* Returns FALSE if the target turf cannot accept a directional window or railing.
|
||||
* Returns FALSE if the target turf cannot accept a directional construction.
|
||||
* Returns TRUE otherwise.
|
||||
*
|
||||
* Arguments:
|
||||
* * dest_turf - The destination turf to check for existing windows and railings
|
||||
* * dest_turf - The destination turf to check for existing directional constructions
|
||||
* * test_dir - The prospective dir of some atom you'd like to put on this turf.
|
||||
* * is_fulltile - Whether the thing you're attempting to move to this turf takes up the entire tile or whether it supports multiple movable atoms on its tile.
|
||||
*/
|
||||
/proc/valid_window_location(turf/dest_turf, test_dir, is_fulltile = FALSE)
|
||||
/proc/valid_build_direction(turf/dest_turf, test_dir, is_fulltile = FALSE)
|
||||
if(!dest_turf)
|
||||
return FALSE
|
||||
for(var/obj/turf_content in dest_turf)
|
||||
if(istype(turf_content, /obj/machinery/door/window))
|
||||
if((turf_content.dir == test_dir) || is_fulltile)
|
||||
if(turf_content.obj_flags & BLOCKS_CONSTRUCTION_DIR)
|
||||
if(is_fulltile) // for making it so fulltile things can't be built over directional things--a special case
|
||||
return FALSE
|
||||
if(istype(turf_content, /obj/structure/windoor_assembly))
|
||||
var/obj/structure/windoor_assembly/windoor_assembly = turf_content
|
||||
if(windoor_assembly.dir == test_dir || is_fulltile)
|
||||
return FALSE
|
||||
if(istype(turf_content, /obj/structure/window))
|
||||
var/obj/structure/window/window_structure = turf_content
|
||||
if(window_structure.dir == test_dir || window_structure.fulltile || is_fulltile)
|
||||
return FALSE
|
||||
if(istype(turf_content, /obj/structure/railing))
|
||||
var/obj/structure/railing/rail = turf_content
|
||||
if(rail.dir == test_dir || is_fulltile)
|
||||
if(turf_content.dir == test_dir)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -288,7 +288,9 @@ DEFINE_BITFIELD(obj_flags, list(
|
||||
"DANGEROUS_POSSESSION" = DANGEROUS_POSSESSION,
|
||||
"EMAGGED" = EMAGGED,
|
||||
"IN_USE" = IN_USE,
|
||||
"NO_BUILD" = NO_BUILD,
|
||||
"BLOCKS_CONSTRUCTION" = BLOCKS_CONSTRUCTION,
|
||||
"BLOCKS_CONSTRUCTION_DIR" = BLOCKS_CONSTRUCTION_DIR,
|
||||
"IGNORE_DENSITY" = IGNORE_DENSITY,
|
||||
"UNIQUE_RENAME" = UNIQUE_RENAME,
|
||||
"USES_TGUI" = USES_TGUI,
|
||||
))
|
||||
|
||||
@@ -25,7 +25,7 @@ SUBSYSTEM_DEF(materials)
|
||||
new /datum/stack_recipe("Chair", /obj/structure/chair/greyscale, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_FURNITURE),
|
||||
new /datum/stack_recipe("Toilet", /obj/structure/toilet/greyscale, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_FURNITURE),
|
||||
new /datum/stack_recipe("Sink Frame", /obj/structure/sinkframe, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_FURNITURE),
|
||||
new /datum/stack_recipe("Material floor tile", /obj/item/stack/tile/material, 1, 4, 20, applies_mats = TRUE, category = CAT_TILES),
|
||||
new /datum/stack_recipe("Material floor tile", /obj/item/stack/tile/material, 1, 4, 20, applies_mats = TRUE, check_density = FALSE, category = CAT_TILES),
|
||||
new /datum/stack_recipe("Material airlock assembly", /obj/structure/door_assembly/door_assembly_material, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS),
|
||||
)
|
||||
///List of stackcrafting recipes for materials using rigid recipes
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
var/target_dir = turn(rotated_obj.dir, degrees)
|
||||
var/obj/structure/window/rotated_window = rotated_obj
|
||||
var/fulltile = istype(rotated_window) ? rotated_window.fulltile : FALSE
|
||||
if(!valid_window_location(rotated_obj.loc, target_dir, is_fulltile = fulltile))
|
||||
if(!valid_build_direction(rotated_obj.loc, target_dir, is_fulltile = fulltile))
|
||||
if(!silent)
|
||||
rotated_obj.balloon_alert(user, "can't rotate in that direction!")
|
||||
return FALSE
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
icon_state = "infuser"
|
||||
base_icon_state = "infuser"
|
||||
density = TRUE
|
||||
obj_flags = NO_BUILD // Becomes undense when the door is open
|
||||
obj_flags = BLOCKS_CONSTRUCTION // Becomes undense when the door is open
|
||||
circuit = /obj/item/circuitboard/machine/dna_infuser
|
||||
/// maximum tier this will infuse
|
||||
var/max_tier_allowed = DNA_MUTANT_TIER_ONE
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "scanner"
|
||||
base_icon_state = "scanner"
|
||||
density = TRUE
|
||||
obj_flags = NO_BUILD // Becomes undense when the door is open
|
||||
obj_flags = BLOCKS_CONSTRUCTION // Becomes undense when the door is open
|
||||
occupant_typecache = list(/mob/living, /obj/item/bodypart/head, /obj/item/organ/internal/brain)
|
||||
circuit = /obj/item/circuitboard/machine/dnascanner
|
||||
var/locked = FALSE
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
closingLayer = ABOVE_WINDOW_LAYER
|
||||
resistance_flags = ACID_PROOF
|
||||
obj_flags = CAN_BE_HIT | BLOCKS_CONSTRUCTION_DIR
|
||||
var/base_state = "left"
|
||||
max_integrity = 150 //If you change this, consider changing ../door/window/brigdoor/ max_integrity at the bottom of this .dm file
|
||||
integrity_failure = 0
|
||||
@@ -171,10 +172,10 @@
|
||||
|
||||
if(istype(mover, /obj/structure/window))
|
||||
var/obj/structure/window/moved_window = mover
|
||||
return valid_window_location(loc, moved_window.dir, is_fulltile = moved_window.fulltile)
|
||||
return valid_build_direction(loc, moved_window.dir, is_fulltile = moved_window.fulltile)
|
||||
|
||||
if(istype(mover, /obj/structure/windoor_assembly) || istype(mover, /obj/machinery/door/window))
|
||||
return valid_window_location(loc, mover.dir, is_fulltile = FALSE)
|
||||
return valid_build_direction(loc, mover.dir, is_fulltile = FALSE)
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ The console is located at computer/gulag_teleporter.dm
|
||||
base_icon_state = "implantchair"
|
||||
state_open = FALSE
|
||||
density = TRUE
|
||||
obj_flags = NO_BUILD // Becomes undense when the door is open
|
||||
obj_flags = BLOCKS_CONSTRUCTION // Becomes undense when the door is open
|
||||
active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 5
|
||||
circuit = /obj/item/circuitboard/machine/gulag_teleporter
|
||||
var/locked = FALSE
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "sleeper"
|
||||
base_icon_state = "sleeper"
|
||||
density = FALSE
|
||||
obj_flags = NO_BUILD
|
||||
obj_flags = BLOCKS_CONSTRUCTION
|
||||
state_open = TRUE
|
||||
circuit = /obj/item/circuitboard/machine/sleeper
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_state = "stasis"
|
||||
base_icon_state = "stasis"
|
||||
density = FALSE
|
||||
obj_flags = NO_BUILD
|
||||
obj_flags = BLOCKS_CONSTRUCTION
|
||||
can_buckle = TRUE
|
||||
buckle_lying = 90
|
||||
circuit = /obj/item/circuitboard/machine/stasis
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
base_icon_state = "classic"
|
||||
power_channel = AREA_USAGE_EQUIP
|
||||
density = TRUE
|
||||
obj_flags = NO_BUILD // Becomes undense when the unit is open
|
||||
obj_flags = BLOCKS_CONSTRUCTION // Becomes undense when the unit is open
|
||||
max_integrity = 250
|
||||
circuit = /obj/item/circuitboard/machine/suit_storage_unit
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
GLOBAL_LIST_INIT(rod_recipes, list ( \
|
||||
new/datum/stack_recipe("grille", /obj/structure/grille, 2, time = 10, one_per_turf = TRUE, on_solid_ground = FALSE, category = CAT_STRUCTURE), \
|
||||
new/datum/stack_recipe("grille", /obj/structure/grille, 2, time = 10, one_per_turf = TRUE, on_solid_ground = FALSE, check_density = FALSE, category = CAT_STRUCTURE), \
|
||||
new/datum/stack_recipe("table frame", /obj/structure/table_frame, 2, time = 10, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("scooter frame", /obj/item/scooter_frame, 10, time = 25, one_per_turf = FALSE, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("linen bin", /obj/structure/bedsheetbin/empty, 2, time = 5, one_per_turf = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("railing", /obj/structure/railing, 6, time = 3.6 SECONDS, window_checks = TRUE, category = CAT_STRUCTURE), \
|
||||
new/datum/stack_recipe("tank holder", /obj/structure/tank_holder, 2, time = 5, one_per_turf = TRUE, on_solid_ground = FALSE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("ladder", /obj/structure/ladder/crafted, 15, time = 150, one_per_turf = TRUE, on_solid_ground = FALSE, category = CAT_STRUCTURE), \
|
||||
new/datum/stack_recipe("railing", /obj/structure/railing, 6, time = 3.6 SECONDS, check_direction = TRUE, category = CAT_STRUCTURE), \
|
||||
new/datum/stack_recipe("tank holder", /obj/structure/tank_holder, 2, time = 5, one_per_turf = TRUE, on_solid_ground = FALSE, check_density = FALSE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("ladder", /obj/structure/ladder/crafted, 15, time = 150, one_per_turf = TRUE, on_solid_ground = FALSE, check_density = FALSE, category = CAT_STRUCTURE), \
|
||||
new/datum/stack_recipe("catwalk floor tile", /obj/item/stack/tile/catwalk_tile, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("stairs frame", /obj/structure/stairs_frame, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), \
|
||||
new/datum/stack_recipe("white cane", /obj/item/cane/white, 3, time = 10, one_per_turf = FALSE, category = CAT_TOOLS), \
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
* Glass sheets
|
||||
*/
|
||||
GLOBAL_LIST_INIT(glass_recipes, list ( \
|
||||
new/datum/stack_recipe("directional window", /obj/structure/window/unanchored, time = 0.5 SECONDS, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("fulltile window", /obj/structure/window/fulltile/unanchored, 2, time = 1 SECONDS, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("directional window", /obj/structure/window/unanchored, time = 0.5 SECONDS, on_solid_ground = TRUE, check_direction = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("fulltile window", /obj/structure/window/fulltile/unanchored, 2, time = 1 SECONDS, on_solid_ground = TRUE, is_fulltile = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("glass shard", /obj/item/shard, time = 0, on_solid_ground = TRUE, category = CAT_MISC), \
|
||||
new/datum/stack_recipe("glass tile", /obj/item/stack/tile/glass, 1, 4, 20, category = CAT_TILES) \
|
||||
))
|
||||
@@ -79,8 +79,8 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
|
||||
return ..()
|
||||
|
||||
GLOBAL_LIST_INIT(pglass_recipes, list ( \
|
||||
new/datum/stack_recipe("directional window", /obj/structure/window/plasma/unanchored, time = 0, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("fulltile window", /obj/structure/window/plasma/fulltile/unanchored, 2, time = 0, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("directional window", /obj/structure/window/plasma/unanchored, time = 0, on_solid_ground = TRUE, check_direction = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("fulltile window", /obj/structure/window/plasma/fulltile/unanchored, 2, time = 0, on_solid_ground = TRUE, is_fulltile = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("plasma glass shard", /obj/item/shard/plasma, time = 20, on_solid_ground = TRUE, category = CAT_MISC), \
|
||||
new/datum/stack_recipe("plasma glass tile", /obj/item/stack/tile/glass/plasma, 1, 4, 20, category = CAT_TILES) \
|
||||
))
|
||||
@@ -135,10 +135,10 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
|
||||
* Reinforced glass sheets
|
||||
*/
|
||||
GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
|
||||
new/datum/stack_recipe("windoor frame", /obj/structure/windoor_assembly, 5, time = 0, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("windoor frame", /obj/structure/windoor_assembly, 5, time = 0, on_solid_ground = TRUE, check_direction = TRUE, category = CAT_WINDOWS), \
|
||||
null, \
|
||||
new/datum/stack_recipe("directional reinforced window", /obj/structure/window/reinforced/unanchored, time = 0, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("fulltile reinforced window", /obj/structure/window/reinforced/fulltile/unanchored, 2, time = 0, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("directional reinforced window", /obj/structure/window/reinforced/unanchored, time = 0, on_solid_ground = TRUE, check_direction = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("fulltile reinforced window", /obj/structure/window/reinforced/fulltile/unanchored, 2, time = 0, on_solid_ground = TRUE, is_fulltile = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("glass shard", /obj/item/shard, time = 10, on_solid_ground = TRUE, category = CAT_MISC), \
|
||||
new/datum/stack_recipe("reinforced glass tile", /obj/item/stack/tile/rglass, 1, 4, 20, category = CAT_TILES) \
|
||||
))
|
||||
@@ -159,6 +159,9 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
|
||||
matter_amount = 6
|
||||
tableVariant = /obj/structure/table/reinforced/rglass
|
||||
|
||||
/obj/item/stack/sheet/rglass/fifty
|
||||
amount = 50
|
||||
|
||||
/datum/armor/sheet_rglass
|
||||
fire = 70
|
||||
acid = 100
|
||||
@@ -172,8 +175,8 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
|
||||
. += GLOB.reinforced_glass_recipes
|
||||
|
||||
GLOBAL_LIST_INIT(prglass_recipes, list ( \
|
||||
new/datum/stack_recipe("directional reinforced window", /obj/structure/window/reinforced/plasma/unanchored, time = 0, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("fulltile reinforced window", /obj/structure/window/reinforced/plasma/fulltile/unanchored, 2, time = 0, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("directional reinforced window", /obj/structure/window/reinforced/plasma/unanchored, time = 0, on_solid_ground = TRUE, check_direction = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("fulltile reinforced window", /obj/structure/window/reinforced/plasma/fulltile/unanchored, 2, time = 0, on_solid_ground = TRUE, is_fulltile = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("plasma glass shard", /obj/item/shard/plasma, time = 40, on_solid_ground = TRUE, category = CAT_MISC), \
|
||||
new/datum/stack_recipe("reinforced plasma glass tile", /obj/item/stack/tile/rglass/plasma, 1, 4, 20, category = CAT_TILES) \
|
||||
))
|
||||
@@ -199,12 +202,15 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
/obj/item/stack/sheet/plasmarglass/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/sheet/plasmarglass/get_main_recipes()
|
||||
. = ..()
|
||||
. += GLOB.prglass_recipes
|
||||
|
||||
GLOBAL_LIST_INIT(titaniumglass_recipes, list(
|
||||
new/datum/stack_recipe("shuttle window", /obj/structure/window/reinforced/shuttle/unanchored, 2, time = 0, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("shuttle window", /obj/structure/window/reinforced/shuttle/unanchored, 2, time = 0, on_solid_ground = TRUE, check_direction = TRUE, is_fulltile = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("titanium glass shard", /obj/item/shard/titanium, time = 40, on_solid_ground = TRUE, category = CAT_MISC) \
|
||||
))
|
||||
|
||||
@@ -233,7 +239,7 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list(
|
||||
. += GLOB.titaniumglass_recipes
|
||||
|
||||
GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
||||
new/datum/stack_recipe("plastitanium window", /obj/structure/window/reinforced/plasma/plastitanium/unanchored, 2, time = 0, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS) \
|
||||
new/datum/stack_recipe("plastitanium window", /obj/structure/window/reinforced/plasma/plastitanium/unanchored, 2, time = 0, on_solid_ground = TRUE, is_fulltile = TRUE, category = CAT_WINDOWS) \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/plastitaniumglass
|
||||
@@ -250,6 +256,9 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
||||
merge_type = /obj/item/stack/sheet/plastitaniumglass
|
||||
tableVariant = /obj/structure/table/reinforced/plastitaniumglass
|
||||
|
||||
/obj/item/stack/sheet/plastitaniumglass
|
||||
amount = 50
|
||||
|
||||
/datum/armor/sheet_plastitaniumglass
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
merge_type = /obj/item/stack/sheet/animalhide/human
|
||||
|
||||
GLOBAL_LIST_INIT(human_recipes, list( \
|
||||
new/datum/stack_recipe("bloated human costume", /obj/item/clothing/suit/hooded/bloated_human, 5, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("human skin hat", /obj/item/clothing/head/fedora/human_leather, 1, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("bloated human costume", /obj/item/clothing/suit/hooded/bloated_human, 5, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("human skin hat", /obj/item/clothing/head/fedora/human_leather, 1, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/animalhide/human/get_main_recipes()
|
||||
@@ -38,8 +38,8 @@ GLOBAL_LIST_INIT(human_recipes, list( \
|
||||
merge_type = /obj/item/stack/sheet/animalhide/corgi
|
||||
|
||||
GLOBAL_LIST_INIT(gondola_recipes, list ( \
|
||||
new/datum/stack_recipe("gondola mask", /obj/item/clothing/mask/gondola, 1, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("gondola suit", /obj/item/clothing/under/costume/gondola, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("gondola mask", /obj/item/clothing/mask/gondola, 1, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("gondola suit", /obj/item/clothing/under/costume/gondola, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/animalhide/mothroach
|
||||
@@ -63,7 +63,7 @@ GLOBAL_LIST_INIT(gondola_recipes, list ( \
|
||||
. += GLOB.gondola_recipes
|
||||
|
||||
GLOBAL_LIST_INIT(corgi_recipes, list ( \
|
||||
new/datum/stack_recipe("corgi costume", /obj/item/clothing/suit/hooded/ian_costume, 3, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("corgi costume", /obj/item/clothing/suit/hooded/ian_costume, 3, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/animalhide/corgi/get_main_recipes()
|
||||
@@ -87,8 +87,8 @@ GLOBAL_LIST_INIT(corgi_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/animalhide/monkey
|
||||
|
||||
GLOBAL_LIST_INIT(monkey_recipes, list ( \
|
||||
new/datum/stack_recipe("monkey mask", /obj/item/clothing/mask/gas/monkeymask, 1, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("monkey suit", /obj/item/clothing/suit/costume/monkeysuit, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("monkey mask", /obj/item/clothing/mask/gas/monkeymask, 1, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("monkey suit", /obj/item/clothing/suit/costume/monkeysuit, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/animalhide/monkey/get_main_recipes()
|
||||
@@ -112,8 +112,8 @@ GLOBAL_LIST_INIT(monkey_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/animalhide/xeno
|
||||
|
||||
GLOBAL_LIST_INIT(xeno_recipes, list ( \
|
||||
new/datum/stack_recipe("alien helmet", /obj/item/clothing/head/costume/xenos, 1, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("alien suit", /obj/item/clothing/suit/costume/xenos, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("alien helmet", /obj/item/clothing/head/costume/xenos, 1, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("alien suit", /obj/item/clothing/suit/costume/xenos, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/animalhide/xeno/get_main_recipes()
|
||||
@@ -186,32 +186,32 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/leather
|
||||
|
||||
GLOBAL_LIST_INIT(leather_recipes, list ( \
|
||||
new/datum/stack_recipe("wallet", /obj/item/storage/wallet, 1, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("muzzle", /obj/item/clothing/mask/muzzle, 2, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("basketball", /obj/item/toy/basketball, 20, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("saddle", /obj/item/saddle, 5, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("leather shoes", /obj/item/clothing/shoes/laceup, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("cowboy boots", /obj/item/clothing/shoes/cowboy, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("botany gloves", /obj/item/clothing/gloves/botanic_leather, 3, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("leather satchel", /obj/item/storage/backpack/satchel/leather, 5, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("sheriff vest", /obj/item/clothing/accessory/vest_sheriff, 4, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("leather jacket", /obj/item/clothing/suit/jacket/leather, 7, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("biker jacket", /obj/item/clothing/suit/jacket/leather/biker, 7, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("wallet", /obj/item/storage/wallet, 1, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("muzzle", /obj/item/clothing/mask/muzzle, 2, check_density = FALSE, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("basketball", /obj/item/toy/basketball, 20, check_density = FALSE, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("saddle", /obj/item/saddle, 5, check_density = FALSE, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("leather shoes", /obj/item/clothing/shoes/laceup, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("cowboy boots", /obj/item/clothing/shoes/cowboy, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("botany gloves", /obj/item/clothing/gloves/botanic_leather, 3, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("leather satchel", /obj/item/storage/backpack/satchel/leather, 5, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("sheriff vest", /obj/item/clothing/accessory/vest_sheriff, 4, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("leather jacket", /obj/item/clothing/suit/jacket/leather, 7, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("biker jacket", /obj/item/clothing/suit/jacket/leather/biker, 7, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe_list("belts", list( \
|
||||
new/datum/stack_recipe("tool belt", /obj/item/storage/belt/utility, 4, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("botanical belt", /obj/item/storage/belt/plant, 2, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("janitorial belt", /obj/item/storage/belt/janitor, 2, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("medical belt", /obj/item/storage/belt/medical, 2, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("security belt", /obj/item/storage/belt/security, 2, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("shoulder holster", /obj/item/storage/belt/holster, 3, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("bandolier", /obj/item/storage/belt/bandolier, 5, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("tool belt", /obj/item/storage/belt/utility, 4, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("botanical belt", /obj/item/storage/belt/plant, 2, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("janitorial belt", /obj/item/storage/belt/janitor, 2, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("medical belt", /obj/item/storage/belt/medical, 2, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("security belt", /obj/item/storage/belt/security, 2, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("shoulder holster", /obj/item/storage/belt/holster, 3, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("bandolier", /obj/item/storage/belt/bandolier, 5, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
)),
|
||||
new/datum/stack_recipe_list("cowboy hats", list( \
|
||||
new/datum/stack_recipe("sheriff hat", /obj/item/clothing/head/cowboy/brown, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("desperado hat", /obj/item/clothing/head/cowboy/black, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("ten-gallon hat", /obj/item/clothing/head/cowboy/white, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("deputy hat", /obj/item/clothing/head/cowboy/red, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("drifter hat", /obj/item/clothing/head/cowboy/grey, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("sheriff hat", /obj/item/clothing/head/cowboy/brown, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("desperado hat", /obj/item/clothing/head/cowboy/black, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("ten-gallon hat", /obj/item/clothing/head/cowboy/white, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("deputy hat", /obj/item/clothing/head/cowboy/red, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("drifter hat", /obj/item/clothing/head/cowboy/grey, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
)),
|
||||
))
|
||||
|
||||
@@ -237,7 +237,7 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/sinew/wolf
|
||||
|
||||
GLOBAL_LIST_INIT(sinew_recipes, list ( \
|
||||
new/datum/stack_recipe("sinew restraints", /obj/item/restraints/handcuffs/cable/sinew, 1, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("sinew restraints", /obj/item/restraints/handcuffs/cable/sinew, 1, check_density = FALSE, category = CAT_EQUIPMENT), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/sinew/get_main_recipes()
|
||||
@@ -322,11 +322,11 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/animalhide/carp
|
||||
|
||||
GLOBAL_LIST_INIT(carp_recipes, list ( \
|
||||
new/datum/stack_recipe("carp costume", /obj/item/clothing/suit/hooded/carp_costume, 4, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("carp mask", /obj/item/clothing/mask/gas/carp, 1, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("carpskin chair", /obj/structure/chair/comfy/carp, 2, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("carpskin suit", /obj/item/clothing/under/suit/carpskin, 3, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("carpskin fedora", /obj/item/clothing/head/fedora/carpskin, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("carp costume", /obj/item/clothing/suit/hooded/carp_costume, 4, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("carp mask", /obj/item/clothing/mask/gas/carp, 1, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("carpskin chair", /obj/structure/chair/comfy/carp, 2, check_density = FALSE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("carpskin suit", /obj/item/clothing/under/suit/carpskin, 3, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("carpskin fedora", /obj/item/clothing/head/fedora/carpskin, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/animalhide/carp/get_main_recipes()
|
||||
|
||||
@@ -107,7 +107,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \
|
||||
|
||||
GLOBAL_LIST_INIT(diamond_recipes, list ( \
|
||||
new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("diamond tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("diamond tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/diamond/get_main_recipes()
|
||||
@@ -132,7 +132,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \
|
||||
|
||||
GLOBAL_LIST_INIT(uranium_recipes, list ( \
|
||||
new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("uranium tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("uranium tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/uranium/get_main_recipes()
|
||||
@@ -166,7 +166,7 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \
|
||||
|
||||
GLOBAL_LIST_INIT(plasma_recipes, list ( \
|
||||
new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/plasma/get_main_recipes()
|
||||
@@ -197,9 +197,9 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \
|
||||
|
||||
GLOBAL_LIST_INIT(gold_recipes, list ( \
|
||||
new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("blank plaque", /obj/item/plaque, 1, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("Simple Crown", /obj/item/clothing/head/costume/crown, 5, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("blank plaque", /obj/item/plaque, 1, check_density = FALSE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("Simple Crown", /obj/item/clothing/head/costume/crown, 5, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/gold/get_main_recipes()
|
||||
@@ -225,7 +225,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \
|
||||
|
||||
GLOBAL_LIST_INIT(silver_recipes, list ( \
|
||||
new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("silver tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("silver tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/silver/get_main_recipes()
|
||||
@@ -249,7 +249,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \
|
||||
walltype = /turf/closed/wall/mineral/bananium
|
||||
|
||||
GLOBAL_LIST_INIT(bananium_recipes, list ( \
|
||||
new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/bananium/get_main_recipes()
|
||||
@@ -280,7 +280,7 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \
|
||||
walltype = /turf/closed/wall/mineral/titanium
|
||||
|
||||
GLOBAL_LIST_INIT(titanium_recipes, list ( \
|
||||
new/datum/stack_recipe("titanium tile", /obj/item/stack/tile/mineral/titanium, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("titanium tile", /obj/item/stack/tile/mineral/titanium, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("shuttle seat", /obj/structure/chair/comfy/shuttle, 2, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
))
|
||||
|
||||
@@ -313,7 +313,7 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \
|
||||
walltype = /turf/closed/wall/mineral/plastitanium
|
||||
|
||||
GLOBAL_LIST_INIT(plastitanium_recipes, list ( \
|
||||
new/datum/stack_recipe("plastitanium tile", /obj/item/stack/tile/mineral/plastitanium, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("plastitanium tile", /obj/item/stack/tile/mineral/plastitanium, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/plastitanium/get_main_recipes()
|
||||
@@ -341,8 +341,8 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list ( \
|
||||
GLOBAL_LIST_INIT(snow_recipes, list ( \
|
||||
new/datum/stack_recipe("snow wall", /turf/closed/wall/mineral/snow, 5, time = 4 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), \
|
||||
new/datum/stack_recipe("snowman", /obj/structure/statue/snow/snowman, 5, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("snowball", /obj/item/toy/snowball, 1, category = CAT_WEAPON_RANGED), \
|
||||
new/datum/stack_recipe("snow tile", /obj/item/stack/tile/mineral/snow, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("snowball", /obj/item/toy/snowball, 1, check_density = FALSE, category = CAT_WEAPON_RANGED), \
|
||||
new/datum/stack_recipe("snow tile", /obj/item/stack/tile/mineral/snow, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/snow/get_main_recipes()
|
||||
@@ -420,7 +420,7 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \
|
||||
new/datum/stack_recipe("alien table frame", /obj/structure/table_frame/abductor, 1, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("alien airlock assembly", /obj/structure/door_assembly/door_assembly_abductor, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
null, \
|
||||
new/datum/stack_recipe("alien floor tile", /obj/item/stack/tile/mineral/abductor, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("alien floor tile", /obj/item/stack/tile/mineral/abductor, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/abductor/get_main_recipes()
|
||||
@@ -463,10 +463,10 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \
|
||||
|
||||
//Metal Hydrogen
|
||||
GLOBAL_LIST_INIT(metalhydrogen_recipes, list(
|
||||
new /datum/stack_recipe("incomplete servant golem shell", /obj/item/golem_shell/servant, req_amount=20, res_amount=1, category = CAT_ROBOT),
|
||||
new /datum/stack_recipe("ancient armor", /obj/item/clothing/suit/armor/elder_atmosian, req_amount = 5, res_amount = 1, category = CAT_CLOTHING),
|
||||
new /datum/stack_recipe("ancient helmet", /obj/item/clothing/head/helmet/elder_atmosian, req_amount = 3, res_amount = 1, category = CAT_CLOTHING),
|
||||
new /datum/stack_recipe("metallic hydrogen axe", /obj/item/fireaxe/metal_h2_axe, req_amount = 15, res_amount = 1, category = CAT_WEAPON_MELEE),
|
||||
new /datum/stack_recipe("incomplete servant golem shell", /obj/item/golem_shell/servant, req_amount=20, res_amount=1, check_density = FALSE, category = CAT_ROBOT),
|
||||
new /datum/stack_recipe("ancient armor", /obj/item/clothing/suit/armor/elder_atmosian, req_amount = 5, res_amount = 1, check_density = FALSE, category = CAT_CLOTHING),
|
||||
new /datum/stack_recipe("ancient helmet", /obj/item/clothing/head/helmet/elder_atmosian, req_amount = 3, res_amount = 1, check_density = FALSE, category = CAT_CLOTHING),
|
||||
new /datum/stack_recipe("metallic hydrogen axe", /obj/item/fireaxe/metal_h2_axe, req_amount = 15, res_amount = 1, check_density = FALSE, category = CAT_WEAPON_MELEE),
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/metal_hydrogen
|
||||
|
||||
@@ -80,7 +80,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
|
||||
null, \
|
||||
new/datum/stack_recipe("wall girders (anchored)", /obj/structure/girder, 2, time = 4 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, trait_booster = TRAIT_QUICK_BUILD, trait_modifier = 0.75, category = CAT_STRUCTURE), \
|
||||
null, \
|
||||
new/datum/stack_recipe("tram wall girders (anchored)", /obj/structure/girder/tram, 2, time = 4 SECONDS, one_per_turf = TRUE, on_solid_ground = FALSE, on_tram = TRUE, trait_booster = TRAIT_QUICK_BUILD, trait_modifier = 0.75, category = CAT_STRUCTURE), \
|
||||
new/datum/stack_recipe("tram wall girders (anchored)", /obj/structure/girder/tram, 2, time = 4 SECONDS, one_per_turf = TRUE, on_solid_ground = FALSE, check_density = FALSE, on_tram = TRUE, trait_booster = TRAIT_QUICK_BUILD, trait_modifier = 0.75, category = CAT_STRUCTURE), \
|
||||
null, \
|
||||
new/datum/stack_recipe("computer frame", /obj/structure/frame/computer, 5, time = 2.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("modular console", /obj/machinery/modular_computer/console, 10, time = 2.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_EQUIPMENT), \
|
||||
@@ -112,25 +112,25 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
|
||||
new/datum/stack_recipe("meatspike frame", /obj/structure/kitchenspike_frame, 5, time = 2.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("reflector frame", /obj/structure/reflector, 5, time = 2.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_EQUIPMENT), \
|
||||
null, \
|
||||
new/datum/stack_recipe("grenade casing", /obj/item/grenade/chem_grenade, category = CAT_CHEMISTRY), \
|
||||
new/datum/stack_recipe("light fixture frame", /obj/item/wallframe/light_fixture, 2, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("small light fixture frame", /obj/item/wallframe/light_fixture/small, 1, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("grenade casing", /obj/item/grenade/chem_grenade, check_density = FALSE, category = CAT_CHEMISTRY), \
|
||||
new/datum/stack_recipe("light fixture frame", /obj/item/wallframe/light_fixture, 2, check_density = FALSE, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("small light fixture frame", /obj/item/wallframe/light_fixture/small, 1, check_density = FALSE, category = CAT_EQUIPMENT), \
|
||||
null, \
|
||||
new/datum/stack_recipe("apc frame", /obj/item/wallframe/apc, 2, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("air alarm frame", /obj/item/wallframe/airalarm, 2, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("fire alarm frame", /obj/item/wallframe/firealarm, 2, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("extinguisher cabinet frame", /obj/item/wallframe/extinguisher_cabinet, 2, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("button frame", /obj/item/wallframe/button, 1, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("apc frame", /obj/item/wallframe/apc, 2, check_density = FALSE, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("air alarm frame", /obj/item/wallframe/airalarm, 2, check_density = FALSE, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("fire alarm frame", /obj/item/wallframe/firealarm, 2, check_density = FALSE, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("extinguisher cabinet frame", /obj/item/wallframe/extinguisher_cabinet, 2, check_density = FALSE, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("button frame", /obj/item/wallframe/button, 1, check_density = FALSE, category = CAT_EQUIPMENT), \
|
||||
null, \
|
||||
new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("filing cabinet", /obj/structure/filingcabinet, 2, time = 10 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("desk bell", /obj/structure/desk_bell, 2, time = 3 SECONDS, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("desk bell", /obj/structure/desk_bell, 2, time = 3 SECONDS, check_density = FALSE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("floodlight frame", /obj/structure/floodlight_frame, 5, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("voting box", /obj/structure/votebox, 15, time = 5 SECONDS, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("pestle", /obj/item/pestle, 1, time = 5 SECONDS, category = CAT_CHEMISTRY), \
|
||||
new/datum/stack_recipe("hygienebot assembly", /obj/item/bot_assembly/hygienebot, 2, time = 5 SECONDS, category = CAT_ROBOT), \
|
||||
new/datum/stack_recipe("shower frame", /obj/structure/showerframe, 2, time = 2 SECONDS, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("urinal", /obj/item/wallframe/urinal, 2, time = 1 SECONDS, category = CAT_FURNITURE)
|
||||
new/datum/stack_recipe("voting box", /obj/structure/votebox, 15, time = 5 SECONDS, check_density = FALSE, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("pestle", /obj/item/pestle, 1, time = 5 SECONDS, check_density = FALSE, category = CAT_CHEMISTRY), \
|
||||
new/datum/stack_recipe("hygienebot assembly", /obj/item/bot_assembly/hygienebot, 2, time = 5 SECONDS, check_density = FALSE, category = CAT_ROBOT), \
|
||||
new/datum/stack_recipe("shower frame", /obj/structure/showerframe, 2, time = 2 SECONDS, check_density = FALSE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("urinal", /obj/item/wallframe/urinal, 2, time = 1 SECONDS, check_density = FALSE, category = CAT_FURNITURE)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/iron
|
||||
@@ -247,9 +247,9 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
|
||||
* Plasteel
|
||||
*/
|
||||
GLOBAL_LIST_INIT(plasteel_recipes, list ( \
|
||||
new/datum/stack_recipe("AI core", /obj/structure/ai_core, 4, time = 5 SECONDS, one_per_turf = TRUE, category = CAT_ROBOT),
|
||||
new/datum/stack_recipe("bomb assembly", /obj/machinery/syndicatebomb/empty, 10, time = 5 SECONDS, category = CAT_CHEMISTRY),
|
||||
new/datum/stack_recipe("Large Gas Tank", /obj/structure/tank_frame, 4, time=1 SECONDS, one_per_turf=TRUE, category = CAT_ATMOSPHERIC),
|
||||
new/datum/stack_recipe("AI core", /obj/structure/ai_core, 4, time = 5 SECONDS, one_per_turf = TRUE, check_density = FALSE, category = CAT_ROBOT),
|
||||
new/datum/stack_recipe("bomb assembly", /obj/machinery/syndicatebomb/empty, 10, time = 5 SECONDS, check_density = FALSE, category = CAT_CHEMISTRY),
|
||||
new/datum/stack_recipe("Large Gas Tank", /obj/structure/tank_frame, 4, time=1 SECONDS, one_per_turf=TRUE, check_density = FALSE, category = CAT_ATMOSPHERIC),
|
||||
null,
|
||||
new /datum/stack_recipe_list("airlock assemblies", list( \
|
||||
new/datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS),
|
||||
@@ -294,10 +294,10 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \
|
||||
* Wood
|
||||
*/
|
||||
GLOBAL_LIST_INIT(wood_recipes, list ( \
|
||||
new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("wood table frame", /obj/structure/table_frame/wood, 2, time = 1 SECONDS, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("rolling pin", /obj/item/kitchen/rollingpin, 2, time = 3 SECONDS, category = CAT_TOOLS), \
|
||||
new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("wood table frame", /obj/structure/table_frame/wood, 2, time = 1 SECONDS, check_density = FALSE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("rolling pin", /obj/item/kitchen/rollingpin, 2, time = 3 SECONDS, check_density = FALSE, category = CAT_TOOLS), \
|
||||
new/datum/stack_recipe("wooden chair", /obj/structure/chair/wood/, 3, time = 1 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("winged wooden chair", /obj/structure/chair/wood/wings, 3, time = 1 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), \
|
||||
@@ -309,26 +309,26 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
|
||||
new/datum/stack_recipe("wooden barrel", /obj/structure/fermenting_barrel, 8, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("dog bed", /obj/structure/bed/dogbed, 10, time = 1 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("dresser", /obj/structure/dresser, 10, time = 1.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("picture frame", /obj/item/wallframe/picture, 1, time = 1 SECONDS, category = CAT_ENTERTAINMENT),\
|
||||
new/datum/stack_recipe("painting frame", /obj/item/wallframe/painting, 1, time = 1 SECONDS, category = CAT_ENTERTAINMENT),\
|
||||
new/datum/stack_recipe("picture frame", /obj/item/wallframe/picture, 1, time = 1 SECONDS, check_density = FALSE, category = CAT_ENTERTAINMENT),\
|
||||
new/datum/stack_recipe("painting frame", /obj/item/wallframe/painting, 1, time = 1 SECONDS, check_density = FALSE, category = CAT_ENTERTAINMENT),\
|
||||
new/datum/stack_recipe("display case chassis", /obj/structure/displaycase_chassis, 5, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("wooden buckler", /obj/item/shield/buckler, 20, time = 4 SECONDS, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 5 SECONDS, category = CAT_TOOLS),\
|
||||
new/datum/stack_recipe("wooden buckler", /obj/item/shield/buckler, 20, time = 4 SECONDS, check_density = FALSE, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 5 SECONDS, check_density = FALSE, category = CAT_TOOLS),\
|
||||
new/datum/stack_recipe("mannequin", /obj/structure/mannequin/wood, 25, time = 5 SECONDS, one_per_turf = TRUE, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("tiki mask", /obj/item/clothing/mask/gas/tiki_mask, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("smoking pipe", /obj/item/clothing/mask/cigarette/pipe, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 1 SECONDS, category = CAT_TOOLS),\
|
||||
new/datum/stack_recipe("wooden bucket", /obj/item/reagent_containers/cup/bucket/wooden, 3, time = 1 SECONDS, category = CAT_CONTAINERS),\
|
||||
new/datum/stack_recipe("rake", /obj/item/cultivator/rake, 5, time = 1 SECONDS, category = CAT_TOOLS),\
|
||||
new/datum/stack_recipe("tiki mask", /obj/item/clothing/mask/gas/tiki_mask, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("smoking pipe", /obj/item/clothing/mask/cigarette/pipe, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 1 SECONDS, check_density = FALSE, category = CAT_TOOLS),\
|
||||
new/datum/stack_recipe("wooden bucket", /obj/item/reagent_containers/cup/bucket/wooden, 3, time = 1 SECONDS, check_density = FALSE, category = CAT_CONTAINERS),\
|
||||
new/datum/stack_recipe("rake", /obj/item/cultivator/rake, 5, time = 1 SECONDS, check_density = FALSE, category = CAT_TOOLS),\
|
||||
new/datum/stack_recipe("ore box", /obj/structure/ore_box, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_CONTAINERS),\
|
||||
new/datum/stack_recipe("wooden crate", /obj/structure/closet/crate/wooden, 6, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE),\
|
||||
new/datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 5, time = 1.5 SECONDS, category = CAT_WEAPON_MELEE),\
|
||||
new/datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 5, time = 1.5 SECONDS, check_density = FALSE, category = CAT_WEAPON_MELEE),\
|
||||
new/datum/stack_recipe("loom", /obj/structure/loom, 10, time = 1.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_TOOLS), \
|
||||
new/datum/stack_recipe("mortar", /obj/item/reagent_containers/cup/mortar, 3, category = CAT_CHEMISTRY), \
|
||||
new/datum/stack_recipe("firebrand", /obj/item/match/firebrand, 2, time = 10 SECONDS, category = CAT_TOOLS), \
|
||||
new/datum/stack_recipe("mortar", /obj/item/reagent_containers/cup/mortar, 3, check_density = FALSE, category = CAT_CHEMISTRY), \
|
||||
new/datum/stack_recipe("firebrand", /obj/item/match/firebrand, 2, time = 10 SECONDS, check_density = FALSE, category = CAT_TOOLS), \
|
||||
new/datum/stack_recipe("bonfire", /obj/structure/bonfire, 10, time = 6 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_TOOLS), \
|
||||
new/datum/stack_recipe("easel", /obj/structure/easel, 5, time = 1 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("noticeboard", /obj/item/wallframe/noticeboard, 1, time = 1 SECONDS, one_per_turf = FALSE, on_solid_ground = FALSE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("noticeboard", /obj/item/wallframe/noticeboard, 1, time = 1 SECONDS, one_per_turf = FALSE, on_solid_ground = FALSE, check_density = FALSE, category = CAT_FURNITURE), \
|
||||
null, \
|
||||
new/datum/stack_recipe_list("pews", list(
|
||||
new /datum/stack_recipe("pew (middle)", /obj/structure/chair/pew, 3, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE),
|
||||
@@ -371,13 +371,13 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
|
||||
|
||||
GLOBAL_LIST_INIT(bamboo_recipes, list ( \
|
||||
new/datum/stack_recipe("punji sticks trap", /obj/structure/punji_sticks, 5, time = 3 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("bamboo spear", /obj/item/spear/bamboospear, 25, time = 9 SECONDS, category = CAT_WEAPON_MELEE), \
|
||||
new/datum/stack_recipe("blow gun", /obj/item/gun/syringe/blowgun, 10, time = 7 SECONDS, category = CAT_WEAPON_RANGED), \
|
||||
new/datum/stack_recipe("crude syringe", /obj/item/reagent_containers/syringe/crude, 5, time = 1 SECONDS, category = CAT_CHEMISTRY), \
|
||||
new/datum/stack_recipe("rice hat", /obj/item/clothing/head/costume/rice_hat, 10, time = 7 SECONDS, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("bamboo spear", /obj/item/spear/bamboospear, 25, time = 9 SECONDS, check_density = FALSE, category = CAT_WEAPON_MELEE), \
|
||||
new/datum/stack_recipe("blow gun", /obj/item/gun/syringe/blowgun, 10, time = 7 SECONDS, check_density = FALSE, category = CAT_WEAPON_RANGED), \
|
||||
new/datum/stack_recipe("crude syringe", /obj/item/reagent_containers/syringe/crude, 5, time = 1 SECONDS, check_density = FALSE, category = CAT_CHEMISTRY), \
|
||||
new/datum/stack_recipe("rice hat", /obj/item/clothing/head/costume/rice_hat, 10, time = 7 SECONDS, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
null, \
|
||||
new/datum/stack_recipe("bamboo stool", /obj/structure/chair/stool/bamboo, 2, time = 1 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("bamboo mat piece", /obj/item/stack/tile/bamboo, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("bamboo mat piece", /obj/item/stack/tile/bamboo, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
null, \
|
||||
new/datum/stack_recipe_list("bamboo benches", list(
|
||||
new /datum/stack_recipe("bamboo bench (middle)", /obj/structure/chair/sofa/bamboo, 3, time = 1 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE),
|
||||
@@ -417,39 +417,39 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \
|
||||
* Cloth
|
||||
*/
|
||||
GLOBAL_LIST_INIT(cloth_recipes, list ( \
|
||||
new/datum/stack_recipe("white jumpskirt", /obj/item/clothing/under/color/jumpskirt/white, 3, category = CAT_CLOTHING), /*Ladies first*/ \
|
||||
new/datum/stack_recipe("white jumpsuit", /obj/item/clothing/under/color/white, 3, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white shoes", /obj/item/clothing/shoes/sneakers/white, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white scarf", /obj/item/clothing/neck/scarf, 1, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white bandana", /obj/item/clothing/mask/bandana/white, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white jumpskirt", /obj/item/clothing/under/color/jumpskirt/white, 3, check_density = FALSE, category = CAT_CLOTHING), /*Ladies first*/ \
|
||||
new/datum/stack_recipe("white jumpsuit", /obj/item/clothing/under/color/white, 3, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white shoes", /obj/item/clothing/shoes/sneakers/white, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white scarf", /obj/item/clothing/neck/scarf, 1, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white bandana", /obj/item/clothing/mask/bandana/white, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
null, \
|
||||
new/datum/stack_recipe("backpack", /obj/item/storage/backpack, 4, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("duffel bag", /obj/item/storage/backpack/duffelbag, 6, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("backpack", /obj/item/storage/backpack, 4, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("duffel bag", /obj/item/storage/backpack/duffelbag, 6, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
null, \
|
||||
new/datum/stack_recipe("plant bag", /obj/item/storage/bag/plants, 4, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("book bag", /obj/item/storage/bag/books, 4, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("mining satchel", /obj/item/storage/bag/ore, 4, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("chemistry bag", /obj/item/storage/bag/chemistry, 4, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("bio bag", /obj/item/storage/bag/bio, 4, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("science bag", /obj/item/storage/bag/xeno, 4, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("construction bag", /obj/item/storage/bag/construction, 4, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("plant bag", /obj/item/storage/bag/plants, 4, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("book bag", /obj/item/storage/bag/books, 4, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("mining satchel", /obj/item/storage/bag/ore, 4, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("chemistry bag", /obj/item/storage/bag/chemistry, 4, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("bio bag", /obj/item/storage/bag/bio, 4, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("science bag", /obj/item/storage/bag/xeno, 4, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("construction bag", /obj/item/storage/bag/construction, 4, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
null, \
|
||||
new/datum/stack_recipe("improvised gauze", /obj/item/stack/medical/gauze/improvised, 1, 2, 6, category = CAT_TOOLS), \
|
||||
new/datum/stack_recipe("rag", /obj/item/reagent_containers/cup/rag, 1, category = CAT_CHEMISTRY), \
|
||||
new/datum/stack_recipe("bedsheet", /obj/item/bedsheet, 3, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("double bedsheet", /obj/item/bedsheet/double, 6, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("empty sandbag", /obj/item/emptysandbag, 4, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("improvised gauze", /obj/item/stack/medical/gauze/improvised, 1, 2, 6, check_density = FALSE, category = CAT_TOOLS), \
|
||||
new/datum/stack_recipe("rag", /obj/item/reagent_containers/cup/rag, 1, check_density = FALSE, category = CAT_CHEMISTRY), \
|
||||
new/datum/stack_recipe("bedsheet", /obj/item/bedsheet, 3, check_density = FALSE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("double bedsheet", /obj/item/bedsheet/double, 6, check_density = FALSE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("empty sandbag", /obj/item/emptysandbag, 4, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
null, \
|
||||
new/datum/stack_recipe("fingerless gloves", /obj/item/clothing/gloves/fingerless, 1, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white gloves", /obj/item/clothing/gloves/color/white, 3, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white softcap", /obj/item/clothing/head/soft/mime, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white beanie", /obj/item/clothing/head/beanie, 2, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("fingerless gloves", /obj/item/clothing/gloves/fingerless, 1, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white gloves", /obj/item/clothing/gloves/color/white, 3, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white softcap", /obj/item/clothing/head/soft/mime, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("white beanie", /obj/item/clothing/head/beanie, 2, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
null, \
|
||||
new/datum/stack_recipe("blindfold", /obj/item/clothing/glasses/blindfold, 2, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("blindfold", /obj/item/clothing/glasses/blindfold, 2, check_density = FALSE, category = CAT_ENTERTAINMENT), \
|
||||
null, \
|
||||
new/datum/stack_recipe("19x19 canvas", /obj/item/canvas/nineteen_nineteen, 3, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("23x19 canvas", /obj/item/canvas/twentythree_nineteen, 4, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("23x23 canvas", /obj/item/canvas/twentythree_twentythree, 5, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("19x19 canvas", /obj/item/canvas/nineteen_nineteen, 3, check_density = FALSE, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("23x19 canvas", /obj/item/canvas/twentythree_nineteen, 4, check_density = FALSE, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("23x23 canvas", /obj/item/canvas/twentythree_twentythree, 5, check_density = FALSE, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("pillow", /obj/item/pillow, 3, category = CAT_FURNITURE), \
|
||||
))
|
||||
|
||||
@@ -478,10 +478,10 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
|
||||
amount = 5
|
||||
|
||||
GLOBAL_LIST_INIT(durathread_recipes, list ( \
|
||||
new/datum/stack_recipe("durathread jumpsuit", /obj/item/clothing/under/misc/durathread, 4, time = 4 SECONDS, category = CAT_CLOTHING),
|
||||
new/datum/stack_recipe("durathread beret", /obj/item/clothing/head/beret/durathread, 2, time = 4 SECONDS, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("durathread beanie", /obj/item/clothing/head/beanie/durathread, 2, time = 4 SECONDS, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("durathread bandana", /obj/item/clothing/mask/bandana/durathread, 1, time = 2.5 SECONDS, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("durathread jumpsuit", /obj/item/clothing/under/misc/durathread, 4, time = 4 SECONDS, check_density = FALSE, category = CAT_CLOTHING),
|
||||
new/datum/stack_recipe("durathread beret", /obj/item/clothing/head/beret/durathread, 2, time = 4 SECONDS, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("durathread beanie", /obj/item/clothing/head/beanie/durathread, 2, time = 4 SECONDS, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("durathread bandana", /obj/item/clothing/mask/bandana/durathread, 1, time = 2.5 SECONDS, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/durathread
|
||||
@@ -540,60 +540,60 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \
|
||||
* Cardboard
|
||||
*/
|
||||
GLOBAL_LIST_INIT(cardboard_recipes, list ( \
|
||||
new/datum/stack_recipe("box", /obj/item/storage/box, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/costume/cardborg, 3, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/costume/cardborg, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("box", /obj/item/storage/box, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/costume/cardborg, 3, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/costume/cardborg, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("large box", /obj/structure/closet/cardboard, 4, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("cardboard cutout", /obj/item/cardboard_cutout, 5, category = CAT_ENTERTAINMENT), \
|
||||
new/datum/stack_recipe("cardboard cutout", /obj/item/cardboard_cutout, 5, check_density = FALSE, category = CAT_ENTERTAINMENT), \
|
||||
null, \
|
||||
|
||||
new/datum/stack_recipe("pizza box", /obj/item/pizzabox, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("folder", /obj/item/folder, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("pizza box", /obj/item/pizzabox, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new/datum/stack_recipe("folder", /obj/item/folder, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
null, \
|
||||
//TO-DO: Find a proper way to just change the illustration on the box. Code isn't the issue, input is.
|
||||
new/datum/stack_recipe_list("fancy boxes", list(
|
||||
new /datum/stack_recipe("donut box", /obj/item/storage/fancy/donut_box, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("egg box", /obj/item/storage/fancy/egg_box, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donk-pockets box", /obj/item/storage/box/donkpockets, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donk-pockets spicy box", /obj/item/storage/box/donkpockets/donkpocketspicy, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donk-pockets teriyaki box", /obj/item/storage/box/donkpockets/donkpocketteriyaki, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donk-pockets pizza box", /obj/item/storage/box/donkpockets/donkpocketpizza, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donk-pockets berry box", /obj/item/storage/box/donkpockets/donkpocketberry, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donk-pockets honk box", /obj/item/storage/box/donkpockets/donkpockethonk, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("monkey cube box", /obj/item/storage/box/monkeycubes, category = CAT_CONTAINERS),
|
||||
new /datum/stack_recipe("nugget box", /obj/item/storage/fancy/nugget_box, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donut box", /obj/item/storage/fancy/donut_box, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("egg box", /obj/item/storage/fancy/egg_box, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donk-pockets box", /obj/item/storage/box/donkpockets, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donk-pockets spicy box", /obj/item/storage/box/donkpockets/donkpocketspicy, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donk-pockets teriyaki box", /obj/item/storage/box/donkpockets/donkpocketteriyaki, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donk-pockets pizza box", /obj/item/storage/box/donkpockets/donkpocketpizza, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donk-pockets berry box", /obj/item/storage/box/donkpockets/donkpocketberry, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("donk-pockets honk box", /obj/item/storage/box/donkpockets/donkpockethonk, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("monkey cube box", /obj/item/storage/box/monkeycubes, check_density = FALSE, category = CAT_CONTAINERS),
|
||||
new /datum/stack_recipe("nugget box", /obj/item/storage/fancy/nugget_box, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
null, \
|
||||
|
||||
new /datum/stack_recipe("lethal ammo box", /obj/item/storage/box/lethalshot, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("rubber shot ammo box", /obj/item/storage/box/rubbershot, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("bean bag ammo box", /obj/item/storage/box/beanbag, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("flashbang box", /obj/item/storage/box/flashbangs, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("flashes box", /obj/item/storage/box/flashes, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("handcuffs box", /obj/item/storage/box/handcuffs, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("ID card box", /obj/item/storage/box/ids, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("PDA box", /obj/item/storage/box/pdas, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("lethal ammo box", /obj/item/storage/box/lethalshot, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("rubber shot ammo box", /obj/item/storage/box/rubbershot, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("bean bag ammo box", /obj/item/storage/box/beanbag, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("flashbang box", /obj/item/storage/box/flashbangs, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("flashes box", /obj/item/storage/box/flashes, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("handcuffs box", /obj/item/storage/box/handcuffs, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("ID card box", /obj/item/storage/box/ids, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("PDA box", /obj/item/storage/box/pdas, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
null, \
|
||||
|
||||
new /datum/stack_recipe("pillbottle box", /obj/item/storage/box/pillbottles, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("beaker box", /obj/item/storage/box/beakers, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("syringe box", /obj/item/storage/box/syringes, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("latex gloves box", /obj/item/storage/box/gloves, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("sterile masks box", /obj/item/storage/box/masks, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("body bag box", /obj/item/storage/box/bodybags, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("perscription glasses box", /obj/item/storage/box/rxglasses, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("medipen box", /obj/item/storage/box/medipens, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("oxygen tank box", /obj/item/storage/box/emergencytank, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("extended oxygen tank box", /obj/item/storage/box/engitank, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("pillbottle box", /obj/item/storage/box/pillbottles, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("beaker box", /obj/item/storage/box/beakers, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("syringe box", /obj/item/storage/box/syringes, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("latex gloves box", /obj/item/storage/box/gloves, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("sterile masks box", /obj/item/storage/box/masks, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("body bag box", /obj/item/storage/box/bodybags, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("perscription glasses box", /obj/item/storage/box/rxglasses, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("medipen box", /obj/item/storage/box/medipens, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("oxygen tank box", /obj/item/storage/box/emergencytank, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("extended oxygen tank box", /obj/item/storage/box/engitank, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
null, \
|
||||
|
||||
new /datum/stack_recipe("survival box", /obj/item/storage/box/survival/crafted, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("extended tank survival box", /obj/item/storage/box/survival/engineer/crafted, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("disk box", /obj/item/storage/box/disks, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("light tubes box", /obj/item/storage/box/lights/tubes, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("light bulbs box", /obj/item/storage/box/lights/bulbs, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("mixed lights box", /obj/item/storage/box/lights/mixed, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("mouse traps box", /obj/item/storage/box/mousetraps, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("candle box", /obj/item/storage/fancy/candle_box, category = CAT_CONTAINERS)
|
||||
new /datum/stack_recipe("survival box", /obj/item/storage/box/survival/crafted, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("extended tank survival box", /obj/item/storage/box/survival/engineer/crafted, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("disk box", /obj/item/storage/box/disks, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("light tubes box", /obj/item/storage/box/lights/tubes, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("light bulbs box", /obj/item/storage/box/lights/bulbs, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("mixed lights box", /obj/item/storage/box/lights/mixed, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("mouse traps box", /obj/item/storage/box/mousetraps, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("candle box", /obj/item/storage/fancy/candle_box, check_density = FALSE, category = CAT_CONTAINERS)
|
||||
)),
|
||||
|
||||
null, \
|
||||
@@ -645,14 +645,14 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \
|
||||
GLOBAL_LIST_INIT(bronze_recipes, list ( \
|
||||
new/datum/stack_recipe("wall gear", /obj/structure/girder/bronze, 2, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), \
|
||||
null,
|
||||
new/datum/stack_recipe("directional bronze window", /obj/structure/window/bronze/unanchored, time = 0, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("fulltile bronze window", /obj/structure/window/bronze/fulltile/unanchored, 2, time = 0, on_solid_ground = TRUE, window_checks = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("directional bronze window", /obj/structure/window/bronze/unanchored, time = 0, on_solid_ground = TRUE, check_direction = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("fulltile bronze window", /obj/structure/window/bronze/fulltile/unanchored, 2, time = 0, on_solid_ground = TRUE, is_fulltile = TRUE, category = CAT_WINDOWS), \
|
||||
new/datum/stack_recipe("pinion airlock assembly", /obj/structure/door_assembly/door_assembly_bronze, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("bronze pinion airlock assembly", /obj/structure/door_assembly/door_assembly_bronze/seethru, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("bronze floor tile", /obj/item/stack/tile/bronze, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("bronze hat", /obj/item/clothing/head/costume/bronze, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("bronze suit", /obj/item/clothing/suit/costume/bronze, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("bronze boots", /obj/item/clothing/shoes/bronze, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("bronze floor tile", /obj/item/stack/tile/bronze, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("bronze hat", /obj/item/clothing/head/costume/bronze, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("bronze suit", /obj/item/clothing/suit/costume/bronze, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
new/datum/stack_recipe("bronze boots", /obj/item/clothing/shoes/bronze, check_density = FALSE, category = CAT_CLOTHING), \
|
||||
null,
|
||||
new/datum/stack_recipe("bronze chair", /obj/structure/chair/bronze, 1, time = 0, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
))
|
||||
@@ -737,16 +737,16 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
|
||||
material_type = /datum/material/bone
|
||||
|
||||
GLOBAL_LIST_INIT(plastic_recipes, list(
|
||||
new /datum/stack_recipe("plastic floor tile", /obj/item/stack/tile/plastic, 1, 4, 20, category = CAT_TILES), \
|
||||
new /datum/stack_recipe("folding plastic chair", /obj/structure/chair/plastic, 2, category = CAT_FURNITURE), \
|
||||
new /datum/stack_recipe("plastic floor tile", /obj/item/stack/tile/plastic, 1, 4, 20, check_density = FALSE, category = CAT_TILES), \
|
||||
new /datum/stack_recipe("folding plastic chair", /obj/structure/chair/plastic, 2, check_density = FALSE, category = CAT_FURNITURE), \
|
||||
new /datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 5, one_per_turf = TRUE, on_solid_ground = TRUE, time = 4 SECONDS, category = CAT_FURNITURE), \
|
||||
new /datum/stack_recipe("water bottle", /obj/item/reagent_containers/cup/glass/waterbottle/empty, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("large water bottle", /obj/item/reagent_containers/cup/glass/waterbottle/large/empty, 3, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("colo cups", /obj/item/reagent_containers/cup/glass/colocup, 1, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("mannequin", /obj/structure/mannequin/plastic, 25, time = 5 SECONDS, one_per_turf = TRUE, category = CAT_ENTERTAINMENT), \
|
||||
new /datum/stack_recipe("wet floor sign", /obj/item/clothing/suit/caution, 2, category = CAT_EQUIPMENT), \
|
||||
new /datum/stack_recipe("warning cone", /obj/item/clothing/head/cone, 2, category = CAT_EQUIPMENT), \
|
||||
new /datum/stack_recipe("blank wall sign", /obj/item/sign, 1, category = CAT_FURNITURE)))
|
||||
new /datum/stack_recipe("water bottle", /obj/item/reagent_containers/cup/glass/waterbottle/empty, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("large water bottle", /obj/item/reagent_containers/cup/glass/waterbottle/large/empty, 3, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("colo cups", /obj/item/reagent_containers/cup/glass/colocup, 1, check_density = FALSE, category = CAT_CONTAINERS), \
|
||||
new /datum/stack_recipe("mannequin", /obj/structure/mannequin/plastic, 25, time = 5 SECONDS, one_per_turf = TRUE, check_density = FALSE, category = CAT_ENTERTAINMENT), \
|
||||
new /datum/stack_recipe("wet floor sign", /obj/item/clothing/suit/caution, 2, check_density = FALSE, category = CAT_EQUIPMENT), \
|
||||
new /datum/stack_recipe("warning cone", /obj/item/clothing/head/cone, 2, check_density = FALSE, category = CAT_EQUIPMENT), \
|
||||
new /datum/stack_recipe("blank wall sign", /obj/item/sign, 1, check_density = FALSE, category = CAT_FURNITURE)))
|
||||
|
||||
/obj/item/stack/sheet/plastic
|
||||
name = "plastic"
|
||||
@@ -770,7 +770,7 @@ GLOBAL_LIST_INIT(plastic_recipes, list(
|
||||
. += GLOB.plastic_recipes
|
||||
|
||||
GLOBAL_LIST_INIT(paperframe_recipes, list(
|
||||
new /datum/stack_recipe("paper frame separator", /obj/structure/window/paperframe, 2, one_per_turf = TRUE, on_solid_ground = TRUE, time = 1 SECONDS), \
|
||||
new /datum/stack_recipe("paper frame separator", /obj/structure/window/paperframe, 2, one_per_turf = TRUE, on_solid_ground = TRUE, is_fulltile = TRUE, time = 1 SECONDS), \
|
||||
new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperframe, 3, one_per_turf = TRUE, on_solid_ground = TRUE, time = 1 SECONDS )))
|
||||
|
||||
/obj/item/stack/sheet/paperframes
|
||||
|
||||
@@ -448,17 +448,15 @@
|
||||
return FALSE
|
||||
var/turf/dest_turf = get_turf(builder)
|
||||
|
||||
// If we're making a window, we have some special snowflake window checks to do.
|
||||
if(ispath(recipe.result_type, /obj/structure/window))
|
||||
var/obj/structure/window/result_path = recipe.result_type
|
||||
if(!valid_window_location(dest_turf, builder.dir, is_fulltile = initial(result_path.fulltile)))
|
||||
builder.balloon_alert(builder, "won't fit here!")
|
||||
return FALSE
|
||||
|
||||
if(recipe.one_per_turf && (locate(recipe.result_type) in dest_turf))
|
||||
builder.balloon_alert(builder, "already one here!")
|
||||
return FALSE
|
||||
|
||||
if(recipe.check_direction)
|
||||
if(!valid_build_direction(dest_turf, builder.dir, is_fulltile = recipe.is_fulltile))
|
||||
builder.balloon_alert(builder, "won't fit here!")
|
||||
return FALSE
|
||||
|
||||
if(recipe.on_tram)
|
||||
if(!locate(/obj/structure/industrial_lift/tram) in dest_turf)
|
||||
builder.balloon_alert(builder, "must be made on a tram!")
|
||||
@@ -473,16 +471,9 @@
|
||||
builder.balloon_alert(builder, "must be made on solid ground!")
|
||||
return FALSE
|
||||
|
||||
if(recipe.check_density)
|
||||
for(var/obj/object in dest_turf)
|
||||
if(istype(object, /obj/structure/grille))
|
||||
continue
|
||||
if(istype(object, /obj/structure/table))
|
||||
continue
|
||||
if(istype(object, /obj/structure/window))
|
||||
var/obj/structure/window/window_structure = object
|
||||
if(!window_structure.fulltile)
|
||||
continue
|
||||
if(object.density || NO_BUILD & object.obj_flags)
|
||||
if(object.density && !(object.obj_flags & IGNORE_DENSITY) || object.obj_flags & BLOCKS_CONSTRUCTION)
|
||||
builder.balloon_alert(builder, "something is in the way!")
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -17,10 +17,17 @@
|
||||
var/time = 0
|
||||
/// If only one of the resulting atom is allowed per turf
|
||||
var/one_per_turf = FALSE
|
||||
/// If the atom is fulltile, as in a fulltile window. This is used for the direction check to prevent fulltile windows from being able to be built over directional stuff.
|
||||
/// Setting this to true will effectively set check_direction to true.
|
||||
var/is_fulltile = FALSE
|
||||
/// If this atom should run the direction check, for use when building things like directional windows where you can have more than one per turf
|
||||
var/check_direction = FALSE
|
||||
/// If the atom requires a floor below
|
||||
var/on_solid_ground = FALSE
|
||||
/// If the atom requires a tram floor below
|
||||
var/on_tram = FALSE
|
||||
/// If the atom checks that there are objects with density in the same turf when being built. TRUE by default
|
||||
var/check_density = TRUE
|
||||
/// Bitflag of additional placement checks required to place. (STACK_CHECK_CARDINALS|STACK_CHECK_ADJACENT)
|
||||
var/placement_checks = NONE
|
||||
/// If TRUE, the created atom will gain custom mat datums
|
||||
@@ -42,7 +49,9 @@
|
||||
one_per_turf = FALSE,
|
||||
on_solid_ground = FALSE,
|
||||
on_tram = FALSE,
|
||||
window_checks = FALSE,
|
||||
is_fulltile = FALSE,
|
||||
check_direction = FALSE,
|
||||
check_density = TRUE,
|
||||
placement_checks = NONE,
|
||||
applies_mats = FALSE,
|
||||
trait_booster,
|
||||
@@ -59,6 +68,9 @@
|
||||
src.one_per_turf = one_per_turf
|
||||
src.on_solid_ground = on_solid_ground
|
||||
src.on_tram = on_tram
|
||||
src.is_fulltile = is_fulltile
|
||||
src.check_direction = check_direction || is_fulltile
|
||||
src.check_density = check_density
|
||||
src.placement_checks = placement_checks
|
||||
src.applies_mats = applies_mats
|
||||
src.trait_booster = trait_booster
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
anchored = TRUE
|
||||
pass_flags_self = PASSGRILLE
|
||||
flags_1 = CONDUCT_1
|
||||
obj_flags = CAN_BE_HIT | IGNORE_DENSITY
|
||||
pressure_resistance = 5*ONE_ATMOSPHERE
|
||||
armor_type = /datum/armor/structure_grille
|
||||
max_integrity = 50
|
||||
@@ -104,7 +105,7 @@
|
||||
var/obj/structure/window/window_path = the_rcd.window_type
|
||||
if(!ispath(window_path))
|
||||
CRASH("Invalid window path type in RCD: [window_path]")
|
||||
if(!valid_window_location(T, user.dir, is_fulltile = initial(window_path.fulltile)))
|
||||
if(!valid_build_direction(T, user.dir, is_fulltile = initial(window_path.fulltile)))
|
||||
balloon_alert(user, "window already here!")
|
||||
return FALSE
|
||||
var/obj/structure/window/WD = new the_rcd.window_type(T, user.dir)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon = 'icons/obj/railings.dmi'
|
||||
icon_state = "railing"
|
||||
flags_1 = ON_BORDER_1
|
||||
obj_flags = CAN_BE_HIT | BLOCKS_CONSTRUCTION_DIR
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
pass_flags_self = LETPASSTHROW|PASSSTRUCTURE
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
anchored = TRUE
|
||||
pass_flags_self = PASSTABLE | LETPASSTHROW
|
||||
layer = TABLE_LAYER
|
||||
obj_flags = CAN_BE_HIT | IGNORE_DENSITY
|
||||
var/frame = /obj/structure/table_frame
|
||||
var/framestack = /obj/item/stack/rods
|
||||
var/glass_shard_type = /obj/item/shard
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
anchored = FALSE
|
||||
density = FALSE
|
||||
dir = NORTH
|
||||
obj_flags = CAN_BE_HIT | BLOCKS_CONSTRUCTION_DIR
|
||||
set_dir_on_move = FALSE
|
||||
|
||||
var/obj/item/electronics/airlock/electronics = null
|
||||
@@ -64,10 +65,10 @@
|
||||
|
||||
if(istype(mover, /obj/structure/window))
|
||||
var/obj/structure/window/moved_window = mover
|
||||
return valid_window_location(loc, moved_window.dir, is_fulltile = moved_window.fulltile)
|
||||
return valid_build_direction(loc, moved_window.dir, is_fulltile = moved_window.fulltile)
|
||||
|
||||
if(istype(mover, /obj/structure/windoor_assembly) || istype(mover, /obj/machinery/door/window))
|
||||
return valid_window_location(loc, mover.dir, is_fulltile = FALSE)
|
||||
return valid_build_direction(loc, mover.dir, is_fulltile = FALSE)
|
||||
|
||||
/obj/structure/windoor_assembly/can_atmos_pass(turf/T, vertical = FALSE)
|
||||
if(get_dir(loc, T) == dir)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
pressure_resistance = 4*ONE_ATMOSPHERE
|
||||
anchored = TRUE //initially is 0 for tile smoothing
|
||||
flags_1 = ON_BORDER_1
|
||||
obj_flags = CAN_BE_HIT | BLOCKS_CONSTRUCTION_DIR | IGNORE_DENSITY
|
||||
max_integrity = 50
|
||||
can_be_unanchored = TRUE
|
||||
resistance_flags = ACID_PROOF
|
||||
@@ -56,6 +57,8 @@
|
||||
|
||||
if(fulltile)
|
||||
setDir()
|
||||
obj_flags &= ~BLOCKS_CONSTRUCTION_DIR
|
||||
obj_flags &= ~IGNORE_DENSITY
|
||||
AddElement(/datum/element/can_barricade)
|
||||
|
||||
//windows only block while reinforced and fulltile
|
||||
@@ -123,10 +126,10 @@
|
||||
|
||||
if(istype(mover, /obj/structure/window))
|
||||
var/obj/structure/window/moved_window = mover
|
||||
return valid_window_location(loc, moved_window.dir, is_fulltile = moved_window.fulltile)
|
||||
return valid_build_direction(loc, moved_window.dir, is_fulltile = moved_window.fulltile)
|
||||
|
||||
if(istype(mover, /obj/structure/windoor_assembly) || istype(mover, /obj/machinery/door/window))
|
||||
return valid_window_location(loc, mover.dir, is_fulltile = FALSE)
|
||||
return valid_build_direction(loc, mover.dir, is_fulltile = FALSE)
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -647,6 +650,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/plasma/spawner, 0)
|
||||
max_integrity = 100
|
||||
fulltile = TRUE
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
obj_flags = CAN_BE_HIT
|
||||
smoothing_flags = SMOOTH_BITMASK
|
||||
smoothing_groups = SMOOTH_GROUP_WINDOW_FULLTILE
|
||||
canSmoothWith = SMOOTH_GROUP_WINDOW_FULLTILE
|
||||
@@ -668,6 +672,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/plasma/spawner, 0)
|
||||
max_integrity = 400
|
||||
fulltile = TRUE
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
obj_flags = CAN_BE_HIT
|
||||
smoothing_flags = SMOOTH_BITMASK
|
||||
smoothing_groups = SMOOTH_GROUP_WINDOW_FULLTILE
|
||||
canSmoothWith = SMOOTH_GROUP_WINDOW_FULLTILE
|
||||
@@ -684,6 +689,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/plasma/spawner, 0)
|
||||
max_integrity = 1000
|
||||
fulltile = TRUE
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
obj_flags = CAN_BE_HIT
|
||||
smoothing_flags = SMOOTH_BITMASK
|
||||
smoothing_groups = SMOOTH_GROUP_WINDOW_FULLTILE
|
||||
canSmoothWith = SMOOTH_GROUP_WINDOW_FULLTILE
|
||||
@@ -700,6 +706,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/plasma/spawner, 0)
|
||||
max_integrity = 150
|
||||
fulltile = TRUE
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
obj_flags = CAN_BE_HIT
|
||||
state = RWINDOW_SECURE
|
||||
smoothing_flags = SMOOTH_BITMASK
|
||||
smoothing_groups = SMOOTH_GROUP_WINDOW_FULLTILE
|
||||
@@ -722,6 +729,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/plasma/spawner, 0)
|
||||
base_icon_state = "tinted_window"
|
||||
fulltile = TRUE
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
obj_flags = CAN_BE_HIT
|
||||
smoothing_flags = SMOOTH_BITMASK
|
||||
smoothing_groups = SMOOTH_GROUP_WINDOW_FULLTILE
|
||||
canSmoothWith = SMOOTH_GROUP_WINDOW_FULLTILE
|
||||
@@ -748,6 +756,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/plasma/spawner, 0)
|
||||
reinf = TRUE
|
||||
fulltile = TRUE
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
obj_flags = CAN_BE_HIT
|
||||
reinf = TRUE
|
||||
heat_resistance = 1600
|
||||
armor_type = /datum/armor/reinforced_shuttle
|
||||
@@ -795,6 +804,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/plasma/spawner, 0)
|
||||
wtype = "shuttle"
|
||||
fulltile = TRUE
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
obj_flags = CAN_BE_HIT
|
||||
heat_resistance = 1600
|
||||
armor_type = /datum/armor/plasma_plastitanium
|
||||
smoothing_flags = SMOOTH_BITMASK
|
||||
@@ -827,6 +837,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/plasma/spawner, 0)
|
||||
max_integrity = 15
|
||||
fulltile = TRUE
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
obj_flags = CAN_BE_HIT
|
||||
smoothing_flags = SMOOTH_BITMASK
|
||||
smoothing_groups = SMOOTH_GROUP_PAPERFRAME
|
||||
canSmoothWith = SMOOTH_GROUP_PAPERFRAME
|
||||
@@ -916,6 +927,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/window/reinforced/plasma/spawner, 0)
|
||||
canSmoothWith = SMOOTH_GROUP_WINDOW_FULLTILE_BRONZE
|
||||
fulltile = TRUE
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
obj_flags = CAN_BE_HIT
|
||||
max_integrity = 50
|
||||
glass_amount = 2
|
||||
|
||||
|
||||
@@ -321,7 +321,7 @@
|
||||
return TRUE
|
||||
if(RCD_AIRLOCK)
|
||||
if(ispath(the_rcd.airlock_type, /obj/machinery/door/window))
|
||||
if(!valid_window_location(src, user.dir, is_fulltile = FALSE))
|
||||
if(!valid_build_direction(src, user.dir, is_fulltile = FALSE))
|
||||
balloon_alert(user, "there's already a windoor!")
|
||||
return FALSE
|
||||
for(var/obj/machinery/door/door in src)
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
return TRUE
|
||||
if(RCD_AIRLOCK)
|
||||
if(ispath(the_rcd.airlock_type, /obj/machinery/door/window))
|
||||
if(!valid_window_location(src, user.dir, is_fulltile = FALSE))
|
||||
if(!valid_build_direction(src, user.dir, is_fulltile = FALSE))
|
||||
balloon_alert(user, "there's already a windoor!")
|
||||
return FALSE
|
||||
for(var/obj/machinery/door/door in src)
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
use_power = IDLE_POWER_USE
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
obj_flags = NO_BUILD // Becomes undense when the door is open
|
||||
obj_flags = BLOCKS_CONSTRUCTION // Becomes undense when the door is open
|
||||
idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.5
|
||||
active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.3
|
||||
|
||||
|
||||
@@ -107,8 +107,8 @@
|
||||
merge_type = /obj/item/stack/ore/glass
|
||||
|
||||
GLOBAL_LIST_INIT(sand_recipes, list(\
|
||||
new /datum/stack_recipe("sandstone", /obj/item/stack/sheet/mineral/sandstone, 1, 1, 50, category = CAT_MISC),\
|
||||
new /datum/stack_recipe("aesthetic volcanic floor tile", /obj/item/stack/tile/basalt, 2, 1, 50, category = CAT_TILES)\
|
||||
new /datum/stack_recipe("sandstone", /obj/item/stack/sheet/mineral/sandstone, 1, 1, 50, check_density = FALSE, category = CAT_MISC),\
|
||||
new /datum/stack_recipe("aesthetic volcanic floor tile", /obj/item/stack/tile/basalt, 2, 1, 50, check_density = FALSE, category = CAT_TILES)\
|
||||
))
|
||||
|
||||
/obj/item/stack/ore/glass/get_main_recipes()
|
||||
|
||||
@@ -292,7 +292,7 @@
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
obj_flags = NO_BUILD // Becomes undense when the door is open
|
||||
obj_flags = BLOCKS_CONSTRUCTION // Becomes undense when the door is open
|
||||
|
||||
var/busy = FALSE
|
||||
var/busy_icon_state
|
||||
|
||||
Reference in New Issue
Block a user