diff --git a/citadel.dme b/citadel.dme index 06d6fce576d..b213a43eea2 100644 --- a/citadel.dme +++ b/citadel.dme @@ -531,7 +531,10 @@ #include "code\controllers\configuration_old\configuration.dm" #include "code\controllers\configuration_old\configuration_vr.dm" #include "code\controllers\observer_listener\atom\observer.dm" +#include "code\controllers\repository\designs.dm" #include "code\controllers\repository\guidebook.dm" +#include "code\controllers\repository\material_traits.dm" +#include "code\controllers\repository\materials.dm" #include "code\controllers\repository\structs.dm" #include "code\controllers\subsystem\ai_holders.dm" #include "code\controllers\subsystem\ai_legacy.dm" @@ -587,7 +590,6 @@ #include "code\controllers\subsystem\preferences.dm" #include "code\controllers\subsystem\radiation.dm" #include "code\controllers\subsystem\repository.dm" -#include "code\controllers\subsystem\research.dm" #include "code\controllers\subsystem\server_maint.dm" #include "code\controllers\subsystem\shuttles.dm" #include "code\controllers\subsystem\simple_networks.dm" @@ -4663,6 +4665,7 @@ #include "code\modules\reagents\reagent_containers\glass\bottle_vr.dm" #include "code\modules\research\design.dm" #include "code\modules\research\research.dm" +#include "code\modules\research\tech.dm" #include "code\modules\research\designs\ai_holders.dm" #include "code\modules\research\designs\bag_of_holding.dm" #include "code\modules\research\designs\beakers.dm" @@ -4701,6 +4704,8 @@ #include "code\modules\research\designs\circuits\machines\chemistry.dm" #include "code\modules\research\designs\circuits\machines\misc.dm" #include "code\modules\research\designs\circuits\machines\nanites.dm" +#include "code\modules\research\items\design_disk.dm" +#include "code\modules\research\items\tech_disk.dm" #include "code\modules\research\machinery\circuitprinter.dm" #include "code\modules\research\machinery\destructive_analyzer.dm" #include "code\modules\research\machinery\protolathe.dm" diff --git a/code/__DEFINES/_tick.dm b/code/__DEFINES/_tick.dm index 5173b89843d..d3d966c3545 100644 --- a/code/__DEFINES/_tick.dm +++ b/code/__DEFINES/_tick.dm @@ -33,6 +33,10 @@ #define CHECK_TICK ( TICK_CHECK ? stoplag() : 0 ) /// Returns true if tick usage is above 95, for high priority usage -#define TICK_CHECK_HIGH_PRIORITY ( TICK_USAGE > 95 ) +/// +/// * Use for admin functions so they stay responsive and functional during lag. +#define TICK_CHECK_HIGH_PRIORITY ( TICK_USAGE > 99 ) /// runs stoplag if tick_usage is above 95, for high priority usage +/// +/// * Use for admin functions so they stay responsive and functional during lag. #define CHECK_TICK_HIGH_PRIORITY ( TICK_CHECK_HIGH_PRIORITY? stoplag() : 0 ) diff --git a/code/__DEFINES/controllers/_repositories.dm b/code/__DEFINES/controllers/_repositories.dm index a901c80f4d1..b2f5702f752 100644 --- a/code/__DEFINES/controllers/_repositories.dm +++ b/code/__DEFINES/controllers/_repositories.dm @@ -1,22 +1,30 @@ //* This file is explicitly licensed under the MIT license. *// -//* Copyright (c) 2023 Citadel Station developers. *// +//* Copyright (c) 2024 Citadel Station Developers *// + +//* This is here in [code/__DEFINES/controllers/_repositories.dm] for compile order reasons. *// +/datum/controller/subsystem/repository/proc/__create_repositories() //* This is here in [code/__DEFINES/controllers/_repositories.dm] for compile order reasons. *// /datum/controller/subsystem/repository/proc/__init_repositories() +// todo: redo recover logic; maybe /datum/controller as a whole should be brushed up #define REPOSITORY_DEF(what) \ -GLOBAL_REAL(RC##what, /datum/controller/repository/##what); \ +GLOBAL_REAL(RS##what, /datum/controller/repository/##what); \ /datum/controller/repository/##what/New(){ \ - if(global.RC##what != src && istype(global.RC##what)){ \ - Recover(global.RC##what); \ - qdel(global.RC##what); \ + if(global.RS##what != src && istype(global.RS##what)){ \ + Recover(global.RS##what); \ + qdel(global.RS##what); \ } \ - global.RC##what = src; \ + global.RS##what = src; \ +} \ +/datum/controller/subsystem/repository/var/datum/controller/repository/##what/RS##what; \ +/datum/controller/subsystem/repository/__create_repositories() { \ + ..(); \ + RS##what = new; \ + RS##what.Create(); \ } \ -/datum/controller/subsystem/repository/var/datum/controller/repository/##what/RC##what; \ /datum/controller/subsystem/repository/__init_repositories() { \ ..(); \ - RC##what = new; \ - RC##what.Initialize(); \ + RS##what.Initialize(); \ } \ /datum/controller/repository/##what diff --git a/code/__DEFINES/controllers/_subsystems.dm b/code/__DEFINES/controllers/_subsystems.dm index 61115e15790..3a5f1b5360b 100644 --- a/code/__DEFINES/controllers/_subsystems.dm +++ b/code/__DEFINES/controllers/_subsystems.dm @@ -4,6 +4,13 @@ *? Lots of important stuff in here, make sure you have your brain switched on when editing this file! */ +//* Subsystem `initialized` variable *// + +// todo: implement these, separate out SSatoms initialization state to its own variable +// #define SUBSYSTEM_INITIALIZED_NOT_STARTED 0 +// #define SUBSYSTEM_INITIALIZED_INITIALIZING 1 +// #define SUBSYSTEM_INITIALIZED_DONE 2 + //! ## Initialization subsystem /// New should not call Initialize. diff --git a/code/__DEFINES/materials/flags.dm b/code/__DEFINES/materials/flags.dm index a22e4c3388f..067be78d6ff 100644 --- a/code/__DEFINES/materials/flags.dm +++ b/code/__DEFINES/materials/flags.dm @@ -1,7 +1,7 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2023 Citadel Station developers. *// -//* /datum/material material_flags +//* /datum/prototype/material material_flags /// vulnerability applies to mob armor (uh oh) #define MATERIAL_FLAG_VULNERABLE_MOB_ARMOR (1<<0) @@ -17,8 +17,8 @@ DEFINE_BITFIELD(material_flags, list( BITFIELD(MATERIAL_FLAG_CONSIDERED_OVERPOWERED), )) -//* /datum/material material_constraints -//* /datum/design material_constraints list values +//* /datum/prototype/material material_constraints +//* /datum/prototype/design material_constraints list values // None yet @@ -26,7 +26,7 @@ DEFINE_BITFIELD(material_constraints, list( // none yet )) -//* /datum/material_trait material_trait_flags +//* /datum/prototype/material_trait material_trait_flags /// used to attack #define MATERIAL_TRAIT_ATTACK (1<<0) diff --git a/code/__DEFINES/materials/helpers.dm b/code/__DEFINES/materials/helpers.dm index 36c9375a93e..70eafe784e5 100644 --- a/code/__DEFINES/materials/helpers.dm +++ b/code/__DEFINES/materials/helpers.dm @@ -13,12 +13,12 @@ /// Invocation of material traits /// A - the atom /// CHECK - material_trait_flags to check -/// INVOKE - procname on /datum/material_trait to invoke +/// INVOKE - procname on /datum/prototype/material_trait to invoke /// ARGS... - directly appended to the material_trait proc invocation after the params 'host' being A, and 'data' being the data the trait has on A. #define MATERIAL_INVOKE(A, CHECK, INVOKE, ARGS...) \ if(A.material_trait_flags & CHECK) { \ if(islist(A.material_traits)) { \ - for(var/datum/material_trait/__trait as anything in A.material_traits){ \ + for(var/datum/prototype/material_trait/__trait as anything in A.material_traits){ \ if(!(__trait.material_trait_flags & CHECK)) { \ continue; \ } \ @@ -26,7 +26,7 @@ } \ } \ else { \ - var/datum/material_trait/__trait = A.material_traits; \ + var/datum/prototype/material_trait/__trait = A.material_traits; \ __trait.INVOKE(A, A.material_traits_data, ##args); \ } \ } @@ -35,12 +35,12 @@ /// OUT - flag returns from invocations are binary OR'd into this. /// A - the atom /// CHECK - material_trait_flags to check -/// INVOKE - procname on /datum/material_trait to invoke +/// INVOKE - procname on /datum/prototype/material_trait to invoke /// ARGS... - directly appended to the material_trait proc invocation after the params 'host' being A, and 'data' being the data the trait has on A. #define MATERIAL_INVOKE_OUT(OUT, A, CHECK, INVOKE, ARGS...) \ if(A.material_trait_flags & CHECK) { \ if(islist(A.material_traits)) { \ - for(var/datum/material_trait/__trait as anything in A.material_traits){ \ + for(var/datum/prototype/material_trait/__trait as anything in A.material_traits){ \ if(!(__trait.material_trait_flags & CHECK)) { \ continue; \ } \ @@ -48,7 +48,7 @@ } \ } \ else { \ - var/datum/material_trait/__trait = A.material_traits; \ + var/datum/prototype/material_trait/__trait = A.material_traits; \ OUT |= __trait.INVOKE(A, A.material_traits_data, ##args); \ } \ } diff --git a/code/__HELPERS/stoplag.dm b/code/__HELPERS/stoplag.dm index abfcb7cde37..8c28c1fdc8d 100644 --- a/code/__HELPERS/stoplag.dm +++ b/code/__HELPERS/stoplag.dm @@ -18,8 +18,9 @@ . = 0 var/i = DS2TICKS(initial_delay) do - . += CEILING(i*DELTA_CALC, 1) - sleep(i*world.tick_lag*DELTA_CALC) + var/delta = DELTA_CALC + . += ceil(i * delta) + sleep(i * world.tick_lag * delta) i *= 2 while (TICK_USAGE > min(TICK_LIMIT_TO_RUN, Master.current_ticklimit)) diff --git a/code/controllers/controller.dm b/code/controllers/controller.dm index b9ec78e06dc..93d5897ff45 100644 --- a/code/controllers/controller.dm +++ b/code/controllers/controller.dm @@ -12,9 +12,14 @@ var/obj/effect/statclick/statclick /// debug/verbose logging? + // todo: kil var/verbose_logging = FALSE - +/** + * Called to initialize a controller. + * + * This should not be called by the controller's New(), rather it is generally called by whatever made the controller. + */ /datum/controller/proc/Initialize() return diff --git a/code/controllers/repository.dm b/code/controllers/repository.dm index 9c0a2bc68b8..533199fd4f3 100644 --- a/code/controllers/repository.dm +++ b/code/controllers/repository.dm @@ -1,21 +1,60 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 Citadel Station Developers *// + +/** + * Repository controllers. + * + * Storage for prototypes. + * + * Allows: + * + * * Looking instances up via ID + * * Looking instances up via typepath (if hardcoded) + * + * Should be: + * + * * Init order independent. This means that repositories should function + * if the database is up even if it hasn't technically initialized yet. + * This is because repositories init in an undetermined order (on purpose), + * and many repositories may / will depend on others. + * As an example, design datums require resolution of material datums. + */ /datum/controller/repository abstract_type = /datum/controller/repository name = "REPOSITORY OF SOME KIND" /// expected type of prototype var/expected_type + + /// by-id lookup + var/list/id_lookup /// by-type lookup var/list/type_lookup - /// by-id lookup - var/list/uid_lookup - /// fetched subtype lists - var/list/subtype_lists -/datum/controller/repository/Initialize() - uid_lookup = list() + /// fetched subtype lists + var/tmp/list/subtype_lists + + /// temporary id to path lookup used during init + // todo: figure out a way to not do this, this is bad + var/tmp/list/init_reverse_lookup_shim + +/datum/controller/repository/proc/Create() + id_lookup = list() type_lookup = list() subtype_lists = list() + init_reverse_lookup_shim = list() + for(var/datum/prototype/casted as anything in subtypesof(expected_type)) + if(initial(casted.abstract_type) == casted) + continue + var/casted_id = initial(casted.id) + if(!casted_id) + continue + init_reverse_lookup_shim[casted_id] = casted + return TRUE + +/datum/controller/repository/Initialize() generate() + init_reverse_lookup_shim = null return ..() /** @@ -25,10 +64,11 @@ * You can, and should, cast it to the type you're defining this on, as it'll always be the same type. */ /datum/controller/repository/Recover(datum/controller/repository/old_instance) + // todo: redo recover logic; maybe /datum/controller as a whole should be brushed up . = ..() if(!istype(old_instance)) src.type_lookup = list() - src.uid_lookup = list() + src.id_lookup = list() src.subtype_lists = list() generate() return FALSE @@ -36,30 +76,79 @@ if(!islist(src.type_lookup)) src.type_lookup = list() . = FALSE - src.uid_lookup = old_instance.uid_lookup - if(!islist(src.uid_lookup)) - src.uid_lookup = list() + src.id_lookup = old_instance.id_lookup + if(!islist(src.id_lookup)) + src.id_lookup = list() . = FALSE src.subtype_lists = list() /** - * prototypes returned should generally not be modified. - * prototypes returned from a typepath input should never, ever be modified. + * regenerates entries, kicking out anything that's in the way + */ +/datum/controller/repository/proc/generate() + for(var/datum/prototype/instance as anything in subtypesof(expected_type)) + if(initial(instance.abstract_type) == instance) + continue + if(initial(instance.lazy)) + continue + // are we already loaded? + if(type_lookup[instance]) + continue + instance = new instance + instance.hardcoded = TRUE + load(instance) + +//* Public API *// + +/** + * Fetches a prototype by type or ID. + * + * * Allows passing in a prototype instance which will be returned as itself. + * Useful for procs that should accept types, IDs, *and* instances. + * + * prototypes returned should never, ever be modified + * + * @return prototype instance or null */ /datum/controller/repository/proc/fetch(datum/prototype/type_or_id) + // todo: optimize if(isnull(type_or_id)) return - if(istext(type_or_id)) - return uid_lookup[type_or_id] - . = type_lookup[type_or_id] - if(.) - return - // types are complicated, is it lazy? - if(initial(type_or_id.lazy)) - // if so, init it - register_internal((. = new type_or_id), TRUE, TRUE) + else if(istext(type_or_id)) + if(init_reverse_lookup_shim) + var/potential_path = init_reverse_lookup_shim[type_or_id] + return fetch(potential_path) + return id_lookup[type_or_id] + else if(ispath(type_or_id)) + . = type_lookup[type_or_id] + if(.) + return + if(initial(type_or_id.abstract_type) == type_or_id) + CRASH("tried to fetch an abstract prototype") + var/datum/prototype/loading = new type_or_id + loading.hardcoded = TRUE + load(loading) + return loading + else if(istype(type_or_id)) + return type_or_id else - CRASH("failed to fetch a hardcoded prototype") + CRASH("what?") + +/** + * Fetches a list of prototypes by type or ID. + * + * * Allows passing in prototype instances which will be returned as itself. + * Useful for procs that should accept types, IDs, *and* instances. + * + * prototypes returned should never, ever be modified + * + * @return list() of instances + */ +/datum/controller/repository/proc/fetch_multi(list/datum/prototype/types_or_ids) + // todo: optimize + . = list() + for(var/datum/prototype/casted as anything in types_or_ids) + . += fetch(casted) /** * lists returned should never, ever be modified. @@ -72,45 +161,64 @@ return subtype_lists[path] var/list/generating = list() subtype_lists[path] = generating - for(var/fetching as anything in subtypesof(path)) - var/datum/prototype/instance = fetch(fetching) + for(var/datum/prototype/casted as anything in subtypesof(path)) + if(initial(casted.abstract_type) == casted) + continue + var/datum/prototype/instance = fetch(casted) generating += instance return generating -/datum/controller/repository/proc/register(datum/prototype/instance, force) - return register_internal(instance, force, FALSE) +/** + * Registers a prototype created midround. + * + * * This can immediately save it to the database. + * * After calling this, **you must release any cached references to the instance from the calling proc.** + * After this call, the repository now owns the instance, not whichever system created it. + */ +/datum/controller/repository/proc/register(datum/prototype/instance) + return load(instance) -/datum/controller/repository/proc/register_internal(datum/prototype/instance, force, hardcoded) - PRIVATE_PROC(TRUE) - if(uid_lookup[instance] && !force) - return FALSE - uid_lookup[instance] = instance - if(hardcoded) +//* Private API *// + +/** + * Registers a prototype with the subsystem. + * + * * This is for internal use. + */ +/datum/controller/repository/proc/load(datum/prototype/instance) + PROTECTED_PROC(TRUE) + if(id_lookup[instance]) + . = FALSE + CRASH("attempted to load an instance that collides with a currently loaded instance on ID.") + if(instance.hardcoded && type_lookup[instance.type]) + . = FALSE + CRASH("attempted to load an instance that collides with a currently loaded instance on type.") + if(!instance.register()) + . = FALSE + CRASH("instance refused to unregister. this is undefined behavior.") + id_lookup[instance.id] = instance + if(instance.hardcoded) // invalidate cache // todo: smarter way to do this subtype_lists = list() type_lookup[instance.type] = instance return TRUE -/datum/controller/repository/proc/unregister(datum/prototype/instance) - if(type_lookup[instance.type] == instance) - CRASH("tried to unregister a hardcoded instance") - if(!instance.unregister()) - CRASH("instance refused to unregister. this is undefined behavior.") - // invalidate cache - // todo: smarter way to do this - subtype_lists = list() - uid_lookup -= instance.id - return TRUE - /** - * regenerates entries, kicking out anything that's in the way + * Unregister a prototype. + * + * * This does not delete it from existence, this just unloads it from the subsystem. + * * This is for internal use. */ -/datum/controller/repository/proc/generate() - for(var/datum/prototype/instance as anything in subtypesof(expected_type)) - if(initial(instance.abstract_type) == instance) - continue - if(initial(instance.lazy)) - continue - instance = new instance - register_internal(instance, TRUE, TRUE) +/datum/controller/repository/proc/unload(datum/prototype/instance) + PROTECTED_PROC(TRUE) + if(!instance.unregister()) + . = FALSE + CRASH("instance refused to unregister. this is undefined behavior.") + id_lookup -= instance.id + if(instance.hardcoded) + // invalidate cache + // todo: smarter way to do this + subtype_lists = list() + type_lookup -= instance.type + return TRUE diff --git a/code/controllers/repository/designs.dm b/code/controllers/repository/designs.dm new file mode 100644 index 00000000000..088341ace0c --- /dev/null +++ b/code/controllers/repository/designs.dm @@ -0,0 +1,34 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 Citadel Station Developers *// + +REPOSITORY_DEF(designs) + name = "Repository - Designs" + expected_type = /datum/prototype/design + + //* caches *// + + /// cached autolathe desgin ids + var/tmp/list/autolathe_design_ids + /// cached medical mini autolathe desgin ids + var/tmp/list/medical_mini_design_ids + +/datum/controller/repository/designs/Initialize() + autolathe_design_ids = list() + medical_mini_design_ids = list() + return ..() + +/datum/controller/repository/designs/load(datum/prototype/design/instance) + . = ..() + if(!.) + return + if(instance.lathe_type & LATHE_TYPE_AUTOLATHE) + autolathe_design_ids += instance.id + if(istype(instance, /datum/prototype/design/medical)) + medical_mini_design_ids += instance.id + +/datum/controller/repository/designs/unload(datum/prototype/design/instance) + . = ..() + if(instance.lathe_type & LATHE_TYPE_AUTOLATHE) + autolathe_design_ids -= instance.id + if(istype(instance, /datum/prototype/design/medical)) + medical_mini_design_ids -= instance.id diff --git a/code/controllers/repository/material_traits.dm b/code/controllers/repository/material_traits.dm new file mode 100644 index 00000000000..2c9f0f79611 --- /dev/null +++ b/code/controllers/repository/material_traits.dm @@ -0,0 +1,6 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 Citadel Station Developers *// + +REPOSITORY_DEF(material_traits) + name = "Repository - Material Traits" + expected_type = /datum/prototype/material_trait diff --git a/code/controllers/repository/materials.dm b/code/controllers/repository/materials.dm new file mode 100644 index 00000000000..0ec6f799683 --- /dev/null +++ b/code/controllers/repository/materials.dm @@ -0,0 +1,24 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 Citadel Station Developers *// + +REPOSITORY_DEF(materials) + name = "Repository - Materials" + expected_type = /datum/prototype/material + + var/list/legacy_material_lookup = list() + +/datum/controller/repository/materials/Create() + legacy_material_lookup = list() + return ..() + +/datum/controller/repository/materials/load(datum/prototype/material/instance) + if(!instance.Initialize()) + return FALSE + . = ..() + if(!.) + return + legacy_material_lookup[lowertext(instance.name)] = instance + +/datum/controller/repository/materials/unload(datum/prototype/material/instance) + . = ..() + legacy_material_lookup -= lowertext(instance.name) diff --git a/code/controllers/repository/structs.dm b/code/controllers/repository/structs.dm index 6a6bd2eb004..24c07fc48aa 100644 --- a/code/controllers/repository/structs.dm +++ b/code/controllers/repository/structs.dm @@ -1,6 +1,9 @@ //* This file is explicitly licensed under the MIT license. *// -//* Copyright (c) 2023 Citadel Station developers. *// +//* Copyright (c) 2024 Citadel Station Developers *// REPOSITORY_DEF(structs) name = "Repository - Structs" expected_type = /datum/prototype/struct + +/datum/prototype/struct + abstract_type = /datum/prototype/struct diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index 0ef79b8d058..b12deb3adb4 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -51,6 +51,7 @@ //var/init_stage = INITSTAGE_MAIN /// This var is set to TRUE after the subsystem has been initialized. + // todo: see __DEFINES/controllers/_subsystems.dm; this shouldn't just be TRUE / FALSE var/initialized = FALSE /** diff --git a/code/controllers/subsystem/materials.dm b/code/controllers/subsystem/materials.dm index 85e4869c4f3..4b53be2b5be 100644 --- a/code/controllers/subsystem/materials.dm +++ b/code/controllers/subsystem/materials.dm @@ -4,12 +4,6 @@ SUBSYSTEM_DEF(materials) init_order = INIT_ORDER_MATERIALS wait = 2 SECONDS - /// material by id - var/list/material_lookup - /// material trait by path - var/list/material_traits - /// legacy material lookup *vomit - var/list/legacy_material_lookup /// material recipes var/list/datum/stack_recipe/material/material_stack_recipes @@ -30,14 +24,10 @@ SUBSYSTEM_DEF(materials) var/list/wall_armor_cache = list() /datum/controller/subsystem/materials/Initialize() - initialize_material_traits() - initialize_materials() initialize_material_recipes() return ..() /datum/controller/subsystem/materials/Recover() - initialize_material_traits() - initialize_materials() initialize_material_recipes() if(islist(SSmaterials.ticking)) // todo: better sanitization @@ -65,7 +55,7 @@ SUBSYSTEM_DEF(materials) var/atom/A var/dt = nominal_dt_s var/i - var/datum/material_trait/trait + var/datum/prototype/material_trait/trait for(i in length(currentrun) to 1 step -1) A = currentrun[A] if(length(A.material_traits)) @@ -80,33 +70,6 @@ SUBSYSTEM_DEF(materials) break currentrun.len -= (length(currentrun) - i + 1) -/datum/controller/subsystem/materials/proc/initialize_materials() - material_lookup = list() - legacy_material_lookup = list() - - for(var/path in subtypesof(/datum/material)) - var/datum/material/mat_ref = path - if(initial(mat_ref.abstract_type) == path) - continue - - mat_ref = new path - // Initialize the material. It'll return TRUE if everything went well. - if(!mat_ref.Initialize()) - CRASH("Failed to initialize material [mat_ref.name]!") - - // why are we doing initial() here? because the unit test checks for initial. - material_lookup[initial(mat_ref.id)] = mat_ref - legacy_material_lookup[lowertext(mat_ref.name)] = mat_ref - -/datum/controller/subsystem/materials/proc/initialize_material_traits() - material_traits = list() - for(var/path in subtypesof(/datum/material_trait)) - var/datum/material/mat_trait = path - if(initial(mat_trait.abstract_type) == path) - continue - mat_trait = new path - material_traits[path] = mat_trait - /datum/controller/subsystem/materials/proc/initialize_material_recipes() material_stack_recipes = list() for(var/path in subtypesof(/datum/stack_recipe/material)) @@ -115,28 +78,6 @@ SUBSYSTEM_DEF(materials) continue material_stack_recipes += new path -/** - * fetches material instance - * - * please use typepaths whenever possible at compile-time for compiler sanity checking support - * ids are acceptable on maps - * - * @params - * id_or_path - id or typepath; if this is already a material instance, it will be returned as-is. - */ -/datum/controller/subsystem/materials/proc/resolve_material(datum/material/id_or_path) - if(istext(id_or_path)) - // yay it's an id - return material_lookup[id_or_path] - else if(istype(id_or_path)) - return id_or_path - else if(ispath(id_or_path)) - // yay it's a path - return material_lookup[initial(id_or_path.id)] - else if(isnull(id_or_path)) - return - CRASH("what?") - /** * ensures a list is full of material ids for keys * @@ -146,7 +87,7 @@ SUBSYSTEM_DEF(materials) // todo: optimize . = list() for(var/i in 1 to length(L)) - var/datum/material/resolved = resolve_material(L[i]) + var/datum/prototype/material/resolved = RSmaterials.fetch(L[i]) . += resolved?.id /** @@ -158,7 +99,7 @@ SUBSYSTEM_DEF(materials) // todo: optimize . = list() for(var/i in 1 to length(L)) - var/datum/material/resolved = resolve_material(L[i]) + var/datum/prototype/material/resolved = RSmaterials.fetch(L[i]) . += resolved /** @@ -172,7 +113,7 @@ SUBSYSTEM_DEF(materials) . = list() for(var/i in 1 to length(L)) var/key = L[i] - var/datum/material/resolved = resolve_material(key) + var/datum/prototype/material/resolved = RSmaterials.fetch(key) if(isnull(resolved)) continue var/value = L[key] @@ -189,7 +130,7 @@ SUBSYSTEM_DEF(materials) . = list() for(var/i in 1 to length(L)) var/key = L[i] - var/datum/material/resolved = resolve_material(key) + var/datum/prototype/material/resolved = RSmaterials.fetch(key) if(isnull(resolved)) continue var/value = L[key] @@ -206,7 +147,7 @@ SUBSYSTEM_DEF(materials) for(var/i in 1 to length(L)) var/key = L[i] var/value = L[key] - var/datum/material/resolved = resolve_material(value) + var/datum/prototype/material/resolved = RSmaterials.fetch(value) .[key] = resolved?.id /** @@ -220,7 +161,7 @@ SUBSYSTEM_DEF(materials) for(var/i in 1 to length(L)) var/key = L[i] var/value = L[key] - var/datum/material/resolved = resolve_material(value) + var/datum/prototype/material/resolved = RSmaterials.fetch(value) .[key] = resolved /** @@ -230,15 +171,13 @@ SUBSYSTEM_DEF(materials) */ /datum/controller/subsystem/materials/proc/all_materials() RETURN_TYPE(/list) - . = list() - for(var/id in material_lookup) - . += material_lookup[id] + return RSmaterials.fetch_subtypes(/datum/prototype/material):Copy() /** * drop a material sheet */ -/datum/controller/subsystem/materials/proc/drop_sheets(datum/material/id_or_path, amount, atom/where) - var/datum/material/mat = resolve_material(id_or_path) +/datum/controller/subsystem/materials/proc/drop_sheets(datum/prototype/material/id_or_path, amount, atom/where) + var/datum/prototype/material/mat = RSmaterials.fetch(id_or_path) mat.place_sheet(where, amount) /** @@ -246,12 +185,12 @@ SUBSYSTEM_DEF(materials) * todo: REMOVE * * DO NOT USE THIS PROC - * Use SSmaterials.resolve_material()! + * Use RSmaterials.fetch()! */ /proc/get_material_by_name(name) - if(istype(name, /datum/material)) + if(istype(name, /datum/prototype/material)) return name - return SSmaterials.legacy_material_lookup[name] + return RSmaterials.legacy_material_lookup[name] /** * tgui materials context @@ -267,8 +206,8 @@ SUBSYSTEM_DEF(materials) /datum/controller/subsystem/materials/proc/tgui_materials_context(list/ids, full = FALSE) var/list/data = list() // a hack to make this default to all if not specified. - for(var/id in ids || material_lookup) - var/datum/material/mat = material_lookup[id] + for(var/id in ids || RSmaterials.id_lookup) + var/datum/prototype/material/mat = RSmaterials.fetch(id) var/list/built = list( "name" = mat.display_name || mat.name, "id" = mat.id, diff --git a/code/controllers/subsystem/repository.dm b/code/controllers/subsystem/repository.dm index 17bd60b7c44..17a553eaa18 100644 --- a/code/controllers/subsystem/repository.dm +++ b/code/controllers/subsystem/repository.dm @@ -7,5 +7,6 @@ SUBSYSTEM_DEF(repository) subsystem_flags = SS_NO_FIRE /datum/controller/subsystem/repository/Initialize() + __create_repositories() __init_repositories() return ..() diff --git a/code/controllers/subsystem/research.dm b/code/controllers/subsystem/research.dm deleted file mode 100644 index 4dda3ba6e3c..00000000000 --- a/code/controllers/subsystem/research.dm +++ /dev/null @@ -1,84 +0,0 @@ -//* This file is explicitly licensed under the MIT license. *// -//* Copyright (c) 2023 Citadel Station developers. *// - -SUBSYSTEM_DEF(research) - name = "Research" - subsystem_flags = SS_NO_FIRE - init_order = INIT_ORDER_RESEARCH - - //? designs - /// design lookup id = instance - var/list/design_lookup - - //? designs - caches - /// cached autolathe desgin ids - var/list/autolathe_design_ids - - //? designs - caches - /// cached medical mini autolathe desgin ids - var/list/medical_mini_design_ids - -/datum/controller/subsystem/research/Initialize() - build_designs() - return ..() - -/datum/controller/subsystem/research/Recover() - design_lookup = SSresearch.design_lookup - autolathe_design_ids = SSresearch.autolathe_design_ids - return ..() - -/datum/controller/subsystem/research/proc/build_designs() - design_lookup = list() - autolathe_design_ids = list() - medical_mini_design_ids = list() - for(var/datum/design/path as anything in subtypesof(/datum/design)) - if(initial(path.abstract_type) == path) - continue - path = new path - if(design_lookup[path.id]) - qdel(path) - continue - if(!register_design(path)) - stack_trace("failed to register [path]") - qdel(path) - -/** - * shove a design into lookup for the round - * - * you should know what you are doing before trying this - * make sure you drop all references of the design from your end! - */ -/datum/controller/subsystem/research/proc/register_design(datum/design/registering) - if(design_lookup[registering.id]) - return FALSE - . = TRUE - design_lookup[registering.id] = registering - if((registering.lathe_type & LATHE_TYPE_AUTOLATHE) && (registering.design_unlock & DESIGN_UNLOCK_INTRINSIC)) - LAZYDISTINCTADD(autolathe_design_ids, registering.id) - if(istype(registering, /datum/design/medical)) - LAZYDISTINCTADD(medical_mini_design_ids, registering.id) - - -/** - * gets a design datum - * - * *do not* modify the datum returned! - */ -/datum/controller/subsystem/research/proc/fetch_design(datum/design/id_or_typepath) - RETURN_TYPE(/datum/design) - return design_lookup[ispath(id_or_typepath)? initial(id_or_typepath.id) : id_or_typepath] - -/** - * gets a list of design datums by id or typepath - * - * *do not* modify the datums returned! - */ -/datum/controller/subsystem/research/proc/fetch_designs(list/datum/design/id_or_typepaths) - RETURN_TYPE(/list) - . = list() - var/datum/design/thing - for(thing as anything in id_or_typepaths) - thing = design_lookup[ispath(thing)? initial(thing.id) : thing] - if(isnull(thing)) - continue - . += thing diff --git a/code/controllers/subsystem/supply.dm b/code/controllers/subsystem/supply.dm index 241e804d829..c830a715928 100644 --- a/code/controllers/subsystem/supply.dm +++ b/code/controllers/subsystem/supply.dm @@ -383,7 +383,7 @@ SUBSYSTEM_DEF(supply) * * an /atom/movable * * instantiated with special handling - * * /datum/material typepath or instance + * * /datum/prototype/material typepath or instance * * /obj/item/stack typepath or instance * * /datum/gas typepath or instance - container_hint can be: * ** /obj/machinery/portable_atmospherics/canister @@ -426,8 +426,8 @@ SUBSYSTEM_DEF(supply) var/obj/item/stack/material/casted_material_stack = descriptor descriptor = initial(casted_material_stack.material) // handle material - if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_MATERIAL || ispath(descriptor, /datum/material)) - var/datum/material/resolved_material = SSmaterials.resolve_material(descriptor) + if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_MATERIAL || ispath(descriptor, /datum/prototype/material)) + var/datum/prototype/material/resolved_material = RSmaterials.fetch(descriptor) resolved_material.place_sheet(location, amount) return // handle gas @@ -496,8 +496,8 @@ SUBSYSTEM_DEF(supply) var/obj/item/stack/material/casted_material_stack = descriptor descriptor = initial(casted_material_stack.material) // handle material - if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_MATERIAL || ispath(descriptor, /datum/material)) - var/datum/material/resolved_material = SSmaterials.resolve_material(descriptor) + if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_MATERIAL || ispath(descriptor, /datum/prototype/material)) + var/datum/prototype/material/resolved_material = RSmaterials.fetch(descriptor) return "[amount] [resolved_material.sheet_plural_name] of [resolved_material.display_name]" // handle gas if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_GAS || ispath(descriptor, /datum/gas)) @@ -543,8 +543,8 @@ SUBSYSTEM_DEF(supply) var/obj/item/stack/material/casted_material_stack = descriptor descriptor = initial(casted_material_stack.material) // handle material - if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_MATERIAL || ispath(descriptor, /datum/material)) - var/datum/material/resolved_material = SSmaterials.resolve_material(descriptor) + if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_MATERIAL || ispath(descriptor, /datum/prototype/material)) + var/datum/prototype/material/resolved_material = RSmaterials.fetch(descriptor) return amount * resolved_material.worth // handle gas if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_GAS || ispath(descriptor, /datum/gas)) diff --git a/code/datums/design/design.dm b/code/datums/design/design.dm index b0d33e61afd..cbb849303a2 100644 --- a/code/datums/design/design.dm +++ b/code/datums/design/design.dm @@ -1,18 +1,16 @@ //* This file is explicitly licensed under the MIT license. *// -//* Copyright (c) 2023 Citadel Station developers. *// +//* Copyright (c) 2024 Citadel Station Developers *// /** * design datums for holding what lathes can print. * * relevant bitfields are in [code/__DEFINES/machines/lathe.dm] */ -/datum/design +/datum/prototype/design /// Abstract type. - abstract_type = /datum/design + abstract_type = /datum/prototype/design //? Design Data - Core - /// Must be unique - id of design in CamelCase. - var/id /// design flags - see [code/__DEFINES/datums/design.dm] var/design_flags = NONE /// how are we unlocked - see [code/__DEFINES/datums/design.dm] @@ -46,6 +44,11 @@ //? Build Costs /// list of materials needed - typepath or id to amount. null to auto-detect from the object in question. list() for no cost (DANGEROUS). + /// + /// * This should always be using typepath instead of ID for hardcoded designs, as typepaths can be eagerly loaded before + /// the materials repository can initialize normally. + /// * This will always be transformed into IDs at runtime. + /// * If you're making one at runtime, always put in IDs, as automatic detection/generation may not run. var/list/materials_base /// for variable-material designs: assoc list of key to amounts /// the key will be fed into print() during creation with the material id the user picked @@ -54,8 +57,14 @@ /// todo: add optional parts and constraints var/list/material_costs /// Items needed, as ingredients list - see [code/__HELPERS/datastructs/ingredients.dm] + /// + /// * This should always be using typepath instead of ID where possible for hardcoded designs, as typepaths can be eagerly + /// loaded before the materials repository can initialize normally. var/list/ingredients /// list of reagents needed - typepath or id to amount. null to auto-detect from the object in question. list() for no cost (DANGEROUS). + /// + /// * This should always be using typepath instead of ID for hardcoded designs, as typepaths can be eagerly loaded before + /// the materials repository can initialize normally. var/list/reagents // todo: reagent_parts? @@ -63,11 +72,11 @@ ///IDs of that techs the object originated from and the minimum level requirements. var/list/req_tech = list() -/datum/design/New() +/datum/prototype/design/New() autodetect() generate() -/datum/design/proc/autodetect() +/datum/prototype/design/proc/autodetect() if(isnull(build_path)) return if(ispath(build_path, /obj/item/stack)) @@ -97,22 +106,24 @@ build_desc = instance.desc qdel(instance) -/datum/design/proc/generate() +/datum/prototype/design/proc/generate() if(!name) name = generate_name(design_name || build_name) if(!desc) desc = generate_desc(design_name || build_name, build_desc) + // materials base must be IDs at runtime. + materials_base = SSmaterials.preprocess_kv_keys_to_ids(materials_base) -/datum/design/proc/generate_name(template) +/datum/prototype/design/proc/generate_name(template) return template -/datum/design/proc/generate_desc(template_name, template_desc) +/datum/prototype/design/proc/generate_desc(template_name, template_desc) return template_desc /** * Encodes data for [tgui/packages/tgui/interfaces/common/Design.tsx] */ -/datum/design/proc/ui_data_list() +/datum/prototype/design/proc/ui_data_list() return list( "name" = name, "desc" = desc, @@ -143,7 +154,7 @@ * * @return created atom, or list of created atoms. */ -/datum/design/proc/print(atom/where, amount, list/material_parts, list/ingredient_parts, list/reagent_parts, cost_multiplier = 1) +/datum/prototype/design/proc/print(atom/where, amount, list/material_parts, list/ingredient_parts, list/reagent_parts, cost_multiplier = 1) var/list/resolved_material_parts = SSmaterials.preprocess_kv_values_to_instances(material_parts) if(is_stack) var/stack_size = max_stack @@ -180,7 +191,7 @@ /** * material parts gets resolved to instances */ -/datum/design/proc/on_print(atom/created, list/resolved_material_parts, list/ingredient_parts, list/reagent_parts, cost_multiplier = 1) +/datum/prototype/design/proc/on_print(atom/created, list/resolved_material_parts, list/ingredient_parts, list/reagent_parts, cost_multiplier = 1) if(isobj(created)) var/obj/O = created O.set_materials_base(materials_base) @@ -195,7 +206,7 @@ * * fabricator - the lathe printing the product * * material_parts - assoc list of materials to use, based on the variable of the same name */ -/datum/design/proc/lathe_print(atom/where, amount, list/material_parts, list/ingredient_parts, list/reagent_parts, obj/machinery/lathe/fabricator, cost_multiplier = 1) +/datum/prototype/design/proc/lathe_print(atom/where, amount, list/material_parts, list/ingredient_parts, list/reagent_parts, obj/machinery/lathe/fabricator, cost_multiplier = 1) return print(where, amount, material_parts, ingredient_parts, reagent_parts, cost_multiplier) //? legacy below @@ -203,5 +214,5 @@ /** * for legacy lathes */ -/datum/design/proc/legacy_print(atom/where, fabricator) +/datum/prototype/design/proc/legacy_print(atom/where, fabricator) return print(where, 1) diff --git a/code/datums/design/design_holder.dm b/code/datums/design/design_holder.dm index 00e15deb771..5507c750abc 100644 --- a/code/datums/design/design_holder.dm +++ b/code/datums/design/design_holder.dm @@ -20,7 +20,7 @@ /datum/design_holder/proc/available_designs() RETURN_TYPE(/list) - return SSresearch.fetch_designs(available_ids()) + return RSdesigns.fetch_multi(available_ids()) /datum/design_holder/proc/has_id(id) return id in available_ids() diff --git a/code/datums/design/designs/ammo/_ammo.dm b/code/datums/design/designs/ammo/_ammo.dm index 708dda1b5f4..ef298ef820d 100644 --- a/code/datums/design/designs/ammo/_ammo.dm +++ b/code/datums/design/designs/ammo/_ammo.dm @@ -1,2 +1,2 @@ -/datum/design/ammo - abstract_type = /datum/design/ammo +/datum/prototype/design/ammo + abstract_type = /datum/prototype/design/ammo diff --git a/code/datums/design/designs/ammo/lmg.dm b/code/datums/design/designs/ammo/lmg.dm index a88fe827dea..6a6b65abe06 100644 --- a/code/datums/design/designs/ammo/lmg.dm +++ b/code/datums/design/designs/ammo/lmg.dm @@ -1,7 +1,7 @@ -/datum/design/ammo/lmg - abstract_type = /datum/design/ammo/lmg +/datum/prototype/design/ammo/lmg + abstract_type = /datum/prototype/design/ammo/lmg -/datum/design/ammo/lmg/m556mm +/datum/prototype/design/ammo/lmg/m556mm id = "AmmoLMG545mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/ammo/pistol.dm b/code/datums/design/designs/ammo/pistol.dm index 1935694ba89..c1f26c73e23 100644 --- a/code/datums/design/designs/ammo/pistol.dm +++ b/code/datums/design/designs/ammo/pistol.dm @@ -1,125 +1,125 @@ -/datum/design/ammo/pistol - abstract_type = /datum/design/ammo/pistol +/datum/prototype/design/ammo/pistol + abstract_type = /datum/prototype/design/ammo/pistol -/datum/design/ammo/pistol/a44 +/datum/prototype/design/ammo/pistol/a44 id = "AmmoPistol44" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a44 -/datum/design/ammo/pistol/a44_rubber +/datum/prototype/design/ammo/pistol/a44_rubber id = "AmmoPistol44Rubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a44/rubber -/datum/design/ammo/pistol/a44_silver +/datum/prototype/design/ammo/pistol/a44_silver id = "AmmoPistol44Silver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a44/silver -/datum/design/ammo/pistol/a45 +/datum/prototype/design/ammo/pistol/a45 id = "AmmoPistol45" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a45 -/datum/design/ammo/pistol/a45_hunter +/datum/prototype/design/ammo/pistol/a45_hunter id = "AmmoPistol45Hunter" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a45/hunter -/datum/design/ammo/pistol/a45_practice +/datum/prototype/design/ammo/pistol/a45_practice id = "AmmoPistol45Practice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a45/practice -/datum/design/ammo/pistol/a45_rubber +/datum/prototype/design/ammo/pistol/a45_rubber id = "AmmoPistol45Rubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a45/rubber -/datum/design/ammo/pistol/a45_flash +/datum/prototype/design/ammo/pistol/a45_flash id = "AmmoPistol45Flash" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a45/flash -/datum/design/ammo/pistol/a45_silver +/datum/prototype/design/ammo/pistol/a45_silver id = "AmmoPistol45Silver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a45/silver -/datum/design/ammo/pistol/a45_uzi +/datum/prototype/design/ammo/pistol/a45_uzi id = "AmmoUzi45" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a45/uzi -/datum/design/ammo/pistol/a9mm +/datum/prototype/design/ammo/pistol/a9mm id = "AmmoPistol9mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm -/datum/design/ammo/pistol/a9mm_silver +/datum/prototype/design/ammo/pistol/a9mm_silver id = "AmmoPistol9mmSilver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/silver -/datum/design/ammo/pistol/a9mm_rubber +/datum/prototype/design/ammo/pistol/a9mm_rubber id = "AmmoPistol9mmRubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/rubber -/datum/design/ammo/pistol/a9mm_practice +/datum/prototype/design/ammo/pistol/a9mm_practice id = "AmmoPistol9mmPractice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/practice -/datum/design/ammo/pistol/a9mm_flash +/datum/prototype/design/ammo/pistol/a9mm_flash id = "AmmoPistol9mmFlash" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/flash -/datum/design/ammo/pistol/compact - abstract_type = /datum/design/ammo/pistol/compact +/datum/prototype/design/ammo/pistol/compact + abstract_type = /datum/prototype/design/ammo/pistol/compact -/datum/design/ammo/pistol/compact/a9mm +/datum/prototype/design/ammo/pistol/compact/a9mm id = "AmmoCompact9mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/compact -/datum/design/ammo/pistol/compact/a9mm_rubber +/datum/prototype/design/ammo/pistol/compact/a9mm_rubber id = "AmmoCompact9mmRubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/compact/rubber -/datum/design/ammo/pistol/compact/a9mm_practice +/datum/prototype/design/ammo/pistol/compact/a9mm_practice id = "AmmoCompact9mmPractice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/compact/practice -/datum/design/ammo/pistol/compact/a9mm_flash +/datum/prototype/design/ammo/pistol/compact/a9mm_flash id = "AmmoCompact9mmFlash" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/compact/flash -/datum/design/ammo/pistol/compact/a9mm_silver +/datum/prototype/design/ammo/pistol/compact/a9mm_silver id = "AmmoCompact9mmSilver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/ammo/revolver.dm b/code/datums/design/designs/ammo/revolver.dm index 8c91591371c..326589da495 100644 --- a/code/datums/design/designs/ammo/revolver.dm +++ b/code/datums/design/designs/ammo/revolver.dm @@ -1,85 +1,85 @@ -/datum/design/ammo/revolver - abstract_type = /datum/design/ammo/revolver +/datum/prototype/design/ammo/revolver + abstract_type = /datum/prototype/design/ammo/revolver -/datum/design/ammo/revolver/a357 +/datum/prototype/design/ammo/revolver/a357 id = "AmmoSpeedloader357" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a357/speedloader -/datum/design/ammo/revolver/a357_flash +/datum/prototype/design/ammo/revolver/a357_flash id = "AmmoSpeedloader357Flash" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a357/speedloader/flash -/datum/design/ammo/revolver/a357_stun +/datum/prototype/design/ammo/revolver/a357_stun id = "AmmoSpeedloader357Stun" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a357/speedloader/stun -/datum/design/ammo/revolver/a357_rubber +/datum/prototype/design/ammo/revolver/a357_rubber id = "AmmoSpeedloader357Rubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a357/speedloader/rubber -/datum/design/ammo/revolver/a357_silver +/datum/prototype/design/ammo/revolver/a357_silver id = "AmmoSpeedloader357Silver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a357/speedloader/silver -/datum/design/ammo/revolver/a38 +/datum/prototype/design/ammo/revolver/a38 id = "AmmoSpeedloader38" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a38/speedloader -/datum/design/ammo/revolver/a38_rubber +/datum/prototype/design/ammo/revolver/a38_rubber id = "AmmoSpeedloader38Rubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a38/speedloader/rubber -/datum/design/ammo/revolver/a38_silver +/datum/prototype/design/ammo/revolver/a38_silver id = "AmmoSpeedloader38Silver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a38/speedloader/silver -/datum/design/ammo/revolver/a44 +/datum/prototype/design/ammo/revolver/a44 id = "AmmoSpeedloader44" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a44/speedloader -/datum/design/ammo/revolver/a44_rubber +/datum/prototype/design/ammo/revolver/a44_rubber id = "AmmoSpeedloader44Rubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a44/speedloader/rubber -/datum/design/ammo/revolver/a44_silver +/datum/prototype/design/ammo/revolver/a44_silver id = "AmmoSpeedloader44Silver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a44/speedloader/silver -/datum/design/ammo/revolver/a45 +/datum/prototype/design/ammo/revolver/a45 id = "AmmoSpeedloader45" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a45/speedloader -/datum/design/ammo/revolver/a45_rubber +/datum/prototype/design/ammo/revolver/a45_rubber id = "AmmoSpeedloader45Rubber" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a45/speedloader/rubber -/datum/design/ammo/revolver/a45_silver +/datum/prototype/design/ammo/revolver/a45_silver id = "AmmoSpeedloader45Silver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/ammo/rife.dm b/code/datums/design/designs/ammo/rife.dm index eb8ef36fe3b..d17e90aa6db 100644 --- a/code/datums/design/designs/ammo/rife.dm +++ b/code/datums/design/designs/ammo/rife.dm @@ -1,61 +1,61 @@ -/datum/design/ammo/rifle - abstract_type = /datum/design/ammo/rifle +/datum/prototype/design/ammo/rifle + abstract_type = /datum/prototype/design/ammo/rifle -/datum/design/ammo/rifle/m762mm +/datum/prototype/design/ammo/rifle/m762mm id = "AmmoRifle762mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a7_62mm -/datum/design/ammo/rifle/m762mm_silver +/datum/prototype/design/ammo/rifle/m762mm_silver id = "AmmoRifle762mmSilver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a7_62mm/silver -/datum/design/ammo/rifle/m556mm +/datum/prototype/design/ammo/rifle/m556mm id = "AmmoRifle545mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a5_56mm -/datum/design/ammo/rifle/m556mm_practice +/datum/prototype/design/ammo/rifle/m556mm_practice id = "AmmoRifle545mmPractice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a5_56mm/practice -/datum/design/ammo/rifle/m556mm_silver +/datum/prototype/design/ammo/rifle/m556mm_silver id = "AmmoRifle545mmSilver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a5_56mm/silver -/datum/design/ammo/rifle/c545mm +/datum/prototype/design/ammo/rifle/c545mm id = "AmmoClip545mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a5_56mm/clip -/datum/design/ammo/rifle/c545mm_practice +/datum/prototype/design/ammo/rifle/c545mm_practice id = "AmmoClip545mmPractice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a5_56mm/clip/practice -/datum/design/ammo/rifle/c762 +/datum/prototype/design/ammo/rifle/c762 id = "AmmoClip762mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a7_62mm/clip -/datum/design/ammo/rifle/c762_practice +/datum/prototype/design/ammo/rifle/c762_practice id = "AmmoClip762mmPractice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a7_62mm/clip/practice -/datum/design/ammo/rifle/c762_silver +/datum/prototype/design/ammo/rifle/c762_silver id = "AmmoClip762mmSilver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/ammo/shotgun.dm b/code/datums/design/designs/ammo/shotgun.dm index 755c03153fb..ccad324d64d 100644 --- a/code/datums/design/designs/ammo/shotgun.dm +++ b/code/datums/design/designs/ammo/shotgun.dm @@ -1,93 +1,93 @@ -/datum/design/ammo/shotgun - abstract_type = /datum/design/ammo/shotgun +/datum/prototype/design/ammo/shotgun + abstract_type = /datum/prototype/design/ammo/shotgun work = 2 SECONDS -/datum/design/ammo/shotgun/blank +/datum/prototype/design/ammo/shotgun/blank id = "AmmoShotshellBlank" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_casing/a12g/blank -/datum/design/ammo/shotgun/beanbag +/datum/prototype/design/ammo/shotgun/beanbag id = "AmmoShotshellBeanbag" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_casing/a12g/beanbag -/datum/design/ammo/shotgun/slug +/datum/prototype/design/ammo/shotgun/slug id = "AmmoShotshellSlug" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_casing/a12g -/datum/design/ammo/shotgun/flare +/datum/prototype/design/ammo/shotgun/flare id = "AmmoShotshellFlare" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_casing/a12g/flare -/datum/design/ammo/shotgun/buckshot +/datum/prototype/design/ammo/shotgun/buckshot id = "AmmoShotshellBuckshot" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_casing/a12g/pellet -/datum/design/ammo/shotgun/silver +/datum/prototype/design/ammo/shotgun/silver id = "AmmoShotshellSilver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_casing/a12g/silver -/datum/design/ammo/shotgun/silvershot +/datum/prototype/design/ammo/shotgun/silvershot id = "AmmoShotshellSilvershot" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_casing/a12g/silvershot -/datum/design/ammo/shotgun/stun +/datum/prototype/design/ammo/shotgun/stun id = "AmmoShotshellStun" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_casing/a12g/stunshell -/datum/design/ammo/shotgun/clip - abstract_type = /datum/design/ammo/shotgun/clip +/datum/prototype/design/ammo/shotgun/clip + abstract_type = /datum/prototype/design/ammo/shotgun/clip -/datum/design/ammo/shotgun/clip/dual - abstract_type = /datum/design/ammo/shotgun/clip/dual +/datum/prototype/design/ammo/shotgun/clip/dual + abstract_type = /datum/prototype/design/ammo/shotgun/clip/dual work = 5 SECONDS -/datum/design/ammo/shotgun/clip/dual/beanbag +/datum/prototype/design/ammo/shotgun/clip/dual/beanbag id = "ClipShotgunBeanbag2" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a12g/clip/beanbag -/datum/design/ammo/shotgun/clip/dual/slug +/datum/prototype/design/ammo/shotgun/clip/dual/slug id = "ClipShotgunSlug2" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a12g/clip -/datum/design/ammo/shotgun/clip/dual/buckshot +/datum/prototype/design/ammo/shotgun/clip/dual/buckshot id = "ClipShotgunBuckshot2" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a12g/clip/pellet -/datum/design/ammo/shotgun/clip/dual/silver +/datum/prototype/design/ammo/shotgun/clip/dual/silver id = "ClipShotgunSilver2" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a12g/clip/silver -/datum/design/ammo/shotgun/clip/dual/silvershot +/datum/prototype/design/ammo/shotgun/clip/dual/silvershot id = "ClipShotgunSilvershot2" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a12g/clip/silvershot -/datum/design/ammo/shotgun/pouch +/datum/prototype/design/ammo/shotgun/pouch id = "ShotgunShellPouch" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/ammo/smg.dm b/code/datums/design/designs/ammo/smg.dm index 68a9a3411da..20c20d00cd5 100644 --- a/code/datums/design/designs/ammo/smg.dm +++ b/code/datums/design/designs/ammo/smg.dm @@ -1,55 +1,55 @@ -/datum/design/ammo/smg - abstract_type = /datum/design/ammo/smg +/datum/prototype/design/ammo/smg + abstract_type = /datum/prototype/design/ammo/smg -/datum/design/ammo/smg/a9mm_t +/datum/prototype/design/ammo/smg/a9mm_t id = "AmmoSMG9mmT" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/top_mount -/datum/design/ammo/smg/a9mm_hunter_t +/datum/prototype/design/ammo/smg/a9mm_hunter_t id = "AmmoSMG9mmHunterT" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/top_mount/hunter -/datum/design/ammo/smg/a9mm_rubber_t +/datum/prototype/design/ammo/smg/a9mm_rubber_t id = "AmmoSMG9mmRubberT" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/top_mount/rubber -/datum/design/ammo/smg/a9mm_practice_t +/datum/prototype/design/ammo/smg/a9mm_practice_t id = "AmmoSMG9mmPracticeT" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/top_mount/practice -/datum/design/ammo/smg/a9mm_flash_t +/datum/prototype/design/ammo/smg/a9mm_flash_t id = "AmmoSMG9mmFlashT" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/top_mount/flash -/datum/design/ammo/smg/a9mm +/datum/prototype/design/ammo/smg/a9mm id = "AmmoSMG9mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a9mm/large -/datum/design/ammo/smg/a10mm +/datum/prototype/design/ammo/smg/a10mm id = "AmmoSMG10mm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a10mm -/datum/design/ammo/smg/a45tommy +/datum/prototype/design/ammo/smg/a45tommy id = "AmmoSMG45Tommy" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/ammo_magazine/a45/tommy -/datum/design/ammo/smg/a45tommydrum +/datum/prototype/design/ammo/smg/a45tommydrum id = "AmmoSMG45TommyDrum" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/devices/assemblies.dm b/code/datums/design/designs/devices/assemblies.dm index fb604508558..75a4536fca9 100644 --- a/code/datums/design/designs/devices/assemblies.dm +++ b/code/datums/design/designs/devices/assemblies.dm @@ -1,51 +1,55 @@ -/datum/design/assembly - abstract_type = /datum/design/assembly +/datum/prototype/design/assembly + abstract_type = /datum/prototype/design/assembly work = 2.5 SECONDS category = "Assemblies" -/datum/design/assembly/igniter +/datum/prototype/design/assembly/igniter id = "AseemblyIgniter" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/assembly/igniter -/datum/design/assembly/signaler +/datum/prototype/design/assembly/igniter/autodetect() + pass() + return ..() + +/datum/prototype/design/assembly/signaler id = "AseemblySignaler" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/assembly/signaler -/datum/design/assembly/infrared +/datum/prototype/design/assembly/infrared id = "AseemblyInfrared" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/assembly/infra -/datum/design/assembly/timer +/datum/prototype/design/assembly/timer id = "AseemblyTimer" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/assembly/timer -/datum/design/assembly/proximity +/datum/prototype/design/assembly/proximity id = "AseemblyProximity" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/assembly/prox_sensor -/datum/design/assembly/mousetrap +/datum/prototype/design/assembly/mousetrap id = "AseemblyMousetrap" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/assembly/mousetrap -/datum/design/assembly/voice +/datum/prototype/design/assembly/voice id = "AseemblyVoice" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/assembly/voice -/datum/design/assembly/electropack +/datum/prototype/design/assembly/electropack id = "AseemblyElectropack" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/devices/devices.dm b/code/datums/design/designs/devices/devices.dm index 0a3a95c7386..435436ad674 100644 --- a/code/datums/design/designs/devices/devices.dm +++ b/code/datums/design/designs/devices/devices.dm @@ -1,19 +1,19 @@ -/datum/design/device - abstract_type = /datum/design/device +/datum/prototype/design/device + abstract_type = /datum/prototype/design/device -/datum/design/device/radio_headset +/datum/prototype/design/device/radio_headset id = "DeviceRadioHeadset" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/radio/headset -/datum/design/device/radio_handheld +/datum/prototype/design/device/radio_handheld id = "DeviceRadioHandheld" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/radio/off -/datum/design/device/suit_cooler +/datum/prototype/design/device/suit_cooler id = "DeviceSuitCooler" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/machines/assemblies.dm b/code/datums/design/designs/machines/assemblies.dm index d297e7a0cb7..2cc5a35ec4f 100644 --- a/code/datums/design/designs/machines/assemblies.dm +++ b/code/datums/design/designs/machines/assemblies.dm @@ -1,14 +1,14 @@ -/datum/design/machine_assembly - abstract_type = /datum/design/machine_assembly +/datum/prototype/design/machine_assembly + abstract_type = /datum/prototype/design/machine_assembly work = 7.5 SECONDS -/datum/design/machine_assembly/cell_chargers +/datum/prototype/design/machine_assembly/cell_chargers id = "MachineAssemblyCellCharger" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/cell_charger_kit -/datum/design/machine_assembly/camera +/datum/prototype/design/machine_assembly/camera id = "MachineAssemblyCamera" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/machines/circuits.dm b/code/datums/design/designs/machines/circuits.dm index c329f54964b..6c662bf4b48 100644 --- a/code/datums/design/designs/machines/circuits.dm +++ b/code/datums/design/designs/machines/circuits.dm @@ -1,116 +1,116 @@ -/datum/design/machine_circuit - abstract_type = /datum/design/machine_circuit +/datum/prototype/design/machine_circuit + abstract_type = /datum/prototype/design/machine_circuit category = "Machine Circuits" -/datum/design/machine_circuit/airalarm +/datum/prototype/design/machine_circuit/airalarm id = "CircuitAirAlarm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/airalarm -/datum/design/machine_circuit/airlock +/datum/prototype/design/machine_circuit/airlock id = "CircuitAirlock" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/airlock_electronics -/datum/design/machine_circuit/firealarm +/datum/prototype/design/machine_circuit/firealarm id = "CircuitFireAlarm" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/firealarm -/datum/design/machine_circuit/apc +/datum/prototype/design/machine_circuit/apc id = "CircuitAPC" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/module/power_control -/datum/design/machine_circuit/statusdisplay +/datum/prototype/design/machine_circuit/statusdisplay id = "CircuitStatusDisplay" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/status_display -/datum/design/machine_circuit/aistatusdisplay +/datum/prototype/design/machine_circuit/aistatusdisplay id = "CircuitAIStatusDisplay" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/ai_status_display -/datum/design/machine_circuit/newscaster +/datum/prototype/design/machine_circuit/newscaster id = "CircuitNewscaster" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/newscaster -/datum/design/machine_circuit/atm +/datum/prototype/design/machine_circuit/atm id = "CircuitATM" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/atm -/datum/design/machine_circuit/intercom +/datum/prototype/design/machine_circuit/intercom id = "CircuitIntercom" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/intercom -/datum/design/machine_circuit/holopad +/datum/prototype/design/machine_circuit/holopad id = "CircuitHolopad" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/machine/holopad -/datum/design/machine_circuit/guestpass +/datum/prototype/design/machine_circuit/guestpass id = "CircuitGuestpass" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/guestpass -/datum/design/machine_circuit/entertainmentscreen +/datum/prototype/design/machine_circuit/entertainmentscreen id = "CircuitEntertainmentScreen" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/security/telescreen/entertainment -/datum/design/machine_circuit/keycardauth +/datum/prototype/design/machine_circuit/keycardauth id = "CircuitKeycardAuth" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/keycard_auth -/datum/design/machine_circuit/photocopier +/datum/prototype/design/machine_circuit/photocopier id = "CircuitPhotocopier" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/photocopier -/datum/design/machine_circuit/fax +/datum/prototype/design/machine_circuit/fax id = "CircuitFax" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/fax -/datum/design/machine_circuit/papershredder +/datum/prototype/design/machine_circuit/papershredder id = "CircuitPaperShredder" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/papershredder -/datum/design/machine_circuit/microwave +/datum/prototype/design/machine_circuit/microwave id = "CircuitMicrowave" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/microwave -/datum/design/machine_circuit/requestconsole +/datum/prototype/design/machine_circuit/requestconsole id = "CircuitRequestConsole" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/circuitboard/request -/datum/design/machine_circuit/timeclock +/datum/prototype/design/machine_circuit/timeclock id = "CircuitTimeclock" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/machines/parts.dm b/code/datums/design/designs/machines/parts.dm index 12278ce09ff..d1740441932 100644 --- a/code/datums/design/designs/machines/parts.dm +++ b/code/datums/design/designs/machines/parts.dm @@ -1,57 +1,57 @@ -/datum/design/stock_part - abstract_type = /datum/design/stock_part +/datum/prototype/design/stock_part + abstract_type = /datum/prototype/design/stock_part work = 0.5 SECONDS category = "Stock Parts" -/datum/design/stock_part/manipulator +/datum/prototype/design/stock_part/manipulator id = "PartManipulatorT1" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/stock_parts/manipulator -/datum/design/stock_part/bin +/datum/prototype/design/stock_part/bin id = "PartBinT1" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/stock_parts/matter_bin -/datum/design/stock_part/scanner +/datum/prototype/design/stock_part/scanner id = "PartScannerT1" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/stock_parts/scanning_module -/datum/design/stock_part/laser +/datum/prototype/design/stock_part/laser id = "PartLaserT1" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/stock_parts/micro_laser -/datum/design/stock_part/capacitor +/datum/prototype/design/stock_part/capacitor id = "PartCapacitorT1" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/stock_parts/capacitor -/datum/design/stock_part/screen +/datum/prototype/design/stock_part/screen id = "PartScreen" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/stock_parts/console_screen -/datum/design/stock_part/motor +/datum/prototype/design/stock_part/motor id = "PartMotor" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/stock_parts/motor -/datum/design/stock_part/spring +/datum/prototype/design/stock_part/spring id = "PartSpring" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/stock_parts/spring -/datum/design/stock_part/gear +/datum/prototype/design/stock_part/gear id = "PartGear" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/medical/_medical.dm b/code/datums/design/designs/medical/_medical.dm index 334d66612a8..eb4abbebe73 100644 --- a/code/datums/design/designs/medical/_medical.dm +++ b/code/datums/design/designs/medical/_medical.dm @@ -1,3 +1,3 @@ -/datum/design/medical - abstract_type = /datum/design/medical +/datum/prototype/design/medical + abstract_type = /datum/prototype/design/medical category = "Medical" diff --git a/code/datums/design/designs/medical/chemistry.dm b/code/datums/design/designs/medical/chemistry.dm index 1870c4f3ce2..e2952f66308 100644 --- a/code/datums/design/designs/medical/chemistry.dm +++ b/code/datums/design/designs/medical/chemistry.dm @@ -1,43 +1,43 @@ -/datum/design/medical/chemistry - abstract_type = /datum/design/medical/chemistry +/datum/prototype/design/medical/chemistry + abstract_type = /datum/prototype/design/medical/chemistry -/datum/design/medical/chemistry/beaker +/datum/prototype/design/medical/chemistry/beaker id = "ChemistryBeaker" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/glass/beaker -/datum/design/medical/chemistry/beaker/large +/datum/prototype/design/medical/chemistry/beaker/large id = "ChemistryBeakerLarge" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/glass/beaker/large -/datum/design/medical/chemistry/spraybottle +/datum/prototype/design/medical/chemistry/spraybottle id = "ChemistrySprayBottle" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/spray -/datum/design/medical/chemistry/vial +/datum/prototype/design/medical/chemistry/vial id = "ChemistryVial" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/glass/beaker/vial -/datum/design/medical/chemistry/hypovial +/datum/prototype/design/medical/chemistry/hypovial id = "ChemistryHypovial" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/glass/hypovial -/datum/design/medical/chemistry/hypovial/large +/datum/prototype/design/medical/chemistry/hypovial/large id = "ChemistryHypovialLarge" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/glass/hypovial/large -/datum/design/medical/pillbottle +/datum/prototype/design/medical/pillbottle id = "ChemistryPillbottle" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/medical/consumables.dm b/code/datums/design/designs/medical/consumables.dm index 32a565efcc2..f6db7238a38 100644 --- a/code/datums/design/designs/medical/consumables.dm +++ b/code/datums/design/designs/medical/consumables.dm @@ -1,10 +1,10 @@ -/datum/design/medical/chemistry/syringe +/datum/prototype/design/medical/chemistry/syringe id = "MedicalSyringe" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/syringe -/datum/design/medical/chemistry/autoinjector +/datum/prototype/design/medical/chemistry/autoinjector id = "MedicalAutoinjector" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/medical/misc.dm b/code/datums/design/designs/medical/misc.dm index ec69d7ea9eb..2fb42ecd013 100644 --- a/code/datums/design/designs/medical/misc.dm +++ b/code/datums/design/designs/medical/misc.dm @@ -1,10 +1,10 @@ -/datum/design/medical/syringe_gun_ammo +/datum/prototype/design/medical/syringe_gun_ammo id = "AmmoSyringeCartridge" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/syringe_cartridge -/datum/design/medical/implanter +/datum/prototype/design/medical/implanter id = "MedicalImplanter" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/medical/sterile_wear.dm b/code/datums/design/designs/medical/sterile_wear.dm index 7b608f722f0..90df8217679 100644 --- a/code/datums/design/designs/medical/sterile_wear.dm +++ b/code/datums/design/designs/medical/sterile_wear.dm @@ -1,16 +1,16 @@ -/datum/design/medical/latexgloves +/datum/prototype/design/medical/latexgloves id = "MedicalLatexGloves" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/clothing/gloves/sterile/latex -/datum/design/medical/nitrilgloves +/datum/prototype/design/medical/nitrilgloves id = "MedicalNitrilGloves" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/clothing/gloves/sterile/nitrile -/datum/design/medical/facemask +/datum/prototype/design/medical/facemask id = "MedicalFaceMask" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/misc/_misc.dm b/code/datums/design/designs/misc/_misc.dm index 042797ef049..8743d20a69a 100644 --- a/code/datums/design/designs/misc/_misc.dm +++ b/code/datums/design/designs/misc/_misc.dm @@ -1,51 +1,51 @@ -/datum/design/misc - abstract_type = /datum/design/misc +/datum/prototype/design/misc + abstract_type = /datum/prototype/design/misc category = "General" -/datum/design/misc/bucket +/datum/prototype/design/misc/bucket id = "ChemistryBucket" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/glass/bucket -/datum/design/misc/floor_light +/datum/prototype/design/misc/floor_light id = "MiscFloorLight" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/machinery/floor_light -/datum/design/misc/glass_jar +/datum/prototype/design/misc/glass_jar id = "MiscGlassJar" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/glass_jar -/datum/design/misc/kitchen_knife +/datum/prototype/design/misc/kitchen_knife id = "MiscKitchenKnife" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/material/knife -/datum/design/misc/light_tube +/datum/prototype/design/misc/light_tube id = "MiscLightTube" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/light/tube -/datum/design/misc/light_bulb +/datum/prototype/design/misc/light_bulb id = "MiscLightBulb" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/light/bulb -/datum/design/misc/light_fairy +/datum/prototype/design/misc/light_fairy id = "MiscLightFairy" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/light/bulb/fairy -/datum/design/misc/glass_ashtray +/datum/prototype/design/misc/glass_ashtray id = "MiscGlassAshtray" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/misc/drinking_glass.dm b/code/datums/design/designs/misc/drinking_glass.dm index 3ccd5a95dab..a790d038589 100644 --- a/code/datums/design/designs/misc/drinking_glass.dm +++ b/code/datums/design/designs/misc/drinking_glass.dm @@ -1,80 +1,80 @@ -/datum/design/misc/cooler_bottle +/datum/prototype/design/misc/cooler_bottle id = "GlassWaterCooler" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/glass/cooler_bottle -/datum/design/misc/drink_glass - abstract_type = /datum/design/misc/drink_glass +/datum/prototype/design/misc/drink_glass + abstract_type = /datum/prototype/design/misc/drink_glass work = 1 SECONDS -/datum/design/misc/drink_glass/square +/datum/prototype/design/misc/drink_glass/square id = "GlassHalfPint" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/food/drinks/glass2/square -/datum/design/misc/drink_glass/rocks +/datum/prototype/design/misc/drink_glass/rocks id = "GlassRocks" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/food/drinks/glass2/rocks -/datum/design/misc/drink_glass/shake +/datum/prototype/design/misc/drink_glass/shake id = "GlassMilkshake" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/food/drinks/glass2/shake -/datum/design/misc/drink_glass/cocktail +/datum/prototype/design/misc/drink_glass/cocktail id = "GlassCocktail" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/food/drinks/glass2/cocktail -/datum/design/misc/drink_glass/shot +/datum/prototype/design/misc/drink_glass/shot id = "GlassShot" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/food/drinks/glass2/shot -/datum/design/misc/drink_glass/pint +/datum/prototype/design/misc/drink_glass/pint id = "GlassPint" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/food/drinks/glass2/pint -/datum/design/misc/drink_glass/mug +/datum/prototype/design/misc/drink_glass/mug id = "GlassMug" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/food/drinks/glass2/mug -/datum/design/misc/drink_glass/wine +/datum/prototype/design/misc/drink_glass/wine id = "GlassWine" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/food/drinks/glass2/wine -/datum/design/misc/drink_glass/pitcher +/datum/prototype/design/misc/drink_glass/pitcher id = "GlassPitcher" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/food/drinks/glass2/pitcher -/datum/design/misc/drink_glass/meta +/datum/prototype/design/misc/drink_glass/meta id = "GlassMeta" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/food/drinks/metaglass -/datum/design/misc/drink_glass/cup +/datum/prototype/design/misc/drink_glass/cup id = "GlassCup" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/reagent_containers/food/drinks/cup -/datum/design/misc/drink_glass/fitness +/datum/prototype/design/misc/drink_glass/fitness id = "GlassFitness" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/sheets.dm b/code/datums/design/designs/sheets.dm index 47354831df7..d0043344a25 100644 --- a/code/datums/design/designs/sheets.dm +++ b/code/datums/design/designs/sheets.dm @@ -1,23 +1,23 @@ -/datum/design/sheet - abstract_type = /datum/design/sheet +/datum/prototype/design/sheet + abstract_type = /datum/prototype/design/sheet -/datum/design/sheet/reinforced_glass +/datum/prototype/design/sheet/reinforced_glass id = "SheetReinforcedGlass" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC materials_base = list( - MAT_STEEL = 1000, - MAT_GLASS = 2000, + /datum/prototype/material/steel = 1000, + /datum/prototype/material/glass = 2000, ) build_path = /obj/item/stack/material/glass/reinforced work = 0.2 SECONDS -/datum/design/sheet/metal_rods +/datum/prototype/design/sheet/metal_rods id = "SheetSteelRods" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC materials_base = list( - MAT_STEEL = 1000 + /datum/prototype/material/steel = 1000 ) build_path = /obj/item/stack/rods work = 0.1 SECONDS diff --git a/code/datums/design/designs/tools/_tool.dm b/code/datums/design/designs/tools/_tool.dm index f31c457e87c..9d3a7222f21 100644 --- a/code/datums/design/designs/tools/_tool.dm +++ b/code/datums/design/designs/tools/_tool.dm @@ -1,3 +1,3 @@ -/datum/design/tool - abstract_type = /datum/design/tool +/datum/prototype/design/tool + abstract_type = /datum/prototype/design/tool category = "Tools" diff --git a/code/datums/design/designs/tools/engineering.dm b/code/datums/design/designs/tools/engineering.dm index 950d17d4c58..4cd125677f3 100644 --- a/code/datums/design/designs/tools/engineering.dm +++ b/code/datums/design/designs/tools/engineering.dm @@ -1,29 +1,29 @@ -/datum/design/tool/geiger +/datum/prototype/design/tool/geiger id = "ToolGeiger" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/geiger_counter -/datum/design/tool/rcd +/datum/prototype/design/tool/rcd id = "ToolRCD" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/rcd -/datum/design/tool/rpd +/datum/prototype/design/tool/rpd id = "ToolRPD" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/pipe_dispenser -/datum/design/tool/rcd_ammo +/datum/prototype/design/tool/rcd_ammo id = "MatterCartridge" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC design_flags = DESIGN_NO_SCALE build_path = /obj/item/rcd_ammo -/datum/design/tool/spraycan +/datum/prototype/design/tool/spraycan id = "Spraycan" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/tools/general.dm b/code/datums/design/designs/tools/general.dm index 1b2643b8651..4caa75c11e6 100644 --- a/code/datums/design/designs/tools/general.dm +++ b/code/datums/design/designs/tools/general.dm @@ -1,117 +1,119 @@ -/datum/design/tool/cable +/datum/prototype/design/tool/cable id = "StackCableCoil" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC work = 0.1 SECONDS build_path = /obj/item/stack/cable_coil -/datum/design/tool/crowbar +/datum/prototype/design/tool/crowbar id = "ToolCrowbar" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/tool/crowbar -/datum/design/tool/multitool +/datum/prototype/design/tool/multitool id = "ToolMultitool" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/multitool -/datum/design/tool/tray_scanner +/datum/prototype/design/tool/tray_scanner id = "ToolTrayScanner" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/t_scanner -/datum/design/tool/welder +/datum/prototype/design/tool/welder id = "ToolWelder" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/weldingtool -/datum/design/tool/industrial_welder +/datum/prototype/design/tool/industrial_welder id = "ToolIndustrialWelder" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/weldingtool/largetank -/datum/design/tool/electric_welder +/datum/prototype/design/tool/electric_welder id = "ToolElectricWelder" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/weldingtool/electric/unloaded -/datum/design/tool/screwdriver +/datum/prototype/design/tool/screwdriver id = "ToolScrewdriver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/tool/screwdriver -/datum/design/tool/wirecutters +/datum/prototype/design/tool/wirecutters id = "ToolWirecutter" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/tool/wirecutters -/datum/design/tool/wrench +/datum/prototype/design/tool/wrench id = "ToolWrench" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/tool/wrench -/datum/design/tool/hatchet +/datum/prototype/design/tool/hatchet id = "ToolHatchet" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/material/knife/machete/hatchet -/datum/design/tool/minihoe +/datum/prototype/design/tool/minihoe id = "ToolMinihoe" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/material/minihoe - materials_base = list(MAT_STEEL = 50) + materials_base = list( + /datum/prototype/material/steel = 50, + ) material_costs = list( "tip" = 250 ) -/datum/design/tool/prybar +/datum/prototype/design/tool/prybar id = "ToolPrybar" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/tool/prybar -/datum/design/tool/flashlight +/datum/prototype/design/tool/flashlight id = "ToolFlashlight" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/flashlight -/datum/design/tool/maglight +/datum/prototype/design/tool/maglight id = "ToolMaglight" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/flashlight/maglight -/datum/design/tool/welding_goggles +/datum/prototype/design/tool/welding_goggles id = "ToolWeldingGoggles" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/clothing/glasses/welding -/datum/design/tool/welding_mask +/datum/prototype/design/tool/welding_mask id = "ToolWeldingMask" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/clothing/head/welding -/datum/design/tool/extinguisher +/datum/prototype/design/tool/extinguisher id = "ToolExtinguisher" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/extinguisher -/datum/design/tool/extinguisher/mini +/datum/prototype/design/tool/extinguisher/mini id = "ToolExtinguisherMini" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/tools/security.dm b/code/datums/design/designs/tools/security.dm index a1870c8b599..d7b87eb11d2 100644 --- a/code/datums/design/designs/tools/security.dm +++ b/code/datums/design/designs/tools/security.dm @@ -1,4 +1,4 @@ -/datum/design/tool/handcuffs +/datum/prototype/design/tool/handcuffs id = "ToolHandcuffs" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/tools/surgical.dm b/code/datums/design/designs/tools/surgical.dm index ed4bf5198b2..a70371b5553 100644 --- a/code/datums/design/designs/tools/surgical.dm +++ b/code/datums/design/designs/tools/surgical.dm @@ -1,34 +1,34 @@ -/datum/design/tool/scalpel +/datum/prototype/design/tool/scalpel id = "ToolScalpel" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/surgical/scalpel -/datum/design/tool/circular_saw +/datum/prototype/design/tool/circular_saw id = "ToolCircularSaw" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/surgical/circular_saw -/datum/design/tool/surgical_drill +/datum/prototype/design/tool/surgical_drill id = "ToolSurgicalDrill" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/surgical/surgicaldrill -/datum/design/tool/retractor +/datum/prototype/design/tool/retractor id = "ToolRetractor" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/surgical/retractor -/datum/design/tool/cautery +/datum/prototype/design/tool/cautery id = "ToolCautery" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/surgical/cautery -/datum/design/tool/hemostat +/datum/prototype/design/tool/hemostat id = "ToolHemostat" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC diff --git a/code/datums/design/designs/weapons/_weapons.dm b/code/datums/design/designs/weapons/_weapons.dm index 9af3b23c818..7349f14c154 100644 --- a/code/datums/design/designs/weapons/_weapons.dm +++ b/code/datums/design/designs/weapons/_weapons.dm @@ -1,3 +1,3 @@ -/datum/design/weapon - abstract_type = /datum/design/weapon +/datum/prototype/design/weapon + abstract_type = /datum/prototype/design/weapon category = "Weapons" diff --git a/code/datums/design/designs/weapons/knives.dm b/code/datums/design/designs/weapons/knives.dm index 59d31c20844..bf79c94c87a 100644 --- a/code/datums/design/designs/weapons/knives.dm +++ b/code/datums/design/designs/weapons/knives.dm @@ -1,11 +1,11 @@ -/datum/design/weapon/tactical_knife +/datum/prototype/design/weapon/tactical_knife id = "WeaponTacticalKnife" build_path = /obj/item/material/knife/tacknife lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC materials_base = list( - MAT_STEEL = 500, + /datum/prototype/material/steel = 500, ) material_costs = list( "blade" = 3000, diff --git a/code/datums/design/designs/weapons/melee.dm b/code/datums/design/designs/weapons/melee.dm index 9b7f1da4ec6..e721a8b46cb 100644 --- a/code/datums/design/designs/weapons/melee.dm +++ b/code/datums/design/designs/weapons/melee.dm @@ -1,11 +1,11 @@ -/datum/design/weapon/knuckle_duster +/datum/prototype/design/weapon/knuckle_duster id = "WeaponKnuckleDusters" build_path = /obj/item/clothing/gloves/knuckledusters lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC - materials_base = list(MAT_STEEL = 2000) + materials_base = list(/datum/prototype/material/steel = 2000) -/datum/design/weapon/flamethrower +/datum/prototype/design/weapon/flamethrower id = "WeaponFlamethrower" build_path = /obj/item/flamethrower/full lathe_type = LATHE_TYPE_AUTOLATHE diff --git a/code/datums/design/designs/weapons/misc.dm b/code/datums/design/designs/weapons/misc.dm index e5ec8d8f1b6..46d22aff399 100644 --- a/code/datums/design/designs/weapons/misc.dm +++ b/code/datums/design/designs/weapons/misc.dm @@ -1,9 +1,9 @@ -/datum/design/weapon/crafting_receiver +/datum/prototype/design/weapon/crafting_receiver id = "WeaponModularReceiver" lathe_type = LATHE_TYPE_AUTOLATHE design_unlock = DESIGN_UNLOCK_INTRINSIC build_path = /obj/item/weaponcrafting/receiver materials_base = list( - MAT_STEEL = 8000, - MAT_GLASS = 2500, + /datum/prototype/material/steel = 8000, + /datum/prototype/material/glass = 2500, ) diff --git a/code/datums/material_container.dm b/code/datums/material_container.dm index 5a940836055..f372fb790eb 100644 --- a/code/datums/material_container.dm +++ b/code/datums/material_container.dm @@ -32,7 +32,7 @@ if(isnull(stored)) return for(var/mat_id in stored) - var/datum/material/M = SSmaterials.resolve_material(mat_id) + var/datum/prototype/material/M = RSmaterials.fetch(mat_id) if(isnull(M)) continue var/safety = 50 @@ -63,11 +63,11 @@ * * @return sheets dumped */ -/datum/material_container/proc/dump(atom/where, datum/material/material, amount = INFINITY) +/datum/material_container/proc/dump(atom/where, datum/prototype/material/material, amount = INFINITY) if(amount < 0) CRASH("negative amount?") if(!istype(material)) - material = SSmaterials.resolve_material(material) + material = RSmaterials.fetch(material) var/can_dump = round(stored[material.id] / SHEET_MATERIAL_AMOUNT) var/dumping = min(amount, can_dump) stored[material.id] -= dumping * SHEET_MATERIAL_AMOUNT @@ -103,7 +103,7 @@ if(!istype(inserting)) return 0 LAZYINITLIST(stored) - var/datum/material/mat = inserting.material + var/datum/prototype/material/mat = inserting.material var/allowed = capacity_material_sheets(mat) var/inserted = min(allowed, inserting.amount) inserting.use(inserted) @@ -118,7 +118,7 @@ /datum/material_container/proc/capacity_sheets(obj/item/stack/material/inserting) if(!istype(inserting)) return 0 - var/datum/material/mat = inserting.material + var/datum/prototype/material/mat = inserting.material return capacity_material_sheets(mat) /** @@ -137,7 +137,7 @@ * * @return number of sheets allowed */ -/datum/material_container/proc/capacity_material_sheets(datum/material/mat) +/datum/material_container/proc/capacity_material_sheets(datum/prototype/material/mat) if(isnull(capacity)) return INFINITY if(isnum(capacity)) @@ -153,7 +153,7 @@ /** * is this material allowed */ -/datum/material_container/proc/allowed_material(datum/material/mat) +/datum/material_container/proc/allowed_material(datum/prototype/material/mat) return isnull(capacity) || isnum(capacity) || !isnull(capacity[mat.id]) /** diff --git a/code/datums/prototype.dm b/code/datums/prototype.dm index 7db0e6cd176..a53fa776f1b 100644 --- a/code/datums/prototype.dm +++ b/code/datums/prototype.dm @@ -1,51 +1,78 @@ -/* -candidates for conversion: -- /datum/role -- /datum/material -- /datum/lore -- /datum/design -*/ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 Citadel Station Developers *// /** - * global singletons fetched from repository controllers + * Global singletons fetched from repository controllers. * - * they can be registered, or non-registered. + * They can be created mid-round, and persisted. * - * ids are optional, but no id means it can only be fetched by type. set anonymous to TRUE for that! + * All prototypes should be serializable. * - * All prototypes should be: - * * serializable - * * comparable + * * Any non-hardcoded prototypes are automatically serialized to the database on registration. + * * Prototypes should never requrie hard references to datums. + * * Prototypes may only refer to other prototypes with string IDs. + * * Hardcoded prototypes should only refer to other prototypes with typepaths. This allows the subsystem to early-load + * the other prototypes before its own initialization, which is required to not have to enforce load order + * on repositories. */ /datum/prototype abstract_type = /datum/prototype - //? Identity - /// id - must be unique within the repository subsystem this is stored in. - /// Should be in CamelCase + //* System *// + + /// is this hardcoded? + /// + /// * hardcoded prototypes can never be unloaded + /// * you should not be touching this (whether read or write) ever outside of the base of /datum/controller/repository. + var/hardcoded = FALSE + + //* Identity *// + + /// Globally unique ID for usage with the repository this is stored in. + /// + /// * IDs should be named like "kebab-case-abcd-1234". + /// * IDs should be globally unique across rounds. + /// * Hardcoded prototypes should always be referred to via type instead of ID where possible + /// * All persistent prototypes bear the burden of not colliding with hardcoded prototypes. + /// Repositories will try to mangle persistent prototypes to ensure they do not collide. + /// * IDs should never be visible to players; they are not meant to be cryptographic or IC. var/id + + // TODO: deal with the rest of this + /// anonymous? if true, coded id is ignored. var/anonymous = FALSE /// namespace for anonymous generation - must be set if anonymous var/anonymous_namespace /// id next global on /datum/prototype var/static/id_next = 0 - /// should this be saved? // todo: not yet implemented var/savable = FALSE /// lazyloaded var/lazy = FALSE + // END + /datum/prototype/New() if(anonymous && isnull(id)) id = generate_anonymous_uid() /datum/prototype/proc/generate_anonymous_uid() // unique always, even across rounds + // todo: use SSpersistence persistence ID or something; maybe persistence ID should just be a global thing on the databse? + // or just don't use sspersistence and use a better metric than realtime because this looks like shit lol ASSERT(anonymous_namespace) return "[anonymous_namespace]-[num2text(world.realtime, 16)]-[++id_next]" +/datum/prototype/serialize() + . = ..() + .["id"] = id + +/datum/prototype/deserialize(list/data) + . = ..() + id = data["id"] + /** * called on register * always call return ..() *LAST* so side effects can be cleaned up on every level on failure. @@ -63,17 +90,3 @@ candidates for conversion: */ /datum/prototype/proc/unregister() return TRUE - -/datum/prototype/serialize() - . = ..() - .[NAMEOF(src, id)] = id - -/datum/prototype/deserialize(list/data) - . = ..() - id = data[NAMEOF(src, id)] - -/** - * Supertype of "simple" prototypes handled by RCstructs. - */ -/datum/prototype/struct - abstract_type = /datum/prototype/struct diff --git a/code/game/atoms/_atom.dm b/code/game/atoms/_atom.dm index 271960c63f5..4cbc9afd0af 100644 --- a/code/game/atoms/_atom.dm +++ b/code/game/atoms/_atom.dm @@ -125,7 +125,7 @@ /// this list is at /atom level but are only used/implemented on /obj generically; anything else, e.g. walls, should implement manually for efficiency. /// * this variable is a cache variable and is generated from the materials on an entity. /// * this variable is not visible and should not be edited in the map editor. - var/tmp/list/datum/material_trait/material_traits + var/tmp/list/datum/prototype/material_trait/material_traits /// material trait metadata when [material_traits] is a single trait. null otherwise. /// * this variable is a cache variable and is generated from the materials on an entity. /// * this variable is not visible and should not be edited in the map editor. @@ -360,7 +360,7 @@ /* if(custom_materials) var/list/materials_list = list() - for(var/datum/material/current_material as anything in custom_materials) + for(var/datum/prototype/material/current_material as anything in custom_materials) materials_list += "[current_material.name]" . += "It is made out of [english_list(materials_list)]." */ diff --git a/code/game/atoms/materials.dm b/code/game/atoms/materials.dm index ff947557228..4bba83b1903 100644 --- a/code/game/atoms/materials.dm +++ b/code/game/atoms/materials.dm @@ -18,9 +18,9 @@ /// ensure this is called once and only once when a material is added to an atom /// alternatively, don't call this at all if you don't want to register traits. /// this should null-check, as null is a valid material. -/atom/proc/register_material(datum/material/mat, primary) +/atom/proc/register_material(datum/prototype/material/mat, primary) if(!isnull(mat?.material_traits)) - for(var/datum/material_trait/trait as anything in mat.material_traits) + for(var/datum/prototype/material_trait/trait as anything in mat.material_traits) if(islist(material_traits)) var/old_data = material_traits[trait] material_traits[trait] = trait.on_add(src, old_data, mat.material_traits[trait]) @@ -30,7 +30,7 @@ material_traits_data = trait.on_add(src, null, mat.material_traits[trait]) material_trait_flags = trait.material_trait_flags else - var/datum/material_trait/other = material_traits + var/datum/prototype/material_trait/other = material_traits var/old_data = material_traits_data if(other == trait) material_traits_data = trait.on_add(src, old_data, mat.material_traits[trait]) @@ -43,22 +43,22 @@ /// ensure this is called once and only once when a material is deleted from an atom /// this is only to be used if the material was registered. if it was never registered, DO NOT call this. /// this should null-check, as null is a valid material. -/atom/proc/unregister_material(datum/material/mat, primary) +/atom/proc/unregister_material(datum/prototype/material/mat, primary) if(!isnull(mat?.material_traits)) - for(var/datum/material_trait/trait as anything in mat.material_traits) + for(var/datum/prototype/material_trait/trait as anything in mat.material_traits) if(islist(material_traits)) var/old_data = material_traits[trait] var/new_data = trait.on_remove(src, old_data, mat.material_traits[trait]) if(isnull(new_data)) material_traits -= trait if(length(material_traits) == 1) - var/datum/material_trait/other = material_traits[1] + var/datum/prototype/material_trait/other = material_traits[1] material_traits_data = material_traits[other] material_traits = other material_trait_flags = other.material_trait_flags else material_trait_flags = NONE - for(var/datum/material_trait/other as anything in material_traits) + for(var/datum/prototype/material_trait/other as anything in material_traits) material_trait_flags |= other.material_trait_flags else material_traits[trait] = new_data diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/engineering.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/engineering.dm index aa8b937088a..1a47403cce6 100644 --- a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/engineering.dm +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/engineering.dm @@ -129,7 +129,7 @@ container_name = "Tritium crate" container_type = /obj/structure/closet/crate/engineering contains = list( - /datum/material/hydrogen/tritium = 50, + /datum/prototype/material/hydrogen/tritium = 50, ) /datum/supply_pack/nanotrasen/engineering/thermoregulator @@ -143,7 +143,7 @@ /datum/supply_pack/nanotrasen/engineering/algae name = "Algae Sheets (10)" contains = list( - /datum/material/algae = 10, + /datum/prototype/material/algae = 10, ) container_type = /obj/structure/closet/crate container_name = "algae sheets crate" diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/materials.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/materials.dm index 9094a11bb4d..9f8bb881eb7 100644 --- a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/materials.dm +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/materials.dm @@ -5,7 +5,7 @@ /datum/supply_pack/nanotrasen/materials/metal50 name = "50 metal sheets" contains = list( - /datum/material/steel = 50, + /datum/prototype/material/steel = 50, ) container_type = /obj/structure/closet/crate container_name = "Metal sheets crate" @@ -13,7 +13,7 @@ /datum/supply_pack/nanotrasen/materials/glass50 name = "50 glass sheets" contains = list( - /datum/material/glass = 50, + /datum/prototype/material/glass = 50, ) container_type = /obj/structure/closet/crate container_name = "Glass sheets crate" @@ -21,7 +21,7 @@ /datum/supply_pack/nanotrasen/materials/wood50 name = "50 wooden planks" contains = list( - /datum/material/wood_plank = 50, + /datum/prototype/material/wood_plank = 50, ) container_type = /obj/structure/closet/crate container_name = "Wooden planks crate" @@ -29,7 +29,7 @@ /datum/supply_pack/nanotrasen/materials/hardwood50 name = "50 hardwood planks" contains = list( - /datum/material/wood_plank/hardwood = 50, + /datum/prototype/material/wood_plank/hardwood = 50, ) container_type = /obj/structure/closet/crate @@ -38,7 +38,7 @@ /datum/supply_pack/nanotrasen/materials/plastic50 name = "50 plastic sheets" contains = list( - /datum/material/plastic = 50, + /datum/prototype/material/plastic = 50, ) container_type = /obj/structure/closet/crate container_name = "Plastic sheets crate" @@ -46,7 +46,7 @@ /datum/supply_pack/nanotrasen/materials/leather50 name = "50 leather sheets" contains = list( - /datum/material/leather = 50, + /datum/prototype/material/leather = 50, ) container_type = /obj/structure/closet/crate container_name = "Leather sheets crate" @@ -54,7 +54,7 @@ /datum/supply_pack/nanotrasen/materials/cloth50 name = "50 cloth sheets" contains = list( - /datum/material/cloth = 50, + /datum/prototype/material/cloth = 50, ) container_type = /obj/structure/closet/crate container_name = "Cloth sheets crate" @@ -62,7 +62,7 @@ /datum/supply_pack/nanotrasen/materials/cardboard_sheets name = "50 cardboard sheets" contains = list( - /datum/material/cardboard = 50, + /datum/prototype/material/cardboard = 50, ) container_type = /obj/structure/closet/crate container_name = "Cardboard sheets crate" diff --git a/code/game/content/factions/derelict/derelict.dm/derelict_flora.dm b/code/game/content/factions/derelict/derelict.dm/derelict_flora.dm index f68fd88cb35..83776ad8684 100644 --- a/code/game/content/factions/derelict/derelict.dm/derelict_flora.dm +++ b/code/game/content/factions/derelict/derelict.dm/derelict_flora.dm @@ -1,6 +1,6 @@ // Walls -/datum/material/alienalloy/hardenedstone +/datum/prototype/material/alienalloy/hardenedstone id = "hardenedstone" name = "hardenedstone" @@ -13,7 +13,7 @@ /turf/simulated/wall/event/cave_wall icon = 'code/game/content/factions/derelict/derelict.dmi/cave_walls.dmi' - material_outer = /datum/material/alienalloy/hardenedstone + material_outer = /datum/prototype/material/alienalloy/hardenedstone name = "cave wall" desc = "A wall consisting of impenetrable rock. No way you're getting past this without heavy excavation equipment." description_info = "No way you can get past this..." diff --git a/code/game/content/factions/derelict/derelict.dm/derelict_structures.dm b/code/game/content/factions/derelict/derelict.dm/derelict_structures.dm index d95cd51de29..d8045cce1d5 100644 --- a/code/game/content/factions/derelict/derelict.dm/derelict_structures.dm +++ b/code/game/content/factions/derelict/derelict.dm/derelict_structures.dm @@ -1,4 +1,4 @@ -/datum/material/alienalloy/derelictalloy +/datum/prototype/material/alienalloy/derelictalloy id = "derelictalloy" name = "derelictalloy" @@ -15,7 +15,7 @@ /turf/simulated/wall/event/derelict_wall icon = 'code/game/content/factions/derelict/derelict.dmi/derelict_walls.dmi' - material_outer = /datum/material/alienalloy/derelictalloy + material_outer = /datum/prototype/material/alienalloy/derelictalloy name = "derelict wall" desc = "A wall made up of some sort of strange alloy... It has lots of pipes, tubes and other utility structure on full display." description_info = "Maybe it's best NOT to compromise a excavation site due to curiosity?" @@ -95,7 +95,7 @@ // Doors /obj/structure/simple_door/derelict - material_parts = /datum/material/alienalloy/derelictalloy + material_parts = /datum/prototype/material/alienalloy/derelictalloy icon = 'code/game/content/factions/derelict/derelict.dmi/derelict_doors.dmi' integrity_enabled = 0 diff --git a/code/game/gamemodes/cult/cultify/obj.dm b/code/game/gamemodes/cult/cultify/obj.dm index c0c8de68e1d..4f168cc112d 100644 --- a/code/game/gamemodes/cult/cultify/obj.dm +++ b/code/game/gamemodes/cult/cultify/obj.dm @@ -131,7 +131,7 @@ // Make it a wood-reinforced wooden table. // There are cult materials available, but it'd make the table non-deconstructable with how holotables work. // Could possibly use a new material var for holographic-ness? - var/datum/material/resolved = SSmaterials.resolve_material(/datum/material/wood_plank) + var/datum/prototype/material/resolved = RSmaterials.fetch(/datum/prototype/material/wood_plank) set_material_parts(list("base" = resolved, "reinf" = resolved)) update_desc() update_connections(1) diff --git a/code/game/machinery/_frame.dm b/code/game/machinery/_frame.dm index f70c6999500..2b784c9380e 100644 --- a/code/game/machinery/_frame.dm +++ b/code/game/machinery/_frame.dm @@ -544,7 +544,7 @@ state = FRAME_FASTENED new /obj/item/stack/cable_coil(loc, 5) - else if(P.is_material_stack_of(/datum/material/glass)) + else if(P.is_material_stack_of(/datum/prototype/material/glass)) if(state == FRAME_WIRED) if(frame_type.frame_class == FRAME_CLASS_COMPUTER) var/obj/item/stack/G = P diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index 2d5e94e91bb..6c085fbb306 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -88,7 +88,7 @@ var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) A.amount = 5 - if(P.is_material_stack_of(/datum/material/glass/reinforced)) + if(P.is_material_stack_of(/datum/prototype/material/glass/reinforced)) var/obj/item/stack/material/RG = P if (RG.get_amount() < 2) to_chat(user, "You need two sheets of glass to put in the glass panel.") diff --git a/code/game/machinery/deployable_vr.dm b/code/game/machinery/deployable_vr.dm index 3b50fc26d7c..eae145b4353 100644 --- a/code/game/machinery/deployable_vr.dm +++ b/code/game/machinery/deployable_vr.dm @@ -73,7 +73,7 @@ /obj/structure/barricade/cutout/examine(mob/user, dist) . = ..() if(dist <= 1) - var/datum/material/primary = get_primary_material() + var/datum/prototype/material/primary = get_primary_material() . += SPAN_NOTICE("... from this distance, they seem to be made of [isnull(primary)? "cardboard" : primary.name] ...") /obj/structure/barricade/cutout/attackby(obj/I, mob/user) diff --git a/code/game/machinery/doors/airlock/airlock.dm b/code/game/machinery/doors/airlock/airlock.dm index ad9feb6bd29..b18db9b23ca 100644 --- a/code/game/machinery/doors/airlock/airlock.dm +++ b/code/game/machinery/doors/airlock/airlock.dm @@ -93,7 +93,7 @@ GLOBAL_REAL_VAR(airlock_typecache) = typecacheof(list( var/stripe_color = null var/symbol_color = null var/window_color = GLASS_COLOR - var/window_material = /datum/material/glass + var/window_material = /datum/prototype/material/glass var/fill_file = 'icons/obj/doors/station/fill_steel.dmi' var/color_file = 'icons/obj/doors/station/color.dmi' diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index 0e7fa26bc67..9df2f78a99f 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -28,7 +28,7 @@ smoothing_groups = (SMOOTH_GROUP_SHUTTERS_BLASTDOORS) - var/datum/material/implicit_material + var/datum/prototype/material/implicit_material // Icon states for different shutter types. Simply change this instead of rewriting the update_icon proc. var/icon_state_open = null var/icon_state_opening = null @@ -148,7 +148,7 @@ else to_chat(user, "[src]'s motors resist your effort.") return - else if(I.is_material_stack_of(/datum/material/plasteel)) // Repairing. + else if(I.is_material_stack_of(/datum/prototype/material/plasteel)) // Repairing. var/amt = CEILING((integrity_max - integrity)/150, 1) if(!amt) to_chat(user, "\The [src] is already fully repaired.") diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 91add4d072a..21071bb5c22 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -222,7 +222,7 @@ return if(repairing && I.is_crowbar()) - var/datum/material/M = SSmaterials.resolve_material(mineral) + var/datum/prototype/material/M = RSmaterials.fetch(mineral) var/obj/item/stack/material/repairing_sheet = M.place_sheet(loc) repairing_sheet.amount += repairing-1 repairing = 0 diff --git a/code/game/machinery/doors/door_vr.dm b/code/game/machinery/doors/door_vr.dm index dee9c5e42e6..c3d4f223eb9 100644 --- a/code/game/machinery/doors/door_vr.dm +++ b/code/game/machinery/doors/door_vr.dm @@ -1,7 +1,7 @@ // Returns true only if one of the actions unique to reinforcing is done, otherwise false and continuing normal attackby /obj/machinery/door/proc/attackby_vr(obj/item/I, mob/living/user, list/params, clickchain_flags, damage_multiplier) - if(I.is_material_stack_of(/datum/material/plasteel)) + if(I.is_material_stack_of(/datum/prototype/material/plasteel)) if(heat_resistance > initial(heat_resistance)) to_chat(user, "\The [src] is already reinforced.") return TRUE diff --git a/code/game/machinery/lathes/autolathe.dm b/code/game/machinery/lathes/autolathe.dm index a5326de9833..d2e5fdc8a01 100644 --- a/code/game/machinery/lathes/autolathe.dm +++ b/code/game/machinery/lathes/autolathe.dm @@ -27,4 +27,4 @@ /datum/design_holder/lathe/autolathe /datum/design_holder/lathe/autolathe/available_ids() - return SSresearch.autolathe_design_ids | ..() + return RSdesigns.autolathe_design_ids | ..() diff --git a/code/game/machinery/lathes/lathe.dm b/code/game/machinery/lathes/lathe.dm index b964c935566..c5e622c1fe6 100644 --- a/code/game/machinery/lathes/lathe.dm +++ b/code/game/machinery/lathes/lathe.dm @@ -81,7 +81,7 @@ /// queued of /datum/lathe_queue_entry's. 1 is top of queue. var/list/datum/lathe_queue_entry/queue /// currently printing design - var/datum/design/printing + var/datum/prototype/design/printing /// processing queue? var/queue_active = FALSE /// progress in deciseconds on current design @@ -270,10 +270,10 @@ if(stored_items) QDEL_LIST_NULL(stored_items) -/obj/machinery/lathe/proc/has_design(datum/design/id_or_instance) +/obj/machinery/lathe/proc/has_design(datum/prototype/design/id_or_instance) return design_holder.has_id(istext(id_or_instance)? id_or_instance : id_or_instance.id) -/obj/machinery/lathe/proc/has_capabilities_for(datum/design/instance) +/obj/machinery/lathe/proc/has_capabilities_for(datum/prototype/design/instance) return lathe_type & instance.lathe_type /** @@ -281,7 +281,7 @@ * * @return number of it we can print, this can be a decimal. if design requires ingredients, this will never be above 1. */ -/obj/machinery/lathe/proc/has_resources_for(datum/design/instance, list/material_parts, list/ingredient_parts) +/obj/machinery/lathe/proc/has_resources_for(datum/prototype/design/instance, list/material_parts, list/ingredient_parts) . = INFINITY if(length(instance.materials_base)) var/list/materials = instance.materials_base.Copy() @@ -320,7 +320,7 @@ * * @return number of it we can print if so, null if we can't print at all and it isn't a resource issue */ -/obj/machinery/lathe/proc/can_print(datum/design/instance, list/material_parts, list/ingredient_parts) +/obj/machinery/lathe/proc/can_print(datum/prototype/design/instance, list/material_parts, list/ingredient_parts) if(!has_design(instance)) return FALSE if(!has_capabilities_for(instance)) @@ -330,7 +330,7 @@ /** * returns why we can't print something */ -/obj/machinery/lathe/proc/why_cant_print(datum/design/instance, list/material_parts, list/ingredient_parts) +/obj/machinery/lathe/proc/why_cant_print(datum/prototype/design/instance, list/material_parts, list/ingredient_parts) if(!has_design(instance)) return "Unknown design detected" if(!has_capabilities_for(instance)) @@ -343,7 +343,7 @@ * * @return an object, or a list of objects. */ -/obj/machinery/lathe/proc/do_print(datum/design/instance, amount = 1, list/material_parts, list/ingredient_parts, efficiency = efficiency_multiplier) +/obj/machinery/lathe/proc/do_print(datum/prototype/design/instance, amount = 1, list/material_parts, list/ingredient_parts, efficiency = efficiency_multiplier) if(!amount) return var/list/materials_used = instance.materials_base?.Copy() || list() @@ -368,11 +368,11 @@ var/total = time * mult progress += total var/datum/lathe_queue_entry/head = queue[1] - var/datum/design/D + var/datum/prototype/design/D var/left_this_tick = max_items_per_tick var/printed_any = FALSE while(!isnull(head)) - D = SSresearch.fetch_design(head.design_id) + D = RSdesigns.fetch(head.design_id) var/resource_limited = has_resources_for(D, head.material_parts, head.ingredient_parts) if(!resource_limited) if(queue_active) @@ -405,8 +405,8 @@ start_printing(silent) /obj/machinery/lathe/proc/queue_head_design() - RETURN_TYPE(/datum/design) - return length(queue)? (SSresearch.fetch_design(queue[1].design_id)) : null + RETURN_TYPE(/datum/prototype/design) + return length(queue)? (RSdesigns.fetch(queue[1].design_id)) : null /obj/machinery/lathe/proc/check_queue_head(silent, check_resources = TRUE) if(!length(queue)) @@ -415,7 +415,7 @@ stop_printing() return FALSE var/datum/lathe_queue_entry/head = queue[1] - var/datum/design/D = SSresearch.fetch_design(head.design_id) + var/datum/prototype/design/D = RSdesigns.fetch(head.design_id) if(isnull(D)) if(!silent && queue_active) atom_say("Print queue interrupted - unknown entry in queue.") @@ -484,7 +484,7 @@ * * amount variable is reserved but unused at this given time. */ -/obj/machinery/lathe/proc/enqueue(datum/design/instance, amount = 1, list/material_parts, list/ingredient_parts, start_immediately) +/obj/machinery/lathe/proc/enqueue(datum/prototype/design/instance, amount = 1, list/material_parts, list/ingredient_parts, start_immediately) if(!isnull(instance.material_costs)) for(var/key in instance.material_costs) if(!material_parts[key]) diff --git a/code/game/machinery/lathes/medical_lathe.dm b/code/game/machinery/lathes/medical_lathe.dm index 42a0ca11f67..d1313150a55 100644 --- a/code/game/machinery/lathes/medical_lathe.dm +++ b/code/game/machinery/lathes/medical_lathe.dm @@ -20,7 +20,7 @@ design_holder = /datum/design_holder/lathe/medi_mini_lathe /datum/design_holder/lathe/medi_mini_lathe/available_ids() - return SSresearch.medical_mini_design_ids | ..() + return RSdesigns.medical_mini_design_ids | ..() /obj/machinery/lathe/medical/stocked/Initialize(mapload) . = ..() diff --git a/code/game/machinery/turrets/turret_frame.dm b/code/game/machinery/turrets/turret_frame.dm index 8a3c97076fc..d925d4aaeea 100644 --- a/code/game/machinery/turrets/turret_frame.dm +++ b/code/game/machinery/turrets/turret_frame.dm @@ -35,7 +35,7 @@ return if(1) - if(I.is_material_stack_of(/datum/material/steel)) + if(I.is_material_stack_of(/datum/prototype/material/steel)) var/obj/item/stack/M = I if(M.use(2)) to_chat(user, "You add some metal armor to the interior frame.") @@ -115,7 +115,7 @@ //attack_hand(mob/user, datum/event_args/actor/clickchain/e_args) if(6) - if(I.is_material_stack_of(/datum/material/steel)) + if(I.is_material_stack_of(/datum/prototype/material/steel)) var/obj/item/stack/M = I if(M.use(2)) to_chat(user, "You add some metal armor to the exterior frame.") diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 903c76c9174..04dcd042874 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -875,7 +875,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. //* Materials *// /obj/item/material_trait_brittle_shatter() - var/datum/material/material = get_primary_material() + var/datum/prototype/material/material = get_primary_material() var/turf/T = get_turf(src) T.visible_message("\The [src] [material.destruction_desc]!") if(istype(loc, /mob/living)) diff --git a/code/game/objects/items/circuitboards/computer/camera_monitor.dm b/code/game/objects/items/circuitboards/computer/camera_monitor.dm index 7de05d27e92..b5f68886c3d 100644 --- a/code/game/objects/items/circuitboards/computer/camera_monitor.dm +++ b/code/game/objects/items/circuitboards/computer/camera_monitor.dm @@ -12,8 +12,7 @@ /obj/item/circuitboard/security/Initialize(mapload) . = ..() - network = (LEGACY_MAP_DATUM).station_networks - + network = (LEGACY_MAP_DATUM)?.station_networks /obj/item/circuitboard/security/tv name = T_BOARD("security camera monitor - television") build_path = /obj/machinery/computer/security/wooden_tv diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index d5a4b9f7d73..e0cebf5059d 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -71,7 +71,7 @@ /obj/item/lightreplacer/attackby(obj/item/W, mob/user) if(istype(W, /obj/item/stack/material)) var/obj/item/stack/material/G = W - if(G.material.type == /datum/material/glass) + if(G.material.type == /datum/prototype/material/glass) if(uses >= max_uses) to_chat(user, "[src.name] is full.") return diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index ee5ea494540..caed0e3ffe8 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -98,7 +98,7 @@ /obj/item/robot_parts/robot_suit/attackby(obj/item/W as obj, mob/user as mob) ..() - if(W.is_material_stack_of(/datum/material/steel) && !l_arm && !r_arm && !l_leg && !r_leg && !chest && !head) + if(W.is_material_stack_of(/datum/prototype/material/steel) && !l_arm && !r_arm && !l_leg && !r_leg && !chest && !head) var/obj/item/stack/material/M = W if (M.use(1)) new /obj/item/secbot_assembly/ed209_assembly(get_turf(src)) diff --git a/code/game/objects/items/shield/types/shields_legacy.dm b/code/game/objects/items/shield/types/shields_legacy.dm index 43e0b0d1a0f..fc736c0dedb 100644 --- a/code/game/objects/items/shield/types/shields_legacy.dm +++ b/code/game/objects/items/shield/types/shields_legacy.dm @@ -197,7 +197,7 @@ var/obj/projectile/casted_projectile = casted_object if(istype(casted_projectile, /obj/projectile/bullet/reusable/foam)) allowed = TRUE - else if(casted_object.get_primary_material_id() == /datum/material/toy_foam::id) + else if(casted_object.get_primary_material_id() == /datum/prototype/material/toy_foam::id) allowed = TRUE if(!allowed) return diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index a14290c8481..03ab4810efc 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -14,7 +14,7 @@ name = "glass" singular_name = "glass sheet" icon_state = "sheet-glass" - material = /datum/material/glass + material = /datum/prototype/material/glass drop_sound = 'sound/items/drop/glass.ogg' pickup_sound = 'sound/items/pickup/glass.ogg' var/is_reinforced = 0 @@ -61,7 +61,7 @@ name = "reinforced glass" singular_name = "reinforced glass sheet" icon_state = "sheet-rglass" - material = /datum/material/glass/reinforced + material = /datum/prototype/material/glass/reinforced is_reinforced = 1 /* @@ -71,7 +71,7 @@ name = "phoron glass" singular_name = "phoron glass sheet" icon_state = "sheet-phoronglass" - material = /datum/material/phoron + material = /datum/prototype/material/phoron /obj/item/stack/material/glass/phoronglass/attackby(obj/item/W, mob/user) ..() @@ -96,5 +96,5 @@ name = "reinforced phoron glass" singular_name = "reinforced phoron glass sheet" icon_state = "sheet-phoronrglass" - material = /datum/material/glass/phoron/reinforced + material = /datum/prototype/material/glass/phoron/reinforced is_reinforced = 1 diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 65a4985587b..750b1c97e7a 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -1,15 +1,15 @@ /** * automatically splitting stack spawns * - * supports /datum/material as well + * supports /datum/prototype/material as well * * @return **amount of objects created** (not total stack/sheet amount made!) */ /proc/spawn_stacks_at(atom/location, stack_path, amount) . = 0 var/safety = 50 - if(ispath(stack_path, /datum/material)) - var/datum/material/resolved = SSmaterials.resolve_material(stack_path) + if(ispath(stack_path, /datum/prototype/material)) + var/datum/prototype/material/resolved = RSmaterials.fetch(stack_path) // todo: ugh resolved.place_sheet(location, amount) return 1 diff --git a/code/game/objects/items/weapons/improvised_components.dm b/code/game/objects/items/weapons/improvised_components.dm index f28a72b7dd5..1e5dc885341 100644 --- a/code/game/objects/items/weapons/improvised_components.dm +++ b/code/game/objects/items/weapons/improvised_components.dm @@ -141,7 +141,7 @@ if(istype(thing, /obj/item/stack/material) && construction_stage == 5) var/obj/item/stack/material/reinforcing = thing - var/datum/material/reinforcing_with = reinforcing.material + var/datum/prototype/material/reinforcing_with = reinforcing.material if(reinforcing_with.name == MAT_STEEL) // Steel if(reinforcing.get_amount() < 3) to_chat(user, "You need at least 3 [reinforcing.singular_name]\s for this task.") diff --git a/code/game/objects/items/weapons/material/armor.dm b/code/game/objects/items/weapons/material/armor.dm index fcbfb38b4bc..cb6ec67d988 100644 --- a/code/game/objects/items/weapons/material/armor.dm +++ b/code/game/objects/items/weapons/material/armor.dm @@ -18,7 +18,7 @@ material_parts = material_armor return ..() -/obj/item/clothing/update_material_single(datum/material/material) +/obj/item/clothing/update_material_single(datum/prototype/material/material) . = ..() if(isnull(material)) return @@ -36,7 +36,7 @@ /obj/item/clothing/suit/armor/material name = "armor" - material_parts = /datum/material/steel + material_parts = /datum/prototype/material/steel /obj/item/clothing/suit/armor/material/makeshift name = "sheet armor" @@ -44,10 +44,10 @@ icon_state = "material_armor_makeshift" /obj/item/clothing/suit/armor/material/makeshift/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/clothing/suit/armor/material/makeshift/glass - material_parts = /datum/material/glass + material_parts = /datum/prototype/material/glass // Used to craft sheet armor, and possibly other things in the Future(tm). /obj/item/material/armor_plating @@ -123,7 +123,7 @@ /obj/item/clothing/head/helmet/material name = "helmet" inv_hide_flags = HIDEEARS|HIDEEYES|BLOCKHAIR - material_parts = /datum/material/steel + material_parts = /datum/prototype/material/steel /obj/item/clothing/head/helmet/material/makeshift name = "bucket" @@ -132,4 +132,4 @@ icon_state = "material_armor_makeshift" /obj/item/clothing/head/helmet/material/makeshift/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel diff --git a/code/game/objects/items/weapons/material/ashtray.dm b/code/game/objects/items/weapons/material/ashtray.dm index 9af25d331c3..9c5552e072f 100644 --- a/code/game/objects/items/weapons/material/ashtray.dm +++ b/code/game/objects/items/weapons/material/ashtray.dm @@ -6,7 +6,7 @@ var/global/list/ashtray_cache = list() icon_state = "blank" material_significance = MATERIAL_SIGNIFICANCE_SHARD materials_base = list(MAT_STEEL = 4000) - material_parts = /datum/material/steel + material_parts = /datum/prototype/material/steel var/image/base_image var/max_butts = 10 @@ -20,7 +20,7 @@ var/global/list/ashtray_cache = list() color = null cut_overlays() - var/datum/material/material = get_primary_material() + var/datum/prototype/material/material = get_primary_material() var/list/overlays_to_add = list() var/cache_key = "base-[material.name]" @@ -75,10 +75,10 @@ var/global/list/ashtray_cache = list() return ..() /obj/item/material/ashtray/plastic - material_parts = /datum/material/plastic + material_parts = /datum/prototype/material/plastic /obj/item/material/ashtray/bronze - material_parts = /datum/material/bronze + material_parts = /datum/prototype/material/bronze /obj/item/material/ashtray/glass - material_parts = /datum/material/glass + material_parts = /datum/prototype/material/glass diff --git a/code/game/objects/items/weapons/material/bats.dm b/code/game/objects/items/weapons/material/bats.dm index 7171ad64461..585f4c0fe39 100644 --- a/code/game/objects/items/weapons/material/bats.dm +++ b/code/game/objects/items/weapons/material/bats.dm @@ -6,7 +6,7 @@ throw_force = 7 attack_verb = list("smashed", "beaten", "slammed", "smacked", "struck", "battered", "bonked") attack_sound = 'sound/weapons/genhit3.ogg' - material_parts = /datum/material/wood_plank + material_parts = /datum/prototype/material/wood_plank material_significance = MATERIAL_SIGNIFICANCE_WEAPON_MEDIUM slot_flags = SLOT_BACK @@ -38,4 +38,4 @@ icon_state = "penbat0" base_icon = "penbat" attack_verb = list("smacked", "slapped", "thwapped", "struck", "bapped", "bonked") - material_parts = /datum/material/plastic + material_parts = /datum/prototype/material/plastic diff --git a/code/game/objects/items/weapons/material/foam.dm b/code/game/objects/items/weapons/material/foam.dm index 475bb55e992..dfcab4846c0 100644 --- a/code/game/objects/items/weapons/material/foam.dm +++ b/code/game/objects/items/weapons/material/foam.dm @@ -3,14 +3,14 @@ drop_sound = 'sound/items/drop/device.ogg' pickup_sound = 'sound/items/pickup/device.ogg' attack_sound = 'sound/effects/bodyfall3.ogg' - material_parts = /datum/material/toy_foam + material_parts = /datum/prototype/material/toy_foam /obj/item/material/twohanded/baseballbat/foam attack_verb = list("bonked","whacked") drop_sound = 'sound/items/drop/device.ogg' pickup_sound = 'sound/items/pickup/device.ogg' attack_sound = 'sound/effects/bodyfall3.ogg' - material_parts = /datum/material/toy_foam + material_parts = /datum/prototype/material/toy_foam /obj/item/material/twohanded/spear/foam attack_verb = list("bonked","whacked") @@ -19,7 +19,7 @@ drop_sound = 'sound/items/drop/device.ogg' pickup_sound = 'sound/items/pickup/device.ogg' attack_sound = 'sound/effects/bodyfall3.ogg' - material_parts = /datum/material/toy_foam + material_parts = /datum/prototype/material/toy_foam /obj/item/material/twohanded/fireaxe/foam attack_verb = list("bonked","whacked") @@ -31,4 +31,4 @@ drop_sound = 'sound/items/drop/device.ogg' pickup_sound = 'sound/items/pickup/device.ogg' attack_sound = 'sound/effects/bodyfall3.ogg' - material_parts = /datum/material/toy_foam + material_parts = /datum/prototype/material/toy_foam diff --git a/code/game/objects/items/weapons/material/gravemarker.dm b/code/game/objects/items/weapons/material/gravemarker.dm index cfdfb564dcb..2c143b0008a 100644 --- a/code/game/objects/items/weapons/material/gravemarker.dm +++ b/code/game/objects/items/weapons/material/gravemarker.dm @@ -11,7 +11,7 @@ /obj/item/material/gravemarker/attackby(obj/item/W, mob/user as mob) if(W.is_screwdriver()) - var/datum/material/material = get_primary_material() + var/datum/prototype/material/material = get_primary_material() var/time_mult = (material.hardness > 0)? material.hardness / 100 : 1 / (material.hardness / 100) var/carving_1 = sanitizeSafe(input(user, "Who is \the [src.name] for?", "Gravestone Naming", null) as text, MAX_NAME_LEN) if(carving_1) @@ -28,7 +28,7 @@ epitaph += carving_2 update_icon() if(W.is_wrench()) - var/datum/material/material = get_primary_material() + var/datum/prototype/material/material = get_primary_material() var/time_mult = (material.hardness > 0)? material.hardness / 100 : 1 / (material.hardness / 100) user.visible_message("[user] starts carving \the [src.name].", "You start carving \the [src.name].") if(do_after(user, time_mult * 1 SECONDS * W.tool_speed)) diff --git a/code/game/objects/items/weapons/material/kitchen.dm b/code/game/objects/items/weapons/material/kitchen.dm index f989d0851dc..500c181330c 100644 --- a/code/game/objects/items/weapons/material/kitchen.dm +++ b/code/game/objects/items/weapons/material/kitchen.dm @@ -58,31 +58,31 @@ damage_mode = DAMAGE_MODE_SHARP /obj/item/material/kitchen/utensil/fork/plastic - material_parts = /datum/material/plastic + material_parts = /datum/prototype/material/plastic /obj/item/material/kitchen/utensil/fork/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/kitchen/utensil/fork/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/kitchen/utensil/spoon/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/kitchen/utensil/spoon/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/knife/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/knife/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/kitchen/rollingpin/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/kitchen/rollingpin/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/kitchen/utensil/spoon name = "spoon" @@ -93,7 +93,7 @@ damage_mode = NONE /obj/item/material/kitchen/utensil/spoon/plastic - material_parts = /datum/material/plastic + material_parts = /datum/prototype/material/plastic /* * Knives @@ -108,7 +108,7 @@ return ..() */ /obj/item/material/knife/plastic - material_parts = /datum/material/plastic + material_parts = /datum/prototype/material/plastic /* * Rolling Pins @@ -119,7 +119,7 @@ desc = "Used to knock out the Bartender." icon_state = "rolling_pin" attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") - material_parts = /datum/material/wood_plank + material_parts = /datum/prototype/material/wood_plank material_significance = MATERIAL_SIGNIFICANCE_WEAPON_LIGHT drop_sound = 'sound/items/drop/wooden.ogg' pickup_sound = 'sound/items/pickup/wooden.ogg' diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm index a46f78a0cd7..d2fec2ef741 100644 --- a/code/game/objects/items/weapons/material/knives.dm +++ b/code/game/objects/items/weapons/material/knives.dm @@ -121,7 +121,7 @@ /obj/item/material/knife/tacknife/combatknife/bone icon_state = "boneknife" - material_parts = /datum/material/bone + material_parts = /datum/prototype/material/bone // Identical to the tactical knife but nowhere near as stabby. // Kind of like the toy esword compared to the real thing. @@ -161,7 +161,7 @@ can_cleave = TRUE //Now hatchets inherit from the machete, and thus knives. Tables turned. slot_flags = SLOT_BELT | SLOT_HOLSTER material_significance = MATERIAL_SIGNIFICANCE_WEAPON_HEAVY - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel force_multiplier = 1.3 /obj/item/material/knife/machete/armblade @@ -200,13 +200,13 @@ icon_state = "survivalknife" item_state = "knife" material_color = FALSE - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel tool_speed = 2 // Use a real axe if you want to chop logs. /obj/item/material/knife/tacknife/survival/bone name = "primitive survival knife" desc = "A hunting grade survival knife with a sleek leather grip." - material_parts = /datum/material/bone + material_parts = /datum/prototype/material/bone /obj/item/material/knife/machete/deluxe name = "deluxe machete" @@ -217,58 +217,58 @@ // Knife Material Variants /obj/item/material/butterfly/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/butterfly/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/butterfly/switchblade/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/butterfly/switchblade/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/butterfly/boxcutter/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/butterfly/boxcutter/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/knife/tacknife/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/knife/tacknife/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/knife/tacknife/combatknife/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/knife/tacknife/combatknife/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/knife/hook/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/knife/hook/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/knife/ritual/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/knife/ritual/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/knife/butch/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/knife/butch/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/knife/machete/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/knife/machete/deluxe/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/knife/tacknife/survival/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel diff --git a/code/game/objects/items/weapons/material/material.dm b/code/game/objects/items/weapons/material/material.dm index c3394a87aea..153e49c5029 100644 --- a/code/game/objects/items/weapons/material/material.dm +++ b/code/game/objects/items/weapons/material/material.dm @@ -13,7 +13,7 @@ SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_material.dmi', SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_material.dmi', ) - material_parts = /datum/material/steel + material_parts = /datum/prototype/material/steel material_costs = SHEET_MATERIAL_AMOUNT * 2 material_primary = MATERIAL_PART_DEFAULT @@ -42,7 +42,7 @@ material_parts = material return ..() -/obj/item/material/update_material_single(datum/material/material) +/obj/item/material/update_material_single(datum/prototype/material/material) . = ..() if(isnull(material)) return @@ -112,8 +112,8 @@ // to_chat(user, "You can't repair \the [src].") // return -/obj/item/material/proc/sharpen(datum/material/material_like, var/sharpen_time, var/kit, mob/living/M) - material_like = SSmaterials.resolve_material(material_like) +/obj/item/material/proc/sharpen(datum/prototype/material/material_like, var/sharpen_time, var/kit, mob/living/M) + material_like = RSmaterials.fetch(material_like) // if(!fragile && material_primary) if(material_primary) // if(integrity < integrity_max) diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index 01aba5b9664..a7b38dcac0e 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -9,10 +9,10 @@ attack_verb = list("jabbed","stabbed","ripped") /obj/item/material/harpoon/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/harpoon/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/knife/machete/hatchet name = "hatchet" @@ -32,7 +32,7 @@ name = "primitive hatchet" desc = "A broad, flat piece of bone knapped to a sharp edge. A truly primitive weapon." icon_state = "hatchet_bone" - material_parts = /datum/material/bone + material_parts = /datum/prototype/material/bone /obj/item/material/knife/machete/hatchet/bronze name = "bronze hatchet" @@ -40,7 +40,7 @@ icon = 'icons/obj/lavaland.dmi' icon_state = "hatchet_bronze" item_state = "hatchet_bronze" - material_parts = /datum/material/bronze + material_parts = /datum/prototype/material/bronze /obj/item/material/knife/machete/hatchet/unathiknife name = "duelling knife" @@ -52,10 +52,10 @@ var/hits = 0 /obj/item/material/knife/machete/hatchet/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/knife/machete/hatchet/unathiknife/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/knife/machete/hatchet/unathiknife/attack_mob(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent) if(hits > 0) @@ -80,23 +80,23 @@ attack_verb = list("slashed", "sliced", "cut", "clawed") /obj/item/material/minihoe/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/minihoe/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/minihoe/bone name = "primitive mini hoe" icon = 'icons/obj/mining.dmi' icon_state = "cultivator_bone" - material_parts = /datum/material/bone + material_parts = /datum/prototype/material/bone /obj/item/material/snow/snowball name = "loose packed snowball" desc = "A fun snowball. Throw it at your friends!" icon = 'icons/obj/weapons.dmi' icon_state = "snowball" - material_parts = /datum/material/snow + material_parts = /datum/prototype/material/snow material_significance = MATERIAL_SIGNIFICANCE_SHARD force_multiplier = 0 w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm index dac7280dfc0..0400482f45b 100644 --- a/code/game/objects/items/weapons/material/shards.dm +++ b/code/game/objects/items/weapons/material/shards.dm @@ -8,14 +8,14 @@ damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE item_state = "shard-glass" attack_verb = list("stabbed", "slashed", "sliced", "cut") - material_parts = /datum/material/glass + material_parts = /datum/prototype/material/glass /obj/item/material/shard/Initialize(mapload, material) pixel_x = rand(-8, 8) pixel_y = rand(-8, 8) . = ..() -/obj/item/material/shard/update_material_single(datum/material/material) +/obj/item/material/shard/update_material_single(datum/prototype/material/material) . = ..() icon_state = "[material.shard_icon][pick("large", "medium", "small")]" if(material_color) @@ -45,7 +45,7 @@ return (BRUTELOSS) /obj/item/material/shard/attackby(obj/item/W as obj, mob/user as mob) - var/datum/material/material = get_material_part(MATERIAL_PART_DEFAULT) + var/datum/prototype/material/material = get_material_part(MATERIAL_PART_DEFAULT) if(istype(W, /obj/item/weldingtool) && material.shard_can_repair) var/obj/item/weldingtool/WT = W if(WT.remove_fuel(0, user)) @@ -144,10 +144,10 @@ // Preset types - left here for the code that uses them /obj/item/material/shard/shrapnel - material_parts = /datum/material/steel + material_parts = /datum/prototype/material/steel /obj/item/material/shard/phoron - material_parts = /datum/material/glass/phoron + material_parts = /datum/prototype/material/glass/phoron /obj/item/material/shard/wood - material_parts = /datum/material/wood_plank + material_parts = /datum/prototype/material/wood_plank diff --git a/code/game/objects/items/weapons/material/swords.dm b/code/game/objects/items/weapons/material/swords.dm index b29f86dd53b..88e2d7309bd 100644 --- a/code/game/objects/items/weapons/material/swords.dm +++ b/code/game/objects/items/weapons/material/swords.dm @@ -17,10 +17,10 @@ } /obj/item/material/sword/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/sword/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/sword/suicide_act(mob/user) var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()] @@ -39,10 +39,10 @@ return(BRUTELOSS) /obj/item/material/sword/katana/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/sword/katana/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/sword/sabre name = "officer's sabre" @@ -53,7 +53,7 @@ pickup_sound = 'sound/items/pickup/knife.ogg' drop_sound = 'sound/items/drop/knife.ogg' //initially damage was at 30. Damage now starts at around 25 until someone messes with material code again (hi Sili) - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel material_color = FALSE origin_tech = list(TECH_COMBAT = 4) item_icons = list( diff --git a/code/game/objects/items/weapons/material/thrown.dm b/code/game/objects/items/weapons/material/thrown.dm index f0d40d1c2f6..fabbc2daa8b 100644 --- a/code/game/objects/items/weapons/material/thrown.dm +++ b/code/game/objects/items/weapons/material/thrown.dm @@ -14,10 +14,10 @@ src.pixel_y = rand(-12, 12) /obj/item/material/star/ninja - material_parts = /datum/material/uranium + material_parts = /datum/prototype/material/uranium /obj/item/material/star/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/star/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm index 16f3fb71cd2..43bd5ce7ea6 100644 --- a/code/game/objects/items/weapons/material/twohanded.dm +++ b/code/game/objects/items/weapons/material/twohanded.dm @@ -104,7 +104,7 @@ return ..() /obj/item/material/twohanded/fireaxe/foam - material_parts = /datum/material/toy_foam + material_parts = /datum/prototype/material/toy_foam attack_verb = list("bonked","whacked") icon_state = "fireaxe_mask0" base_icon = "fireaxe_mask" @@ -113,7 +113,7 @@ /obj/item/material/twohanded/fireaxe/bone desc = "A primitive version of a hefty fire axe, made from bone. Whoever made this didn't make it to save lives." - material_parts = /datum/material/bone + material_parts = /datum/prototype/material/bone icon_state = "bone_axe0" base_icon = "bone_axe" material_color = FALSE @@ -121,23 +121,23 @@ /obj/item/material/twohanded/fireaxe/bronze name = "Bronze Battleaxe" desc = "A large twohanded battleaxe made of bronze. Its double head marks it a tool for combat alone." - material_parts = /datum/material/bronze + material_parts = /datum/prototype/material/bronze icon = 'icons/obj/lavaland.dmi' icon_state = "bronze_axe0" base_icon = "bronze_axe" material_color = FALSE /obj/item/material/twohanded/fireaxe/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/twohanded/fireaxe/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/twohanded/fireaxe/scythe/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/twohanded/fireaxe/scythe/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/twohanded/fireaxe/scythe icon_state = "scythe0" @@ -167,7 +167,7 @@ attack_sound = 'sound/weapons/bladeslice.ogg' mob_throw_hit_sound = 'sound/weapons/pierce.ogg' attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") - material_parts = /datum/material/glass + material_parts = /datum/prototype/material/glass material_color = 0 reach = 2 // Spears are long. attackspeed = 20 @@ -228,7 +228,7 @@ /obj/item/material/twohanded/spear/bone name = "spear" desc = "A simple, yet effective, weapon, built from bone." - material_parts = /datum/material/bone + material_parts = /datum/prototype/material/bone icon_state = "bone_spear0" base_icon = "bone_spear" material_color = 0 @@ -237,15 +237,15 @@ ..(mapload,"bone") /obj/item/material/twohanded/spear/plasteel - material_parts = /datum/material/plasteel + material_parts = /datum/prototype/material/plasteel /obj/item/material/twohanded/spear/durasteel - material_parts = /datum/material/durasteel + material_parts = /datum/prototype/material/durasteel /obj/item/material/twohanded/spear/bronze name = "spear" desc = "A spear of bone shaft and bronze head. Simplicity never goes out of style." - material_parts = /datum/material/bronze + material_parts = /datum/prototype/material/bronze icon = 'icons/obj/lavaland.dmi' icon_state = "bronze_spear0" base_icon = "bronze_spear" diff --git a/code/game/objects/items/weapons/material/whetstone.dm b/code/game/objects/items/weapons/material/whetstone.dm index 3c704640a9c..252be1f5908 100644 --- a/code/game/objects/items/weapons/material/whetstone.dm +++ b/code/game/objects/items/weapons/material/whetstone.dm @@ -64,7 +64,7 @@ . = ..() . += "There's [uses] pieces of material left for usage." -/obj/item/material/sharpeningkit/update_material_single(datum/material/material) +/obj/item/material/sharpeningkit/update_material_single(datum/prototype/material/material) . = ..() repair_amount = clamp(material.hardness * 0.5 + 10, 10, 200) repair_time = min(10 SECONDS, material.weight_multiplier * 15) diff --git a/code/game/objects/materials.dm b/code/game/objects/materials.dm index e7c0442048a..8f6e73ce51c 100644 --- a/code/game/objects/materials.dm +++ b/code/game/objects/materials.dm @@ -15,7 +15,7 @@ //? - set material_parts to a k-v list. //? note that the key needs to be player-readable //? -//? example: material_parts = list("structure" = /datum/material/steel, "reinforcement" = /datum/material/wood) +//? example: material_parts = list("structure" = /datum/prototype/material/steel, "reinforcement" = /datum/prototype/material/wood) //? //? - set material_costs to an ordered list of costs //? @@ -41,17 +41,17 @@ . = isnull(materials_base)? list() : materials_base.Copy() if(islist(material_parts)) for(var/i in 1 to length(material_parts)) - var/datum/material/mat = material_parts[material_parts[i]] + var/datum/prototype/material/mat = material_parts[material_parts[i]] .[mat.id] += material_costs[i] else if(material_parts == MATERIAL_DEFAULT_DISABLED) else if(material_parts == MATERIAL_DEFAULT_ABSTRACTED) var/list/got = material_get_parts() for(var/i in 1 to length(got)) var/key = got[i] - var/datum/material/mat = got[key] + var/datum/prototype/material/mat = got[key] .[mat.id] += material_costs[i] else - var/datum/material/mat = material_parts + var/datum/prototype/material/mat = material_parts .[mat.id] += material_costs if(respect_multiplier && material_multiplier != 1) for(var/key in .) @@ -91,7 +91,7 @@ if(islist(material_parts)) var/list/parts = list() for(var/key in material_parts) - parts[key] = SSmaterials.resolve_material(key) + parts[key] = RSmaterials.fetch(key) update_material_multi(parts) else if(material_parts == MATERIAL_DEFAULT_DISABLED) else if(material_parts == MATERIAL_DEFAULT_ABSTRACTED) @@ -99,7 +99,7 @@ // skip specifying parts because abstracted update_material_multi() else - update_material_single((material_parts = SSmaterials.resolve_material(material_parts))) + update_material_single((material_parts = RSmaterials.fetch(material_parts))) /** * forces a material update @@ -120,7 +120,7 @@ SHOULD_NOT_OVERRIDE(TRUE) . = material_get_parts() for(var/key in .) - var/datum/material/mat = .[key] + var/datum/prototype/material/mat = .[key] if(isnull(mat)) continue .[key] = mat.id @@ -130,7 +130,7 @@ */ /obj/proc/get_material_part_id(part) SHOULD_NOT_OVERRIDE(TRUE) - var/datum/material/mat = material_get_part(part) + var/datum/prototype/material/mat = material_get_part(part) return mat?.id /** @@ -145,7 +145,7 @@ */ /obj/proc/get_material_part(part) SHOULD_NOT_OVERRIDE(TRUE) - RETURN_TYPE(/datum/material) + RETURN_TYPE(/datum/prototype/material) return material_get_part(part) /** @@ -155,7 +155,7 @@ * * part - part key. **undefined behavior if it does not exist.** * * material - material. ids and paths are not allowed for performance reasons. */ -/obj/proc/set_material_part(part, datum/material/material) +/obj/proc/set_material_part(part, datum/prototype/material/material) SHOULD_NOT_OVERRIDE(TRUE) obj_flags |= OBJ_MATERIAL_PARTS_MODIFIED material_set_part(part, material) @@ -189,7 +189,7 @@ */ /obj/proc/get_primary_material() SHOULD_NOT_OVERRIDE(TRUE) - RETURN_TYPE(/datum/material) + RETURN_TYPE(/datum/prototype/material) return isnull(material_primary)? null : material_get_part(material_primary) /** @@ -211,7 +211,7 @@ * * ids and typepaths are not allowed in part_instances for performance reasons. */ -/obj/proc/set_primary_material(datum/material/material) +/obj/proc/set_primary_material(datum/prototype/material/material) SHOULD_NOT_OVERRIDE(TRUE) if(isnull(material_primary)) return @@ -271,7 +271,7 @@ * @return material instance */ /obj/proc/material_get_part(part) - RETURN_TYPE(/datum/material) + RETURN_TYPE(/datum/prototype/material) PROTECTED_PROC(TRUE) // Do not ever call directly. if(islist(material_parts)) return material_parts[part] @@ -286,9 +286,9 @@ * * part - part key * * material - material. ids and paths are not allowed for performance reasons. */ -/obj/proc/material_set_part(part, datum/material/material) +/obj/proc/material_set_part(part, datum/prototype/material/material) PROTECTED_PROC(TRUE) // Do not ever call directly. - var/datum/material/old + var/datum/prototype/material/old if(islist(material_parts)) old = material_parts[part] material_parts[part] = material @@ -329,7 +329,7 @@ * * only called if material_parts is in singleton format */ -/obj/proc/update_material_single(datum/material/material) +/obj/proc/update_material_single(datum/prototype/material/material) return //* Lathe Autodetect diff --git a/code/game/objects/obj-defense.dm b/code/game/objects/obj-defense.dm index c6882bfe39b..38d23a105f2 100644 --- a/code/game/objects/obj-defense.dm +++ b/code/game/objects/obj-defense.dm @@ -95,7 +95,7 @@ /obj/hitsound_melee(obj/item/I) if(!isnull(material_primary)) - var/datum/material/primary = get_primary_material() + var/datum/prototype/material/primary = get_primary_material() . = I.damage_type == DAMAGE_TYPE_BURN? primary.sound_melee_burn : primary.sound_melee_brute if(!isnull(.)) return @@ -103,7 +103,7 @@ /obj/hitsound_throwhit(obj/item/I) if(!isnull(material_primary)) - var/datum/material/primary = get_primary_material() + var/datum/prototype/material/primary = get_primary_material() . = I.damage_type == DAMAGE_TYPE_BURN? primary.sound_melee_burn : primary.sound_melee_brute if(!isnull(.)) return @@ -111,7 +111,7 @@ /obj/hitsound_unarmed(mob/M, datum/unarmed_attack/style) if(!isnull(material_primary)) - var/datum/material/primary = get_primary_material() + var/datum/prototype/material/primary = get_primary_material() . = style.damage_type == DAMAGE_TYPE_BURN? primary.sound_melee_burn : primary.sound_melee_brute if(!isnull(.)) return diff --git a/code/game/objects/obj.dm b/code/game/objects/obj.dm index 848001c470c..7dece198914 100644 --- a/code/game/objects/obj.dm +++ b/code/game/objects/obj.dm @@ -262,7 +262,7 @@ obj_flags |= string_to_objflag[flag] /obj/Destroy() - for(var/datum/material_trait/trait as anything in material_traits) + for(var/datum/prototype/material_trait/trait as anything in material_traits) trait.on_remove(src, material_traits[trait]) if(IS_TICKING_MATERIALS(src)) STOP_TICKING_MATERIALS(src) @@ -845,7 +845,7 @@ . += examine_integrity(user) var/list/parts = get_material_parts() for(var/key in parts) - var/datum/material/mat = parts[key] + var/datum/prototype/material/mat = parts[key] if(isnull(mat)) // 'none' option continue . += "Its [key] is made out of [mat.display_name]" diff --git a/code/game/objects/structures/barricade.dm b/code/game/objects/structures/barricade.dm index 8d4dcf528e4..e490a2965fa 100644 --- a/code/game/objects/structures/barricade.dm +++ b/code/game/objects/structures/barricade.dm @@ -9,14 +9,14 @@ integrity = 200 integrity_max = 200 - material_parts = /datum/material/wood_plank + material_parts = /datum/prototype/material/wood_plank -/obj/structure/barricade/Initialize(mapload, datum/material/material_like) +/obj/structure/barricade/Initialize(mapload, datum/prototype/material/material_like) if(!isnull(material_like)) - set_primary_material(SSmaterials.resolve_material(material_like)) + set_primary_material(RSmaterials.fetch(material_like)) return ..() -/obj/structure/barricade/update_material_single(datum/material/material) +/obj/structure/barricade/update_material_single(datum/prototype/material/material) . = ..() name = "[material.display_name] barricade" desc = "This space is blocked off by a barricade made of [material.display_name]." @@ -62,5 +62,5 @@ /obj/structure/barricade/drop_products(method, atom/where) . = ..() - var/datum/material/primary = get_primary_material() + var/datum/prototype/material/primary = get_primary_material() primary.place_dismantled_product(where, method == ATOM_DECONSTRUCT_DISASSEMBLED? 5 : 3) diff --git a/code/game/objects/structures/bonfire.dm b/code/game/objects/structures/bonfire.dm index f43c1aebf1b..e014dc527df 100644 --- a/code/game/objects/structures/bonfire.dm +++ b/code/game/objects/structures/bonfire.dm @@ -22,7 +22,7 @@ var/next_fuel_consumption = 0 /// If the bonfire has a grill attached. var/grill = FALSE - var/datum/material/material + var/datum/prototype/material/material var/set_temperature = T0C + 30 //K var/heating_power = 80000 diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 70bfc334357..2693650acac 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -20,9 +20,9 @@ material_parts = MATERIAL_DEFAULT_ABSTRACTED material_primary = "base" /// what we're made out of - var/datum/material/material_structure = /datum/material/steel + var/datum/prototype/material/material_structure = /datum/prototype/material/steel /// what our reinforcement is made out of - var/datum/material/material_reinforcing + var/datum/prototype/material/material_reinforcing /obj/structure/girder/Initialize(mapload, material, reinforcement) if(!isnull(material)) @@ -56,13 +56,13 @@ color = material_structure.icon_colour /obj/structure/girder/material_init_parts() - material_structure = SSmaterials.resolve_material(material_structure) - material_reinforcing = SSmaterials.resolve_material(material_reinforcing) + material_structure = RSmaterials.fetch(material_structure) + material_reinforcing = RSmaterials.fetch(material_reinforcing) register_material(material_structure, TRUE) register_material(material_reinforcing, FALSE) -/obj/structure/girder/material_set_part(part, datum/material/material) - var/datum/material/old +/obj/structure/girder/material_set_part(part, datum/prototype/material/material) + var/datum/prototype/material/old switch(part) if("base") old = material_structure @@ -88,8 +88,8 @@ "reinf" = material_reinforcing, ) -/obj/structure/girder/material_set_part(part, datum/material/material) - var/datum/material/old +/obj/structure/girder/material_set_part(part, datum/prototype/material/material) + var/datum/prototype/material/old switch(part) if("base") old = material_structure @@ -207,7 +207,7 @@ to_chat(user, "There isn't enough material here to construct a wall.") return 0 - var/datum/material/M = S.material + var/datum/prototype/material/M = S.material if(!istype(M)) return 0 @@ -244,7 +244,7 @@ to_chat(user, "There isn't enough material here to reinforce the girder.") return 0 - var/datum/material/M = S.material + var/datum/prototype/material/M = S.material to_chat(user, "Now reinforcing...") if (!do_after(user,40) || !S.use(1)) @@ -298,7 +298,7 @@ var/turf/simulated/wall/new_T = get_turf(src) // Ref to the wall we just built. // Apparently set_material(...) for walls requires refs to the material singletons and not strings. // This is different from how other material objects with their own set_material(...) do it, but whatever. - var/datum/material/M = get_material_by_name(the_rcd.material_to_use) + var/datum/prototype/material/M = get_material_by_name(the_rcd.material_to_use) new_T.set_materials(M, the_rcd.make_rwalls ? material_reinforcing || M : material_reinforcing, material_structure) new_T.add_hiddenprint(user) qdel(src) @@ -315,7 +315,7 @@ icon_state= "cultgirder" cover = 70 material_color = 0 - material_structure = /datum/material/cult + material_structure = /datum/prototype/material/cult /obj/structure/girder/cult/update_icon_state() . = ..() @@ -351,4 +351,4 @@ name = "soft girder" icon_state = "girder_resin" cover = 60 - material_structure = /datum/material/resin + material_structure = /datum/prototype/material/resin diff --git a/code/game/objects/structures/gravemarker.dm b/code/game/objects/structures/gravemarker.dm index 9b434772aab..57090b60c2b 100644 --- a/code/game/objects/structures/gravemarker.dm +++ b/code/game/objects/structures/gravemarker.dm @@ -18,7 +18,7 @@ var/epitaph = "" //A quick little blurb // var/dir_locked = 0 //Can it be spun? Not currently implemented - var/datum/material/material + var/datum/prototype/material/material /obj/structure/gravemarker/Initialize(mapload, material_name) . = ..() @@ -53,7 +53,7 @@ /obj/structure/gravemarker/attackby(obj/item/I, mob/living/user, list/params, clickchain_flags, damage_multiplier) if(I.is_screwdriver()) - var/datum/material/material = get_primary_material() + var/datum/prototype/material/material = get_primary_material() var/time_mult = (material.hardness > 0)? material.hardness / 100 : 1 / (material.hardness / 100) var/carving_1 = sanitizeSafe(input(user, "Who is \the [src.name] for?", "Gravestone Naming", null) as text, MAX_NAME_LEN) if(carving_1) @@ -71,7 +71,7 @@ update_icon() return if(I.is_wrench()) - var/datum/material/material = get_primary_material() + var/datum/prototype/material/material = get_primary_material() var/time_mult = (material.hardness > 0)? material.hardness / 100 : 1 / (material.hardness / 100) user.visible_message("[user] starts taking down \the [src.name].", "You start taking down \the [src.name].") if(do_after(user, time_mult * 2 SECONDS * I.tool_speed)) diff --git a/code/game/objects/structures/low_wall.dm b/code/game/objects/structures/low_wall.dm index d0011ce4994..e3419164af5 100644 --- a/code/game/objects/structures/low_wall.dm +++ b/code/game/objects/structures/low_wall.dm @@ -31,7 +31,7 @@ GLOBAL_LIST_INIT(wallframe_typecache, typecacheof(list( climb_delay = 2.0 SECONDS plane = OBJ_PLANE obj_flags = OBJ_MELEE_TARGETABLE | OBJ_RANGE_TARGETABLE | OBJ_ALLOW_THROW_THROUGH - material_parts = /datum/material/steel + material_parts = /datum/prototype/material/steel material_primary = MATERIAL_PART_DEFAULT material_costs = SHEET_MATERIAL_AMOUNT * 2 @@ -50,11 +50,11 @@ GLOBAL_LIST_INIT(wallframe_typecache, typecacheof(list( /obj/structure/wall_frame/Initialize(mapload, material) if(!isnull(material)) - set_primary_material(SSmaterials.resolve_material(material)) + set_primary_material(RSmaterials.fetch(material)) . = ..() update_overlays() -/obj/structure/wall_frame/update_material_single(datum/material/material) +/obj/structure/wall_frame/update_material_single(datum/prototype/material/material) . = ..() name = "[material.display_name] [initial(name)]" set_multiplied_integrity(material.relative_integrity) @@ -62,7 +62,7 @@ GLOBAL_LIST_INIT(wallframe_typecache, typecacheof(list( /obj/structure/wall_frame/update_overlays() cut_overlays() - var/datum/material/const_material = get_primary_material() + var/datum/prototype/material/const_material = get_primary_material() color = const_material.icon_colour var/image/smoothed_stripe = image(const_material.wall_stripe_icon, icon_state, layer = ABOVE_WINDOW_LAYER) @@ -134,5 +134,5 @@ GLOBAL_LIST_INIT(wallframe_typecache, typecacheof(list( /obj/structure/wall_frame/drop_products(method, atom/where) . = ..() - var/datum/material/made_of = get_primary_material() + var/datum/prototype/material/made_of = get_primary_material() made_of?.place_sheet(where, 2) diff --git a/code/game/objects/structures/props/pushpuzzle.dm b/code/game/objects/structures/props/pushpuzzle.dm index c219a47f453..57fa67caf91 100644 --- a/code/game/objects/structures/props/pushpuzzle.dm +++ b/code/game/objects/structures/props/pushpuzzle.dm @@ -19,7 +19,7 @@ /obj/structure/girder/puzzle - material = /datum/material/alienalloy/dungeonium + material = /datum/prototype/material/alienalloy/dungeonium /obj/structure/girder/attackby(obj/item/W as obj, mob/user as mob) if(W.is_wrench() && state == 0) diff --git a/code/game/objects/structures/props/puzzledoor.dm b/code/game/objects/structures/props/puzzledoor.dm index 861ed2074b4..66c6b173682 100644 --- a/code/game/objects/structures/props/puzzledoor.dm +++ b/code/game/objects/structures/props/puzzledoor.dm @@ -36,7 +36,7 @@ /obj/machinery/door/blast/puzzle/Initialize(mapload) . = ..() - implicit_material = SSmaterials.resolve_material(/datum/material/alienalloy/dungeonium) + implicit_material = RSmaterials.fetch(/datum/prototype/material/alienalloy/dungeonium) if(locks.len) return var/check_range = world.view * checkrange_mult diff --git a/code/game/objects/structures/simple_doors.dm b/code/game/objects/structures/simple_doors.dm index 12f948c593c..273b68e575f 100644 --- a/code/game/objects/structures/simple_doors.dm +++ b/code/game/objects/structures/simple_doors.dm @@ -17,10 +17,10 @@ /obj/structure/simple_door/Initialize(mapload, material) if(!isnull(material)) - set_primary_material(SSmaterials.resolve_material(material)) + set_primary_material(RSmaterials.fetch(material)) return ..() -/obj/structure/simple_door/update_material_single(datum/material/material) +/obj/structure/simple_door/update_material_single(datum/prototype/material/material) . = ..() if(isnull(material)) name = initial(name) @@ -63,7 +63,7 @@ /obj/structure/simple_door/proc/TryToSwitchState(atom/user) if(isSwitchingStates) return - var/datum/material/material = get_primary_material() + var/datum/prototype/material/material = get_primary_material() if(ismob(user)) var/mob/M = user if(!material.can_open_material_door(user)) @@ -88,7 +88,7 @@ /obj/structure/simple_door/proc/Open() isSwitchingStates = 1 - var/datum/material/material = get_primary_material() + var/datum/prototype/material/material = get_primary_material() playsound(loc, material.dooropen_noise, 100, 1) flick("[material.door_icon_base]opening",src) sleep(10) @@ -101,7 +101,7 @@ /obj/structure/simple_door/proc/Close() isSwitchingStates = 1 - var/datum/material/material = get_primary_material() + var/datum/prototype/material/material = get_primary_material() playsound(loc, material.dooropen_noise, 100, 1) flick("[material.door_icon_base]closing",src) sleep(10) @@ -113,7 +113,7 @@ update_nearby_tiles() /obj/structure/simple_door/update_icon() - var/datum/material/material = get_primary_material() + var/datum/prototype/material/material = get_primary_material() if(isnull(material)) icon_state = state? "open" : "closed" return @@ -127,7 +127,7 @@ return ..() if(istype(W,/obj/item/pickaxe)) user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) - var/datum/material/material = get_primary_material() + var/datum/prototype/material/material = get_primary_material() var/obj/item/pickaxe/digTool = W visible_message("[user] starts digging [src]!") if(do_after(user, digTool.digspeed * material.relative_integrity, src)) @@ -136,44 +136,44 @@ /obj/structure/simple_door/drop_products(method, atom/where) . = ..() - var/datum/material/material = get_primary_material() + var/datum/prototype/material/material = get_primary_material() material?.place_dismantled_product(where, method == ATOM_DECONSTRUCT_DISASSEMBLED? 10 : 6) /obj/structure/simple_door/iron - material_parts = /datum/material/iron + material_parts = /datum/prototype/material/iron /obj/structure/simple_door/silver - material_parts = /datum/material/silver + material_parts = /datum/prototype/material/silver /obj/structure/simple_door/gold - material_parts = /datum/material/gold + material_parts = /datum/prototype/material/gold /obj/structure/simple_door/uranium - material_parts = /datum/material/uranium + material_parts = /datum/prototype/material/uranium /obj/structure/simple_door/sandstone - material_parts = /datum/material/sandstone + material_parts = /datum/prototype/material/sandstone /obj/structure/simple_door/phoron - material_parts = /datum/material/phoron + material_parts = /datum/prototype/material/phoron /obj/structure/simple_door/diamond - material_parts = /datum/material/diamond + material_parts = /datum/prototype/material/diamond /obj/structure/simple_door/wood - material_parts = /datum/material/wood_plank + material_parts = /datum/prototype/material/wood_plank /obj/structure/simple_door/sifwood - material_parts = /datum/material/wood_plank/sif + material_parts = /datum/prototype/material/wood_plank/sif /obj/structure/simple_door/hardwood - material_parts = /datum/material/wood_plank/hardwood + material_parts = /datum/prototype/material/wood_plank/hardwood /obj/structure/simple_door/resin - material_parts = /datum/material/resin + material_parts = /datum/prototype/material/resin /obj/structure/simple_door/cult - material_parts = /datum/material/cult + material_parts = /datum/prototype/material/cult /obj/structure/simple_door/cult/TryToSwitchState(atom/user) if(isliving(user)) diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 30784dac795..df8e0c65008 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -58,13 +58,13 @@ /obj/structure/statue/drop_products(method, atom/where) . = ..() - var/datum/material/primary = get_primary_material() + var/datum/prototype/material/primary = get_primary_material() if(!isnull(primary)) drop_product(method, primary.place_sheet(null, 10), where) /obj/structure/statue/silver desc = "This is a valuable statue made from silver." - material_parts = /datum/material/silver + material_parts = /datum/prototype/material/silver /obj/structure/statue/silver/hos name = "Statue of a Head of Security" @@ -94,7 +94,7 @@ /obj/structure/statue/gold desc = "This is a highly valuable statue made from gold." - material_parts = /datum/material/gold + material_parts = /datum/prototype/material/gold /obj/structure/statue/gold/hos name = "Statue of the Head of Security" @@ -120,7 +120,7 @@ /obj/structure/statue/phoron desc = "This statue is suitably made from phoron." - material_parts = /datum/material/phoron + material_parts = /datum/prototype/material/phoron /obj/structure/statue/phoron/scientist name = "Statue of a Scientist" @@ -135,7 +135,7 @@ /obj/structure/statue/uranium luminosity = 2 desc = "If you can read this, go to Medical." - material_parts = /datum/material/uranium + material_parts = /datum/prototype/material/uranium /obj/structure/statue/uranium/nuke name = "Statue of a Nuclear Fission Explosive" @@ -151,7 +151,7 @@ /obj/structure/statue/diamond desc = "This is a very expensive diamond statue" - material_parts = /datum/material/diamond + material_parts = /datum/prototype/material/diamond /obj/structure/statue/diamond/captain name = "Statue of THE Captain." @@ -169,7 +169,7 @@ /obj/structure/statue/bananium desc = "A bananium statue with a small engraving:'HOOOOOOONK'." - material_parts = /datum/material/bananium + material_parts = /datum/prototype/material/bananium /obj/structure/statue/bananium/clown name = "Statue of a clown" @@ -178,7 +178,7 @@ /////////////////////sandstone///////////////////////////////////////// /obj/structure/statue/sandstone - material_parts = /datum/material/sandstone + material_parts = /datum/prototype/material/sandstone /obj/structure/statue/sandstone/assistant name = "Statue of an assistant" @@ -189,7 +189,7 @@ /obj/structure/statue/marble desc = "This is a shiny statue made from marble." - material_parts = /datum/material/marble + material_parts = /datum/prototype/material/marble /obj/structure/statue/marble/male name = "male statue" @@ -223,14 +223,14 @@ name = "wood statue" desc = "A simple wooden mannequin, generally used to display clothes or equipment. Water frequently." icon_state = "fashion_m" - material_parts = /datum/material/wood_log + material_parts = /datum/prototype/material/wood_log /obj/structure/statue/bone name = "bone statue" desc = "A towering menhir of bone, perhaps the colossal rib of some fallen beast." icon = 'icons/obj/statuelarge.dmi' icon_state = "rib" - material_parts = /datum/material/bone + material_parts = /datum/prototype/material/bone /obj/structure/statue/bone/skull name = "skull statue" diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 8a4dca633c6..091b68b8b81 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -19,8 +19,8 @@ pass_flags_self = ATOM_PASS_TABLE | ATOM_PASS_OVERHEAD_THROW buckle_dir = SOUTH buckle_lying = 90 - var/datum/material/material - var/datum/material/padding_material + var/datum/prototype/material/material + var/datum/prototype/material/padding_material var/base_icon = "bed" var/material_color = 1 var/can_buckle = TRUE diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 53e1acc87f9..b28ac2e4c96 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -344,7 +344,7 @@ /obj/structure/bed/chair/sofa/update_icon() if(material_color && sofa_material) - var/datum/material/color_material = get_material_by_name(sofa_material) + var/datum/prototype/material/color_material = get_material_by_name(sofa_material) color = color_material.icon_colour if(sofa_material == "carpet") diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index 326b39e6799..d1a7df699b6 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -12,8 +12,8 @@ var/global/list/stool_cache = list() //haha stool material_parts = MATERIAL_DEFAULT_ABSTRACTED material_primary = "base" var/base_icon = "stool_base" - var/datum/material/material_base - var/datum/material/material_padding + var/datum/prototype/material/material_base + var/datum/prototype/material/material_padding /obj/item/stool/Initialize(mapload, new_material, new_material_padding) if(!isnull(new_material)) @@ -33,8 +33,8 @@ var/global/list/stool_cache = list() //haha stool if("padding") return material_padding -/obj/item/stool/material_set_part(part, datum/material/material) - var/datum/material/old +/obj/item/stool/material_set_part(part, datum/prototype/material/material) + var/datum/prototype/material/old var/primary = part == "base" switch(part) if("base") @@ -54,8 +54,8 @@ var/global/list/stool_cache = list() //haha stool ) /obj/item/stool/material_init_parts() - material_base = SSmaterials.resolve_material(material_base) - material_padding = SSmaterials.resolve_material(material_padding) + material_base = RSmaterials.fetch(material_base) + material_padding = RSmaterials.fetch(material_padding) register_material(material_base, TRUE) register_material(material_padding, FALSE) @@ -92,7 +92,7 @@ var/global/list/stool_cache = list() //haha stool add_overlay(overlays_to_add) /obj/item/stool/proc/add_padding(var/padding_type) - set_material_part("padding", SSmaterials.resolve_material(padding_type)) + set_material_part("padding", RSmaterials.fetch(padding_type)) /obj/item/stool/proc/remove_padding() if(material_padding) @@ -173,5 +173,5 @@ var/global/list/stool_cache = list() //haha stool /obj/item/stool/padded icon_state = "stool_padded_preview" //set for the map - material_base = /datum/material/steel - material_padding = /datum/material/carpet + material_base = /datum/prototype/material/steel + material_padding = /datum/prototype/material/carpet diff --git a/code/game/objects/structures/tables/materials.dm b/code/game/objects/structures/tables/materials.dm index 4c029f1a9b0..6fdf575888d 100644 --- a/code/game/objects/structures/tables/materials.dm +++ b/code/game/objects/structures/tables/materials.dm @@ -1,10 +1,10 @@ /obj/structure/table/update_material_multi(list/parts) - var/datum/material/structure = material_base + var/datum/prototype/material/structure = material_base if(isnull(structure)) // we're not normal update_connections() update_appearance() return - var/datum/material/reinforcing = material_reinforcing + var/datum/prototype/material/reinforcing = material_reinforcing var/amount = structure.relative_integrity * 100 + reinforcing?.relative_integrity * 50 set_full_integrity(amount, amount) // the () is to block the list() from making it a string @@ -30,8 +30,8 @@ if("reinf") return material_reinforcing -/obj/structure/table/material_set_part(part, datum/material/material) - var/datum/material/old +/obj/structure/table/material_set_part(part, datum/prototype/material/material) + var/datum/prototype/material/old var/primary = FALSE switch(part) if("base") @@ -46,7 +46,7 @@ register_material(material, primary) /obj/structure/table/material_init_parts() - material_base = SSmaterials.resolve_material(material_base) - material_reinforcing = SSmaterials.resolve_material(material_reinforcing) + material_base = RSmaterials.fetch(material_base) + material_reinforcing = RSmaterials.fetch(material_reinforcing) register_material(material_base, TRUE) register_material(material_reinforcing, FALSE) diff --git a/code/game/objects/structures/tables/presets.dm b/code/game/objects/structures/tables/presets.dm index 869d04fa340..93fad521b6d 100644 --- a/code/game/objects/structures/tables/presets.dm +++ b/code/game/objects/structures/tables/presets.dm @@ -4,32 +4,32 @@ /obj/structure/table/standard icon_state = "plain_preview" color = "#EEEEEE" - material_base = /datum/material/plastic + material_base = /datum/prototype/material/plastic material_reinforcing = null /obj/structure/table/steel icon_state = "plain_preview" color = "#666666" - material_base = /datum/material/steel + material_base = /datum/prototype/material/steel material_reinforcing = null /obj/structure/table/marble icon_state = "stone_preview" color = "#CCCCCC" - material_base = /datum/material/marble + material_base = /datum/prototype/material/marble material_reinforcing = null /obj/structure/table/reinforced icon_state = "reinf_preview" color = "#EEEEEE" - material_base = /datum/material/plastic - material_reinforcing = /datum/material/steel + material_base = /datum/prototype/material/plastic + material_reinforcing = /datum/prototype/material/steel /obj/structure/table/steel_reinforced icon_state = "reinf_preview" color = "#666666" - material_base = /datum/material/steel - material_reinforcing = /datum/material/steel + material_base = /datum/prototype/material/steel + material_reinforcing = /datum/prototype/material/steel /obj/structure/table/wooden_reinforced icon_state = "reinf_preview" @@ -38,8 +38,8 @@ smoothing_groups = (SMOOTH_GROUP_WOOD_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES canSmoothWith = (SMOOTH_GROUP_WOOD_TABLES) - material_base = /datum/material/wood_plank - material_reinforcing = /datum/material/steel + material_base = /datum/prototype/material/wood_plank + material_reinforcing = /datum/prototype/material/steel /obj/structure/table/woodentable icon_state = "plain_preview" @@ -48,7 +48,7 @@ smoothing_groups = (SMOOTH_GROUP_WOOD_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES canSmoothWith = (SMOOTH_GROUP_WOOD_TABLES) - material_base = /datum/material/wood_plank + material_base = /datum/prototype/material/wood_plank material_reinforcing = null /obj/structure/table/sifwoodentable @@ -58,7 +58,7 @@ smoothing_groups = (SMOOTH_GROUP_WOOD_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES canSmoothWith = (SMOOTH_GROUP_WOOD_TABLES) - material_base = /datum/material/wood_plank/sif + material_base = /datum/prototype/material/wood_plank/sif material_reinforcing = null /obj/structure/table/sifwooden_reinforced @@ -68,8 +68,8 @@ smoothing_groups = (SMOOTH_GROUP_WOOD_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES canSmoothWith = (SMOOTH_GROUP_WOOD_TABLES) - material_base = /datum/material/wood_plank/sif - material_reinforcing = /datum/material/steel + material_base = /datum/prototype/material/wood_plank/sif + material_reinforcing = /datum/prototype/material/steel /obj/structure/table/hardwoodtable icon_state = "stone_preview" @@ -78,13 +78,13 @@ smoothing_groups = (SMOOTH_GROUP_WOOD_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES canSmoothWith = (SMOOTH_GROUP_WOOD_TABLES) - material_base = /datum/material/wood_plank/hardwood + material_base = /datum/prototype/material/wood_plank/hardwood material_reinforcing = null /obj/structure/table/gamblingtable icon_state = "gamble_preview" - material_base = /datum/material/wood_plank + material_base = /datum/prototype/material/wood_plank material_reinforcing = null carpeted = TRUE @@ -96,7 +96,7 @@ smoothing_groups = (SMOOTH_GROUP_GLASS_TABLES) canSmoothWith = (SMOOTH_GROUP_GLASS_TABLES) - material_base = /datum/material/glass + material_base = /datum/prototype/material/glass material_reinforcing = null /obj/structure/table/borosilicate @@ -104,20 +104,20 @@ color = "#4D3EAC" alpha = 77 - material_base = /datum/material/glass/phoron + material_base = /datum/prototype/material/glass/phoron material_reinforcing = null /obj/structure/table/holotable icon_state = "holo_preview" color = "#EEEEEE" - material_base = /datum/material/plastic/holographic + material_base = /datum/prototype/material/plastic/holographic material_reinforcing = null /obj/structure/table/woodentable/holotable icon_state = "holo_preview" - material_base = /datum/material/wood_plank/holographic + material_base = /datum/prototype/material/wood_plank/holographic material_reinforcing = null /obj/structure/table/alien @@ -127,7 +127,7 @@ can_reinforce = FALSE can_plate = FALSE - material_base = /datum/material/alienalloy/alium + material_base = /datum/prototype/material/alienalloy/alium material_reinforcing = null /obj/structure/table/alien/Initialize(mapload) @@ -139,15 +139,15 @@ icon_state = "plain_preview" color = "#d6c100" - material_base = /datum/material/bananium + material_base = /datum/prototype/material/bananium material_reinforcing = null /obj/structure/table/bananium_reinforced icon_state = "reinf_preview" color = "#d6c100" - material_base = /datum/material/bananium - material_reinforcing = /datum/material/steel + material_base = /datum/prototype/material/bananium + material_reinforcing = /datum/prototype/material/steel /obj/structure/table/sandstone icon_state = "stone_preview" @@ -156,7 +156,7 @@ smoothing_groups = (SMOOTH_GROUP_WOOD_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES canSmoothWith = (SMOOTH_GROUP_WOOD_TABLES) - material_base = /datum/material/sandstone + material_base = /datum/prototype/material/sandstone material_reinforcing = null /obj/structure/table/bone @@ -166,7 +166,7 @@ smoothing_groups = (SMOOTH_GROUP_WOOD_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES canSmoothWith = (SMOOTH_GROUP_WOOD_TABLES) - material_base = /datum/material/bone + material_base = /datum/prototype/material/bone material_reinforcing = null //BENCH PRESETS @@ -174,35 +174,35 @@ icon_state = "plain_preview" color = "#EEEEEE" - material_base = /datum/material/plastic + material_base = /datum/prototype/material/plastic material_reinforcing = null /obj/structure/table/bench/steel icon_state = "plain_preview" color = "#666666" - material_base = /datum/material/steel + material_base = /datum/prototype/material/steel material_reinforcing = null /obj/structure/table/bench/marble icon_state = "stone_preview" color = "#CCCCCC" - material_base = /datum/material/marble + material_base = /datum/prototype/material/marble material_reinforcing = null /obj/structure/table/bench/wooden icon_state = "plain_preview" color = "#824B28" - material_base = /datum/material/wood_plank + material_base = /datum/prototype/material/wood_plank material_reinforcing = null /obj/structure/table/bench/sifwooden icon_state = "plain_preview" color = "#824B28" - material_base = /datum/material/wood_plank/sif + material_base = /datum/prototype/material/wood_plank/sif material_reinforcing = null /obj/structure/table/bench/sifwooden/padded @@ -212,7 +212,7 @@ /obj/structure/table/bench/padded icon_state = "padded_preview" - material_base = /datum/material/steel + material_base = /datum/prototype/material/steel material_reinforcing = null carpeted = TRUE @@ -221,29 +221,29 @@ color = "#00E1FF" alpha = 77 // 0.3 * 255 - material_base = /datum/material/glass + material_base = /datum/prototype/material/glass material_reinforcing = null /obj/structure/table/bench/sandstone icon_state = "stone_preview" color = "#D9C179" - material_base = /datum/material/sandstone + material_base = /datum/prototype/material/sandstone material_reinforcing = null /obj/structure/table/bench/bone icon_state = "stone_preview" color = "#e6dfc8" - material_base = /datum/material/bone + material_base = /datum/prototype/material/bone material_reinforcing = null /obj/structure/table/carbon icon_state = "plain_preview" - material_base = /datum/material/carbon + material_base = /datum/prototype/material/carbon material_reinforcing = null /obj/structure/table/carbon/reinforced icon_state = "plain_preview" - material_base = /datum/material/carbon - material_reinforcing = /datum/material/marble + material_base = /datum/prototype/material/carbon + material_reinforcing = /datum/prototype/material/marble diff --git a/code/game/objects/structures/tables/presets_vr.dm b/code/game/objects/structures/tables/presets_vr.dm index 2f6155b2b60..25cc0a11bcc 100644 --- a/code/game/objects/structures/tables/presets_vr.dm +++ b/code/game/objects/structures/tables/presets_vr.dm @@ -34,4 +34,4 @@ /obj/structure/table/gold icon_state = "plain_preview" color = "#FFFF00" - material_base = /datum/material/gold + material_base = /datum/prototype/material/gold diff --git a/code/game/objects/structures/tables/rack.dm b/code/game/objects/structures/tables/rack.dm index cc75ee55b69..293ddda1066 100644 --- a/code/game/objects/structures/tables/rack.dm +++ b/code/game/objects/structures/tables/rack.dm @@ -9,7 +9,7 @@ can_reinforce = 0 can_deconstruct = TRUE is_not_a_table = TRUE - material_base = /datum/material/steel + material_base = /datum/prototype/material/steel flipped = -1 item_pixel_place = FALSE base_name = "rack" diff --git a/code/game/objects/structures/tables/rack_vr.dm b/code/game/objects/structures/tables/rack_vr.dm index 50826feb378..b47686eca5c 100644 --- a/code/game/objects/structures/tables/rack_vr.dm +++ b/code/game/objects/structures/tables/rack_vr.dm @@ -1,6 +1,6 @@ /obj/structure/table/rack/steel color = "#666666" - material_base = /datum/material/steel + material_base = /datum/prototype/material/steel /obj/structure/table/rack/shelf name = "shelving" @@ -10,4 +10,4 @@ /obj/structure/table/rack/shelf/steel color = "#666666" - material_base = /datum/material/steel + material_base = /datum/prototype/material/steel diff --git a/code/game/objects/structures/tables/table.dm b/code/game/objects/structures/tables/table.dm index b18d03b6ce8..094fc109e93 100644 --- a/code/game/objects/structures/tables/table.dm +++ b/code/game/objects/structures/tables/table.dm @@ -25,8 +25,8 @@ var/list/table_icon_cache = list() material_parts = MATERIAL_DEFAULT_ABSTRACTED material_primary = "base" - var/datum/material/material_base - var/datum/material/material_reinforcing + var/datum/prototype/material/material_base + var/datum/prototype/material/material_reinforcing var/flipped = 0 diff --git a/code/game/turfs/simulated/floor/floor.dm b/code/game/turfs/simulated/floor/floor.dm index 8e0a9ea45df..af6071efb3d 100644 --- a/code/game/turfs/simulated/floor/floor.dm +++ b/code/game/turfs/simulated/floor/floor.dm @@ -203,7 +203,7 @@ CREATE_STANDARD_TURFS(/turf/simulated/floor) var/turf/simulated/wall/T = get_turf(src) // Ref to the wall we just built. // Apparently set_material(...) for walls requires refs to the material singletons and not strings. // This is different from how other material objects with their own set_material(...) do it, but whatever. - var/datum/material/M = get_material_by_name(the_rcd.material_to_use) + var/datum/prototype/material/M = get_material_by_name(the_rcd.material_to_use) T.set_materials(M, the_rcd.make_rwalls ? M : null, M) T.add_hiddenprint(user) return TRUE diff --git a/code/game/turfs/simulated/misc/fancy_shuttles.dm b/code/game/turfs/simulated/misc/fancy_shuttles.dm index 0dd15483489..aa1ceeca909 100644 --- a/code/game/turfs/simulated/misc/fancy_shuttles.dm +++ b/code/game/turfs/simulated/misc/fancy_shuttles.dm @@ -54,8 +54,8 @@ GLOBAL_LIST_EMPTY(fancy_shuttles) var/mutable_appearance/under_EM var/fancy_shuttle_tag - material_outer = /datum/material/steel/hull - material_reinf = /datum/material/steel/hull + material_outer = /datum/prototype/material/steel/hull + material_reinf = /datum/prototype/material/steel/hull baseturfs = /turf/simulated/floor/plating/eris/under /turf/simulated/wall/fancy_shuttle/window diff --git a/code/game/turfs/simulated/wall/materials.dm b/code/game/turfs/simulated/wall/materials.dm index 856fc1f2efa..507a17b1032 100644 --- a/code/game/turfs/simulated/wall/materials.dm +++ b/code/game/turfs/simulated/wall/materials.dm @@ -1,7 +1,7 @@ -/turf/simulated/wall/proc/init_materials(datum/material/outer = material_outer, datum/material/reinforcing = material_reinf, datum/material/girder = material_girder) - outer = SSmaterials.resolve_material(outer) - reinforcing = SSmaterials.resolve_material(reinforcing) - girder = SSmaterials.resolve_material(girder) +/turf/simulated/wall/proc/init_materials(datum/prototype/material/outer = material_outer, datum/prototype/material/reinforcing = material_reinf, datum/prototype/material/girder = material_girder) + outer = RSmaterials.fetch(outer) + reinforcing = RSmaterials.fetch(reinforcing) + girder = RSmaterials.fetch(girder) if(!isnull(outer)) material_outer = outer @@ -15,7 +15,7 @@ update_materials() -/turf/simulated/wall/proc/set_materials(datum/material/outer, datum/material/reinforcing, datum/material/girder) +/turf/simulated/wall/proc/set_materials(datum/prototype/material/outer, datum/prototype/material/reinforcing, datum/prototype/material/girder) unregister_material(material_outer, TRUE) material_outer = outer register_material(material_outer, TRUE) @@ -28,21 +28,21 @@ update_materials() -/turf/simulated/wall/proc/set_outer_material(datum/material/material) +/turf/simulated/wall/proc/set_outer_material(datum/prototype/material/material) unregister_material(material_outer, TRUE) material_outer = material register_material(material_outer, TRUE) update_materials() -/turf/simulated/wall/proc/set_reinforcing_material(datum/material/material) +/turf/simulated/wall/proc/set_reinforcing_material(datum/prototype/material/material) unregister_material(material_reinf, FALSE) material_reinf = material register_material(material_reinf, FALSE) update_materials() -/turf/simulated/wall/proc/set_girder_material(datum/material/material) +/turf/simulated/wall/proc/set_girder_material(datum/prototype/material/material) unregister_material(material_girder, FALSE) material_girder = material register_material(material_girder, FALSE) diff --git a/code/game/turfs/simulated/wall/wall.dm b/code/game/turfs/simulated/wall/wall.dm index abdca488a69..7ff9c000e20 100644 --- a/code/game/turfs/simulated/wall/wall.dm +++ b/code/game/turfs/simulated/wall/wall.dm @@ -6,8 +6,8 @@ /turf/simulated/wall name = "wall" desc = "A huge chunk of iron used to separate rooms." - color = /datum/material/steel::icon_colour - icon = /datum/material/steel::icon_base + color = /datum/prototype/material/steel::icon_colour + icon = /datum/prototype/material/steel::icon_base icon_state = "wall-0" base_icon_state = "wall" @@ -49,11 +49,11 @@ var/can_open = FALSE /// The material of the girders that are produced when the wall is dismantled. - var/datum/material/material_girder = /datum/material/steel + var/datum/prototype/material/material_girder = /datum/prototype/material/steel /// The base material of the wall. - var/datum/material/material_outer = /datum/material/steel + var/datum/prototype/material/material_outer = /datum/prototype/material/steel /// The reinforcement material of the wall. - var/datum/material/material_reinf + var/datum/prototype/material/material_reinf var/last_state var/construction_stage diff --git a/code/game/turfs/simulated/wall_types/dungeon.dm b/code/game/turfs/simulated/wall_types/dungeon.dm index 55d9f71dc18..e9bd0c01aa3 100644 --- a/code/game/turfs/simulated/wall_types/dungeon.dm +++ b/code/game/turfs/simulated/wall_types/dungeon.dm @@ -3,14 +3,14 @@ /turf/simulated/wall/dungeon block_tele = TRUE // Anti-cheese. integrity_flags = INTEGRITY_INDESTRUCTIBLE - material_outer = /datum/material/alienalloy/dungeonium + material_outer = /datum/prototype/material/alienalloy/dungeonium /turf/simulated/wall/solidrock //for more stylish anti-cheese. name = "solid rock" desc = "This rock seems dense, impossible to drill." description_info = "Probably not going to be able to drill or bomb your way through this, best to try and find a way around." icon = 'icons/turf/walls/natural.dmi' - material_outer = /datum/material/alienalloy/bedrock + material_outer = /datum/prototype/material/alienalloy/bedrock block_tele = TRUE integrity_flags = INTEGRITY_INDESTRUCTIBLE diff --git a/code/game/turfs/simulated/wall_types/material.dm b/code/game/turfs/simulated/wall_types/material.dm index 3be6d547ffa..cc32b84b01c 100644 --- a/code/game/turfs/simulated/wall_types/material.dm +++ b/code/game/turfs/simulated/wall_types/material.dm @@ -19,63 +19,63 @@ BASIC_WALL_DEF(TypeName, GirderMaterial, OuterMaterial){\ /turf/simulated/wall/##TypeName -REINF_WALL_DEF(r_wall, /datum/material/steel, /datum/material/plasteel, /datum/material/plasteel) +REINF_WALL_DEF(r_wall, /datum/prototype/material/steel, /datum/prototype/material/plasteel, /datum/prototype/material/plasteel) rad_insulation = RAD_INSULATION_SUPER // Steel hull walls -BASIC_WALL_DEF(shull, /datum/material/steel/hull, /datum/material/steel/hull) -REINF_WALL_DEF(rshull, /datum/material/steel/hull, /datum/material/steel/hull, /datum/material/steel/hull) +BASIC_WALL_DEF(shull, /datum/prototype/material/steel/hull, /datum/prototype/material/steel/hull) +REINF_WALL_DEF(rshull, /datum/prototype/material/steel/hull, /datum/prototype/material/steel/hull, /datum/prototype/material/steel/hull) // Plasteel walls -BASIC_WALL_DEF(pshull, /datum/material/plasteel/hull, /datum/material/plasteel/hull) -REINF_WALL_DEF(rpshull, /datum/material/plasteel/hull, /datum/material/plasteel/hull, /datum/material/durasteel/hull) +BASIC_WALL_DEF(pshull, /datum/prototype/material/plasteel/hull, /datum/prototype/material/plasteel/hull) +REINF_WALL_DEF(rpshull, /datum/prototype/material/plasteel/hull, /datum/prototype/material/plasteel/hull, /datum/prototype/material/durasteel/hull) // Durasteel walls -BASIC_WALL_DEF(dshull, /datum/material/durasteel/hull, /datum/material/durasteel/hull) -REINF_WALL_DEF(rdshull, /datum/material/durasteel/hull, /datum/material/durasteel/hull, /datum/material/durasteel/hull) +BASIC_WALL_DEF(dshull, /datum/prototype/material/durasteel/hull, /datum/prototype/material/durasteel/hull) +REINF_WALL_DEF(rdshull, /datum/prototype/material/durasteel/hull, /datum/prototype/material/durasteel/hull, /datum/prototype/material/durasteel/hull) // Titanium walls -BASIC_WALL_DEF(thull, /datum/material/plasteel/titanium/hull, /datum/material/plasteel/titanium/hull) -REINF_WALL_DEF(rthull, /datum/material/plasteel/titanium/hull, /datum/material/plasteel/titanium/hull, /datum/material/plasteel/titanium/hull) +BASIC_WALL_DEF(thull, /datum/prototype/material/plasteel/titanium/hull, /datum/prototype/material/plasteel/titanium/hull) +REINF_WALL_DEF(rthull, /datum/prototype/material/plasteel/titanium/hull, /datum/prototype/material/plasteel/titanium/hull, /datum/prototype/material/plasteel/titanium/hull) -REINF_WALL_DEF(cult, /datum/material/cult, /datum/material/cult, /datum/material/cult/reinf) +REINF_WALL_DEF(cult, /datum/prototype/material/cult, /datum/prototype/material/cult, /datum/prototype/material/cult/reinf) -BASIC_WALL_DEF(bone, /datum/material/steel, /datum/material/bone) -BASIC_WALL_DEF(diamond, /datum/material/steel, /datum/material/diamond) -BASIC_WALL_DEF(gold, /datum/material/steel, /datum/material/gold) -REINF_WALL_DEF(golddiamond, /datum/material/steel, /datum/material/gold, /datum/material/diamond) -BASIC_WALL_DEF(iron, /datum/material/steel, /datum/material/iron) -REINF_WALL_DEF(ironphoron, /datum/material/steel, /datum/material/iron, /datum/material/phoron) -BASIC_WALL_DEF(lead, /datum/material/steel, /datum/material/lead) -REINF_WALL_DEF(r_lead, /datum/material/steel, /datum/material/lead, /datum/material/lead) -BASIC_WALL_DEF(phoron, /datum/material/steel, /datum/material/phoron) -BASIC_WALL_DEF(resin, /datum/material/resin, /datum/material/resin) -BASIC_WALL_DEF(sandstone, /datum/material/steel, /datum/material/sandstone) -REINF_WALL_DEF(sandstonediamond, /datum/material/steel, /datum/material/sandstone, /datum/material/diamond) -BASIC_WALL_DEF(silver, /datum/material/steel, /datum/material/silver) -REINF_WALL_DEF(silvergold, /datum/material/steel, /datum/material/silver, /datum/material/gold) -BASIC_WALL_DEF(snowbrick, /datum/material/steel, /datum/material/snowbrick) -BASIC_WALL_DEF(uranium, /datum/material/steel, /datum/material/uranium) +BASIC_WALL_DEF(bone, /datum/prototype/material/steel, /datum/prototype/material/bone) +BASIC_WALL_DEF(diamond, /datum/prototype/material/steel, /datum/prototype/material/diamond) +BASIC_WALL_DEF(gold, /datum/prototype/material/steel, /datum/prototype/material/gold) +REINF_WALL_DEF(golddiamond, /datum/prototype/material/steel, /datum/prototype/material/gold, /datum/prototype/material/diamond) +BASIC_WALL_DEF(iron, /datum/prototype/material/steel, /datum/prototype/material/iron) +REINF_WALL_DEF(ironphoron, /datum/prototype/material/steel, /datum/prototype/material/iron, /datum/prototype/material/phoron) +BASIC_WALL_DEF(lead, /datum/prototype/material/steel, /datum/prototype/material/lead) +REINF_WALL_DEF(r_lead, /datum/prototype/material/steel, /datum/prototype/material/lead, /datum/prototype/material/lead) +BASIC_WALL_DEF(phoron, /datum/prototype/material/steel, /datum/prototype/material/phoron) +BASIC_WALL_DEF(resin, /datum/prototype/material/resin, /datum/prototype/material/resin) +BASIC_WALL_DEF(sandstone, /datum/prototype/material/steel, /datum/prototype/material/sandstone) +REINF_WALL_DEF(sandstonediamond, /datum/prototype/material/steel, /datum/prototype/material/sandstone, /datum/prototype/material/diamond) +BASIC_WALL_DEF(silver, /datum/prototype/material/steel, /datum/prototype/material/silver) +REINF_WALL_DEF(silvergold, /datum/prototype/material/steel, /datum/prototype/material/silver, /datum/prototype/material/gold) +BASIC_WALL_DEF(snowbrick, /datum/prototype/material/steel, /datum/prototype/material/snowbrick) +BASIC_WALL_DEF(uranium, /datum/prototype/material/steel, /datum/prototype/material/uranium) -BASIC_WALL_DEF(titanium, /datum/material/steel, /datum/material/plasteel/titanium) -REINF_WALL_DEF(durasteel, /datum/material/steel, /datum/material/durasteel, /datum/material/durasteel) +BASIC_WALL_DEF(titanium, /datum/prototype/material/steel, /datum/prototype/material/plasteel/titanium) +REINF_WALL_DEF(durasteel, /datum/prototype/material/steel, /datum/prototype/material/durasteel, /datum/prototype/material/durasteel) -BASIC_WALL_DEF(wood, /datum/material/wood_plank, /datum/material/wood_plank) -BASIC_WALL_DEF(wood/sifwood, /datum/material/wood_plank/sif, /datum/material/wood_plank/sif) -BASIC_WALL_DEF(wood/hardwood, /datum/material/wood_plank/hardwood, /datum/material/wood_plank/hardwood) -BASIC_WALL_DEF(wood/ironwood, /datum/material/wood_plank/ironwood, /datum/material/wood_plank/ironwood) -BASIC_WALL_DEF(wood/log, /datum/material/wood_log, /datum/material/wood_log) -BASIC_WALL_DEF(log_sif, /datum/material/wood_log/sif, /datum/material/wood_log/sif) -BASIC_WALL_DEF(log_ironwood, /datum/material/wood_log/ironwood, /datum/material/wood_log/ironwood) +BASIC_WALL_DEF(wood, /datum/prototype/material/wood_plank, /datum/prototype/material/wood_plank) +BASIC_WALL_DEF(wood/sifwood, /datum/prototype/material/wood_plank/sif, /datum/prototype/material/wood_plank/sif) +BASIC_WALL_DEF(wood/hardwood, /datum/prototype/material/wood_plank/hardwood, /datum/prototype/material/wood_plank/hardwood) +BASIC_WALL_DEF(wood/ironwood, /datum/prototype/material/wood_plank/ironwood, /datum/prototype/material/wood_plank/ironwood) +BASIC_WALL_DEF(wood/log, /datum/prototype/material/wood_log, /datum/prototype/material/wood_log) +BASIC_WALL_DEF(log_sif, /datum/prototype/material/wood_log/sif, /datum/prototype/material/wood_log/sif) +BASIC_WALL_DEF(log_ironwood, /datum/prototype/material/wood_log/ironwood, /datum/prototype/material/wood_log/ironwood) -BASIC_WALL_DEF(skipjack, /datum/material/steel, /datum/material/alienalloy) +BASIC_WALL_DEF(skipjack, /datum/prototype/material/steel, /datum/prototype/material/alienalloy) /turf/simulated/wall/skipjack/attackby() return /turf/unsimulated/wall/cult name = "cult wall" desc = "Hideous images dance beneath the surface." - icon = /datum/material/cult::icon_base + icon = /datum/prototype/material/cult::icon_base icon_state = "wall-0" base_icon_state = "wall" - color = /datum/material/cult::icon_colour + color = /datum/prototype/material/cult::icon_colour diff --git a/code/modules/asset_cache/assets/research_designs.dm b/code/modules/asset_cache/assets/research_designs.dm index 88f02da28b5..a4f8f3eff35 100644 --- a/code/modules/asset_cache/assets/research_designs.dm +++ b/code/modules/asset_cache/assets/research_designs.dm @@ -3,8 +3,8 @@ name = "design" /datum/asset_pack/spritesheet/research_designs/generate() - for (var/path in subtypesof(/datum/design)) - var/datum/design/D = path + for (var/path in subtypesof(/datum/prototype/design)) + var/datum/prototype/design/D = path var/icon_file var/icon_state diff --git a/code/modules/atmospherics/machinery/components/binary_devices/algae_generator_vr.dm b/code/modules/atmospherics/machinery/components/binary_devices/algae_generator_vr.dm index fb6a8bf7103..80abeb0c819 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/algae_generator_vr.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/algae_generator_vr.dm @@ -232,7 +232,7 @@ // 0 amount = 0 means ejecting a full stack; -1 means eject everything /obj/machinery/atmospherics/component/binary/algae_farm/proc/eject_materials(var/material_name, var/amount) var/recursive = amount == -1 ? 1 : 0 - var/datum/material/matdata = get_material_by_name(material_name) + var/datum/prototype/material/matdata = get_material_by_name(material_name) var/stack_type = matdata.stack_type var/obj/item/stack/material/S = new stack_type(loc) if(amount <= 0) diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 216eae7ccc7..17bb7ef9e6f 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -11,7 +11,7 @@ integrity_failure = 100 w_class = WEIGHT_CLASS_HUGE materials_base = list( - /datum/material/steel::id = 5 * /datum/material/steel::sheet_amount, + /datum/prototype/material/steel::id = 5 * /datum/prototype/material/steel::sheet_amount, ) worth_intrinsic = 50 diff --git a/code/modules/clothing/gloves/rings/material.dm b/code/modules/clothing/gloves/rings/material.dm index 1d842c3a021..8469d14acd9 100644 --- a/code/modules/clothing/gloves/rings/material.dm +++ b/code/modules/clothing/gloves/rings/material.dm @@ -3,7 +3,7 @@ /obj/item/clothing/gloves/ring/material icon = 'icons/obj/clothing/rings.dmi' icon_state = "material" - material_parts = /datum/material/steel + material_parts = /datum/prototype/material/steel material_costs = SHEET_MATERIAL_AMOUNT * 0.2 material_primary = MATERIAL_PART_DEFAULT @@ -12,45 +12,45 @@ material_parts = material return ..() -/obj/item/clothing/gloves/ring/material/update_material_single(datum/material/material) +/obj/item/clothing/gloves/ring/material/update_material_single(datum/prototype/material/material) . = ..() name = "[material.display_name] ring" desc = "A ring made from [material.display_name]." color = material.icon_colour /obj/item/clothing/gloves/ring/material/wood - material_parts = /datum/material/wood_plank + material_parts = /datum/prototype/material/wood_plank /obj/item/clothing/gloves/ring/material/plastic - material_parts = /datum/material/plastic + material_parts = /datum/prototype/material/plastic /obj/item/clothing/gloves/ring/material/iron - material_parts = /datum/material/iron + material_parts = /datum/prototype/material/iron /obj/item/clothing/gloves/ring/material/steel - material_parts = /datum/material/steel + material_parts = /datum/prototype/material/steel /obj/item/clothing/gloves/ring/material/silver - material_parts = /datum/material/silver + material_parts = /datum/prototype/material/silver /obj/item/clothing/gloves/ring/material/gold - material_parts = /datum/material/gold + material_parts = /datum/prototype/material/gold /obj/item/clothing/gloves/ring/material/platinum - material_parts = /datum/material/platinum + material_parts = /datum/prototype/material/platinum /obj/item/clothing/gloves/ring/material/phoron - material_parts = /datum/material/phoron + material_parts = /datum/prototype/material/phoron /obj/item/clothing/gloves/ring/material/glass - material_parts = /datum/material/glass + material_parts = /datum/prototype/material/glass /obj/item/clothing/gloves/ring/material/uranium - material_parts = /datum/material/uranium + material_parts = /datum/prototype/material/uranium /obj/item/clothing/gloves/ring/material/osmium - material_parts = /datum/material/osmium + material_parts = /datum/prototype/material/osmium /obj/item/clothing/gloves/ring/material/mhydrogen - material_parts = /datum/material/hydrogen/mhydrogen + material_parts = /datum/prototype/material/hydrogen/mhydrogen diff --git a/code/modules/clothing/under/accessories/bracelets/material.dm b/code/modules/clothing/under/accessories/bracelets/material.dm index 448ef8127c9..cf620e3b5ee 100644 --- a/code/modules/clothing/under/accessories/bracelets/material.dm +++ b/code/modules/clothing/under/accessories/bracelets/material.dm @@ -1,7 +1,7 @@ /obj/item/clothing/accessory/bracelet/material icon_state = "materialbracelet" materials_base = null - material_parts = /datum/material/steel + material_parts = /datum/prototype/material/steel material_costs = 2000 material_primary = MATERIAL_PART_DEFAULT @@ -10,35 +10,35 @@ material_parts = material return ..() -/obj/item/clothing/accessory/bracelet/material/update_material_single(datum/material/material) +/obj/item/clothing/accessory/bracelet/material/update_material_single(datum/prototype/material/material) . = ..() name = "[material.display_name] bracelet" desc = "A bracelet made from [material.display_name]." color = material.icon_colour /obj/item/clothing/accessory/bracelet/material/wood - material_parts = /datum/material/wood_plank + material_parts = /datum/prototype/material/wood_plank /obj/item/clothing/accessory/bracelet/material/plastic - material_parts = /datum/material/plastic + material_parts = /datum/prototype/material/plastic /obj/item/clothing/accessory/bracelet/material/iron - material_parts = /datum/material/iron + material_parts = /datum/prototype/material/iron /obj/item/clothing/accessory/bracelet/material/steel - material_parts = /datum/material/steel + material_parts = /datum/prototype/material/steel /obj/item/clothing/accessory/bracelet/material/silver - material_parts = /datum/material/silver + material_parts = /datum/prototype/material/silver /obj/item/clothing/accessory/bracelet/material/gold - material_parts = /datum/material/gold + material_parts = /datum/prototype/material/gold /obj/item/clothing/accessory/bracelet/material/platinum - material_parts = /datum/material/platinum + material_parts = /datum/prototype/material/platinum /obj/item/clothing/accessory/bracelet/material/phoron - material_parts = /datum/material/phoron + material_parts = /datum/prototype/material/phoron /obj/item/clothing/accessory/bracelet/material/glass - material_parts = /datum/material/glass + material_parts = /datum/prototype/material/glass diff --git a/code/modules/events/supply_demand.dm b/code/modules/events/supply_demand.dm index 97ece744154..763700cc7c6 100644 --- a/code/modules/events/supply_demand.dm +++ b/code/modules/events/supply_demand.dm @@ -268,9 +268,9 @@ return /datum/event/supply_demand/proc/choose_research_items(var/differentTypes) - var/list/types = typesof(/datum/design) - /datum/design + var/list/types = typesof(/datum/prototype/design) - /datum/prototype/design for(var/i in 1 to differentTypes) - var/datum/design/D = pick(types) + var/datum/prototype/design/D = pick(types) types -= D // Don't pick the same thing twice var/chosen_path = initial(D.build_path) var/chosen_qty = rand(1, 3) diff --git a/code/modules/frames/frame_step.dm b/code/modules/frames/frame_step.dm index b9d17192dc8..0c3c6c35119 100644 --- a/code/modules/frames/frame_step.dm +++ b/code/modules/frames/frame_step.dm @@ -51,7 +51,7 @@ /// what to drop when undertaking this step /// can either be: /// * /obj/item/stack typepath - /// * /datum/material typepath + /// * /datum/prototype/material typepath /// * /obj/item typepath /// todo: text for 'drop context key' var/drop @@ -98,7 +98,7 @@ if(isnull(request_type)) // autodetect var/detected - if(ispath(request, /datum/material)) + if(ispath(request, /datum/prototype/material)) request_type = FRAME_REQUEST_TYPE_MATERIAL else if(ispath(request, /obj/item/stack)) request_type = FRAME_REQUEST_TYPE_STACK @@ -125,7 +125,7 @@ if(FRAME_REQUEST_TYPE_MATERIAL) var/rendered_material var/rendered_stack_name - var/datum/material/resolved = SSmaterials.resolve_material(request) + var/datum/prototype/material/resolved = RSmaterials.fetch(request) rendered_material = resolved.display_name rendered_stack_name = resolved.sheet_plural_name . = "Apply [request_amount || 0] [rendered_stack_name] of [rendered_material] to [rendered_action]." @@ -168,7 +168,7 @@ return using_tool?.tool_check(request, actor, frame, TOOL_OP_SILENT) if(FRAME_REQUEST_TYPE_MATERIAL) var/obj/item/stack/material/material_stack = using_tool - return istype(material_stack) && (ispath(request, /datum/material)? material_stack.material.type == request : material_stack.material.id == request) + return istype(material_stack) && (ispath(request, /datum/prototype/material)? material_stack.material.type == request : material_stack.material.id == request) return FALSE /** @@ -250,13 +250,13 @@ new drop(drop_where, dropping) left -= dropping while(--safety > 0 && left > 0) - else if(ispath(drop, /datum/material)) + else if(ispath(drop, /datum/prototype/material)) var/safety = 50 var/left = drop_amount - var/datum/material/resolved_material = SSmaterials.resolve_material(drop) + var/datum/prototype/material/resolved_material = RSmaterials.fetch(drop) do var/dropping = min(left, 50) - // todo: /datum/material based max stacks. + // todo: /datum/prototype/material based max stacks. resolved_material.place_sheet(drop_where, dropping) left -= dropping while(--safety > 0 && left > 0) @@ -332,7 +332,7 @@ if(FRAME_REQUEST_TYPE_MATERIAL, FRAME_REQUEST_TYPE_STACK) var/name_to_use if(request_type == FRAME_REQUEST_TYPE_MATERIAL) - var/datum/material/resolved_material = SSmaterials.resolve_material(request) + var/datum/prototype/material/resolved_material = RSmaterials.fetch(request) name_to_use = "[resolved_material.name || resolved_material.display_name] [resolved_material.sheet_plural_name]" else var/obj/item/stack/casted_stack = request diff --git a/code/modules/frames/types/solar_panel.dm b/code/modules/frames/types/solar_panel.dm index f3802813a4f..678941841ae 100644 --- a/code/modules/frames/types/solar_panel.dm +++ b/code/modules/frames/types/solar_panel.dm @@ -9,7 +9,7 @@ AUTO_FRAME_DATUM(/datum/frame2/solar_panel, solar_panel, 'icons/machinery/power/ steps = list( /datum/frame_step{ name = "finish panel"; - request = /datum/material/glass; + request = /datum/prototype/material/glass; request_amount = 1; direction = TOOL_DIRECTION_FORWARDS; stage = FRAME_STAGE_FINISH; diff --git a/code/modules/guidebook/guidebook.dm b/code/modules/guidebook/guidebook.dm index 26bcc08509f..bcb189e9eca 100644 --- a/code/modules/guidebook/guidebook.dm +++ b/code/modules/guidebook/guidebook.dm @@ -38,7 +38,7 @@ GLOBAL_DATUM_INIT(guidebook, /datum/guidebook, new) // preprocess sections & inject for(var/datum/prototype/guidebook_section/section as anything in sections) if(!istype(section)) - section = RCguidebook.fetch(section) + section = RSguidebook.fetch(section) if(!istype(section)) CRASH("invalid section, aborting") fetched += section diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 38bd461e8e9..0567fd44570 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -32,7 +32,6 @@ /// Time until circuit cn perform another external action var/ext_next_use = 0 var/atom/collw - var/obj/item/card/id/access_card /// Which circuit flags are allowed var/allowed_circuit_action_flags = IC_ACTION_COMBAT | IC_ACTION_LONG_RANGE /// Number of combat cicuits in the assembly, used for diagnostic hud @@ -107,15 +106,13 @@ diag_hud_set_circuitstat() diag_hud_set_circuittracking() */ - access_card = new /obj/item/card/id(src) - . =..() + return ..() /obj/item/electronic_assembly/Destroy() battery = null // It will be qdel'd by ..() if still in our contents STOP_PROCESSING(SSobj, src) // for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) // TBI diag_hud.remove_from_hud(src) - QDEL_NULL(access_card) return ..() /obj/item/electronic_assembly/process(delta_time) diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index 48e4da9657d..6db14304896 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -49,7 +49,7 @@ /* TBI: Requires material containers /obj/item/integrated_circuit_printer/Initialize(mapload) . = ..() - var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, list(/datum/material/iron), MINERAL_MATERIAL_AMOUNT * 25, TRUE, list(/obj/item/stack, /obj/item/integrated_circuit, /obj/item/electronic_assembly)) + var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, list(/datum/prototype/material/iron), MINERAL_MATERIAL_AMOUNT * 25, TRUE, list(/obj/item/stack, /obj/item/integrated_circuit, /obj/item/electronic_assembly)) materials.precise_insertion = TRUE */ /obj/item/integrated_circuit_printer/proc/print_program(mob/user) diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index c59cec2b800..1853251f7c1 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -495,17 +495,17 @@ ext_cooldown = 1 cooldown_per_use = 10 var/static/list/mtypes = list( - /datum/material/iron, - /datum/material/glass, - /datum/material/silver, - /datum/material/gold, - /datum/material/diamond, - /datum/material/uranium, - /datum/material/plasma, - /datum/material/bluespace, - /datum/material/bananium, - /datum/material/titanium, - /datum/material/plastic + /datum/prototype/material/iron, + /datum/prototype/material/glass, + /datum/prototype/material/silver, + /datum/prototype/material/gold, + /datum/prototype/material/diamond, + /datum/prototype/material/uranium, + /datum/prototype/material/plasma, + /datum/prototype/material/bluespace, + /datum/prototype/material/bananium, + /datum/prototype/material/titanium, + /datum/prototype/material/plastic ) /obj/item/integrated_circuit/manipulation/matman/ComponentInitialize() @@ -517,7 +517,7 @@ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) set_pin_data(IC_OUTPUT, 2, materials.total_amount) for(var/I in 1 to mtypes.len) - var/datum/material/M = materials.materials[SSmaterials.GetMaterialRef(I)] + var/datum/prototype/material/M = materials.materials[SSmaterials.GetMaterialRef(I)] var/amount = materials[M] if(M) set_pin_data(IC_OUTPUT, I+2, amount) @@ -548,7 +548,7 @@ var/datum/component/material_container/mt = H.GetComponent(/datum/component/material_container) var/suc for(var/I in 1 to mtypes.len) - var/datum/material/M = materials.materials[mtypes[I]] + var/datum/prototype/material/M = materials.materials[mtypes[I]] if(M) var/U = clamp(get_pin_data(IC_INPUT, I+2),-100000,100000) if(!U) diff --git a/code/modules/jobs/job.dm b/code/modules/jobs/job.dm index f7060336faa..7f0754407fd 100644 --- a/code/modules/jobs/job.dm +++ b/code/modules/jobs/job.dm @@ -242,7 +242,7 @@ . = list() // todo: why do we do assoc list? why don't we just cache? why why why???? for(var/title in alt_titles) - var/datum/prototype/struct/alt_title/alt_datum = RCstructs.fetch(alt_titles[title]) + var/datum/prototype/struct/alt_title/alt_datum = RSstructs.fetch(alt_titles[title]) if(!alt_datum) continue . += alt_datum @@ -287,7 +287,7 @@ if(alt_datum.background_enforce && alt_datum.check_background_ids(background_ids)) enforced += alt_datum.title return !length(enforced) || (alt_title in enforced) - var/datum/prototype/struct/alt_title/alt_datum = RCstructs.fetch(alt_titles?[alt_title]) + var/datum/prototype/struct/alt_title/alt_datum = RSstructs.fetch(alt_titles?[alt_title]) return alt_datum?.check_background_ids(background_ids) /** diff --git a/code/modules/loot/table.dm b/code/modules/loot/table.dm index c3ee2d8d92b..39e2b4e3383 100644 --- a/code/modules/loot/table.dm +++ b/code/modules/loot/table.dm @@ -31,7 +31,7 @@ var/list/drawn = draw(amount) for(var/thing in drawn) if(ispath(thing, /datum/prototype/struct/loot_pack) || istext(thing)) - var/datum/prototype/struct/loot_pack/resolved = RCstructs.fetch(thing) + var/datum/prototype/struct/loot_pack/resolved = RSstructs.fetch(thing) var/multiplier = drawn[thing] if(!istype(resolved)) CRASH("invalid resolution of [thing]: [resolved]") @@ -112,7 +112,7 @@ if(ispath(thing, /obj/item/stack)) new thing(location, making) else if(ispath(thing, /datum/prototype/struct/loot_pack) || istext(thing)) - var/datum/prototype/struct/loot_pack/pack = RCstructs.fetch(thing) + var/datum/prototype/struct/loot_pack/pack = RSstructs.fetch(thing) if(!pack) stack_trace("failed to fetch pack for [thing]") continue diff --git a/code/modules/mapping/map_helpers/gear_marker.dm b/code/modules/mapping/map_helpers/gear_marker.dm index 66cc9bbff1a..5f00d5f5a84 100644 --- a/code/modules/mapping/map_helpers/gear_marker.dm +++ b/code/modules/mapping/map_helpers/gear_marker.dm @@ -77,7 +77,7 @@ CRASH("ran out of safety") if(ispath(path, /obj/item/stack)) safety -= max(spawn_stacks_at(where, path, amount), 1) - else if(ispath(path, /datum/material)) + else if(ispath(path, /datum/prototype/material)) safety -= max(spawn_stacks_at(where, path, amount), 1) else safety -= 1 diff --git a/code/modules/mapping/map_injection/starting_gear.dm b/code/modules/mapping/map_injection/starting_gear.dm index 90787634458..0ce32b366e5 100644 --- a/code/modules/mapping/map_injection/starting_gear.dm +++ b/code/modules/mapping/map_injection/starting_gear.dm @@ -68,7 +68,7 @@ /// list of typepaths associated to amounts /// /// special handling: - /// * /datum/material = amount + /// * /datum/prototype/material = amount /// * /obj/item/stack = amount var/list/gear = list() /// gear tags to target @@ -122,7 +122,7 @@ for(var/typepath in gear) // no splitting stacks - if(ispath(typepath, /datum/material) || ispath(typepath, /obj/item/stack)) + if(ispath(typepath, /datum/prototype/material) || ispath(typepath, /obj/item/stack)) fill_paths[typepath] = gear[typepath] continue // cleanly split @@ -152,7 +152,7 @@ /// list of typepaths associated to amounts /// /// special handling: - /// * /datum/material = amount + /// * /datum/prototype/material = amount /// * /obj/item/stack = amount var/list/gear = list() /// copies to spawn diff --git a/code/modules/materials/definitions/admin/alienalloy.dm b/code/modules/materials/definitions/admin/alienalloy.dm index b62dfdbf37e..bf8429dc1a2 100644 --- a/code/modules/materials/definitions/admin/alienalloy.dm +++ b/code/modules/materials/definitions/admin/alienalloy.dm @@ -1,5 +1,5 @@ // Adminspawn only, do not let anyone get this. -/datum/material/alienalloy +/datum/prototype/material/alienalloy name = "alienalloy" id = "alien_alloy" display_name = "durable alloy" @@ -21,7 +21,7 @@ // Likewise. // todo: kill with fire -/datum/material/alienalloy/elevatorium +/datum/prototype/material/alienalloy/elevatorium id = "elevatorium" name = "elevatorium" display_name = "elevator panelling" @@ -29,21 +29,21 @@ // Ditto. // todo: KILL WITH FIRE -/datum/material/alienalloy/dungeonium +/datum/prototype/material/alienalloy/dungeonium id = "dungeonium" name = "dungeonium" display_name = "ultra-durable metal" icon_base = 'icons/turf/walls/dungeon.dmi' icon_colour = "#FFFFFF" -/datum/material/alienalloy/bedrock +/datum/prototype/material/alienalloy/bedrock id = "bedrock" name = "bedrock" display_name = "impassable rock" icon_base = 'icons/turf/walls/natural.dmi' icon_colour = COLOR_ASTEROID_ROCK -/datum/material/alienalloy/alium +/datum/prototype/material/alienalloy/alium id = "abductor_alloy" name = "alium" display_name = "alien" diff --git a/code/modules/materials/definitions/crystals/diamond.dm b/code/modules/materials/definitions/crystals/diamond.dm index 876d8bee487..7f4fa065390 100644 --- a/code/modules/materials/definitions/crystals/diamond.dm +++ b/code/modules/materials/definitions/crystals/diamond.dm @@ -1,4 +1,4 @@ -/datum/material/diamond +/datum/prototype/material/diamond id = MAT_DIAMOND name = "diamond" stack_type = /obj/item/stack/material/diamond @@ -23,7 +23,7 @@ worth = 37.5 -/datum/material/diamond/generate_recipes() +/datum/prototype/material/diamond/generate_recipes() . = ..() . += create_stack_recipe_datum(category = "statues", name = "ai hologram statue", product = /obj/structure/statue/diamond/ai1, cost = 10, time = 2 SECONDS) . += create_stack_recipe_datum(category = "statues", name = "ai core statue", product = /obj/structure/statue/diamond/ai2, cost = 10, time = 2 SECONDS) diff --git a/code/modules/materials/definitions/crystals/glass.dm b/code/modules/materials/definitions/crystals/glass.dm index b7c406082b7..58a0fc2e53b 100644 --- a/code/modules/materials/definitions/crystals/glass.dm +++ b/code/modules/materials/definitions/crystals/glass.dm @@ -1,4 +1,4 @@ -/datum/material/glass +/datum/prototype/material/glass id = MAT_GLASS name = "glass" stack_type = /obj/item/stack/material/glass @@ -32,7 +32,7 @@ worth = 0.5 -/datum/material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) +/datum/prototype/material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) if(!user || !used_stack || !created_window || !created_fulltile_window || !window_options.len) return 0 @@ -105,10 +105,10 @@ new build_path(T, build_dir, 1) return 1 -/datum/material/glass/proc/is_reinforced() +/datum/prototype/material/glass/proc/is_reinforced() return FALSE -/datum/material/glass/reinforced +/datum/prototype/material/glass/reinforced id = "glass_reinf" name = "rglass" display_name = "reinforced glass" @@ -135,10 +135,10 @@ nullification = MATERIAL_RESISTANCE_NONE density = 8 * 1.15 -/datum/material/glass/reinforced/is_reinforced() +/datum/prototype/material/glass/reinforced/is_reinforced() return TRUE -/datum/material/glass/phoron +/datum/prototype/material/glass/phoron id = "glass_boro" name = "borosilicate glass" display_name = "borosilicate glass" @@ -161,7 +161,7 @@ nullification = MATERIAL_RESISTANCE_NONE density = 8 * 1.3 -/datum/material/glass/phoron/reinforced +/datum/prototype/material/glass/phoron/reinforced id = "glass_boro_reinf" name = "reinforced borosilicate glass" display_name = "reinforced borosilicate glass" @@ -185,5 +185,5 @@ nullification = MATERIAL_RESISTANCE_NONE density = 8 * 1.6 -/datum/material/glass/phoron/reinforced/is_reinforced() +/datum/prototype/material/glass/phoron/reinforced/is_reinforced() return TRUE diff --git a/code/modules/materials/definitions/debug.dm b/code/modules/materials/definitions/debug.dm index 09e8582bb5d..74067d29463 100644 --- a/code/modules/materials/definitions/debug.dm +++ b/code/modules/materials/definitions/debug.dm @@ -1,7 +1,7 @@ // Mostly for debugging table connections // This file is not #included in the .dme. -/datum/material/debug +/datum/prototype/material/debug name = "debugium" id = "debug" diff --git a/code/modules/materials/definitions/elements/carbon.dm b/code/modules/materials/definitions/elements/carbon.dm index 831cb167574..7129d41f9b3 100644 --- a/code/modules/materials/definitions/elements/carbon.dm +++ b/code/modules/materials/definitions/elements/carbon.dm @@ -1,4 +1,4 @@ -/datum/material/carbon +/datum/prototype/material/carbon id = "carbon" name = MAT_CARBON stack_type = /obj/item/stack/material/carbon diff --git a/code/modules/materials/definitions/legacy.dm b/code/modules/materials/definitions/legacy.dm index a301232bf4a..b2a9423f72b 100644 --- a/code/modules/materials/definitions/legacy.dm +++ b/code/modules/materials/definitions/legacy.dm @@ -2,7 +2,7 @@ // when that's redone, REMOVE THESE. // what the fuck? -/datum/material/darkglass +/datum/prototype/material/darkglass id = "glass_dark" name = "darkglass" display_name = "darkglass" @@ -11,7 +11,7 @@ table_icon_base = "darkglass" // what the fuck? -/datum/material/fancyblack +/datum/prototype/material/fancyblack id = "black_fancy" name = "fancyblack" display_name = "fancyblack" @@ -20,7 +20,7 @@ table_icon_base = "fancyblack" // what the fuck? -/datum/material/alienalloy/alium +/datum/prototype/material/alienalloy/alium id = "abductor_alloy" name = "alium" display_name = "alien" diff --git a/code/modules/materials/definitions/metals/brass.dm b/code/modules/materials/definitions/metals/brass.dm index 7447277e461..8791ebf4898 100644 --- a/code/modules/materials/definitions/metals/brass.dm +++ b/code/modules/materials/definitions/metals/brass.dm @@ -1,4 +1,4 @@ -/datum/material/brass +/datum/prototype/material/brass id = "brass" name = "brass" icon_colour = "#CAC955" @@ -18,6 +18,6 @@ worth = 7.5 -/datum/material/brass/generate_recipes() +/datum/prototype/material/brass/generate_recipes() . = ..() . += create_stack_recipe_datum(name = "brass floor tiles", product = /obj/item/stack/tile/brass, amount = 4) diff --git a/code/modules/materials/definitions/metals/bronze.dm b/code/modules/materials/definitions/metals/bronze.dm index dadeabb7287..168c6b03c1d 100644 --- a/code/modules/materials/definitions/metals/bronze.dm +++ b/code/modules/materials/definitions/metals/bronze.dm @@ -1,5 +1,5 @@ // todo: this is just a placeholder -/datum/material/bronze +/datum/prototype/material/bronze id = "bronze" name = "bronze" icon_colour = "#EDD12F" diff --git a/code/modules/materials/definitions/metals/copper.dm b/code/modules/materials/definitions/metals/copper.dm index 50b0c027e23..eab02fce844 100644 --- a/code/modules/materials/definitions/metals/copper.dm +++ b/code/modules/materials/definitions/metals/copper.dm @@ -1,4 +1,4 @@ -/datum/material/copper +/datum/prototype/material/copper id = MAT_COPPER name = "copper" icon_colour = "#b45c13" diff --git a/code/modules/materials/definitions/metals/durasteel.dm b/code/modules/materials/definitions/metals/durasteel.dm index 4fe9673596f..179ff7e00fc 100644 --- a/code/modules/materials/definitions/metals/durasteel.dm +++ b/code/modules/materials/definitions/metals/durasteel.dm @@ -1,4 +1,4 @@ -/datum/material/durasteel +/datum/prototype/material/durasteel id = MAT_DURASTEEL name = "durasteel" stack_type = /obj/item/stack/material/durasteel @@ -25,16 +25,16 @@ absorption = MATERIAL_RESISTANCE_HIGH nullification = MATERIAL_RESISTANCE_LOW -/datum/material/durasteel/generate_recipes() +/datum/prototype/material/durasteel/generate_recipes() . = ..() . += create_stack_recipe_datum(name = "durasteel floor tiles", product = /obj/item/stack/tile/durasteel, amount = 4) -/datum/material/durasteel/hull //The 'Hardball' of starship hulls. +/datum/prototype/material/durasteel/hull //The 'Hardball' of starship hulls. id = "durasteel_hull" name = MAT_DURASTEELHULL icon_colour = "#45829a" explosion_resistance = 90 relative_integrity = 2.5 -/datum/material/durasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal durasteel sheets. +/datum/prototype/material/durasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal durasteel sheets. new /obj/item/stack/material/durasteel(target) diff --git a/code/modules/materials/definitions/metals/gold.dm b/code/modules/materials/definitions/metals/gold.dm index 3dc6fcc9f17..9b83dc80dbf 100644 --- a/code/modules/materials/definitions/metals/gold.dm +++ b/code/modules/materials/definitions/metals/gold.dm @@ -1,4 +1,4 @@ -/datum/material/gold +/datum/prototype/material/gold id = MAT_GOLD name = "gold" stack_type = /obj/item/stack/material/gold @@ -21,7 +21,7 @@ absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_MODERATE -/datum/material/gold/generate_recipes() +/datum/prototype/material/gold/generate_recipes() . = ..() . += create_stack_recipe_datum(category = "statues", name = "head of security statue", product = /obj/structure/statue/gold/hos, cost = 10, time = 2 SECONDS) . += create_stack_recipe_datum(category = "statues", name = "head of personnel statue", product = /obj/structure/statue/gold/hop, cost = 10, time = 2 SECONDS) diff --git a/code/modules/materials/definitions/metals/hydrogens.dm b/code/modules/materials/definitions/metals/hydrogens.dm index 2b0dfbe253f..e3ae686fdf1 100644 --- a/code/modules/materials/definitions/metals/hydrogens.dm +++ b/code/modules/materials/definitions/metals/hydrogens.dm @@ -1,5 +1,5 @@ -/datum/material/hydrogen - abstract_type = /datum/material/hydrogen +/datum/prototype/material/hydrogen + abstract_type = /datum/prototype/material/hydrogen relative_integrity = 0.2 density = 8 * 0.2 @@ -12,7 +12,7 @@ absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_HIGH -/datum/material/hydrogen/mhydrogen +/datum/prototype/material/hydrogen/mhydrogen name = "mhydrogen" id = MAT_METALHYDROGEN stack_type = /obj/item/stack/material/mhydrogen @@ -22,7 +22,7 @@ tgui_icon_key = "mhydrogen" worth = 50 -/datum/material/hydrogen/tritium +/datum/prototype/material/hydrogen/tritium name = "tritium" id = "tritium" stack_type = /obj/item/stack/material/tritium @@ -34,7 +34,7 @@ tgui_icon_key = "ingots" worth = 35 -/datum/material/hydrogen/deuterium +/datum/prototype/material/hydrogen/deuterium name = "deuterium" id = "deuterium" stack_type = /obj/item/stack/material/deuterium diff --git a/code/modules/materials/definitions/metals/iron.dm b/code/modules/materials/definitions/metals/iron.dm index 1781ce98a9b..9ed60a0d2a5 100644 --- a/code/modules/materials/definitions/metals/iron.dm +++ b/code/modules/materials/definitions/metals/iron.dm @@ -1,4 +1,4 @@ -/datum/material/iron +/datum/prototype/material/iron name = "iron" id = MAT_IRON stack_type = /obj/item/stack/material/iron diff --git a/code/modules/materials/definitions/metals/lead.dm b/code/modules/materials/definitions/metals/lead.dm index 86a3d87c818..7ef28d0c862 100644 --- a/code/modules/materials/definitions/metals/lead.dm +++ b/code/modules/materials/definitions/metals/lead.dm @@ -1,4 +1,4 @@ -/datum/material/lead +/datum/prototype/material/lead name = MAT_LEAD id = MAT_LEAD stack_type = /obj/item/stack/material/lead diff --git a/code/modules/materials/definitions/metals/osmium.dm b/code/modules/materials/definitions/metals/osmium.dm index e5f0b38aee3..e5e681ed878 100644 --- a/code/modules/materials/definitions/metals/osmium.dm +++ b/code/modules/materials/definitions/metals/osmium.dm @@ -1,4 +1,4 @@ -/datum/material/osmium +/datum/prototype/material/osmium name = "osmium" id = MAT_OSMIUM stack_type = /obj/item/stack/material/osmium diff --git a/code/modules/materials/definitions/metals/plasteel.dm b/code/modules/materials/definitions/metals/plasteel.dm index 6fced9f9142..3d7002b2910 100644 --- a/code/modules/materials/definitions/metals/plasteel.dm +++ b/code/modules/materials/definitions/metals/plasteel.dm @@ -1,4 +1,4 @@ -/datum/material/plasteel +/datum/prototype/material/plasteel id = MAT_PLASTEEL name = "plasteel" stack_type = /obj/item/stack/material/plasteel @@ -28,7 +28,7 @@ absorption = MATERIAL_RESISTANCE_ABOVE_MODERATE(0.75) nullification = MATERIAL_RESISTANCE_ABOVE_NONE(0.5) -/datum/material/plasteel/generate_recipes() +/datum/prototype/material/plasteel/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "AI core", @@ -78,7 +78,7 @@ amount = 4, ) -/datum/material/plasteel/hull +/datum/prototype/material/plasteel/hull id = "plasteel_hull" name = MAT_PLASTEELHULL stack_type = /obj/item/stack/material/plasteel/hull @@ -86,5 +86,5 @@ icon_colour = "#777788" explosion_resistance = 40 -/datum/material/plasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. +/datum/prototype/material/plasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. new /obj/item/stack/material/plasteel(target) diff --git a/code/modules/materials/definitions/metals/platinum.dm b/code/modules/materials/definitions/metals/platinum.dm index 8de5e124c06..90c70600f72 100644 --- a/code/modules/materials/definitions/metals/platinum.dm +++ b/code/modules/materials/definitions/metals/platinum.dm @@ -1,4 +1,4 @@ -/datum/material/platinum +/datum/prototype/material/platinum name = "platinum" id = MAT_PLATINUM stack_type = /obj/item/stack/material/platinum diff --git a/code/modules/materials/definitions/metals/silver.dm b/code/modules/materials/definitions/metals/silver.dm index 193c4cccc7e..177d9039960 100644 --- a/code/modules/materials/definitions/metals/silver.dm +++ b/code/modules/materials/definitions/metals/silver.dm @@ -1,4 +1,4 @@ -/datum/material/silver +/datum/prototype/material/silver id = MAT_SILVER name = "silver" stack_type = /obj/item/stack/material/silver @@ -22,7 +22,7 @@ absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_MODERATE -/datum/material/silver/generate_recipes() +/datum/prototype/material/silver/generate_recipes() . = ..() . += create_stack_recipe_datum(category = "statues", name = "head of security statue", product = /obj/structure/statue/silver/hos, cost = 10, time = 2 SECONDS) . += create_stack_recipe_datum(category = "statues", name = "medical doctor statue", product = /obj/structure/statue/silver/md, cost = 10, time = 2 SECONDS) diff --git a/code/modules/materials/definitions/metals/steel.dm b/code/modules/materials/definitions/metals/steel.dm index 71a4db04797..5e2488fe04e 100644 --- a/code/modules/materials/definitions/metals/steel.dm +++ b/code/modules/materials/definitions/metals/steel.dm @@ -1,4 +1,4 @@ -/datum/material/steel +/datum/prototype/material/steel id = MAT_STEEL name = MAT_STEEL stack_type = /obj/item/stack/material/steel @@ -23,7 +23,7 @@ absorption = MATERIAL_RESISTANCE_MODERATE nullification = MATERIAL_RESISTANCE_NONE -/datum/material/steel/generate_recipes() +/datum/prototype/material/steel/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "dark office chair", @@ -265,7 +265,7 @@ cost = 4, ) -/datum/material/steel/hull +/datum/prototype/material/steel/hull id = "steel_hull" name = MAT_STEELHULL stack_type = /obj/item/stack/material/steel/hull @@ -273,10 +273,10 @@ explosion_resistance = 10 icon_colour = "#666677" -/datum/material/steel/hull/place_sheet(var/turf/target) //Deconstructed into normal steel sheets. +/datum/prototype/material/steel/hull/place_sheet(var/turf/target) //Deconstructed into normal steel sheets. new /obj/item/stack/material/steel(target) -/datum/material/steel/holographic +/datum/prototype/material/steel/holographic id = "steel_holo" name = "holo" + MAT_STEEL display_name = "steel" diff --git a/code/modules/materials/definitions/metals/titanium.dm b/code/modules/materials/definitions/metals/titanium.dm index 2b26b55dc96..e3e3d333968 100644 --- a/code/modules/materials/definitions/metals/titanium.dm +++ b/code/modules/materials/definitions/metals/titanium.dm @@ -1,4 +1,4 @@ -/datum/material/plasteel/titanium +/datum/prototype/material/plasteel/titanium id = MAT_TITANIUM name = MAT_TITANIUM stack_type = /obj/item/stack/material/titanium @@ -20,7 +20,7 @@ absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_NONE -/datum/material/plasteel/titanium/hull +/datum/prototype/material/plasteel/titanium/hull id = "titanium_hull" name = MAT_TITANIUMHULL stack_type = null diff --git a/code/modules/materials/definitions/metals/uranium.dm b/code/modules/materials/definitions/metals/uranium.dm index 7d9087426e5..0fe99e45431 100644 --- a/code/modules/materials/definitions/metals/uranium.dm +++ b/code/modules/materials/definitions/metals/uranium.dm @@ -1,4 +1,4 @@ -/datum/material/uranium +/datum/prototype/material/uranium id = MAT_URANIUM name = "uranium" stack_type = /obj/item/stack/material/uranium @@ -25,10 +25,10 @@ nullification = MATERIAL_RESISTANCE_NONE material_traits = list( - /datum/material_trait/radioactive = 10, + /datum/prototype/material_trait/radioactive = 10, ) -/datum/material/uranium/generate_recipes() +/datum/prototype/material/uranium/generate_recipes() . = ..() . += create_stack_recipe_datum(category = "statues", name = "engineer statue", product = /obj/structure/statue/uranium/eng, cost = 10, time = 2 SECONDS) . += create_stack_recipe_datum(category = "statues", name = "nuke statue", product = /obj/structure/statue/uranium/nuke, cost = 10, time = 2 SECONDS) diff --git a/code/modules/materials/definitions/misc/cardboard.dm b/code/modules/materials/definitions/misc/cardboard.dm index 62927da1db9..d9d9f1f7c4c 100644 --- a/code/modules/materials/definitions/misc/cardboard.dm +++ b/code/modules/materials/definitions/misc/cardboard.dm @@ -1,4 +1,4 @@ -/datum/material/cardboard +/datum/prototype/material/cardboard id = "cardboard" name = "cardboard" stack_type = /obj/item/stack/material/cardboard @@ -26,7 +26,7 @@ absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_NONE -/datum/material/cardboard/generate_recipes() +/datum/prototype/material/cardboard/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "box", diff --git a/code/modules/materials/definitions/misc/cloths.dm b/code/modules/materials/definitions/misc/cloths.dm index 1db7dd95bee..16a870b4608 100644 --- a/code/modules/materials/definitions/misc/cloths.dm +++ b/code/modules/materials/definitions/misc/cloths.dm @@ -1,4 +1,4 @@ -/datum/material/cloth //todo +/datum/prototype/material/cloth //todo id = "cloth" name = "cloth" stack_origin_tech = list(TECH_MATERIAL = 2) @@ -21,7 +21,7 @@ absorption = MATERIAL_RESISTANCE_VULNERABLE nullification = MATERIAL_RESISTANCE_VULNERABLE -/datum/material/cloth/generate_recipes() +/datum/prototype/material/cloth/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "uniform", @@ -151,7 +151,7 @@ . += create_stack_recipe_datum(category = "bedsheets", name = "rainbow bedsheet", product = /obj/item/bedsheet/rainbow, cost = 5) . += create_stack_recipe_datum(category = "bedsheets", name = "double rainbow bedsheet", product = /obj/item/bedsheet/rainbowdouble, cost = 5) -/datum/material/carpet +/datum/prototype/material/carpet id = "carpet" name = "carpet" display_name = "comfy" @@ -162,49 +162,49 @@ relative_permeability = 0.7 // This all needs to be OOP'd and use inheritence if its ever used in the future. -/datum/material/cloth/teal +/datum/prototype/material/cloth/teal id = "cloth_teal" name = "teal" display_name ="teal" use_name = "teal cloth" icon_colour = "#00EAFA" -/datum/material/cloth/black +/datum/prototype/material/cloth/black id = "cloth_black" name = "black" display_name = "black" use_name = "black cloth" icon_colour = "#505050" -/datum/material/cloth/green +/datum/prototype/material/cloth/green id = "cloth_green" name = "green" display_name = "green" use_name = "green cloth" icon_colour = "#01C608" -/datum/material/cloth/puple +/datum/prototype/material/cloth/puple id = "cloth_purple" name = "purple" display_name = "purple" use_name = "purple cloth" icon_colour = "#9C56C4" -/datum/material/cloth/blue +/datum/prototype/material/cloth/blue id = "cloth_blue" name = "blue" display_name = "blue" use_name = "blue cloth" icon_colour = "#6B6FE3" -/datum/material/cloth/beige +/datum/prototype/material/cloth/beige id = "cloth_beige" name = "beige" display_name = "beige" use_name = "beige cloth" icon_colour = "#E8E7C8" -/datum/material/cloth/lime +/datum/prototype/material/cloth/lime id = "cloth_lime" name = "lime" display_name = "lime" diff --git a/code/modules/materials/definitions/misc/foam.dm b/code/modules/materials/definitions/misc/foam.dm index d3b8f9945d3..eca19af9444 100644 --- a/code/modules/materials/definitions/misc/foam.dm +++ b/code/modules/materials/definitions/misc/foam.dm @@ -1,4 +1,4 @@ -/datum/material/toy_foam +/datum/prototype/material/toy_foam id = "foam" name = "foam" display_name = "foam" diff --git a/code/modules/materials/definitions/misc/plastic.dm b/code/modules/materials/definitions/misc/plastic.dm index bcc761a1ad5..ec765c1f1fc 100644 --- a/code/modules/materials/definitions/misc/plastic.dm +++ b/code/modules/materials/definitions/misc/plastic.dm @@ -1,4 +1,4 @@ -/datum/material/plastic +/datum/prototype/material/plastic name = "plastic" id = "plastic" stack_type = /obj/item/stack/material/plastic @@ -22,7 +22,7 @@ absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_NONE -/datum/material/plastic/generate_recipes() +/datum/prototype/material/plastic/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "plastic crate", @@ -108,7 +108,7 @@ amount = 4, ) -/datum/material/plastic/holographic +/datum/prototype/material/plastic/holographic name = "holoplastic" id = "plastic_holo" display_name = "plastic" diff --git a/code/modules/materials/definitions/misc/snow.dm b/code/modules/materials/definitions/misc/snow.dm index 1936dbb3507..e5419020a3e 100644 --- a/code/modules/materials/definitions/misc/snow.dm +++ b/code/modules/materials/definitions/misc/snow.dm @@ -1,4 +1,4 @@ -/datum/material/snow +/datum/prototype/material/snow id = "snow" name = MAT_SNOW stack_type = /obj/item/stack/material/snow @@ -23,7 +23,7 @@ absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_VERY_VULNERABLE -/datum/material/snow/generate_recipes() +/datum/prototype/material/snow/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "snowball", @@ -61,7 +61,7 @@ cost = 10, ) -/datum/material/snowbrick //only slightly stronger than snow, used to make igloos mostly +/datum/prototype/material/snowbrick //only slightly stronger than snow, used to make igloos mostly id = "snow_packed" name = "packed snow" stack_type = /obj/item/stack/material/snowbrick diff --git a/code/modules/materials/definitions/misc/wax.dm b/code/modules/materials/definitions/misc/wax.dm index eb574802497..4f8f4995be0 100644 --- a/code/modules/materials/definitions/misc/wax.dm +++ b/code/modules/materials/definitions/misc/wax.dm @@ -1,4 +1,4 @@ -/datum/material/wax +/datum/prototype/material/wax id = "wax" name = "wax" stack_type = /obj/item/stack/material/wax @@ -18,7 +18,7 @@ absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_VULNERABLE -/datum/material/wax/generate_recipes() +/datum/prototype/material/wax/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "candle", diff --git a/code/modules/materials/definitions/organic/algae.dm b/code/modules/materials/definitions/organic/algae.dm index 331824df25c..ea82555de5e 100644 --- a/code/modules/materials/definitions/organic/algae.dm +++ b/code/modules/materials/definitions/organic/algae.dm @@ -1,4 +1,4 @@ -/datum/material/algae +/datum/prototype/material/algae id = "algae" name = MAT_ALGAE stack_type = /obj/item/stack/material/algae diff --git a/code/modules/materials/definitions/organic/bone.dm b/code/modules/materials/definitions/organic/bone.dm index 5fb350403e8..b04db64aac2 100644 --- a/code/modules/materials/definitions/organic/bone.dm +++ b/code/modules/materials/definitions/organic/bone.dm @@ -1,4 +1,4 @@ -/datum/material/bone +/datum/prototype/material/bone id = "bone" name = "bone" icon_colour = "#e6dfc8" @@ -25,7 +25,7 @@ absorption = MATERIAL_RESISTANCE_MODERATE nullification = MATERIAL_RESISTANCE_NONE -/datum/material/bone/generate_recipes() +/datum/prototype/material/bone/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "bone roofing tile", @@ -50,7 +50,7 @@ . += create_stack_recipe_datum(category = "statues", name = "skull statue", product = /obj/structure/statue/bone/skull, cost = 15, time = 2 SECONDS) . += create_stack_recipe_datum(category = "statues", name = "half-skull statue", product = /obj/structure/statue/bone/skull/half, cost = 15, time = 2 SECONDS) -/datum/material/bone/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) +/datum/prototype/material/bone/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) var/mob/living/carbon/M = L if(istype(M) && L.mind.isholy) to_chat(M, "\The [W] shudders under your touch, starting to become porous.") diff --git a/code/modules/materials/definitions/organic/chitin.dm b/code/modules/materials/definitions/organic/chitin.dm index 5f9b34ea495..c78b7143767 100644 --- a/code/modules/materials/definitions/organic/chitin.dm +++ b/code/modules/materials/definitions/organic/chitin.dm @@ -1,4 +1,4 @@ -/datum/material/chitin +/datum/prototype/material/chitin id = MAT_CHITIN name = "chitin" stack_type = /obj/item/stack/material/chitin diff --git a/code/modules/materials/definitions/organic/cotton.dm b/code/modules/materials/definitions/organic/cotton.dm index 7f56e8fe0a2..6c2a1dfa9b0 100644 --- a/code/modules/materials/definitions/organic/cotton.dm +++ b/code/modules/materials/definitions/organic/cotton.dm @@ -1,4 +1,4 @@ -/datum/material/cotton +/datum/prototype/material/cotton id = "cotton" name = "cotton" display_name ="cotton" diff --git a/code/modules/materials/definitions/organic/diona.dm b/code/modules/materials/definitions/organic/diona.dm index d3c7d20f5d1..f74757eff7c 100644 --- a/code/modules/materials/definitions/organic/diona.dm +++ b/code/modules/materials/definitions/organic/diona.dm @@ -1,4 +1,4 @@ -/datum/material/diona +/datum/prototype/material/diona id = "biomass_diona" name = "biomass" icon_colour = null @@ -18,8 +18,8 @@ absorption = MATERIAL_RESISTANCE_HIGH nullification = MATERIAL_RESISTANCE_LOW // they're half-telepaths anyways -/datum/material/diona/place_dismantled_product() +/datum/prototype/material/diona/place_dismantled_product() return -/datum/material/diona/place_dismantled_girder(var/turf/target) +/datum/prototype/material/diona/place_dismantled_girder(var/turf/target) spawn_diona_nymph(target) diff --git a/code/modules/materials/definitions/organic/flesh.dm b/code/modules/materials/definitions/organic/flesh.dm index efdec998cbf..2516837247f 100644 --- a/code/modules/materials/definitions/organic/flesh.dm +++ b/code/modules/materials/definitions/organic/flesh.dm @@ -1,4 +1,4 @@ -/datum/material/flesh +/datum/prototype/material/flesh id = "flesh" name = "flesh" icon_colour = "#35343a" @@ -26,13 +26,13 @@ absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_NONE -/datum/material/flesh/can_open_material_door(var/mob/living/user) +/datum/prototype/material/flesh/can_open_material_door(var/mob/living/user) var/mob/living/carbon/M = user if(istype(M)) return 1 return 0 -/datum/material/flesh/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) +/datum/prototype/material/flesh/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) var/mob/living/carbon/M = L if(istype(M) && L.mind.isholy) to_chat(M, "\The [W] shudders under your touch, starting to become porous.") diff --git a/code/modules/materials/definitions/organic/leather.dm b/code/modules/materials/definitions/organic/leather.dm index bc48abaed36..d7bc3c39571 100644 --- a/code/modules/materials/definitions/organic/leather.dm +++ b/code/modules/materials/definitions/organic/leather.dm @@ -1,6 +1,6 @@ //TODO PLACEHOLDERS: // todo: wtf are these they need to be subtyped properly and uhh yea -/datum/material/leather +/datum/prototype/material/leather id = "leather" name = "leather" icon_colour = "#5C4831" @@ -23,7 +23,7 @@ worth = 2.5 -/datum/material/leather/generate_recipes() +/datum/prototype/material/leather/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "wallet", diff --git a/code/modules/materials/definitions/organic/resin.dm b/code/modules/materials/definitions/organic/resin.dm index 3ccc01393e8..63eed91c346 100644 --- a/code/modules/materials/definitions/organic/resin.dm +++ b/code/modules/materials/definitions/organic/resin.dm @@ -1,4 +1,4 @@ -/datum/material/resin +/datum/prototype/material/resin id = "xenoresin" name = "resin" icon_colour = "#261438" @@ -26,7 +26,7 @@ absorption = MATERIAL_RESISTANCE_VULNERABLE nullification = MATERIAL_RESISTANCE_VERY_VULNERABLE -/datum/material/resin/generate_recipes() +/datum/prototype/material/resin/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "resin nest", @@ -54,13 +54,13 @@ time = 2 SECONDS, ) -/datum/material/resin/can_open_material_door(var/mob/living/user) +/datum/prototype/material/resin/can_open_material_door(var/mob/living/user) var/mob/living/carbon/M = user if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) return 1 return 0 -/datum/material/resin/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) +/datum/prototype/material/resin/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) var/mob/living/carbon/M = L if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) to_chat(M, "\The [W] shudders under your touch, starting to become porous.") diff --git a/code/modules/materials/definitions/organic/wood/log.dm b/code/modules/materials/definitions/organic/wood/log.dm index 26487e8a23b..a37daa4128b 100644 --- a/code/modules/materials/definitions/organic/wood/log.dm +++ b/code/modules/materials/definitions/organic/wood/log.dm @@ -1,4 +1,4 @@ -/datum/material/wood_log +/datum/prototype/material/wood_log id = "log" name = "log" icon_base = 'icons/turf/walls/wood_wall.dmi' // TODO: make a log wall sprites @@ -37,7 +37,7 @@ worth = 5 -/datum/material/wood_log/generate_recipes() +/datum/prototype/material/wood_log/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "bonfire", @@ -45,20 +45,20 @@ cost = 5, ) -/datum/material/wood_log/sif +/datum/prototype/material/wood_log/sif id = "log_sif" name = MAT_SIFLOG icon_colour = "#0099cc" // Cyan-ish stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) stack_type = /obj/item/stack/material/log/sif -/datum/material/wood_log/hard +/datum/prototype/material/wood_log/hard id = "log_hardwood" name = MAT_HARDLOG icon_colour = "#6f432a" stack_type = /obj/item/stack/material/log/hard -/datum/material/wood_log/ironwood +/datum/prototype/material/wood_log/ironwood id = "log_ironwood" name = MAT_IRONLOG icon_colour = "#5C5454" diff --git a/code/modules/materials/definitions/organic/wood/plank.dm b/code/modules/materials/definitions/organic/wood/plank.dm index 3fa4ddee830..2c6da82c3f6 100644 --- a/code/modules/materials/definitions/organic/wood/plank.dm +++ b/code/modules/materials/definitions/organic/wood/plank.dm @@ -1,4 +1,4 @@ -/datum/material/wood_plank +/datum/prototype/material/wood_plank id = "wood" name = MAT_WOOD stack_type = /obj/item/stack/material/wood @@ -35,7 +35,7 @@ worth = 2.5 -/datum/material/wood_plank/generate_recipes() +/datum/prototype/material/wood_plank/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "coffin", @@ -54,7 +54,7 @@ . += new /datum/stack_recipe/pew/left . += new /datum/stack_recipe/pew/right -/datum/material/wood_plank/special_recipes() +/datum/prototype/material/wood_plank/special_recipes() var/list/recipes = list() recipes += create_stack_recipe_datum( name = "beehive assembly", @@ -167,24 +167,24 @@ recipes += create_stack_recipe_datum(category = "fences", name = "gate", product = /obj/structure/fence/door/wooden, cost = 3) return recipes -/datum/material/wood_plank/holographic +/datum/prototype/material/wood_plank/holographic id = "wood_holo" name = "holowood" display_name = "wood" stack_type = null shard_type = SHARD_NONE -/datum/material/wood_plank/holographic/special_recipes() +/datum/prototype/material/wood_plank/holographic/special_recipes() return list() -/datum/material/wood_plank/sif +/datum/prototype/material/wood_plank/sif id = "wood_sif" name = MAT_SIFWOOD stack_type = /obj/item/stack/material/wood/sif icon_colour = "#0099cc" // Cyan-ish stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) // Alien wood would presumably be more interesting to the analyzer. -/datum/material/wood_plank/sif/special_recipes() +/datum/prototype/material/wood_plank/sif/special_recipes() . = ..() . += create_stack_recipe_datum( name = "alien wood floor tile", @@ -197,7 +197,7 @@ if(recipe.name == "wood floor tile") . -= recipe -/datum/material/wood_plank/hardwood +/datum/prototype/material/wood_plank/hardwood id = "wood_hardwood" name = MAT_HARDWOOD stack_type = /obj/item/stack/material/wood/hard @@ -207,7 +207,7 @@ icon_reinf_directionals = TRUE table_icon_base = "stone" -/datum/material/wood_plank/hardwood/special_recipes() +/datum/prototype/material/wood_plank/hardwood/special_recipes() var/list/recipes = list() recipes += create_stack_recipe_datum( name = "crossbow frame", @@ -241,7 +241,7 @@ ) return recipes -/datum/material/wood_plank/ironwood +/datum/prototype/material/wood_plank/ironwood id = "ironwood" name = MAT_IRONWOOD icon_colour = "#666666" diff --git a/code/modules/materials/definitions/special.dm b/code/modules/materials/definitions/special.dm index ee4f930d394..8b19ca0372e 100644 --- a/code/modules/materials/definitions/special.dm +++ b/code/modules/materials/definitions/special.dm @@ -1,4 +1,4 @@ /// Used by walls when qdel()ing to avoid neighbor merging. -/datum/material/placeholder +/datum/prototype/material/placeholder name = "placeholder" id = "mat_placeholder" diff --git a/code/modules/materials/definitions/special/clown_planet.dm b/code/modules/materials/definitions/special/clown_planet.dm index a0a81c5b60b..1c1231a1034 100644 --- a/code/modules/materials/definitions/special/clown_planet.dm +++ b/code/modules/materials/definitions/special/clown_planet.dm @@ -1,4 +1,4 @@ -/datum/material/bananium +/datum/prototype/material/bananium id = MAT_BANANIUM name = "bananium" stack_type = /obj/item/stack/material/bananium @@ -20,13 +20,13 @@ absorption = MATERIAL_RESISTANCE_HIGH nullification = MATERIAL_RESISTANCE_LOW -/datum/material/bananium/generate_recipes() +/datum/prototype/material/bananium/generate_recipes() . = ..() . += create_stack_recipe_datum(category = "statues", name = "bananium statue", product = /obj/structure/statue/bananium, cost = 10, time = 2 SECONDS) . += create_stack_recipe_datum(category = "statues", name = "clown statue", product = /obj/structure/statue/bananium/clown, cost = 10, time = 2 SECONDS) . += create_stack_recipe_datum(name = "bananium floor tiles", cost = 1, product = /obj/item/stack/tile/bananium, amount = 4) -/datum/material/silencium +/datum/prototype/material/silencium id = MAT_SILENCIUM name = "silencium" stack_type = /obj/item/stack/material/silencium @@ -47,6 +47,6 @@ absorption = MATERIAL_RESISTANCE_HIGH nullification = MATERIAL_RESISTANCE_LOW -/datum/material/silencium/generate_recipes() +/datum/prototype/material/silencium/generate_recipes() . = ..() . += create_stack_recipe_datum(name = "silencium floor tiles", cost = 1, product = /obj/item/stack/tile/silencium, amount = 4) diff --git a/code/modules/materials/definitions/special/cult.dm b/code/modules/materials/definitions/special/cult.dm index 12686482727..d3146709336 100644 --- a/code/modules/materials/definitions/special/cult.dm +++ b/code/modules/materials/definitions/special/cult.dm @@ -1,4 +1,4 @@ -/datum/material/cult +/datum/prototype/material/cult id = "cult" name = "cult" display_name = "disturbing stone" @@ -9,16 +9,16 @@ sheet_singular_name = "brick" sheet_plural_name = "bricks" -/datum/material/cult/place_dismantled_girder(var/turf/target) - new /obj/structure/girder/cult(target, /datum/material/cult) +/datum/prototype/material/cult/place_dismantled_girder(var/turf/target) + new /obj/structure/girder/cult(target, /datum/prototype/material/cult) -/datum/material/cult/place_dismantled_product(var/turf/target) +/datum/prototype/material/cult/place_dismantled_product(var/turf/target) new /obj/effect/debris/cleanable/blood(target) -/datum/material/cult/reinf +/datum/prototype/material/cult/reinf id = "cult_reinforced" name = "cult2" display_name = "human remains" -/datum/material/cult/reinf/place_dismantled_product(var/turf/target) +/datum/prototype/material/cult/reinf/place_dismantled_product(var/turf/target) new /obj/effect/decal/remains/human(target) diff --git a/code/modules/materials/definitions/special/morphium.dm b/code/modules/materials/definitions/special/morphium.dm index 33285a26b1c..1a06134c503 100644 --- a/code/modules/materials/definitions/special/morphium.dm +++ b/code/modules/materials/definitions/special/morphium.dm @@ -1,4 +1,4 @@ -/datum/material/morphium +/datum/prototype/material/morphium name = MAT_MORPHIUM id = MAT_MORPHIUM stack_type = /obj/item/stack/material/morphium @@ -25,7 +25,7 @@ worth = 100 -/datum/material/morphium/hull +/datum/prototype/material/morphium/hull name = MAT_MORPHIUMHULL id = "morphium_hull" stack_type = /obj/item/stack/material/morphium/hull diff --git a/code/modules/materials/definitions/special/phoron.dm b/code/modules/materials/definitions/special/phoron.dm index e036dc05f3c..493cee37bc8 100644 --- a/code/modules/materials/definitions/special/phoron.dm +++ b/code/modules/materials/definitions/special/phoron.dm @@ -1,4 +1,4 @@ -/datum/material/phoron +/datum/prototype/material/phoron id = MAT_PHORON name = "phoron" stack_type = /obj/item/stack/material/phoron @@ -28,7 +28,7 @@ // Commenting this out while fires are so spectacularly lethal, as I can't seem to get this balanced appropriately. /* -/datum/material/phoron/combustion_effect(var/turf/T, var/temperature, var/effect_multiplier) +/datum/prototype/material/phoron/combustion_effect(var/turf/T, var/temperature, var/effect_multiplier) if(isnull(ignition_point)) return 0 if(temperature < ignition_point) @@ -43,7 +43,7 @@ return round(totalPhoron/100) */ -/datum/material/phoron/generate_recipes() +/datum/prototype/material/phoron/generate_recipes() . = ..() . += create_stack_recipe_datum(category = "statues", name = "scientist statue", product = /obj/structure/statue/phoron/scientist, cost = 10, time = 2 SECONDS) . += create_stack_recipe_datum(category = "statues", name = "xenomorph statue", product = /obj/structure/statue/phoron/xeno, cost = 10, time = 2 SECONDS) diff --git a/code/modules/materials/definitions/special/supermatter.dm b/code/modules/materials/definitions/special/supermatter.dm index 75c06907479..52a17c2a0d4 100644 --- a/code/modules/materials/definitions/special/supermatter.dm +++ b/code/modules/materials/definitions/special/supermatter.dm @@ -1,4 +1,4 @@ -/datum/material/supermatter +/datum/prototype/material/supermatter id = MAT_SUPERMATTER name = "supermatter" icon_colour = "#FFFF00" @@ -29,12 +29,12 @@ // you didn't think you were getting the stats for free now did you material_traits = list( - /datum/material_trait/radioactive = RAD_INTENSITY_MAT_SUPERMATTER, - /datum/material_trait/supermatter, - /datum/material_trait/glow = list("power" = 0.75, "range" = 3, "color" = "#ffff00", "sensitivity" = 0.5), + /datum/prototype/material_trait/radioactive = RAD_INTENSITY_MAT_SUPERMATTER, + /datum/prototype/material_trait/supermatter, + /datum/prototype/material_trait/glow = list("power" = 0.75, "range" = 3, "color" = "#ffff00", "sensitivity" = 0.5), ) -/datum/material/supermatter/generate_recipes() +/datum/prototype/material/supermatter/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "supermatter shard", diff --git a/code/modules/materials/definitions/special/valhollide.dm b/code/modules/materials/definitions/special/valhollide.dm index 48333b994e0..934be3695a5 100644 --- a/code/modules/materials/definitions/special/valhollide.dm +++ b/code/modules/materials/definitions/special/valhollide.dm @@ -1,4 +1,4 @@ -/datum/material/valhollide +/datum/prototype/material/valhollide name = MAT_VALHOLLIDE id = MAT_VALHOLLIDE stack_type = /obj/item/stack/material/valhollide diff --git a/code/modules/materials/definitions/special/verdantium.dm b/code/modules/materials/definitions/special/verdantium.dm index db97b8cb1e9..8ef527f5f2d 100644 --- a/code/modules/materials/definitions/special/verdantium.dm +++ b/code/modules/materials/definitions/special/verdantium.dm @@ -1,4 +1,4 @@ -/datum/material/verdantium +/datum/prototype/material/verdantium name = MAT_VERDANTIUM id = MAT_VERDANTIUM stack_type = /obj/item/stack/material/verdantium diff --git a/code/modules/materials/definitions/stones/marble.dm b/code/modules/materials/definitions/stones/marble.dm index c41d18940a6..1e7c39810f3 100644 --- a/code/modules/materials/definitions/stones/marble.dm +++ b/code/modules/materials/definitions/stones/marble.dm @@ -1,4 +1,4 @@ -/datum/material/marble +/datum/prototype/material/marble id = "marble" name = "marble" icon_colour = "#AAAAAA" @@ -27,7 +27,7 @@ worth = 2 -/datum/material/marble/generate_recipes() +/datum/prototype/material/marble/generate_recipes() . = ..() . += create_stack_recipe_datum( name = "light marble floor tile", diff --git a/code/modules/materials/definitions/stones/sandstone.dm b/code/modules/materials/definitions/stones/sandstone.dm index 4dd4c1a2b16..2938bf77bfd 100644 --- a/code/modules/materials/definitions/stones/sandstone.dm +++ b/code/modules/materials/definitions/stones/sandstone.dm @@ -1,4 +1,4 @@ -/datum/material/sandstone +/datum/prototype/material/sandstone id = "sandstone" name = "sandstone" stack_type = /obj/item/stack/material/sandstone @@ -27,7 +27,7 @@ worth = 1.25 -/datum/material/sandstone/generate_recipes() +/datum/prototype/material/sandstone/generate_recipes() . = ..() . += create_stack_recipe_datum(category = "statues", name = "assistant statue", product = /obj/structure/statue/sandstone/assistant, amount = 10) . += create_stack_recipe_datum( diff --git a/code/modules/materials/dynamics.dm b/code/modules/materials/dynamics.dm index 1136de3b9d2..4646dbc9fc4 100644 --- a/code/modules/materials/dynamics.dm +++ b/code/modules/materials/dynamics.dm @@ -15,7 +15,7 @@ * * @return /datum/armor instance */ -/datum/material/proc/create_armor(significance = MATERIAL_SIGNIFICANCE_BASELINE, mob_armor) +/datum/prototype/material/proc/create_armor(significance = MATERIAL_SIGNIFICANCE_BASELINE, mob_armor) RETURN_TYPE(/datum/armor) var/cache_key = "[significance]_[!!mob_armor]" if(!isnull(armor_cache[cache_key])) @@ -88,16 +88,16 @@ * * @return /datum/armor instance */ -/datum/controller/subsystem/materials/proc/combined_materials_armor(list/datum/material/materials) +/datum/controller/subsystem/materials/proc/combined_materials_armor(list/datum/prototype/material/materials) var/list/cache_key = list() - for(var/datum/material/mat as anything in materials) + for(var/datum/prototype/material/mat as anything in materials) cache_key += "[mat.id]-[materials[mat]]" cache_key = jointext(cache_key, ";") var/datum/armor/resolved = combined_armor_cache[cache_key] if(!isnull(resolved)) return resolved var/list/datum/armor/collected = list() - for(var/datum/material/mat as anything in materials) + for(var/datum/prototype/material/mat as anything in materials) collected[mat.create_armor(materials[mat]).to_list()] = materials[mat] // todo: this is shitty but we just do the best of all @@ -121,9 +121,9 @@ * * @return /datum/armor instance */ -/datum/controller/subsystem/materials/proc/reinforcing_materials_armor(list/datum/material/materials) +/datum/controller/subsystem/materials/proc/reinforcing_materials_armor(list/datum/prototype/material/materials) var/list/cache_key = list() - for(var/datum/material/mat as anything in materials) + for(var/datum/prototype/material/mat as anything in materials) if(isnull(mat)) continue cache_key += "[mat.id]-[materials[mat]]" @@ -132,7 +132,7 @@ if(!isnull(resolved)) return resolved var/list/datum/armor/collected = list() - for(var/datum/material/mat as anything in materials) + for(var/datum/prototype/material/mat as anything in materials) if(isnull(mat)) continue collected[mat.create_armor(materials[mat]).to_list()] = materials[mat] @@ -160,9 +160,9 @@ * * @return /datum/armor instance */ -/datum/controller/subsystem/materials/proc/wall_materials_armor(list/datum/material/materials) +/datum/controller/subsystem/materials/proc/wall_materials_armor(list/datum/prototype/material/materials) var/list/cache_key = list() - for(var/datum/material/mat as anything in materials) + for(var/datum/prototype/material/mat as anything in materials) if(isnull(mat)) continue cache_key += "[mat.id]-[materials[mat]]" @@ -171,7 +171,7 @@ if(!isnull(resolved)) return resolved var/list/datum/armor/collected = list() - for(var/datum/material/mat as anything in materials) + for(var/datum/prototype/material/mat as anything in materials) if(isnull(mat)) continue collected[mat.create_armor(materials[mat]).to_list()] = materials[mat] @@ -196,11 +196,11 @@ /** * gets overall integrity multiplier from a list of materials associated to significances */ -/datum/controller/subsystem/materials/proc/dynamic_calculate_relative_integrity(list/datum/material/materials) +/datum/controller/subsystem/materials/proc/dynamic_calculate_relative_integrity(list/datum/prototype/material/materials) var/total = 0 var/pieces = 0 - for(var/datum/material/material as anything in materials) + for(var/datum/prototype/material/material as anything in materials) var/significance = materials[material] pieces += significance @@ -221,7 +221,7 @@ * * @return list(damage, armorflag, tier, mode) */ -/datum/material/proc/melee_stats(initial_modes, significance = MATERIAL_SIGNIFICANCE_BASELINE) +/datum/prototype/material/proc/melee_stats(initial_modes, significance = MATERIAL_SIGNIFICANCE_BASELINE) var/cache_key = "[initial_modes]_[significance]" if(!isnull(melee_cache[cache_key])) return melee_cache[cache_key] diff --git a/code/modules/materials/material.dm b/code/modules/materials/material.dm index 51b061ae608..248ed587c82 100644 --- a/code/modules/materials/material.dm +++ b/code/modules/materials/material.dm @@ -2,16 +2,10 @@ // todo: put everything into their own files // Material definition and procs follow. -/datum/material - abstract_type = /datum/material +/datum/prototype/material + abstract_type = /datum/prototype/material - //* Core - /** - * ID. - * Must be unique. - * Hardcoded materials can be looked up by typepath too and must never have their ids changed under the current implementation. - */ - var/id + //* Core *// /// Name for debugging purposes; not player-facing. var/name @@ -202,7 +196,7 @@ var/tgui_icon_key = "unknown" /// Placeholders for light tiles and rglass. -/datum/material/proc/build_rod_product(mob/user, obj/item/stack/used_stack, obj/item/stack/target_stack) +/datum/prototype/material/proc/build_rod_product(mob/user, obj/item/stack/used_stack, obj/item/stack/target_stack) if(!rod_product) to_chat(user, SPAN_WARNING("You cannot make anything out of \the [target_stack].")) return @@ -215,7 +209,7 @@ S.add_fingerprint(user) S.add_to_stacks(user) -/datum/material/proc/build_wired_product(mob/living/user, obj/item/stack/used_stack, obj/item/stack/target_stack) +/datum/prototype/material/proc/build_wired_product(mob/living/user, obj/item/stack/used_stack, obj/item/stack/target_stack) if(!wire_product) to_chat(user, SPAN_WARNING("You cannot make anything out of \the [target_stack].")) return @@ -235,7 +229,7 @@ * Arugments: * - _id: The ID the material should use. Overrides the existing ID. */ -/datum/material/proc/Initialize(_id, ...) +/datum/prototype/material/proc/Initialize(_id, ...) if(_id) id = _id else if(isnull(id)) @@ -252,70 +246,70 @@ return TRUE -/datum/material/serialize() +/datum/prototype/material/serialize() . = ..() var/list/serialized_traits = list() // use type directly - we don't care about update stability. - for(var/datum/material_trait/trait in material_traits) + for(var/datum/prototype/material_trait/trait in material_traits) serialized_traits[trait.type] = list( "trait" = trait.serialize(), "data" = material_traits[trait], ) .["traits"] = serialized_traits -/datum/material/deserialize(list/data) +/datum/prototype/material/deserialize(list/data) . = ..() var/list/deserializing_traits = .["traits"] for(var/path in deserializing_traits) var/resolved = text2path(path) - if(!ispath(resolved, /datum/material_trait)) + if(!ispath(resolved, /datum/prototype/material_trait)) continue var/list/data_list = deserializing_traits[path] - var/datum/material_trait/trait = new resolved + var/datum/prototype/material_trait/trait = new resolved trait.deserialize(data_list["trait"]) material_traits[trait] = data_list["data"] /// This is a placeholder for proper integration of windows/windoors into the system. -/datum/material/proc/build_windows(mob/living/user, obj/item/stack/used_stack) +/datum/prototype/material/proc/build_windows(mob/living/user, obj/item/stack/used_stack) return FALSE /// Snowflakey, only checked for alien doors at the moment. -/datum/material/proc/can_open_material_door(mob/living/user) +/datum/prototype/material/proc/can_open_material_door(mob/living/user) return 1 /// Places a girder object when a wall is dismantled, also applies reinforced material. -/datum/material/proc/place_dismantled_girder(turf/target, datum/material/material_reinf, datum/material/material_girder) +/datum/prototype/material/proc/place_dismantled_girder(turf/target, datum/prototype/material/material_reinf, datum/prototype/material/material_girder) var/obj/structure/girder/G = new(target, material_girder, material_reinf) return G /// General wall debris product placement. /// Not particularly necessary aside from snowflakey cult girders. -/datum/material/proc/place_dismantled_product(turf/target, amount) +/datum/prototype/material/proc/place_dismantled_product(turf/target, amount) place_sheet(target, amount) /// Debris product. Used ALL THE TIME. -/datum/material/proc/place_sheet(turf/target, amount) +/datum/prototype/material/proc/place_sheet(turf/target, amount) if(stack_type) return new stack_type(target, ispath(stack_type, /obj/item/stack)? amount : null) // As above. -/datum/material/proc/place_shard(turf/target) +/datum/prototype/material/proc/place_shard(turf/target) if(shard_type) return new /obj/item/material/shard(target, src.name) -/datum/material/proc/combustion_effect(turf/T, temperature) +/datum/prototype/material/proc/combustion_effect(turf/T, temperature) return -/datum/material/proc/wall_touch_special(turf/simulated/wall/W, mob/living/L) +/datum/prototype/material/proc/wall_touch_special(turf/simulated/wall/W, mob/living/L) return //* traits & trait hooks *// -/datum/material/proc/init_traits() +/datum/prototype/material/proc/init_traits() for(var/i in 1 to length(material_traits)) var/key = material_traits[i] var/val = material_traits[key] if(ispath(key)) - ASSERT(SSmaterials.material_traits[key]) - material_traits[i] = SSmaterials.material_traits[key] - material_traits[material_traits[i]] = val + var/datum/prototype/material_trait/fetched = RSmaterial_traits.fetch(key) + material_traits[i] = fetched + material_traits[fetched] = val diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm index 951fe746256..a5f2786d45f 100644 --- a/code/modules/materials/material_sheets.dm +++ b/code/modules/materials/material_sheets.dm @@ -17,7 +17,7 @@ material_parts = MATERIAL_DEFAULT_DISABLED /// material - direct ref because stack - var/datum/material/material + var/datum/prototype/material/material var/perunit = SHEET_MATERIAL_AMOUNT var/apply_colour //temp pending icon rewrite @@ -26,7 +26,7 @@ /obj/item/stack/material/Initialize(mapload, new_amount, merge = TRUE, material) if(!isnull(material)) src.material = material - src.material = SSmaterials.resolve_material(src.material) + src.material = RSmaterials.fetch(src.material) . = ..() pixel_x = rand(0,4)-4 @@ -109,21 +109,21 @@ /obj/item/stack/material/iron name = "iron" icon_state = "sheet-silver" - material = /datum/material/iron + material = /datum/prototype/material/iron apply_colour = 1 no_variants = FALSE /obj/item/stack/material/lead name = "lead" icon_state = "sheet-adamantine" - material = /datum/material/lead + material = /datum/prototype/material/lead apply_colour = 1 no_variants = FALSE /obj/item/stack/material/sandstone name = "sandstone brick" icon_state = "sheet-sandstone" - material = /datum/material/sandstone + material = /datum/prototype/material/sandstone no_variants = FALSE drop_sound = 'sound/items/drop/boots.ogg' pickup_sound = 'sound/items/pickup/boots.ogg' @@ -131,7 +131,7 @@ /obj/item/stack/material/marble name = "marble brick" icon_state = "sheet-marble" - material = /datum/material/marble + material = /datum/prototype/material/marble no_variants = FALSE drop_sound = 'sound/items/drop/boots.ogg' pickup_sound = 'sound/items/pickup/boots.ogg' @@ -139,66 +139,66 @@ /obj/item/stack/material/diamond name = "diamond" icon_state = "sheet-diamond" - material = /datum/material/diamond + material = /datum/prototype/material/diamond drop_sound = 'sound/items/drop/glass.ogg' pickup_sound = 'sound/items/pickup/glass.ogg' /obj/item/stack/material/uranium name = "uranium" icon_state = "sheet-uranium" - material = /datum/material/uranium + material = /datum/prototype/material/uranium no_variants = FALSE /obj/item/stack/material/phoron name = "solid phoron" icon_state = "sheet-phoron" - material = /datum/material/phoron + material = /datum/prototype/material/phoron no_variants = FALSE /obj/item/stack/material/plastic name = "plastic" icon_state = "sheet-plastic" - material = /datum/material/plastic + material = /datum/prototype/material/plastic no_variants = FALSE /obj/item/stack/material/gold name = "gold" icon_state = "sheet-gold" - material = /datum/material/gold + material = /datum/prototype/material/gold no_variants = FALSE /obj/item/stack/material/silver name = "silver" icon_state = "sheet-silver" - material = /datum/material/silver + material = /datum/prototype/material/silver no_variants = FALSE //Valuable resource, cargo can sell it. /obj/item/stack/material/platinum name = "platinum" icon_state = "sheet-adamantine" - material = /datum/material/platinum + material = /datum/prototype/material/platinum no_variants = FALSE //Extremely valuable to Research. /obj/item/stack/material/mhydrogen name = "metallic hydrogen" icon_state = "sheet-mythril" - material = /datum/material/hydrogen/mhydrogen + material = /datum/prototype/material/hydrogen/mhydrogen no_variants = FALSE //Fuel for MRSPACMAN generator. /obj/item/stack/material/tritium name = "tritium" icon_state = "sheet-silver" - material = /datum/material/hydrogen/tritium + material = /datum/prototype/material/hydrogen/tritium apply_colour = 1 no_variants = FALSE /obj/item/stack/material/osmium name = "osmium" icon_state = "sheet-silver" - material = /datum/material/osmium + material = /datum/prototype/material/osmium apply_colour = 1 no_variants = FALSE @@ -207,35 +207,35 @@ /obj/item/stack/material/deuterium name = "deuterium" icon_state = "sheet-silver" - material = /datum/material/hydrogen/deuterium + material = /datum/prototype/material/hydrogen/deuterium apply_colour = 1 no_variants = FALSE /obj/item/stack/material/steel name = MAT_STEEL icon_state = "sheet-metal" - material = /datum/material/steel + material = /datum/prototype/material/steel no_variants = FALSE /obj/item/stack/material/steel/hull name = MAT_STEELHULL - material = /datum/material/steel/hull + material = /datum/prototype/material/steel/hull /obj/item/stack/material/plasteel name = "plasteel" icon_state = "sheet-plasteel" - material = /datum/material/plasteel + material = /datum/prototype/material/plasteel no_variants = FALSE /obj/item/stack/material/plasteel/hull name = MAT_PLASTEELHULL - material = /datum/material/plasteel/hull + material = /datum/prototype/material/plasteel/hull /obj/item/stack/material/durasteel name = "durasteel" icon_state = "sheet-durasteel" item_state = "sheet-metal" - material = /datum/material/durasteel + material = /datum/prototype/material/durasteel no_variants = FALSE /obj/item/stack/material/durasteel/hull @@ -245,19 +245,19 @@ name = MAT_TITANIUM icon_state = "sheet-silver" item_state = "sheet-silver" - material = /datum/material/plasteel/titanium + material = /datum/prototype/material/plasteel/titanium no_variants = FALSE /obj/item/stack/material/titanium/hull name = MAT_TITANIUMHULL - material = /datum/material/plasteel/titanium/hull + material = /datum/prototype/material/plasteel/titanium/hull // Particle Smasher and Exotic material. /obj/item/stack/material/verdantium name = MAT_VERDANTIUM icon_state = "sheet-wavy" item_state = "mhydrogen" - material = /datum/material/verdantium + material = /datum/prototype/material/verdantium no_variants = FALSE apply_colour = TRUE @@ -265,19 +265,19 @@ name = MAT_MORPHIUM icon_state = "sheet-wavy" item_state = "mhydrogen" - material = /datum/material/morphium + material = /datum/prototype/material/morphium no_variants = FALSE apply_colour = TRUE /obj/item/stack/material/morphium/hull name = MAT_MORPHIUMHULL - material = /datum/material/morphium/hull + material = /datum/prototype/material/morphium/hull /obj/item/stack/material/valhollide name = MAT_VALHOLLIDE icon_state = "sheet-gem" item_state = "diamond" - material = /datum/material/valhollide + material = /datum/prototype/material/valhollide no_variants = FALSE apply_colour = TRUE @@ -286,7 +286,7 @@ name = MAT_SUPERMATTER icon_state = "sheet-super" item_state = "diamond" - material = /datum/material/supermatter + material = /datum/prototype/material/supermatter no_variants = FALSE apply_colour = TRUE @@ -341,7 +341,7 @@ /obj/item/stack/material/wood name = "wooden plank" icon_state = "sheet-wood" - material = /datum/material/wood_plank + material = /datum/prototype/material/wood_plank strict_color_stacking = TRUE drop_sound = 'sound/items/drop/wooden.ogg' pickup_sound = 'sound/items/pickup/wooden.ogg' @@ -349,18 +349,18 @@ /obj/item/stack/material/wood/sif name = "alien wooden plank" color = "#0099cc" - material = /datum/material/wood_plank/sif + material = /datum/prototype/material/wood_plank/sif /obj/item/stack/material/wood/hard name = "hardwood plank" color = "#42291a" - material = /datum/material/wood_plank/hardwood + material = /datum/prototype/material/wood_plank/hardwood description_info = "Rich, lustrous hardwood, imported from offworld at moderate expense. Mostly used for luxurious furniture, and not very good for weapons or other structures." /obj/item/stack/material/wood/ironwood name = "ironwood plank" color = "#666666" - material = /datum/material/wood_plank/ironwood + material = /datum/prototype/material/wood_plank/ironwood description_info = "A especially dense wood said to be stronger than iron. Grown from ironwood trees native to the Alraune homeworld of Loam." catalogue_delay = 2 SECONDS catalogue_data = list(/datum/category_item/catalogue/flora/ironwood) @@ -368,7 +368,7 @@ /obj/item/stack/material/log name = "log" icon_state = "sheet-log" - material = /datum/material/wood_log + material = /datum/prototype/material/wood_log no_variants = FALSE color = "#824B28" max_amount = 25 @@ -380,13 +380,13 @@ /obj/item/stack/material/log/sif name = "alien log" - material = /datum/material/wood_log/sif + material = /datum/prototype/material/wood_log/sif color = "#0099cc" plank_type = /obj/item/stack/material/wood/sif /obj/item/stack/material/log/hard name = "hardwood log" - material = /datum/material/wood_log/hard + material = /datum/prototype/material/wood_log/hard color = "#6f432a" plank_type = /obj/item/stack/material/wood/hard @@ -413,7 +413,7 @@ return ..() /obj/item/stack/material/log/ironwood - material = /datum/material/wood_log/ironwood + material = /datum/prototype/material/wood_log/ironwood color = "#666666" plank_type = /obj/item/stack/material/wood/ironwood description_info = "Use inhand to craft things. You will need something very sharp to cut it into planks though" @@ -447,7 +447,7 @@ /obj/item/stack/material/cloth name = "cloth" icon_state = "sheet-cloth" - material = /datum/material/cloth + material = /datum/prototype/material/cloth no_variants = FALSE pass_color = TRUE strict_color_stacking = TRUE @@ -457,7 +457,7 @@ /obj/item/stack/material/resin name = "resin" icon_state = "sheet-resin" - material = /datum/material/resin + material = /datum/prototype/material/resin no_variants = TRUE apply_colour = TRUE pass_color = TRUE @@ -466,7 +466,7 @@ /obj/item/stack/material/cardboard name = "cardboard" icon_state = "sheet-card" - material = /datum/material/cardboard + material = /datum/prototype/material/cardboard no_variants = FALSE pass_color = TRUE strict_color_stacking = TRUE @@ -477,19 +477,19 @@ name = "snow" desc = "The temptation to build a snowman rises." icon_state = "sheet-snow" - material = /datum/material/snow + material = /datum/prototype/material/snow /obj/item/stack/material/snowbrick name = "snow brick" desc = "For all of your igloo building needs." icon_state = "sheet-snowbrick" - material = /datum/material/snowbrick + material = /datum/prototype/material/snowbrick /obj/item/stack/material/leather name = "leather" desc = "The by-product of mob grinding." icon_state = "sheet-leather" - material = /datum/material/leather + material = /datum/prototype/material/leather no_variants = FALSE pass_color = TRUE strict_color_stacking = TRUE @@ -501,7 +501,7 @@ desc = "Sheets of hardened chitin, usually harvested from insectile beasts." singular_name = "chitin plate" icon_state = "chitin" - material = /datum/material/chitin + material = /datum/prototype/material/chitin no_variants = FALSE pass_color = TRUE strict_color_stacking = TRUE @@ -511,7 +511,7 @@ /obj/item/stack/material/glass name = "glass" icon_state = "sheet-glass" - material = /datum/material/glass + material = /datum/prototype/material/glass no_variants = FALSE drop_sound = 'sound/items/drop/glass.ogg' pickup_sound = 'sound/items/pickup/glass.ogg' @@ -519,7 +519,7 @@ /obj/item/stack/material/glass/reinforced name = "reinforced glass" icon_state = "sheet-rglass" - material = /datum/material/glass/reinforced + material = /datum/prototype/material/glass/reinforced no_variants = FALSE /obj/item/stack/material/glass/phoronglass @@ -527,7 +527,7 @@ desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures" singular_name = "borosilicate glass sheet" icon_state = "sheet-phoronglass" - material = /datum/material/glass/phoron + material = /datum/prototype/material/glass/phoron no_variants = FALSE /obj/item/stack/material/glass/phoronrglass @@ -535,14 +535,14 @@ desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures. It is reinforced with few rods." singular_name = "reinforced borosilicate glass sheet" icon_state = "sheet-phoronrglass" - material = /datum/material/glass/phoron/reinforced + material = /datum/prototype/material/glass/phoron/reinforced no_variants = FALSE /obj/item/stack/material/bananium name = MAT_BANANIUM desc = "When smelted, Vaudium takes on a bright yellow hue and remains pliable, growing rigid when met with a forceful impact." icon_state = "sheet-clown" - material = /datum/material/bananium + material = /datum/prototype/material/bananium no_variants = FALSE drop_sound = 'sound/items/drop/boots.ogg' pickup_sound = 'sound/items/pickup/boots.ogg' @@ -551,7 +551,7 @@ name = MAT_SILENCIUM desc = "When compressed, Vaudium loses its color, gaining distinctive black bands and becoming intensely rigid." icon_state = "sheet-mime" - material = /datum/material/silencium + material = /datum/prototype/material/silencium no_variants = FALSE drop_sound = 'sound/items/drop/boots.ogg' pickup_sound = 'sound/items/drop/boots.ogg' @@ -560,7 +560,7 @@ name = "brass" desc = "This stable alloy is often used in complex mechanisms due to its versatility, softness, and solid head conduction." icon_state = "sheet-brass" - material = /datum/material/brass + material = /datum/prototype/material/brass no_variants = FALSE drop_sound = 'sound/items/drop/boots.ogg' pickup_sound = 'sound/items/drop/boots.ogg' @@ -569,7 +569,7 @@ name = "bone" desc = "These dense calcium structures are a common support system for organic life." icon_state = "sheet-bone" - material = /datum/material/bone + material = /datum/prototype/material/bone no_variants = FALSE drop_sound = 'sound/items/drop/boots.ogg' pickup_sound = 'sound/items/drop/boots.ogg' @@ -578,7 +578,7 @@ name = "copper" desc = "This common metal remains a popular choice as an electrical and thermal conductor due to how easily it can be worked." icon_state = "sheet-copper" - material = /datum/material/copper + material = /datum/prototype/material/copper no_variants = FALSE drop_sound = 'sound/items/drop/boots.ogg' pickup_sound = 'sound/items/drop/boots.ogg' @@ -590,7 +590,7 @@ desc = "Soft substance produced by bees. Used to make candles." icon_state = "sheet-rtransparent" apply_colour = 1 - material = /datum/material/wax + material = /datum/prototype/material/wax no_variants = FALSE pass_color = TRUE @@ -598,7 +598,7 @@ name = "algae sheet" icon_state = "sheet-uranium" color = "#557722" - material = /datum/material/algae + material = /datum/prototype/material/algae /obj/item/stack/material/algae/ten amount = 10 @@ -607,4 +607,4 @@ name = "carbon sheet" icon_state = "sheet-metal" color = "#303030" - material = /datum/material/carbon + material = /datum/prototype/material/carbon diff --git a/code/modules/materials/material_synth.dm b/code/modules/materials/material_synth.dm index 6dbc5a699ab..ad5b16c35ec 100644 --- a/code/modules/materials/material_synth.dm +++ b/code/modules/materials/material_synth.dm @@ -15,25 +15,25 @@ /obj/item/stack/material/cyborg/plastic icon_state = "sheet-plastic" - material = /datum/material/plastic + material = /datum/prototype/material/plastic /obj/item/stack/material/cyborg/steel icon_state = "sheet-metal" - material = /datum/material/steel + material = /datum/prototype/material/steel /obj/item/stack/material/cyborg/plasteel icon_state = "sheet-plasteel" - material = /datum/material/plasteel + material = /datum/prototype/material/plasteel /obj/item/stack/material/cyborg/wood icon_state = "sheet-wood" - material = /datum/material/wood_plank + material = /datum/prototype/material/wood_plank /obj/item/stack/material/cyborg/glass icon_state = "sheet-glass" - material = /datum/material/glass + material = /datum/prototype/material/glass /obj/item/stack/material/cyborg/glass/reinforced icon_state = "sheet-rglass" - material = /datum/material/glass/reinforced + material = /datum/prototype/material/glass/reinforced charge_costs = list(500, 1000) diff --git a/code/modules/materials/recipes.dm b/code/modules/materials/recipes.dm index c22f9bd3ef4..5162d8daf9e 100644 --- a/code/modules/materials/recipes.dm +++ b/code/modules/materials/recipes.dm @@ -1,13 +1,13 @@ /** * get recipe list */ -/datum/material/proc/get_recipes() +/datum/prototype/material/proc/get_recipes() return isnull(recipes)? generate_recipes() : recipes /** * regenerate recipes list and return it */ -/datum/material/proc/generate_recipes() +/datum/prototype/material/proc/generate_recipes() recipes = list() recipes += special_recipes() return recipes @@ -17,5 +17,5 @@ * * returns a recipe list that's added to generate_recipes() */ -/datum/material/proc/special_recipes() +/datum/prototype/material/proc/special_recipes() return list() diff --git a/code/modules/materials/stack.dm b/code/modules/materials/stack.dm index 2448d1d967a..4fde34bc003 100644 --- a/code/modules/materials/stack.dm +++ b/code/modules/materials/stack.dm @@ -8,10 +8,10 @@ * @params * * material_like - material instance, type, or id. If left out, this proc returns TRUE if we are a material stack of any kind. */ -/obj/item/proc/is_material_stack_of(datum/material/material_like) +/obj/item/proc/is_material_stack_of(datum/prototype/material/material_like) return FALSE -/obj/item/stack/material/is_material_stack_of(datum/material/material_like) +/obj/item/stack/material/is_material_stack_of(datum/prototype/material/material_like) if(istype(material_like)) return material == material_like else if(ispath(material_like)) @@ -28,10 +28,10 @@ * @params * * material_like - material instance, type, or id. If left out, this proc returns TRUE if we are a material stack of any kind. */ -/obj/item/proc/is_material_stack_of_fuzzy(datum/material/material_like) +/obj/item/proc/is_material_stack_of_fuzzy(datum/prototype/material/material_like) return FALSE -/obj/item/stack/material/is_material_stack_of_fuzzy(datum/material/material_like) +/obj/item/stack/material/is_material_stack_of_fuzzy(datum/prototype/material/material_like) if(istype(material_like)) return material == material_like else if(ispath(material_like)) diff --git a/code/modules/materials/trait.dm b/code/modules/materials/trait.dm index 2536377bb9f..4214708b4b9 100644 --- a/code/modules/materials/trait.dm +++ b/code/modules/materials/trait.dm @@ -4,7 +4,7 @@ /** * Like components, but for materials. */ -/datum/material_trait +/datum/prototype/material_trait /// trait flags: what we care about var/material_trait_flags = NONE /// only register for a material that's primary @@ -14,14 +14,14 @@ /// shieldcall should react to equipped var/should_shield_inventory = TRUE -/datum/material_trait/New() +/datum/prototype/material_trait/New() if(material_trait_flags & MATERIAL_TRAIT_SHIELD) init_shieldcall(should_shield_inventory) /** * creates a shieldcall datum that redirects to us */ -/datum/material_trait/proc/init_shieldcall(should_shield_inventory) +/datum/prototype/material_trait/proc/init_shieldcall(should_shield_inventory) if(!isnull(shieldcall)) CRASH("attempted to double-init shieldcalls") shieldcall = new(src, should_shield_inventory) @@ -39,7 +39,7 @@ * * weapon - what's damaging them. datatype semantics differs based on attack type * * attack_type - ATTACK_TYPE_* define */ -/datum/material_trait/proc/on_mob_attack(atom/host, data, mob/target, zone, datum/weapon, attack_type) +/datum/prototype/material_trait/proc/on_mob_attack(atom/host, data, mob/target, zone, datum/weapon, attack_type) return /** @@ -52,7 +52,7 @@ * * weapon - what's damaging them. datatype semantics differs based on attack type * * attack_type - ATTACK_TYPE_* define */ -/datum/material_trait/proc/on_obj_attack(atom/host, data, atom/target, datum/weapon, attack_type) +/datum/prototype/material_trait/proc/on_obj_attack(atom/host, data, atom/target, datum/weapon, attack_type) return /** @@ -71,7 +71,7 @@ * * data - metadata * * shieldcall_args - indexed list of shieldcall args. */ -/datum/material_trait/proc/on_shieldcall(atom/host, data, list/shieldcall_args) +/datum/prototype/material_trait/proc/on_shieldcall(atom/host, data, list/shieldcall_args) return /** @@ -84,13 +84,13 @@ * * examiner - person examining * * distance - distance being examined at */ -/datum/material_trait/proc/on_examine(atom/host, data, list/examine_list, atom/examiner, distance) +/datum/prototype/material_trait/proc/on_examine(atom/host, data, list/examine_list, atom/examiner, distance) return /** * called on tick from SSmaterials */ -/datum/material_trait/proc/tick(atom/host, data, dt) +/datum/prototype/material_trait/proc/tick(atom/host, data, dt) return /** @@ -105,7 +105,7 @@ * * @return changed data, that isn't null. */ -/datum/material_trait/proc/on_add(atom/host, existing_data, our_data) +/datum/prototype/material_trait/proc/on_add(atom/host, existing_data, our_data) // by default, just track how many copies we're on something return existing_data + 1 @@ -124,18 +124,18 @@ * * @return changed data, or null to fully remove. */ -/datum/material_trait/proc/on_remove(atom/host, existing_data, our_data, destroying) +/datum/prototype/material_trait/proc/on_remove(atom/host, existing_data, our_data, destroying) if(destroying) return // by default, just track how many copies we're on something return (existing_data - 1) || null -/datum/material_trait/proc/start_ticking_on(atom/target) +/datum/prototype/material_trait/proc/start_ticking_on(atom/target) if(!target.material_ticking_counter) START_TICKING_MATERIALS(target) ++target.material_ticking_counter -/datum/material_trait/proc/stop_ticking_on(atom/target) +/datum/prototype/material_trait/proc/stop_ticking_on(atom/target) --target.material_ticking_counter if(!target.material_ticking_counter) STOP_TICKING_MATERIALS(target) @@ -144,9 +144,9 @@ * material trait shieldcalls */ /datum/shieldcall/material_trait - var/datum/material_trait/trait + var/datum/prototype/material_trait/trait -/datum/shieldcall/material_trait/New(datum/material_trait/trait, should_shield_inventory) +/datum/shieldcall/material_trait/New(datum/prototype/material_trait/trait, should_shield_inventory) ..() src.trait = trait src.shields_in_inventory = should_shield_inventory diff --git a/code/modules/materials/traits/attack_nullify.dm b/code/modules/materials/traits/attack_nullify.dm index 2cba82b95f7..7ea9b9a7cc2 100644 --- a/code/modules/materials/traits/attack_nullify.dm +++ b/code/modules/materials/traits/attack_nullify.dm @@ -1,6 +1,7 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2023 Citadel Station developers. *// -/datum/material_trait/attack_nullify +/datum/prototype/material_trait/attack_nullify + id = "nulling" // #warn impl diff --git a/code/modules/materials/traits/brittle.dm b/code/modules/materials/traits/brittle.dm index 2b74a8ef293..44ff5a5409e 100644 --- a/code/modules/materials/traits/brittle.dm +++ b/code/modules/materials/traits/brittle.dm @@ -4,12 +4,13 @@ /** * Brittle materials allow things to shatter. */ -/datum/material_trait/brittle +/datum/prototype/material_trait/brittle + id = "brittle" // #warn impl /** - * called by /datum/material_trait/brittle to shatter. + * called by /datum/prototype/material_trait/brittle to shatter. */ /atom/proc/material_trait_brittle_shatter() return diff --git a/code/modules/materials/traits/glow.dm b/code/modules/materials/traits/glow.dm index 0ffbe378fca..8fa64cb36f1 100644 --- a/code/modules/materials/traits/glow.dm +++ b/code/modules/materials/traits/glow.dm @@ -11,10 +11,11 @@ * todo: this currently ignores sensitivity & significance. this is probably a good thing due to how badly light stacking can get. * todo: lohikar said to just let lightning engine do blending; we'll see but i want to avoid too many virtual lighting objects if people get insane with the glow materials. */ -/datum/material_trait/glow +/datum/prototype/material_trait/glow + id = "glow" primary_only = TRUE -/datum/material_trait/glow/on_add(atom/host, existing_data, our_data) +/datum/prototype/material_trait/glow/on_add(atom/host, existing_data, our_data) . = ..() var/atom/movable/render/material_glow/renderer if(isnull(existing_data)) @@ -24,7 +25,7 @@ renderer = locate() in host.contents renderer.set_light(our_data["power"], our_data["range"], our_data["color"]) -/datum/material_trait/glow/on_remove(atom/host, existing_data, our_data, destroying) +/datum/prototype/material_trait/glow/on_remove(atom/host, existing_data, our_data, destroying) . = ..() qdel(locate(/atom/movable/render/material_glow) in host.contents) diff --git a/code/modules/materials/traits/radioactive.dm b/code/modules/materials/traits/radioactive.dm index 9b07d09baed..710b698612b 100644 --- a/code/modules/materials/traits/radioactive.dm +++ b/code/modules/materials/traits/radioactive.dm @@ -4,4 +4,5 @@ /** * data: strength as num */ -/datum/material_trait/radioactive +/datum/prototype/material_trait/radioactive + id = "radioactive" diff --git a/code/modules/materials/traits/reactive_teleport.dm b/code/modules/materials/traits/reactive_teleport.dm index 515830f727f..0c6e7248d33 100644 --- a/code/modules/materials/traits/reactive_teleport.dm +++ b/code/modules/materials/traits/reactive_teleport.dm @@ -1,6 +1,7 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2023 Citadel Station developers. *// -/datum/material_trait/reactive_teleport +/datum/prototype/material_trait/reactive_teleport + id = "reactive-teleport" // #warn impl diff --git a/code/modules/materials/traits/reflective.dm b/code/modules/materials/traits/reflective.dm index 6ad512700e2..72c93fd4961 100644 --- a/code/modules/materials/traits/reflective.dm +++ b/code/modules/materials/traits/reflective.dm @@ -1,8 +1,8 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2023 Citadel Station developers. *// -/datum/material_trait/reflective - +/datum/prototype/material_trait/reflective + id = "reflective" // todo: reference code diff --git a/code/modules/materials/traits/supermatter.dm b/code/modules/materials/traits/supermatter.dm index 433cc92813a..9d0f4ed6254 100644 --- a/code/modules/materials/traits/supermatter.dm +++ b/code/modules/materials/traits/supermatter.dm @@ -1,6 +1,7 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2023 Citadel Station developers. *// -/datum/material_trait/supermatter +/datum/prototype/material_trait/supermatter + id = "supermatter" // #warn impl diff --git a/code/modules/mining/machinery/machine_processing.dm b/code/modules/mining/machinery/machine_processing.dm index 1de34552fa6..950f9b19713 100644 --- a/code/modules/mining/machinery/machine_processing.dm +++ b/code/modules/mining/machinery/machine_processing.dm @@ -281,7 +281,7 @@ var/can_make = clamp(ores_stored[metal],0,sheets_per_tick-sheets) if(can_make%2>0) can_make-- - var/datum/material/M = get_material_by_name(O.compresses_to) + var/datum/prototype/material/M = get_material_by_name(O.compresses_to) if(!istype(M) || !can_make || ores_stored[metal] < 1) continue @@ -295,7 +295,7 @@ var/can_make = clamp(ores_stored[metal],0,sheets_per_tick-sheets) - var/datum/material/M = get_material_by_name(O.smelts_to) + var/datum/prototype/material/M = get_material_by_name(O.smelts_to) if(!istype(M) || !can_make || ores_stored[metal] < 1) continue diff --git a/code/modules/mining/machinery/sheet_silo.dm b/code/modules/mining/machinery/sheet_silo.dm index 2fa0a3fd5cd..a385f0d4e68 100644 --- a/code/modules/mining/machinery/sheet_silo.dm +++ b/code/modules/mining/machinery/sheet_silo.dm @@ -67,7 +67,7 @@ . = ..() var/list/transformed_sheets = list() for(var/id in sheets_by_material) - var/datum/material/mat = SSmaterials.resolve_material(id) + var/datum/prototype/material/mat = RSmaterials.fetch(id) if(isnull(mat)) continue if(!persistence_allow_overpowered && (mat.material_flags & MATERIAL_FLAG_CONSIDERED_OVERPOWERED)) @@ -111,7 +111,7 @@ amount = clamp(amount, 0, sheets_by_material[id]) if(!amount) return TRUE - var/datum/material/dropping = SSmaterials.resolve_material(id) + var/datum/prototype/material/dropping = RSmaterials.fetch(id) if(isnull(dropping)) return TRUE // todo: ughh diff --git a/code/modules/mining/misc/abandonedcrates.dm b/code/modules/mining/misc/abandonedcrates.dm index 02d4988b964..0a308db349b 100644 --- a/code/modules/mining/misc/abandonedcrates.dm +++ b/code/modules/mining/misc/abandonedcrates.dm @@ -21,7 +21,7 @@ generate_loot() /obj/structure/closet/crate/secure/loot/proc/generate_loot() - var/datum/prototype/struct/loot_table/table = RCstructs.fetch(/datum/prototype/struct/loot_table/abandoned_crate) + var/datum/prototype/struct/loot_table/table = RSstructs.fetch(/datum/prototype/struct/loot_table/abandoned_crate) table.instantiate(src, 1) /obj/structure/closet/crate/secure/loot/togglelock(mob/user as mob) diff --git a/code/modules/mining/tools/kinetic_crusher.dm b/code/modules/mining/tools/kinetic_crusher.dm index 1986137c3c7..baa21a4f341 100644 --- a/code/modules/mining/tools/kinetic_crusher.dm +++ b/code/modules/mining/tools/kinetic_crusher.dm @@ -17,7 +17,7 @@ throw_speed = 4 /* armour_penetration = 10 - custom_materials = list(/datum/material/iron=1150, /datum/material/glass=2075) + custom_materials = list(/datum/prototype/material/iron=1150, /datum/prototype/material/glass=2075) */ attack_sound = 'sound/weapons/bladeslice.ogg' attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped") diff --git a/code/modules/mining/tools/shelter_atoms.dm b/code/modules/mining/tools/shelter_atoms.dm index 30dad58e23d..8f385eb6c9a 100644 --- a/code/modules/mining/tools/shelter_atoms.dm +++ b/code/modules/mining/tools/shelter_atoms.dm @@ -158,7 +158,7 @@ icon_state = "table" can_reinforce = FALSE can_plate = FALSE - material_base = /datum/material/steel + material_base = /datum/prototype/material/steel /obj/structure/table/survival_pod/update_icon() . = ..() diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 2e17f0f2749..ccd41948568 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -199,11 +199,13 @@ /obj/item/mmi/digital/Initialize(mapload) . = ..() + // HACK: if we're in repository subsystem load, skip brainmob + if(!SSrepository.initialized) + return brainmob = new(src) // brainmob.add_language("Robot Talk")//No binary without a binary communication device brainmob.add_language(LANGUAGE_GALCOM) brainmob.add_language(LANGUAGE_EAL) - brainmob.loc = src brainmob.container = src brainmob.set_stat(CONSCIOUS) brainmob.silent = FALSE @@ -308,8 +310,8 @@ /obj/item/mmi/digital/robot/Initialize(mapload) . = ..() - brainmob.name = "[pick(list("ADA","DOS","GNU","MAC","WIN","NJS","SKS","DRD","IOS","CRM","IBM","TEX","LVM","BSD",))]-[rand(1000, 9999)]" - brainmob.real_name = brainmob.name + brainmob?.name = "[pick(list("ADA","DOS","GNU","MAC","WIN","NJS","SKS","DRD","IOS","CRM","IBM","TEX","LVM","BSD",))]-[rand(1000, 9999)]" + brainmob?.real_name = brainmob.name /obj/item/mmi/digital/robot/transfer_identity(var/mob/living/carbon/H) ..() @@ -361,8 +363,8 @@ /obj/item/mmi/digital/posibrain/Initialize(mapload) . = ..() - brainmob.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]" - brainmob.real_name = brainmob.name + brainmob?.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]" + brainmob?.real_name = brainmob.name // This type shouldn't care about brainmobs. /obj/item/mmi/inert diff --git a/code/modules/mob/living/carbon/brain/robot.dm b/code/modules/mob/living/carbon/brain/robot.dm index 5a706f22d85..ee59851c0a2 100644 --- a/code/modules/mob/living/carbon/brain/robot.dm +++ b/code/modules/mob/living/carbon/brain/robot.dm @@ -18,9 +18,9 @@ /obj/item/mmi/digital/robot/Initialize(mapload) . = ..() - src.brainmob.name = "[pick(list("ADA","DOS","GNU","MAC","WIN"))]-[rand(1000, 9999)]" - src.brainmob.real_name = src.brainmob.name - src.name = "robotic intelligence circuit ([src.brainmob.name])" + src.brainmob?.name = "[pick(list("ADA","DOS","GNU","MAC","WIN"))]-[rand(1000, 9999)]" + src.brainmob?.real_name = src.brainmob.name + src.name = "robotic intelligence circuit ([src.brainmob?.name])" /obj/item/mmi/digital/robot/transfer_identity(var/mob/living/carbon/H) ..() diff --git a/code/modules/organs/internal/subtypes/voicebox.dm b/code/modules/organs/internal/subtypes/voicebox.dm index d84efbca069..07ef14e3c3c 100644 --- a/code/modules/organs/internal/subtypes/voicebox.dm +++ b/code/modules/organs/internal/subtypes/voicebox.dm @@ -14,6 +14,9 @@ /obj/item/organ/internal/voicebox/Initialize(mapload) . = ..() + // HACK: if we're in repository subsystem load, skip brainmob + if(!SSrepository.initialized) + return amend_assist_langs() /obj/item/organ/internal/voicebox/proc/amend_assist_langs() // Adds the list of language datums assisted by the voicebox to the list used in speaking diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index a7923bfaf71..4e637d35a73 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -96,6 +96,10 @@ . = ..(mapload) create_reagents(5) + // HACK: if we're in repository subsystem load, skip brainmob + if(!SSrepository.initialized) + return + if(isliving(loc)) owner = loc set_weight_class(max(src.w_class + mob_size_difference(owner.mob_size, MOB_MEDIUM), 1)) //smaller mobs have smaller organs. diff --git a/code/modules/power/engines/rust/fuel_assembly/fuel_assembly.dm b/code/modules/power/engines/rust/fuel_assembly/fuel_assembly.dm index 4bab75dd7b6..7991188780b 100644 --- a/code/modules/power/engines/rust/fuel_assembly/fuel_assembly.dm +++ b/code/modules/power/engines/rust/fuel_assembly/fuel_assembly.dm @@ -20,7 +20,7 @@ /obj/item/fuel_assembly/Initialize(mapload) . = ..() - var/datum/material/material = get_material_by_name(fuel_type) + var/datum/prototype/material/material = get_material_by_name(fuel_type) if(istype(material)) name = "[material.use_name] fuel rod assembly" desc = "A fuel rod for a fusion reactor. This one is made from [material.use_name]." diff --git a/code/modules/power/engines/rust/fuel_assembly/fuel_compressor.dm b/code/modules/power/engines/rust/fuel_assembly/fuel_compressor.dm index f1b68d25107..496e5bf6677 100644 --- a/code/modules/power/engines/rust/fuel_assembly/fuel_compressor.dm +++ b/code/modules/power/engines/rust/fuel_assembly/fuel_compressor.dm @@ -45,7 +45,7 @@ if(istype(thing, /obj/item/stack/material)) var/obj/item/stack/material/M = thing - var/datum/material/mat = M.material + var/datum/prototype/material/mat = M.material if(!mat.is_fusion_fuel) to_chat(user, "It would be pointless to make a fuel rod out of [mat.use_name].") return diff --git a/code/modules/power/engines/rust/fusion_circuits.dm b/code/modules/power/engines/rust/fusion_circuits.dm index e37ea5d0502..f6e5d25b7c0 100644 --- a/code/modules/power/engines/rust/fusion_circuits.dm +++ b/code/modules/power/engines/rust/fusion_circuits.dm @@ -61,33 +61,33 @@ /obj/item/stock_parts/capacitor/adv = 1 ) -/datum/design/circuit/fusion +/datum/prototype/design/circuit/fusion name = "fusion core control console" id = "fusion_core_control" build_path = /obj/item/circuitboard/fusion_core_control req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3, TECH_MATERIAL = 3) -/datum/design/circuit/fusion/fuel_compressor +/datum/prototype/design/circuit/fusion/fuel_compressor name = "fusion fuel compressor" id = "fusion_fuel_compressor" build_path = /obj/item/circuitboard/fusion_fuel_compressor -/datum/design/circuit/fusion/fuel_control +/datum/prototype/design/circuit/fusion/fuel_control name = "fusion fuel control console" id = "fusion_fuel_control" build_path = /obj/item/circuitboard/fusion_fuel_control -/datum/design/circuit/fusion/gyrotron_control +/datum/prototype/design/circuit/fusion/gyrotron_control name = "gyrotron control console" id = "gyrotron_control" build_path = /obj/item/circuitboard/gyrotron_control -/datum/design/circuit/fusion/core +/datum/prototype/design/circuit/fusion/core name = "fusion core" id = "fusion_core" build_path = /obj/item/circuitboard/fusion_core -/datum/design/circuit/fusion/injector +/datum/prototype/design/circuit/fusion/injector name = "fusion fuel injector" id = "fusion_injector" build_path = /obj/item/circuitboard/fusion_injector diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index c767ab964dd..f1a9fd370ad 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -208,7 +208,7 @@ to_chat(user, "You need more welding fuel to complete this task.") return - if(W.is_material_stack_of(/datum/material/steel)) + if(W.is_material_stack_of(/datum/prototype/material/steel)) var/amt = CEILING(( initial(integrity) - integrity)/10, 1) if(!amt) to_chat(user, "\The [src] is already fully repaired.") diff --git a/code/modules/power/tesla/telsa_construction.dm b/code/modules/power/tesla/telsa_construction.dm index 46f396e5d72..bd37f87b27b 100644 --- a/code/modules/power/tesla/telsa_construction.dm +++ b/code/modules/power/tesla/telsa_construction.dm @@ -5,7 +5,7 @@ origin_tech = list(TECH_MAGNET = 2, TECH_POWER = 4) req_components = list(/obj/item/stock_parts/capacitor = 1) -/datum/design/circuit/tesla_coil +/datum/prototype/design/circuit/tesla_coil name = "Machine Design (Tesla Coil Board)" desc = "The circuit board for a tesla coil." id = "CircuitTeslaCoil" @@ -19,7 +19,7 @@ materials_base = list(MAT_STEEL = 50, MAT_GLASS = 50) req_components = list() -/datum/design/circuit/grounding_rod +/datum/prototype/design/circuit/grounding_rod name = "Machine Design (Grounding Rod)" desc = "The circuit board for a grounding rod." id = "CircuitGroundingRod" diff --git a/code/modules/projectiles/ammunition/calibers/special/biomatter-wax.dm b/code/modules/projectiles/ammunition/calibers/special/biomatter-wax.dm index 4b7783cf53b..b20553c8cd2 100644 --- a/code/modules/projectiles/ammunition/calibers/special/biomatter-wax.dm +++ b/code/modules/projectiles/ammunition/calibers/special/biomatter-wax.dm @@ -10,7 +10,7 @@ projectile_type = /obj/projectile/bullet/organic/wax caliber = /datum/ammo_caliber/biomatter/wax materials_base = list( - /datum/material/wax::id = 100, + /datum/prototype/material/wax::id = 100, ) /obj/item/ammo_magazine/biovial @@ -26,6 +26,6 @@ ammo_caliber = /datum/ammo_caliber/biomatter/wax ammo_preload = /obj/item/ammo_casing/biomatter/wax materials_base = list( - /datum/material/wax::id = 100, + /datum/prototype/material/wax::id = 100, ) ammo_max = 10 diff --git a/code/modules/projectiles/ammunition/calibers/special/pellet.dm b/code/modules/projectiles/ammunition/calibers/special/pellet.dm index b0e3df75fc8..307aacfb37b 100644 --- a/code/modules/projectiles/ammunition/calibers/special/pellet.dm +++ b/code/modules/projectiles/ammunition/calibers/special/pellet.dm @@ -12,7 +12,7 @@ projectile_type = /obj/projectile/bullet/practice casing_flags = CASING_DELETE materials_base = list( - /datum/material/plastic::id = 10, + /datum/prototype/material/plastic::id = 10, ) //* Magazines *// @@ -31,6 +31,6 @@ ammo_preload = /obj/item/ammo_casing/p_pellet magazine_type = MAGAZINE_TYPE_BOX materials_base = list( - /datum/material/steel::id = 100, + /datum/prototype/material/steel::id = 100, ) ammo_max = 50 diff --git a/code/modules/projectiles/guns/launcher/crossbow.dm b/code/modules/projectiles/guns/launcher/crossbow.dm index 7a8b820ca17..bfe7d6f0323 100644 --- a/code/modules/projectiles/guns/launcher/crossbow.dm +++ b/code/modules/projectiles/guns/launcher/crossbow.dm @@ -269,7 +269,7 @@ else to_chat(user, "You need at least five segments of cable coil to complete this task.") return - else if(W.is_material_stack_of(/datum/material/plastic)) + else if(W.is_material_stack_of(/datum/prototype/material/plastic)) if(buildstate == 3) var/obj/item/stack/material/P = W if(P.use(3)) diff --git a/code/modules/projectiles/guns/launcher/pneumatic.dm b/code/modules/projectiles/guns/launcher/pneumatic.dm index df03dbe076b..f990a8d6935 100644 --- a/code/modules/projectiles/guns/launcher/pneumatic.dm +++ b/code/modules/projectiles/guns/launcher/pneumatic.dm @@ -182,7 +182,7 @@ buildstate++ update_icon() return - else if(W.is_material_stack_of(/datum/material/steel)) + else if(W.is_material_stack_of(/datum/prototype/material/steel)) if(buildstate == 2) var/obj/item/stack/material/M = W if(M.use(5)) diff --git a/code/modules/projectiles/guns/magnetic/magnetic_construction.dm b/code/modules/projectiles/guns/magnetic/magnetic_construction.dm index 92b106805ab..a44db7c508c 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic_construction.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic_construction.dm @@ -9,7 +9,7 @@ /obj/item/coilgun_assembly/attackby(var/obj/item/thing, var/mob/user) - if(thing.is_material_stack_of(/datum/material/steel) && construction_stage == 1) + if(thing.is_material_stack_of(/datum/prototype/material/steel) && construction_stage == 1) var/obj/item/stack/material/reinforcing = thing if(reinforcing.get_amount() < 5) to_chat(user, "You need at least 5 [reinforcing.singular_name]\s for this task.") diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm index a80fb57c6f1..382bf99d4ac 100644 --- a/code/modules/projectiles/guns/projectile/rocket.dm +++ b/code/modules/projectiles/guns/projectile/rocket.dm @@ -176,7 +176,7 @@ /obj/item/gun/ballistic/rocket/tyrmalin/attackby(var/obj/item/A as obj, mob/user as mob) . = ..() - if(A.is_material_stack_of(/datum/material/plasteel)) + if(A.is_material_stack_of(/datum/prototype/material/plasteel)) var/obj/item/stack/material/M = A if(M.use(1)) var/obj/item/tyrmalin_rocket_assembly/R = new /obj/item/tyrmalin_rocket_assembly(get_turf(src)) diff --git a/code/modules/reagents/machinery/dispenser/cartridge.dm b/code/modules/reagents/machinery/dispenser/cartridge.dm index 676e634909a..c456013f842 100644 --- a/code/modules/reagents/machinery/dispenser/cartridge.dm +++ b/code/modules/reagents/machinery/dispenser/cartridge.dm @@ -57,7 +57,7 @@ name = "large dispenser cartridge" volume = 1000 materials_base = list( - /datum/material/plastic::id = 5 * /datum/material/plastic::sheet_amount, + /datum/prototype/material/plastic::id = 5 * /datum/prototype/material/plastic::sheet_amount, ) worth_intrinsic = 100 @@ -65,7 +65,7 @@ name = "medium dispenser cartridge" volume = 500 materials_base = list( - /datum/material/plastic::id = 3 * /datum/material/plastic::sheet_amount, + /datum/prototype/material/plastic::id = 3 * /datum/prototype/material/plastic::sheet_amount, ) worth_intrinsic = 75 @@ -73,6 +73,6 @@ name = "small dispenser cartridge" volume = 250 materials_base = list( - /datum/material/plastic::id = 1 * /datum/material/plastic::sheet_amount, + /datum/prototype/material/plastic::id = 1 * /datum/prototype/material/plastic::sheet_amount, ) worth_intrinsic = 50 diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 9aa67ed0cd0..6088bce7071 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -292,7 +292,7 @@ user.put_in_hands_or_drop(new /obj/item/clothing/head/helmet/bucket) qdel(src) return - else if(D.is_material_stack_of(/datum/material/steel)) + else if(D.is_material_stack_of(/datum/prototype/material/steel)) var/obj/item/stack/material/M = D if (M.use(1)) var/obj/item/secbot_assembly/edCLN_assembly/B = new /obj/item/secbot_assembly/edCLN_assembly(get_turf(src)) diff --git a/code/modules/research/design.dm b/code/modules/research/design.dm index 86b3a330694..6725aa552ed 100644 --- a/code/modules/research/design.dm +++ b/code/modules/research/design.dm @@ -2,13 +2,13 @@ /** * legacy science designs */ -/datum/design/science - abstract_type = /datum/design/science +/datum/prototype/design/science + abstract_type = /datum/prototype/design/science lathe_type = LATHE_TYPE_PROTOLATHE var/legacy_stack_amount = 1 //Make sure items don't get free power -/datum/design/science/print(atom/where, amount, list/material_parts, list/ingredient_parts, list/reagent_parts, cost_multiplier = 1) +/datum/prototype/design/science/print(atom/where, amount, list/material_parts, list/ingredient_parts, list/reagent_parts, cost_multiplier = 1) if(isnull(amount) || amount == 1) if(is_stack) amount = legacy_stack_amount diff --git a/code/modules/research/designs/HUDs.dm b/code/modules/research/designs/HUDs.dm index c7a98fcafa6..8001bfc8b88 100644 --- a/code/modules/research/designs/HUDs.dm +++ b/code/modules/research/designs/HUDs.dm @@ -1,39 +1,39 @@ -/datum/design/science/hud - abstract_type = /datum/design/science/hud +/datum/prototype/design/science/hud + abstract_type = /datum/prototype/design/science/hud materials_base = list(MAT_STEEL = 50, MAT_GLASS = 50) -/datum/design/science/hud/generate_name(template) +/datum/prototype/design/science/hud/generate_name(template) return "HUD glasses prototype ([..()])" -/datum/design/science/hud/generate_desc(template_name, template_desc) +/datum/prototype/design/science/hud/generate_desc(template_name, template_desc) return "Allows for the construction of \a [template_name] HUD glasses." -/datum/design/science/hud/health +/datum/prototype/design/science/hud/health design_name = "health scanner" id = "health_hud" req_tech = list(TECH_BIO = 2, TECH_MAGNET = 3) build_path = /obj/item/clothing/glasses/hud/health -/datum/design/science/hud/security +/datum/prototype/design/science/hud/security design_name = "security records" id = "security_hud" req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2) build_path = /obj/item/clothing/glasses/hud/security -/datum/design/science/hud/mesons +/datum/prototype/design/science/hud/mesons design_name = "optical meson scanner" id = "mesons" req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) build_path = /obj/item/clothing/glasses/meson -/datum/design/science/hud/material +/datum/prototype/design/science/hud/material design_name = "optical material scanner" id = "material" req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3) build_path = /obj/item/clothing/glasses/material /* Graviton't -/datum/design/science/hud/graviton_visor +/datum/prototype/design/science/hud/graviton_visor design_name = "graviton visor" id = "graviton_goggles" req_tech = list(TECH_MAGNET = 5, TECH_ENGINEERING = 3, TECH_BLUESPACE = 3, TECH_PHORON = 3) @@ -41,7 +41,7 @@ build_path = /obj/item/clothing/glasses/graviton */ -/datum/design/science/hud/omni +/datum/prototype/design/science/hud/omni design_name = "AR glasses" id = "omnihud" req_tech = list(TECH_MAGNET = 4, TECH_COMBAT = 3, TECH_BIO = 3) diff --git a/code/modules/research/designs/ai_holders.dm b/code/modules/research/designs/ai_holders.dm index 468ba42b2da..b469c8387d3 100644 --- a/code/modules/research/designs/ai_holders.dm +++ b/code/modules/research/designs/ai_holders.dm @@ -1,11 +1,11 @@ -/datum/design/science/ai_holder - abstract_type = /datum/design/science/ai_holder +/datum/prototype/design/science/ai_holder + abstract_type = /datum/prototype/design/science/ai_holder // Various AI/mind holding device -/datum/design/science/ai_holder/generate_name(template) +/datum/prototype/design/science/ai_holder/generate_name(template) return "Mind storage device prototype ([..()])" -/datum/design/science/ai_holder/mmi +/datum/prototype/design/science/ai_holder/mmi design_name = "Man-machine interface" id = "mmi" req_tech = list(TECH_DATA = 2, TECH_BIO = 3) @@ -14,7 +14,7 @@ build_path = /obj/item/mmi category = list("Misc") -/datum/design/science/ai_holder/posibrain +/datum/prototype/design/science/ai_holder/posibrain design_name = "Positronic brain" id = "posibrain" req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 6, TECH_BLUESPACE = 2, TECH_DATA = 4) @@ -23,7 +23,7 @@ build_path = /obj/item/mmi/digital/posibrain category = list("Misc") -/datum/design/science/ai_holder/dronebrain +/datum/prototype/design/science/ai_holder/dronebrain design_name = "Robotic intelligence circuit" id = "dronebrain" req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_DATA = 4) @@ -32,14 +32,14 @@ build_path = /obj/item/mmi/digital/robot category = list("Misc") -/datum/design/science/ai_holder/paicard +/datum/prototype/design/science/ai_holder/paicard design_name = "'pAI', personal artificial intelligence device" id = "paicard" req_tech = list(TECH_DATA = 2) materials_base = list(MAT_GLASS = 500, MAT_STEEL = 500) build_path = /obj/item/paicard -/datum/design/science/ai_holder/intellicard +/datum/prototype/design/science/ai_holder/intellicard design_name = "intelliCore" desc = "Allows for the construction of an intelliCore." id = "intellicore" diff --git a/code/modules/research/designs/bag_of_holding.dm b/code/modules/research/designs/bag_of_holding.dm index 746aae9d3b9..d39679f6cd6 100644 --- a/code/modules/research/designs/bag_of_holding.dm +++ b/code/modules/research/designs/bag_of_holding.dm @@ -1,10 +1,10 @@ -/datum/design/science/boh - abstract_type = /datum/design/science/boh +/datum/prototype/design/science/boh + abstract_type = /datum/prototype/design/science/boh -/datum/design/science/boh/generate_name(template) +/datum/prototype/design/science/boh/generate_name(template) return "Bluespace storage prototype ([..()])" -/datum/design/science/boh/bag_holding +/datum/prototype/design/science/boh/bag_holding design_name = "Bag of Holding" desc = "Using localized pockets of bluespace this bag prototype offers incredible storage capacity with the contents weighting nothing. It's a shame the bag itself is pretty heavy." id = "bag_holding" @@ -12,7 +12,7 @@ materials_base = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250) build_path = /obj/item/storage/backpack/holding -/datum/design/science/boh/dufflebag_holding +/datum/prototype/design/science/boh/dufflebag_holding design_name = "DuffleBag of Holding" desc = "A minaturized prototype of the popular Bag of Holding, the Dufflebag of Holding is, functionally, identical to the bag of holding, but comes in a more stylish and compact form." id = "duffle-holding" diff --git a/code/modules/research/designs/beakers.dm b/code/modules/research/designs/beakers.dm index 4ac69fe4345..87f23c8de1a 100644 --- a/code/modules/research/designs/beakers.dm +++ b/code/modules/research/designs/beakers.dm @@ -1,10 +1,10 @@ -/datum/design/science/beaker - abstract_type = /datum/design/science/beaker +/datum/prototype/design/science/beaker + abstract_type = /datum/prototype/design/science/beaker -/datum/design/science/beaker/generate_name(template) +/datum/prototype/design/science/beaker/generate_name(template) return "Beaker prototype ([template])" -/datum/design/science/beaker/noreact +/datum/prototype/design/science/beaker/noreact design_name = "cryostasis" desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units." id = "splitbeaker" @@ -12,7 +12,7 @@ materials_base = list(MAT_STEEL = 3000) build_path = /obj/item/reagent_containers/glass/beaker/noreact -/datum/design/science/beaker/bluespace +/datum/prototype/design/science/beaker/bluespace design_name = TECH_BLUESPACE desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units." id = "bluespacebeaker" diff --git a/code/modules/research/designs/bio_devices.dm b/code/modules/research/designs/bio_devices.dm index 601866a740d..d0cc53b63cc 100644 --- a/code/modules/research/designs/bio_devices.dm +++ b/code/modules/research/designs/bio_devices.dm @@ -1,44 +1,44 @@ -/datum/design/science/biotech - abstract_type = /datum/design/science/biotech +/datum/prototype/design/science/biotech + abstract_type = /datum/prototype/design/science/biotech materials_base = list(MAT_STEEL = 30, MAT_GLASS = 20) -/datum/design/science/biotech/generate_name(template) +/datum/prototype/design/science/biotech/generate_name(template) return "Biotech device prototype ([..()])" // Biotech of various types -/datum/design/science/biotech/mass_spectrometer +/datum/prototype/design/science/biotech/mass_spectrometer desc = "A device for analyzing chemicals in blood." id = "mass_spectrometer" req_tech = list(TECH_BIO = 2, TECH_MAGNET = 2) build_path = /obj/item/mass_spectrometer -/datum/design/science/biotech/adv_mass_spectrometer +/datum/prototype/design/science/biotech/adv_mass_spectrometer desc = "A device for analyzing chemicals in blood and their quantities." id = "adv_mass_spectrometer" req_tech = list(TECH_BIO = 2, TECH_MAGNET = 4) build_path = /obj/item/mass_spectrometer/adv -/datum/design/science/biotech/reagent_scanner +/datum/prototype/design/science/biotech/reagent_scanner desc = "A device for identifying chemicals." id = "reagent_scanner" req_tech = list(TECH_BIO = 2, TECH_MAGNET = 2) build_path = /obj/item/reagent_scanner -/datum/design/science/biotech/adv_reagent_scanner +/datum/prototype/design/science/biotech/adv_reagent_scanner desc = "A device for identifying chemicals and their proportions." id = "adv_reagent_scanner" req_tech = list(TECH_BIO = 2, TECH_MAGNET = 4) build_path = /obj/item/reagent_scanner/adv -/datum/design/science/biotech/robot_scanner +/datum/prototype/design/science/biotech/robot_scanner desc = "A hand-held scanner able to diagnose robotic injuries." id = "robot_scanner" req_tech = list(TECH_MAGNET = 3, TECH_BIO = 2, TECH_ENGINEERING = 3) materials_base = list(MAT_STEEL = 500, MAT_GLASS = 200) build_path = /obj/item/robotanalyzer -/datum/design/science/biotech/nanopaste +/datum/prototype/design/science/biotech/nanopaste desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery." id = "nanopaste" req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3) @@ -46,28 +46,28 @@ build_path = /obj/item/stack/nanopaste legacy_stack_amount = 10 -/datum/design/science/biotech/plant_analyzer +/datum/prototype/design/science/biotech/plant_analyzer desc = "A device capable of quickly scanning all relevant data about a plant." id = "plant_analyzer" req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) materials_base = list(MAT_STEEL = 500, MAT_GLASS = 500) build_path = /obj/item/plant_analyzer -/datum/design/science/biotech/nif +/datum/prototype/design/science/biotech/nif design_name = "nanite implant framework" id = "nif" req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 8000, MAT_URANIUM = 6000, MAT_DIAMOND = 6000) build_path = /obj/item/nif -/datum/design/science/biotech/nifbio +/datum/prototype/design/science/biotech/nifbio design_name = "bioadaptive NIF" id = "bioadapnif" req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5, TECH_BIO = 5) materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 15000, MAT_URANIUM = 10000, MAT_DIAMOND = 10000) build_path = /obj/item/nif/bioadap -/datum/design/science/biotech/nifrepairtool +/datum/prototype/design/science/biotech/nifrepairtool design_name = "adv. NIF repair tool" id = "anrt" req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5) diff --git a/code/modules/research/designs/circuit_assembly.dm b/code/modules/research/designs/circuit_assembly.dm index 85f4614ec47..bc0ff0c92fd 100644 --- a/code/modules/research/designs/circuit_assembly.dm +++ b/code/modules/research/designs/circuit_assembly.dm @@ -1,10 +1,10 @@ -/datum/design/science/integrated_circuitry - abstract_type = /datum/design/science/integrated_circuitry +/datum/prototype/design/science/integrated_circuitry + abstract_type = /datum/prototype/design/science/integrated_circuitry -/datum/design/science/integrated_circuitry/generate_name(template) +/datum/prototype/design/science/integrated_circuitry/generate_name(template) return "Circuitry device design ([..()])" -/datum/design/science/integrated_circuitry/custom_circuit_printer +/datum/prototype/design/science/integrated_circuitry/custom_circuit_printer design_name = "Portable integrated circuit printer" desc = "A portable(ish) printer for modular machines." id = "ic_printer" @@ -12,7 +12,7 @@ materials_base = list(MAT_STEEL = 10000) build_path = /obj/item/integrated_circuit_printer -/datum/design/science/integrated_circuitry/custom_circuit_printer_upgrade +/datum/prototype/design/science/integrated_circuitry/custom_circuit_printer_upgrade design_name = "Integrated circuit printer upgrade - advanced designs" desc = "Allows the integrated circuit printer to create advanced circuits" id = "ic_printer_upgrade_adv" @@ -20,14 +20,14 @@ materials_base = list(MAT_STEEL = 2000) build_path = /obj/item/disk/integrated_circuit/upgrade/advanced -/datum/design/science/integrated_circuitry/wirer +/datum/prototype/design/science/integrated_circuitry/wirer design_name = "Custom wirer tool" id = "wirer" req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 2500) build_path = /obj/item/integrated_electronics/wirer -/datum/design/science/integrated_circuitry/debugger +/datum/prototype/design/science/integrated_circuitry/debugger design_name = "Custom circuit debugger tool" id = "debugger" req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2) @@ -36,13 +36,13 @@ // Assemblies -/datum/design/science/integrated_circuitry/assembly - abstract_type = /datum/design/science/integrated_circuitry/assembly +/datum/prototype/design/science/integrated_circuitry/assembly + abstract_type = /datum/prototype/design/science/integrated_circuitry/assembly -/datum/design/science/integrated_circuitry/assembly/generate_name(template) +/datum/prototype/design/science/integrated_circuitry/assembly/generate_name(template) return "Circuitry assembly design ([..()])" -/datum/design/science/integrated_circuitry/assembly/custom_circuit_assembly_small +/datum/prototype/design/science/integrated_circuitry/assembly/custom_circuit_assembly_small design_name = "Small custom assembly" desc = "A customizable assembly for simple, small devices." id = "assembly-small" @@ -50,7 +50,7 @@ materials_base = list(MAT_STEEL = 10000) build_path = /obj/item/electronic_assembly -/datum/design/science/integrated_circuitry/assembly/custom_circuit_assembly_medium +/datum/prototype/design/science/integrated_circuitry/assembly/custom_circuit_assembly_medium design_name = "Medium custom assembly" desc = "A customizable assembly suited for more ambitious mechanisms." id = "assembly-medium" @@ -58,7 +58,7 @@ materials_base = list(MAT_STEEL = 20000) build_path = /obj/item/electronic_assembly/medium -/datum/design/science/integrated_circuitry/assembly/custom_circuit_assembly_large +/datum/prototype/design/science/integrated_circuitry/assembly/custom_circuit_assembly_large design_name = "Large custom assembly" desc = "A customizable assembly for large machines." id = "assembly-large" @@ -66,7 +66,7 @@ materials_base = list(MAT_STEEL = 40000) build_path = /obj/item/electronic_assembly/large -/datum/design/science/integrated_circuitry/assembly/custom_circuit_assembly_drone +/datum/prototype/design/science/integrated_circuitry/assembly/custom_circuit_assembly_drone design_name = "Drone custom assembly" desc = "A customizable assembly optimized for autonomous devices." id = "assembly-drone" @@ -74,7 +74,7 @@ materials_base = list(MAT_STEEL = 30000) build_path = /obj/item/electronic_assembly/drone -/datum/design/science/integrated_circuitry/assembly/custom_circuit_assembly_device +/datum/prototype/design/science/integrated_circuitry/assembly/custom_circuit_assembly_device design_name = "Device custom assembly" desc = "An customizable assembly designed to interface with other devices." id = "assembly-device" @@ -82,7 +82,7 @@ materials_base = list(MAT_STEEL = 5000) build_path = /obj/item/assembly/electronic_assembly -/datum/design/science/integrated_circuitry/assembly/custom_circuit_assembly_implant +/datum/prototype/design/science/integrated_circuitry/assembly/custom_circuit_assembly_implant design_name = "Implant custom assembly" desc = "An customizable assembly for very small devices, implanted into living entities." id = "assembly-implant" diff --git a/code/modules/research/designs/circuits/ai_modules.dm b/code/modules/research/designs/circuits/ai_modules.dm index 1ed7b97916a..60966c3ab3e 100644 --- a/code/modules/research/designs/circuits/ai_modules.dm +++ b/code/modules/research/designs/circuits/ai_modules.dm @@ -1,95 +1,95 @@ -/datum/design/aimodule - abstract_type = /datum/design/aimodule +/datum/prototype/design/aimodule + abstract_type = /datum/prototype/design/aimodule lathe_type = LATHE_TYPE_CIRCUIT materials_base = list(MAT_GLASS = 2000, MAT_GOLD = 100) -/datum/design/aimodule/generate_name(template) +/datum/prototype/design/aimodule/generate_name(template) return "AI module design ([template])" -/datum/design/aimodule/generate_desc(template_name, template_desc) +/datum/prototype/design/aimodule/generate_desc(template_name, template_desc) return "Allows for the construction of \a '[template_name]' AI module." -/datum/design/aimodule/safeguard +/datum/prototype/design/aimodule/safeguard design_name = "Safeguard" id = "safeguard" req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4) build_path = /obj/item/aiModule/safeguard -/datum/design/aimodule/onehuman +/datum/prototype/design/aimodule/onehuman design_name = "OneCrewMember" id = "onehuman" req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6) build_path = /obj/item/aiModule/oneHuman -/datum/design/aimodule/protectstation +/datum/prototype/design/aimodule/protectstation design_name = "ProtectStation" id = "protectstation" req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6) build_path = /obj/item/aiModule/protectStation -/datum/design/aimodule/notele +/datum/prototype/design/aimodule/notele design_name = "TeleporterOffline" id = "notele" req_tech = list(TECH_DATA = 3) build_path = /obj/item/aiModule/teleporterOffline -/datum/design/aimodule/quarantine +/datum/prototype/design/aimodule/quarantine design_name = "Quarantine" id = "quarantine" req_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MATERIAL = 4) build_path = /obj/item/aiModule/quarantine -/datum/design/aimodule/oxygen +/datum/prototype/design/aimodule/oxygen design_name = "OxygenIsToxicToHumans" id = "oxygen" req_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MATERIAL = 4) build_path = /obj/item/aiModule/oxygen -/datum/design/aimodule/freeform +/datum/prototype/design/aimodule/freeform design_name = "Freeform" id = "freeform" req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4) build_path = /obj/item/aiModule/freeform -/datum/design/aimodule/reset +/datum/prototype/design/aimodule/reset design_name = "Reset" id = "reset" req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6) build_path = /obj/item/aiModule/reset -/datum/design/aimodule/purge +/datum/prototype/design/aimodule/purge design_name = "Purge" id = "purge" req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6) build_path = /obj/item/aiModule/purge // Core modules -/datum/design/aimodule/core - abstract_type = /datum/design/aimodule/core +/datum/prototype/design/aimodule/core + abstract_type = /datum/prototype/design/aimodule/core req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6) -/datum/design/aimodule/core/generate_name(template) +/datum/prototype/design/aimodule/core/generate_name(template) return "AI core module design ([template])" -/datum/design/aimodule/core/generate_desc(template_name, template_desc) +/datum/prototype/design/aimodule/core/generate_desc(template_name, template_desc) return "Allows for the construction of \a '[template_name]' AI core module." -/datum/design/aimodule/core/freeformcore +/datum/prototype/design/aimodule/core/freeformcore design_name = "Freeform" id = "freeformcore" build_path = /obj/item/aiModule/freeformcore -/datum/design/aimodule/core/asimov +/datum/prototype/design/aimodule/core/asimov design_name = "Asimov" id = "asimov" build_path = /obj/item/aiModule/asimov -/datum/design/aimodule/core/paladin +/datum/prototype/design/aimodule/core/paladin design_name = "P.A.L.A.D.I.N." id = "paladin" build_path = /obj/item/aiModule/paladin -/datum/design/aimodule/core/tyrant +/datum/prototype/design/aimodule/core/tyrant design_name = "T.Y.R.A.N.T." id = "tyrant" req_tech = list(TECH_DATA = 4, TECH_ILLEGAL = 2, TECH_MATERIAL = 6) diff --git a/code/modules/research/designs/circuits/circuit.dm b/code/modules/research/designs/circuits/circuit.dm index 9c6d44a1bd9..6809951a2bf 100644 --- a/code/modules/research/designs/circuits/circuit.dm +++ b/code/modules/research/designs/circuits/circuit.dm @@ -1,2 +1,2 @@ -/datum/design/circuit - abstract_type = /datum/design/circuit +/datum/prototype/design/circuit + abstract_type = /datum/prototype/design/circuit diff --git a/code/modules/research/designs/circuits/circuits.dm b/code/modules/research/designs/circuits/circuits.dm index 4394590c450..359c0a19590 100644 --- a/code/modules/research/designs/circuits/circuits.dm +++ b/code/modules/research/designs/circuits/circuits.dm @@ -2,14 +2,14 @@ CIRCUITS BELOW */ -/datum/design/circuit +/datum/prototype/design/circuit lathe_type = LATHE_TYPE_CIRCUIT req_tech = list(TECH_DATA = 2) materials_base = list(MAT_GLASS = 2000) reagents = list("sacid" = 20) work = (5 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. -/datum/design/circuit/generate_name(template) +/datum/prototype/design/circuit/generate_name(template) if(build_path) var/obj/item/circuitboard/C = build_path if(initial(C.board_type) == "machine") @@ -19,490 +19,490 @@ CIRCUITS BELOW else return "Circuit design ([..()])" -/datum/design/circuit/generate_desc(template_name, template_desc) +/datum/prototype/design/circuit/generate_desc(template_name, template_desc) return "Allows for the construction of \a [build_name] circuit board." -/datum/design/circuit/arcademachine +/datum/prototype/design/circuit/arcademachine design_name = "battle arcade machine" id = "arcademachine" req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/arcade/battle -/datum/design/circuit/oriontrail +/datum/prototype/design/circuit/oriontrail design_name = "orion trail arcade machine" id = "oriontrail" req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/arcade/orion_trail -/datum/design/circuit/clawmachine +/datum/prototype/design/circuit/clawmachine design_name = "grab-a-gift arcade machine" id = "clawmachine" req_tech = list(TECH_DATA = 1) build_path = /obj/item/circuitboard/arcade/clawmachine -/datum/design/circuit/jukebox +/datum/prototype/design/circuit/jukebox design_name = "jukebox" id = "jukebox" req_tech = list(TECH_MAGNET = 2, TECH_DATA = 1) build_path = /obj/item/circuitboard/jukebox -/datum/design/circuit/seccamera +/datum/prototype/design/circuit/seccamera design_name = "security camera monitor" id = "seccamera" build_path = /obj/item/circuitboard/security -/datum/design/circuit/secdata +/datum/prototype/design/circuit/secdata design_name = "security records console" id = "sec_data" build_path = /obj/item/circuitboard/secure_data -/datum/design/circuit/prisonmanage +/datum/prototype/design/circuit/prisonmanage design_name = "prisoner management console" id = "prisonmanage" build_path = /obj/item/circuitboard/prisoner -/datum/design/circuit/med_data +/datum/prototype/design/circuit/med_data design_name = "medical records console" id = "med_data" build_path = /obj/item/circuitboard/med_data -/datum/design/circuit/operating +/datum/prototype/design/circuit/operating design_name = "patient monitoring console" id = "operating" build_path = /obj/item/circuitboard/operating -/datum/design/circuit/scan_console +/datum/prototype/design/circuit/scan_console design_name = "DNA machine" id = "scan_console" build_path = /obj/item/circuitboard/scan_consolenew -/datum/design/circuit/clonecontrol +/datum/prototype/design/circuit/clonecontrol design_name = "cloning control console" id = "clonecontrol" req_tech = list(TECH_DATA = 3, TECH_BIO = 3) build_path = /obj/item/circuitboard/cloning -/datum/design/circuit/clonepod +/datum/prototype/design/circuit/clonepod design_name = "clone pod" id = "clonepod" req_tech = list(TECH_DATA = 3, TECH_BIO = 3) build_path = /obj/item/circuitboard/clonepod -/datum/design/circuit/clonescanner +/datum/prototype/design/circuit/clonescanner design_name = "cloning scanner" id = "clonescanner" req_tech = list(TECH_DATA = 3, TECH_BIO = 3) build_path = /obj/item/circuitboard/clonescanner -/datum/design/circuit/crewconsole +/datum/prototype/design/circuit/crewconsole design_name = "crew monitoring console" id = "crewconsole" req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2, TECH_BIO = 2) build_path = /obj/item/circuitboard/crew -/datum/design/circuit/teleconsole +/datum/prototype/design/circuit/teleconsole design_name = "teleporter control console" id = "teleconsole" req_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 2) build_path = /obj/item/circuitboard/teleporter -/datum/design/circuit/robocontrol +/datum/prototype/design/circuit/robocontrol design_name = "robotics control console" id = "robocontrol" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/robotics -/datum/design/circuit/mechacontrol +/datum/prototype/design/circuit/mechacontrol design_name = "exosuit control console" id = "mechacontrol" req_tech = list(TECH_DATA = 3) build_path = /obj/item/circuitboard/mecha_control -/datum/design/circuit/rdconsole +/datum/prototype/design/circuit/rdconsole design_name = "R&D control console" id = "rdconsole" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/rdconsole -/datum/design/circuit/aifixer +/datum/prototype/design/circuit/aifixer design_name = "AI integrity restorer" id = "aifixer" req_tech = list(TECH_DATA = 3, TECH_BIO = 2) build_path = /obj/item/circuitboard/aifixer -/datum/design/circuit/comm_monitor +/datum/prototype/design/circuit/comm_monitor design_name = "telecommunications monitoring console" id = "comm_monitor" req_tech = list(TECH_DATA = 3) build_path = /obj/item/circuitboard/comm_monitor -/datum/design/circuit/comm_server +/datum/prototype/design/circuit/comm_server design_name = "telecommunications server monitoring console" id = "comm_server" req_tech = list(TECH_DATA = 3) build_path = /obj/item/circuitboard/comm_server -/datum/design/circuit/message_monitor +/datum/prototype/design/circuit/message_monitor design_name = "messaging monitor console" id = "message_monitor" req_tech = list(TECH_DATA = 5) build_path = /obj/item/circuitboard/message_monitor -/datum/design/circuit/aiupload +/datum/prototype/design/circuit/aiupload design_name = "AI upload console" id = "aiupload" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/aiupload -/datum/design/circuit/borgupload +/datum/prototype/design/circuit/borgupload design_name = "cyborg upload console" id = "borgupload" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/borgupload -/datum/design/circuit/destructive_analyzer +/datum/prototype/design/circuit/destructive_analyzer design_name = "destructive analyzer" id = "destructive_analyzer" req_tech = list(TECH_DATA = 2, TECH_MAGNET = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/destructive_analyzer -/datum/design/circuit/protolathe +/datum/prototype/design/circuit/protolathe design_name = "protolathe" id = "protolathe" req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/protolathe -/datum/design/circuit/circuit_imprinter +/datum/prototype/design/circuit/circuit_imprinter design_name = "circuit imprinter" id = "circuit_imprinter" req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/circuit_imprinter -/datum/design/circuit/autolathe +/datum/prototype/design/circuit/autolathe design_name = "autolathe board" id = "autolathe" req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/machine/lathe/autolathe -/datum/design/circuit/rdservercontrol +/datum/prototype/design/circuit/rdservercontrol design_name = "R&D server control console" id = "rdservercontrol" req_tech = list(TECH_DATA = 3) build_path = /obj/item/circuitboard/rdservercontrol -/datum/design/circuit/rdserver +/datum/prototype/design/circuit/rdserver design_name = "R&D server" id = "rdserver" req_tech = list(TECH_DATA = 3) build_path = /obj/item/circuitboard/rdserver -/datum/design/circuit/mechfab +/datum/prototype/design/circuit/mechfab design_name = "exosuit fabricator" id = "mechfab" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/mechfab -/datum/design/circuit/prosfab +/datum/prototype/design/circuit/prosfab design_name = "prosthetics fabricator" id = "prosfab" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/prosthetics -/datum/design/circuit/processor +/datum/prototype/design/circuit/processor design_name = "slime processor" id = "slime_processor" req_tech = list(TECH_DATA = 2, TECH_BIO = 2) build_path = /obj/item/circuitboard/processor -/datum/design/circuit/mech_recharger +/datum/prototype/design/circuit/mech_recharger design_name = "mech recharger" id = "mech_recharger" req_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/mech_recharger -/datum/design/circuit/recharge_station +/datum/prototype/design/circuit/recharge_station design_name = "cyborg recharge station" id = "recharge_station" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/recharge_station -/datum/design/circuit/atmosalerts +/datum/prototype/design/circuit/atmosalerts design_name = "atmosphere alert console" id = "atmosalerts" build_path = /obj/item/circuitboard/atmos_alert -/datum/design/circuit/air_management +/datum/prototype/design/circuit/air_management design_name = "atmosphere monitoring console" id = "air_management" build_path = /obj/item/circuitboard/air_management -/datum/design/circuit/rcon_console +/datum/prototype/design/circuit/rcon_console design_name = "RCON remote control console" id = "rcon_console" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_POWER = 5) build_path = /obj/item/circuitboard/rcon_console -/datum/design/circuit/dronecontrol +/datum/prototype/design/circuit/dronecontrol design_name = "drone control console" id = "dronecontrol" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/drone_control -/datum/design/circuit/powermonitor +/datum/prototype/design/circuit/powermonitor design_name = "power monitoring console" id = "powermonitor" build_path = /obj/item/circuitboard/powermonitor -/datum/design/circuit/solarcontrol +/datum/prototype/design/circuit/solarcontrol design_name = "solar control console" id = "solarcontrol" build_path = /obj/item/circuitboard/solar_control /* -/datum/design/circuit/shutoff_monitor +/datum/prototype/design/circuit/shutoff_monitor design_name = "Automatic shutoff valve monitor" id = "shutoff_monitor" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/shutoff_monitor */ -/datum/design/circuit/pacman +/datum/prototype/design/circuit/pacman design_name = "PACMAN-type generator" id = "pacman" req_tech = list(TECH_DATA = 3, TECH_PHORON = 3, TECH_POWER = 3, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/pacman -/datum/design/circuit/superpacman +/datum/prototype/design/circuit/superpacman design_name = "SUPERPACMAN-type generator" id = "superpacman" req_tech = list(TECH_DATA = 3, TECH_POWER = 4, TECH_ENGINEERING = 4) build_path = /obj/item/circuitboard/pacman/super -/datum/design/circuit/mrspacman +/datum/prototype/design/circuit/mrspacman design_name = "MRSPACMAN-type generator" id = "mrspacman" req_tech = list(TECH_DATA = 3, TECH_POWER = 5, TECH_ENGINEERING = 5) build_path = /obj/item/circuitboard/pacman/mrs -/datum/design/circuit/batteryrack +/datum/prototype/design/circuit/batteryrack design_name = "cell rack PSU" id = "batteryrack" req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/batteryrack -/datum/design/circuit/smes_cell +/datum/prototype/design/circuit/smes_cell design_name = "'SMES' superconductive magnetic energy storage" desc = "Allows for the construction of circuit boards used to build a SMES." id = "smes_cell" req_tech = list(TECH_POWER = 7, TECH_ENGINEERING = 5) build_path = /obj/item/circuitboard/smes -/datum/design/circuit/grid_checker +/datum/prototype/design/circuit/grid_checker design_name = "power grid checker" desc = "Allows for the construction of circuit boards used to build a grid checker." id = "grid_checker" req_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/grid_checker -/datum/design/circuit/breakerbox +/datum/prototype/design/circuit/breakerbox design_name = "breaker box" desc = "Allows for the construction of circuit boards used to build a breaker box." id = "breakerbox" req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/breakerbox -/datum/design/circuit/gas_heater +/datum/prototype/design/circuit/gas_heater design_name = "gas heating system" id = "gasheater" req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1) build_path = /obj/item/circuitboard/unary_atmos/heater -/datum/design/circuit/gas_cooler +/datum/prototype/design/circuit/gas_cooler design_name = "gas cooling system" id = "gascooler" req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) build_path = /obj/item/circuitboard/unary_atmos/cooler -/datum/design/circuit/secure_airlock +/datum/prototype/design/circuit/secure_airlock design_name = "secure airlock electronics" desc = "Allows for the construction of a tamper-resistant airlock electronics." id = "securedoor" req_tech = list(TECH_DATA = 3) build_path = /obj/item/airlock_electronics/secure -/datum/design/circuit/ordercomp +/datum/prototype/design/circuit/ordercomp design_name = "supply ordering console" id = "ordercomp" build_path = /obj/item/circuitboard/supplycomp -/datum/design/circuit/supplycomp +/datum/prototype/design/circuit/supplycomp design_name = "supply control console" id = "supplycomp" req_tech = list(TECH_DATA = 3) build_path = /obj/item/circuitboard/supplycomp/control -/datum/design/circuit/biogenerator +/datum/prototype/design/circuit/biogenerator design_name = "biogenerator" id = "biogenerator" req_tech = list(TECH_DATA = 2) build_path = /obj/item/circuitboard/biogenerator -/datum/design/circuit/miningdrill +/datum/prototype/design/circuit/miningdrill design_name = "mining drill head" id = "mining drill head" req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) build_path = /obj/item/circuitboard/miningdrill -/datum/design/circuit/miningdrillbrace +/datum/prototype/design/circuit/miningdrillbrace design_name = "mining drill brace" id = "mining drill brace" req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) build_path = /obj/item/circuitboard/miningdrillbrace -/datum/design/circuit/comconsole +/datum/prototype/design/circuit/comconsole design_name = "communications console" id = "comconsole" build_path = /obj/item/circuitboard/communications -/datum/design/circuit/idcardconsole +/datum/prototype/design/circuit/idcardconsole design_name = "ID card modification console" id = "idcardconsole" build_path = /obj/item/circuitboard/card -/datum/design/circuit/emp_data +/datum/prototype/design/circuit/emp_data design_name = "employment records console" id = "emp_data" build_path = /obj/item/circuitboard/skills -/datum/design/circuit/arf_generator +/datum/prototype/design/circuit/arf_generator design_name = "atmospheric field generator" id = "arf_generator" req_tech = list(TECH_MAGNET = 4, TECH_POWER = 4, TECH_BIO = 3) build_path = /obj/item/circuitboard/arf_generator -/datum/design/circuit/mecha - abstract_type = /datum/design/circuit/mecha +/datum/prototype/design/circuit/mecha + abstract_type = /datum/prototype/design/circuit/mecha req_tech = list(TECH_DATA = 3) -/datum/design/circuit/mecha/generate_name(template) +/datum/prototype/design/circuit/mecha/generate_name(template) return "Exosuit module circuit design ([template])" -/datum/design/circuit/mecha/generate_desc(template_name, template_desc) +/datum/prototype/design/circuit/mecha/generate_desc(template_name, template_desc) return "Allows for the construction of \a [template_name] module." -/datum/design/circuit/mecha/ripley_main +/datum/prototype/design/circuit/mecha/ripley_main design_name = "APLU 'Ripley' central control" id = "ripley_main" build_path = /obj/item/circuitboard/mecha/ripley/main -/datum/design/circuit/mecha/ripley_peri +/datum/prototype/design/circuit/mecha/ripley_peri design_name = "APLU 'Ripley' peripherals control" id = "ripley_peri" build_path = /obj/item/circuitboard/mecha/ripley/peripherals -/datum/design/circuit/mecha/odysseus_main +/datum/prototype/design/circuit/mecha/odysseus_main design_name = "'Odysseus' central control" id = "odysseus_main" req_tech = list(TECH_DATA = 3,TECH_BIO = 2) build_path = /obj/item/circuitboard/mecha/odysseus/main -/datum/design/circuit/mecha/odysseus_peri +/datum/prototype/design/circuit/mecha/odysseus_peri design_name = "'Odysseus' peripherals control" id = "odysseus_peri" req_tech = list(TECH_DATA = 3,TECH_BIO = 2) build_path = /obj/item/circuitboard/mecha/odysseus/peripherals -/datum/design/circuit/mecha/gygax_main +/datum/prototype/design/circuit/mecha/gygax_main design_name = "'Gygax' central control" id = "gygax_main" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/mecha/gygax/main -/datum/design/circuit/mecha/gygax_peri +/datum/prototype/design/circuit/mecha/gygax_peri design_name = "'Gygax' peripherals control" id = "gygax_peri" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/mecha/gygax/peripherals -/datum/design/circuit/mecha/gygax_targ +/datum/prototype/design/circuit/mecha/gygax_targ design_name = "'Gygax' weapon control and targeting" id = "gygax_targ" req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2) build_path = /obj/item/circuitboard/mecha/gygax/targeting -/datum/design/circuit/mecha/gygax_medical +/datum/prototype/design/circuit/mecha/gygax_medical design_name = "'Serenity' medical control" id = "gygax_medical" req_tech = list(TECH_DATA = 4, TECH_BIO = 2) build_path = /obj/item/circuitboard/mecha/gygax/medical -/datum/design/circuit/mecha/durand_main +/datum/prototype/design/circuit/mecha/durand_main design_name = "'Durand' central control" id = "durand_main" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/mecha/durand/main -/datum/design/circuit/mecha/durand_peri +/datum/prototype/design/circuit/mecha/durand_peri design_name = "'Durand' peripherals control" id = "durand_peri" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/mecha/durand/peripherals -/datum/design/circuit/mecha/durand_targ +/datum/prototype/design/circuit/mecha/durand_targ design_name = "'Durand' weapon control and targeting" id = "durand_targ" req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2) build_path = /obj/item/circuitboard/mecha/durand/targeting -/datum/design/circuit/mecha/honker_main +/datum/prototype/design/circuit/mecha/honker_main design_name = "'H.O.N.K.' central control" id = "honker_main" req_tech = list(TECH_DATA = 4, TECH_ILLEGAL = 4) build_path = /obj/item/circuitboard/mecha/honker/main -/datum/design/circuit/mecha/honker_peri +/datum/prototype/design/circuit/mecha/honker_peri design_name = "'H.O.N.K.' peripherals control" id = "honker_peri" req_tech = list(TECH_DATA = 4, TECH_ILLEGAL = 4) build_path = /obj/item/circuitboard/mecha/honker/peripherals -/datum/design/circuit/mecha/honker_targ +/datum/prototype/design/circuit/mecha/honker_targ design_name = "'H.O.N.K.' weapon control and targeting" id = "honker_targ" req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2, TECH_ILLEGAL = 4) build_path = /obj/item/circuitboard/mecha/honker/targeting -/datum/design/circuit/mecha/phazon_main +/datum/prototype/design/circuit/mecha/phazon_main design_name = "'Phazon' central control" id = "phazon_main" req_tech = list(TECH_DATA = 6, TECH_COMBAT = 4, TECH_BLUESPACE = 6, TECH_ARCANE = 2) build_path = /obj/item/circuitboard/mecha/phazon/main -/datum/design/circuit/mecha/phazon_peri +/datum/prototype/design/circuit/mecha/phazon_peri design_name = "'Phazon' peripherals control" id = "phazon_peri" req_tech = list(TECH_DATA = 6, TECH_COMBAT = 4, TECH_BLUESPACE = 6, TECH_ARCANE = 2) build_path = /obj/item/circuitboard/mecha/phazon/peripherals -/datum/design/circuit/mecha/phazon_targ +/datum/prototype/design/circuit/mecha/phazon_targ design_name = "'Phazon' weapon control and targeting" id = "phazon_targ" req_tech = list(TECH_DATA = 6, TECH_COMBAT = 4, TECH_BLUESPACE = 6, TECH_ARCANE = 2) build_path = /obj/item/circuitboard/mecha/phazon/targeting -/datum/design/circuit/mecha/reticent_main +/datum/prototype/design/circuit/mecha/reticent_main design_name = "'Reticent' central control" id = "reticent_main" req_tech = list(TECH_DATA = 5, TECH_ILLEGAL = 4) build_path = /obj/item/circuitboard/mecha/reticent/main -/datum/design/circuit/mecha/reticent_peri +/datum/prototype/design/circuit/mecha/reticent_peri design_name = "'Reticent' peripherals control" id = "reticent_peri" req_tech = list(TECH_DATA = 5, TECH_ILLEGAL = 4) build_path = /obj/item/circuitboard/mecha/reticent/peripherals -/datum/design/circuit/mecha/reticent_targ +/datum/prototype/design/circuit/mecha/reticent_targ design_name = "'Reticent' weapon control and targeting" id = "reticent_targ" req_tech = list(TECH_DATA = 5, TECH_COMBAT = 2, TECH_ILLEGAL = 4) @@ -510,30 +510,30 @@ CIRCUITS BELOW ///Fighters/// -/datum/design/circuit/mecha/fighter - abstract_type = /datum/design/circuit/mecha/fighter +/datum/prototype/design/circuit/mecha/fighter + abstract_type = /datum/prototype/design/circuit/mecha/fighter //Pinnace// -/datum/design/circuit/mecha/fighter/pinnace_main +/datum/prototype/design/circuit/mecha/fighter/pinnace_main design_name = "Pinnace central control board" id = "pinnace_main" req_tech = list(TECH_DATA = 3, TECH_POWER = 4) build_path = /obj/item/circuitboard/mecha/fighter/pinnace/main -/datum/design/circuit/mecha/fighter/pinnace_flight +/datum/prototype/design/circuit/mecha/fighter/pinnace_flight design_name = "Pinnace flight control board" id = "pinnace_flight" req_tech = list(TECH_DATA = 3, TECH_POWER = 4) build_path = /obj/item/circuitboard/mecha/fighter/pinnace/flight -/datum/design/circuit/mecha/fighter/pinnace_targeting +/datum/prototype/design/circuit/mecha/fighter/pinnace_targeting design_name = "Pinnace weapon control and targeting board" id = "pinnace_targeting" req_tech = list(TECH_DATA = 3, TECH_POWER = 4) build_path = /obj/item/circuitboard/mecha/fighter/pinnace/targeting -/datum/design/circuit/mecha/fighter/pinnace_cockpit_control +/datum/prototype/design/circuit/mecha/fighter/pinnace_cockpit_control design_name = "Pinnace manual flight control instruments" id = "pinnace_cockpit_control" req_tech = list(TECH_DATA = 3, TECH_POWER = 4) @@ -541,25 +541,25 @@ CIRCUITS BELOW //Baron// -/datum/design/circuit/mecha/fighter/baron_main +/datum/prototype/design/circuit/mecha/fighter/baron_main design_name = "Baron central control board" id = "baron_main" req_tech = list(TECH_DATA = 5, TECH_POWER = 4) build_path = /obj/item/circuitboard/mecha/fighter/baron/main -/datum/design/circuit/mecha/fighter/baron_flight +/datum/prototype/design/circuit/mecha/fighter/baron_flight design_name = "Baron flight control board" id = "baron_flight" req_tech = list(TECH_DATA = 5, TECH_POWER = 4) build_path = /obj/item/circuitboard/mecha/fighter/baron/flight -/datum/design/circuit/mecha/fighter/baron_targeting +/datum/prototype/design/circuit/mecha/fighter/baron_targeting design_name = "Baron weapon control and targeting board" id = "baron_targeting" req_tech = list(TECH_DATA = 5, TECH_POWER = 4, TECH_COMBAT = 3) build_path = /obj/item/circuitboard/mecha/fighter/baron/targeting -/datum/design/circuit/mecha/fighter/baron_cockpit_control +/datum/prototype/design/circuit/mecha/fighter/baron_cockpit_control design_name = "Baron manual flight control instruments" id = "baron_cockpit_control" req_tech = list(TECH_DATA = 5, TECH_POWER = 4, TECH_COMBAT = 3) @@ -567,25 +567,25 @@ CIRCUITS BELOW //Duke// -/datum/design/circuit/mecha/fighter/duke_main +/datum/prototype/design/circuit/mecha/fighter/duke_main design_name = "Duke central control board" id = "duke_main" req_tech = list(TECH_DATA = 5, TECH_POWER = 4) build_path = /obj/item/circuitboard/mecha/fighter/duke/main -/datum/design/circuit/mecha/fighter/duke_flight +/datum/prototype/design/circuit/mecha/fighter/duke_flight design_name = "Duke flight control board" id = "duke_flight" req_tech = list(TECH_DATA = 5, TECH_POWER = 4) build_path = /obj/item/circuitboard/mecha/fighter/duke/flight -/datum/design/circuit/mecha/fighter/duke_targeting +/datum/prototype/design/circuit/mecha/fighter/duke_targeting design_name = "Duke weapon control and targeting board" id = "duke_targeting" req_tech = list(TECH_DATA = 5, TECH_POWER = 4, TECH_COMBAT = 3) build_path = /obj/item/circuitboard/mecha/fighter/duke/targeting -/datum/design/circuit/mecha/fighter/duke_cockpit_control +/datum/prototype/design/circuit/mecha/fighter/duke_cockpit_control design_name = "Duke manual flight control instruments" id = "duke_cockpit_control" req_tech = list(TECH_DATA = 5, TECH_POWER = 4, TECH_COMBAT = 3) @@ -593,109 +593,109 @@ CIRCUITS BELOW //Tcomms// -/datum/design/circuit/tcom - abstract_type = /datum/design/circuit/tcom +/datum/prototype/design/circuit/tcom + abstract_type = /datum/prototype/design/circuit/tcom req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) -/datum/design/circuit/tcom/generate_name(template) +/datum/prototype/design/circuit/tcom/generate_name(template) return "Telecommunications machinery circuit design ([template])" -/datum/design/circuit/tcom/generate_desc(template_name, template_desc) +/datum/prototype/design/circuit/tcom/generate_desc(template_name, template_desc) return "Allows for the construction of a telecommunications [template_name] circuit board." -/datum/design/circuit/tcom/server +/datum/prototype/design/circuit/tcom/server design_name = "server mainframe" id = "tcom-server" build_path = /obj/item/circuitboard/telecomms/server -/datum/design/circuit/tcom/processor +/datum/prototype/design/circuit/tcom/processor design_name = "processor unit" id = "tcom-processor" build_path = /obj/item/circuitboard/telecomms/processor -/datum/design/circuit/tcom/bus +/datum/prototype/design/circuit/tcom/bus design_name = "bus mainframe" id = "tcom-bus" build_path = /obj/item/circuitboard/telecomms/bus -/datum/design/circuit/tcom/hub +/datum/prototype/design/circuit/tcom/hub design_name = "hub mainframe" id = "tcom-hub" build_path = /obj/item/circuitboard/telecomms/hub -/datum/design/circuit/tcom/relay +/datum/prototype/design/circuit/tcom/relay design_name = "relay mainframe" id = "tcom-relay" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 3) build_path = /obj/item/circuitboard/telecomms/relay -/datum/design/circuit/tcom/broadcaster +/datum/prototype/design/circuit/tcom/broadcaster design_name = "subspace broadcaster" id = "tcom-broadcaster" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_BLUESPACE = 2) build_path = /obj/item/circuitboard/telecomms/broadcaster -/datum/design/circuit/tcom/receiver +/datum/prototype/design/circuit/tcom/receiver design_name = "subspace receiver" id = "tcom-receiver" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2) build_path = /obj/item/circuitboard/telecomms/receiver -/datum/design/circuit/tcom/exonet_node +/datum/prototype/design/circuit/tcom/exonet_node design_name = "exonet node" id = "tcom-exonet_node" req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4) build_path = /obj/item/circuitboard/telecomms/exonet_node -/datum/design/circuit/ntnet_relay +/datum/prototype/design/circuit/ntnet_relay design_name = "NTNet Quantum Relay" id = "ntnet_relay" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/ntnet_relay -/datum/design/circuit/aicore +/datum/prototype/design/circuit/aicore design_name = "AI core" id = "aicore" req_tech = list(TECH_DATA = 4, TECH_BIO = 3) build_path = /obj/item/circuitboard/aicore -/datum/design/circuit/fossilrevive +/datum/prototype/design/circuit/fossilrevive design_name = "Fossil DNA extractor" id = "fossilrevive" req_tech = list(TECH_DATA = 4, TECH_BIO = 3) build_path = /obj/item/circuitboard/dnarevive -/datum/design/circuit/shield_generator +/datum/prototype/design/circuit/shield_generator design_name = "shield generator" id = "shield_generator" req_tech = list(TECH_MAGNET = 3, TECH_POWER = 4, TECH_BLUESPACE = 2, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/shield_generator -/datum/design/circuit/shield_diffuser +/datum/prototype/design/circuit/shield_diffuser design_name = "shield diffuser" id = "shield_diffuser" req_tech = list(TECH_MAGNET = 4, TECH_POWER = 2, TECH_ENGINEERING = 5) build_path = /obj/item/circuitboard/shield_diffuser -/datum/design/circuit/pointdefense +/datum/prototype/design/circuit/pointdefense design_name = "point defense battery" id = "pointdefense" req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 3, TECH_COMBAT = 4) build_path = /obj/item/circuitboard/pointdefense -/datum/design/circuit/pointdefense_control +/datum/prototype/design/circuit/pointdefense_control design_name = "point defense control" //Once upon a time, this was called a deluxe microwave. id = "pointdefense_control" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_COMBAT = 2) build_path = /obj/item/circuitboard/pointdefense_control -/datum/design/circuit/massive_gas_pump +/datum/prototype/design/circuit/massive_gas_pump design_name = "High performance gas pump" id = "massive_gas_pump" req_tech = list(TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/massive_gas_pump -/datum/design/circuit/massive_heat_pump +/datum/prototype/design/circuit/massive_heat_pump design_name = "High performance heat pump" id = "massive_heat_pump" req_tech = list(TECH_ENGINEERING = 4) diff --git a/code/modules/research/designs/circuits/circuits_vr.dm b/code/modules/research/designs/circuits/circuits_vr.dm index 279f09985e9..2707929e8c4 100644 --- a/code/modules/research/designs/circuits/circuits_vr.dm +++ b/code/modules/research/designs/circuits/circuits_vr.dm @@ -1,87 +1,87 @@ -/datum/design/circuit/algae_farm +/datum/prototype/design/circuit/algae_farm design_name = "Algae Oxygen Generator" id = "algae_farm" req_tech = list(TECH_ENGINEERING = 3, TECH_BIO = 2) build_path = /obj/item/circuitboard/algae_farm -/datum/design/circuit/thermoregulator +/datum/prototype/design/circuit/thermoregulator design_name = "thermal regulator" id = "thermoregulator" req_tech = list(TECH_ENGINEERING = 4, TECH_POWER = 3) build_path = /obj/item/circuitboard/thermoregulator -/datum/design/circuit/bomb_tester +/datum/prototype/design/circuit/bomb_tester design_name = "Explosive Effect Simulator" id = "bomb_tester" req_tech = list(TECH_PHORON = 3, TECH_DATA = 2, TECH_MAGNET = 2) build_path = /obj/item/circuitboard/bomb_tester -/datum/design/circuit/quantum_pad +/datum/prototype/design/circuit/quantum_pad design_name = "Quantum Pad" id = "QuantumPadCircuit" req_tech = list(TECH_ENGINEERING = 4, TECH_POWER = 4, TECH_BLUESPACE = 4, TECH_PRECURSOR = 1) build_path = /obj/item/circuitboard/quantumpad //////Micro mech stuff -/datum/design/circuit/mecha/gopher_main +/datum/prototype/design/circuit/mecha/gopher_main design_name = "'Gopher' central control" id = "gopher_main" build_path = /obj/item/circuitboard/mecha/gopher/main -/datum/design/circuit/mecha/gopher_peri +/datum/prototype/design/circuit/mecha/gopher_peri design_name = "'Gopher' peripherals control" id = "gopher_peri" build_path = /obj/item/circuitboard/mecha/gopher/peripherals -/datum/design/circuit/mecha/polecat_main +/datum/prototype/design/circuit/mecha/polecat_main design_name = "'Polecat' central control" id = "polecat_main" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/mecha/polecat/main -/datum/design/circuit/mecha/polecat_peri +/datum/prototype/design/circuit/mecha/polecat_peri design_name = "'Polecat' peripherals control" id = "polecat_peri" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/mecha/polecat/peripherals -/datum/design/circuit/mecha/polecat_targ +/datum/prototype/design/circuit/mecha/polecat_targ design_name = "'Polecat' weapon control and targeting" id = "polecat_targ" req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2) build_path = /obj/item/circuitboard/mecha/polecat/targeting -/datum/design/circuit/mecha/weasel_main +/datum/prototype/design/circuit/mecha/weasel_main design_name = "'Weasel' central control" id = "weasel_main" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/mecha/weasel/main -/datum/design/circuit/mecha/weasel_peri +/datum/prototype/design/circuit/mecha/weasel_peri design_name = "'Weasel' peripherals control" id = "weasel_peri" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/mecha/weasel/peripherals -/datum/design/circuit/mecha/weasel_targ +/datum/prototype/design/circuit/mecha/weasel_targ design_name = "'Weasel' weapon control and targeting" id = "weasel_targ" req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2) build_path = /obj/item/circuitboard/mecha/weasel/targeting -/datum/design/circuit/transhuman_clonepod +/datum/prototype/design/circuit/transhuman_clonepod design_name = "grower pod" id = "transhuman_clonepod" req_tech = list(TECH_DATA = 3, TECH_BIO = 3) build_path = /obj/item/circuitboard/transhuman_clonepod -/datum/design/circuit/transhuman_synthprinter +/datum/prototype/design/circuit/transhuman_synthprinter design_name = "SynthFab 3000" id = "transhuman_synthprinter" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/transhuman_synthprinter -/datum/design/circuit/transhuman_resleever +/datum/prototype/design/circuit/transhuman_resleever design_name = "Resleeving pod" id = "transhuman_resleever" req_tech = list(TECH_ENGINEERING = 4, TECH_BIO = 4) @@ -89,7 +89,7 @@ // Resleeving -/datum/design/circuit/resleeving_control +/datum/prototype/design/circuit/resleeving_control design_name = "Resleeving control console" id = "resleeving_control" req_tech = list(TECH_DATA = 5) @@ -97,19 +97,19 @@ // Telesci stuff -/datum/design/circuit/telesci_console +/datum/prototype/design/circuit/telesci_console design_name = "Telepad Control Console" id = "telesci_console" req_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 3, TECH_PHORON = 4) build_path = /obj/item/circuitboard/telesci_console -/datum/design/circuit/telesci_pad +/datum/prototype/design/circuit/telesci_pad design_name = "Telepad" id = "telesci_pad" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_PHORON = 4, TECH_BLUESPACE = 5) build_path = /obj/item/circuitboard/telesci_pad -/datum/design/circuit/vitals_monitor +/datum/prototype/design/circuit/vitals_monitor design_name = "vitals monitor" id = "vitals" req_tech = list(TECH_DATA = 3, TECH_BIO = 4, TECH_ENGINEERING = 2) diff --git a/code/modules/research/designs/circuits/computer.dm b/code/modules/research/designs/circuits/computer.dm index 28006860110..3eb4fcdb481 100644 --- a/code/modules/research/designs/circuits/computer.dm +++ b/code/modules/research/designs/circuits/computer.dm @@ -1,6 +1,6 @@ -/datum/design/circuit/computer - abstract_type = /datum/design/circuit/computer +/datum/prototype/design/circuit/computer + abstract_type = /datum/prototype/design/circuit/computer -/datum/design/circuit/computer/generate_name(template) +/datum/prototype/design/circuit/computer/generate_name(template) return "Computer circuit design ([template])" diff --git a/code/modules/research/designs/circuits/computers/misc.dm b/code/modules/research/designs/circuits/computers/misc.dm index 4cf42ccb228..627c22bf7f2 100644 --- a/code/modules/research/designs/circuits/computers/misc.dm +++ b/code/modules/research/designs/circuits/computers/misc.dm @@ -1,4 +1,4 @@ -/datum/design/circuit/computer/bioscan_console +/datum/prototype/design/circuit/computer/bioscan_console design_name = "Bioscan Console" build_path = /obj/item/circuitboard/computer/bioscan id = "console_bioscan" diff --git a/code/modules/research/designs/circuits/computers/nanites.dm b/code/modules/research/designs/circuits/computers/nanites.dm index 7536b6778d3..9b9b6b64da1 100644 --- a/code/modules/research/designs/circuits/computers/nanites.dm +++ b/code/modules/research/designs/circuits/computers/nanites.dm @@ -1,4 +1,4 @@ -/datum/design/circuit/computer/nanite_chamber +/datum/prototype/design/circuit/computer/nanite_chamber design_name = "Nanite Chamber Control" build_path = /obj/item/circuitboard/computer/nanite_chamber id = "CircuitNaniteChamberConsole" diff --git a/code/modules/research/designs/circuits/disks.dm b/code/modules/research/designs/circuits/disks.dm index bc76fad1e5f..e1bf54c22c7 100644 --- a/code/modules/research/designs/circuits/disks.dm +++ b/code/modules/research/designs/circuits/disks.dm @@ -1,13 +1,13 @@ -/datum/design/circuit/disk - abstract_type = /datum/design/circuit/disk +/datum/prototype/design/circuit/disk + abstract_type = /datum/prototype/design/circuit/disk lathe_type = LATHE_TYPE_CIRCUIT req_tech = list(TECH_DATA = 3) materials_base = list(MAT_PLASTIC = 2000, MAT_GLASS = 1000) reagents = list("pacid" = 10) work = (5 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. -/datum/design/circuit/disk/generate_name(template) +/datum/prototype/design/circuit/disk/generate_name(template) if(build_path) var/obj/item/disk/D = build_path if(ispath(D, /obj/item/disk/species)) @@ -16,25 +16,25 @@ return "Disk design ([..()])" return ..() -/datum/design/circuit/disk/skrellprint +/datum/prototype/design/circuit/disk/skrellprint design_name = SPECIES_SKRELL id = "prosthetic_skrell" req_tech = list(TECH_DATA = 3, TECH_BIO = 3) build_path = /obj/item/disk/species/skrell -/datum/design/circuit/disk/tajprint +/datum/prototype/design/circuit/disk/tajprint design_name = SPECIES_TAJ id = "prosthetic_tajaran" req_tech = list(TECH_DATA = 3, TECH_BIO = 3) build_path = /obj/item/disk/species/tajaran -/datum/design/circuit/disk/unathiprint +/datum/prototype/design/circuit/disk/unathiprint design_name = SPECIES_UNATHI id = "prosthetic_unathi" req_tech = list(TECH_DATA = 3, TECH_BIO = 4) build_path = /obj/item/disk/species/unathi -/datum/design/circuit/disk/teshariprint +/datum/prototype/design/circuit/disk/teshariprint design_name = SPECIES_TESHARI id = "prosthetic_teshari" req_tech = list(TECH_DATA = 3, TECH_BIO = 4) diff --git a/code/modules/research/designs/circuits/machine.dm b/code/modules/research/designs/circuits/machine.dm index 8f242ba815c..b395b983e7d 100644 --- a/code/modules/research/designs/circuits/machine.dm +++ b/code/modules/research/designs/circuits/machine.dm @@ -1,5 +1,5 @@ -/datum/design/circuit/machine - abstract_type = /datum/design/circuit/machine +/datum/prototype/design/circuit/machine + abstract_type = /datum/prototype/design/circuit/machine -/datum/design/circuit/machine/generate_name(template) +/datum/prototype/design/circuit/machine/generate_name(template) return "Machine circuit ([template])" diff --git a/code/modules/research/designs/circuits/machines/chemistry.dm b/code/modules/research/designs/circuits/machines/chemistry.dm index 5f269347cdc..9fe693f2c51 100644 --- a/code/modules/research/designs/circuits/machines/chemistry.dm +++ b/code/modules/research/designs/circuits/machines/chemistry.dm @@ -1,22 +1,22 @@ -/datum/design/circuit/machine/chemical_dispenser +/datum/prototype/design/circuit/machine/chemical_dispenser design_name = "Chemical Dispenser" build_path = /obj/item/circuitboard/machine/chemical_dispenser id = "MachineChemicalDispenser" req_tech = list(TECH_DATA = 3, TECH_BIO = 3, TECH_MATERIAL = 4) -/datum/design/circuit/machine/soda_dispenser +/datum/prototype/design/circuit/machine/soda_dispenser design_name = "Drink Dispenser (Soda)" build_path = /obj/item/circuitboard/machine/chemical_dispenser/soda id = "MachineDrinkDispenserSoda" req_tech = list(TECH_DATA = 3, TECH_BIO = 3, TECH_MATERIAL = 4) -/datum/design/circuit/machine/booze_dispenser +/datum/prototype/design/circuit/machine/booze_dispenser design_name = "Drink Dispenser (Bar)" build_path = /obj/item/circuitboard/machine/chemical_dispenser/booze id = "MachineDrinkDispenserBooze" req_tech = list(TECH_DATA = 3, TECH_BIO = 3, TECH_MATERIAL = 4) -/datum/design/circuit/machine/cafe_dispenser +/datum/prototype/design/circuit/machine/cafe_dispenser design_name = "Drink Dispenser (Cafe)" build_path = /obj/item/circuitboard/machine/chemical_dispenser/cafe id = "MachineDrinkDispenserCafe" diff --git a/code/modules/research/designs/circuits/machines/misc.dm b/code/modules/research/designs/circuits/machines/misc.dm index c2306bd17a4..99807af0f9d 100644 --- a/code/modules/research/designs/circuits/machines/misc.dm +++ b/code/modules/research/designs/circuits/machines/misc.dm @@ -1,10 +1,10 @@ -/datum/design/circuit/machine/bioscan_antenna +/datum/prototype/design/circuit/machine/bioscan_antenna design_name = "Bioscan Antenna" build_path = /obj/item/circuitboard/machine/bioscan id = "machine_bioscan" req_tech = list(TECH_DATA = 1) -/datum/design/circuit/machine/bioprinter +/datum/prototype/design/circuit/machine/bioprinter design_name = "Bioprinter" build_path = /obj/item/circuitboard/bioprinter id = "machine_bioprinter" diff --git a/code/modules/research/designs/circuits/machines/nanites.dm b/code/modules/research/designs/circuits/machines/nanites.dm index 26ef61769fe..100318fd0b6 100644 --- a/code/modules/research/designs/circuits/machines/nanites.dm +++ b/code/modules/research/designs/circuits/machines/nanites.dm @@ -1,4 +1,4 @@ -/datum/design/circuit/machine/nanite_chamber +/datum/prototype/design/circuit/machine/nanite_chamber design_name = "Nanite Chamber" build_path = /obj/item/circuitboard/machine/nanite_chamber id = "CircuitNaniteChamber" diff --git a/code/modules/research/designs/designs_vr.dm b/code/modules/research/designs/designs_vr.dm index 0246c487371..694e24e1986 100644 --- a/code/modules/research/designs/designs_vr.dm +++ b/code/modules/research/designs/designs_vr.dm @@ -1,62 +1,62 @@ -/datum/design/science/weapon/sizegun +/datum/prototype/design/science/weapon/sizegun design_name = "Size gun" id = "sizegun" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2) materials_base = list(MAT_STEEL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000) build_path = /obj/item/gun/energy/sizegun -/datum/design/science/bluespace_jumpsuit +/datum/prototype/design/science/bluespace_jumpsuit design_name = "Bluespace jumpsuit" id = "bsjumpsuit" req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 3, TECH_POWER = 2) materials_base = list(MAT_STEEL = 4000, MAT_GLASS = 4000) build_path = /obj/item/clothing/under/bluespace -/datum/design/science/item/pressureinterlock +/datum/prototype/design/science/item/pressureinterlock design_name = "APP pressure interlock" id = "pressureinterlock" req_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 250) build_path = /obj/item/pressurelock -/datum/design/science/weapon/advparticle +/datum/prototype/design/science/weapon/advparticle design_name = "Advanced anti-particle rifle" id = "advparticle" req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 5, TECH_POWER = 3, TECH_MAGNET = 3) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_URANIUM = 750) build_path = /obj/item/gun/energy/particle/advanced -/datum/design/science/weapon/particlecannon +/datum/prototype/design/science/weapon/particlecannon design_name = "Anti-particle cannon" id = "particlecannon" req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5, TECH_POWER = 4, TECH_MAGNET = 4) materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 1500, MAT_GOLD = 2000, MAT_URANIUM = 1000, MAT_DIAMOND = 2000) build_path = /obj/item/gun/energy/particle/cannon -/datum/design/science/hud/omni +/datum/prototype/design/science/hud/omni design_name = "AR glasses" id = "omnihud" req_tech = list(TECH_MAGNET = 4, TECH_COMBAT = 3, TECH_BIO = 3) materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 1000) build_path = /obj/item/clothing/glasses/omnihud -/datum/design/science/translocator +/datum/prototype/design/science/translocator design_name = "Personal translocator" id = "translocator" req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_ILLEGAL = 6) materials_base = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_URANIUM = 4000, MAT_DIAMOND = 2000) build_path = /obj/item/perfect_tele -/datum/design/science/nif +/datum/prototype/design/science/nif design_name = "nanite implant framework" id = "nif" req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 8000, MAT_URANIUM = 6000, MAT_DIAMOND = 6000) build_path = /obj/item/nif -/datum/design/science/nifbio +/datum/prototype/design/science/nifbio design_name = "bioadaptive NIF" id = "bioadapnif" req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5, TECH_BIO = 5) @@ -64,7 +64,7 @@ build_path = /obj/item/nif/bioadap //Addiing bioadaptive NIF to Protolathe -/datum/design/science/nifrepairtool +/datum/prototype/design/science/nifrepairtool design_name = "adv. NIF repair tool" id = "anrt" req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5) @@ -73,97 +73,97 @@ // Resleeving Circuitboards -/datum/design/circuit/transhuman_clonepod +/datum/prototype/design/circuit/transhuman_clonepod design_name = "grower pod" id = "transhuman_clonepod" req_tech = list(TECH_DATA = 3, TECH_BIO = 3) build_path = /obj/item/circuitboard/transhuman_clonepod -/datum/design/circuit/transhuman_synthprinter +/datum/prototype/design/circuit/transhuman_synthprinter design_name = "SynthFab 3000" id = "transhuman_synthprinter" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) build_path = /obj/item/circuitboard/transhuman_synthprinter -/datum/design/circuit/transhuman_resleever +/datum/prototype/design/circuit/transhuman_resleever design_name = "Resleeving pod" id = "transhuman_resleever" req_tech = list(TECH_ENGINEERING = 4, TECH_BIO = 4) build_path = /obj/item/circuitboard/transhuman_resleever -/datum/design/circuit/resleeving_control +/datum/prototype/design/circuit/resleeving_control design_name = "Resleeving control console" id = "resleeving_control" req_tech = list(TECH_DATA = 5) build_path = /obj/item/circuitboard/resleeving_control -/datum/design/science/weapon/netgun +/datum/prototype/design/science/weapon/netgun design_name = "\'Retiarius\' capture gun" //cit change id = "netgun" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_MAGNET = 3) materials_base = list(MAT_STEEL = 6000, MAT_GLASS = 3000) build_path = /obj/item/gun/energy/netgun -/datum/design/circuit/algae_farm +/datum/prototype/design/circuit/algae_farm design_name = "Algae Oxygen Generator" id = "algae_farm" req_tech = list(TECH_ENGINEERING = 3, TECH_BIO = 2) build_path = /obj/item/circuitboard/algae_farm -/datum/design/circuit/thermoregulator +/datum/prototype/design/circuit/thermoregulator design_name = "thermal regulator" id = "thermoregulator" req_tech = list(TECH_ENGINEERING = 4, TECH_POWER = 3) build_path = /obj/item/circuitboard/thermoregulator -/datum/design/circuit/bomb_tester +/datum/prototype/design/circuit/bomb_tester design_name = "Explosive Effect Simulator" id = "bomb_tester" req_tech = list(TECH_PHORON = 3, TECH_DATA = 2, TECH_MAGNET = 2) build_path = /obj/item/circuitboard/bomb_tester //////Micro mech stuff -/datum/design/circuit/mecha/gopher_main +/datum/prototype/design/circuit/mecha/gopher_main design_name = "'Gopher' central control" id = "gopher_main" build_path = /obj/item/circuitboard/mecha/gopher/main -/datum/design/circuit/mecha/gopher_peri +/datum/prototype/design/circuit/mecha/gopher_peri design_name = "'Gopher' peripherals control" id = "gopher_peri" build_path = /obj/item/circuitboard/mecha/gopher/peripherals -/datum/design/circuit/mecha/polecat_main +/datum/prototype/design/circuit/mecha/polecat_main design_name = "'Polecat' central control" id = "polecat_main" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/mecha/polecat/main -/datum/design/circuit/mecha/polecat_peri +/datum/prototype/design/circuit/mecha/polecat_peri design_name = "'Polecat' peripherals control" id = "polecat_peri" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/mecha/polecat/peripherals -/datum/design/circuit/mecha/polecat_targ +/datum/prototype/design/circuit/mecha/polecat_targ design_name = "'Polecat' weapon control and targeting" id = "polecat_targ" req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2) build_path = /obj/item/circuitboard/mecha/polecat/targeting -/datum/design/circuit/mecha/weasel_main +/datum/prototype/design/circuit/mecha/weasel_main design_name = "'Weasel' central control" id = "weasel_main" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/mecha/weasel/main -/datum/design/circuit/mecha/weasel_peri +/datum/prototype/design/circuit/mecha/weasel_peri design_name = "'Weasel' peripherals control" id = "weasel_peri" req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/mecha/weasel/peripherals -/datum/design/circuit/mecha/weasel_targ +/datum/prototype/design/circuit/mecha/weasel_targ design_name = "'Weasel' weapon control and targeting" id = "weasel_targ" req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2) @@ -171,61 +171,61 @@ ////// RIGSuit Stuff /* -/datum/design/science/hardsuit +/datum/prototype/design/science/hardsuit req_tech = list(TECH_MATERIAL = 5, TECH_POWER = 5, TECH_MAGNET = 5) materials_base = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 6000, MAT_URANIUM = 4000) -/datum/design/science/hardsuit/eva +/datum/prototype/design/science/hardsuit/eva design_name = "eva hardsuit (empty)" id = "eva_hardsuit" build_path = /obj/item/hardsuit/eva -/datum/design/science/hardsuit/mining +/datum/prototype/design/science/hardsuit/mining design_name = "industrial hardsuit (empty)" id = "ind_hardsuit" build_path = /obj/item/hardsuit/industrial -/datum/design/science/hardsuit/research +/datum/prototype/design/science/hardsuit/research design_name = "ami hardsuit (empty)" id = "ami_hardsuit" build_path = /obj/item/hardsuit/hazmat -/datum/design/science/hardsuit/medical +/datum/prototype/design/science/hardsuit/medical design_name = "medical hardsuit (empty)" id = "med_hardsuit" build_path = /obj/item/hardsuit/medical */ -/datum/design/science/hardsuit_module +/datum/prototype/design/science/hardsuit_module req_tech = list(TECH_MATERIAL = 5, TECH_POWER = 5, TECH_MAGNET = 5) materials_base = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 4000, MAT_URANIUM = 2000) -/datum/design/science/hardsuit_module/plasma_cutter +/datum/prototype/design/science/hardsuit_module/plasma_cutter design_name = "hardsuit module - plasma cutter" id = "hardsuitmod_plasmacutter" build_path = /obj/item/hardsuit_module/device/plasmacutter -/datum/design/science/hardsuit_module/diamond_drill +/datum/prototype/design/science/hardsuit_module/diamond_drill design_name = "hardsuit module - diamond drill" id = "hardsuitmod_diamonddrill" build_path = /obj/item/hardsuit_module/device/drill -/datum/design/science/hardsuit_module/maneuvering_jets +/datum/prototype/design/science/hardsuit_module/maneuvering_jets design_name = "hardsuit module - maneuvering jets" id = "hardsuitmod_maneuveringjets" build_path = /obj/item/hardsuit_module/maneuvering_jets -/datum/design/science/hardsuit_module/anomaly_scanner +/datum/prototype/design/science/hardsuit_module/anomaly_scanner design_name = "hardsuit module - anomaly scanner" id = "hardsuitmod_anomalyscanner" build_path = /obj/item/hardsuit_module/device/anomaly_scanner -/datum/design/science/hardsuit_module/orescanner +/datum/prototype/design/science/hardsuit_module/orescanner design_name = "hardsuit module - ore scanner" id = "hardsuitmod_orescanner" build_path = /obj/item/hardsuit_module/device/orescanner -/datum/design/science/hardsuit_module/orescanneradv +/datum/prototype/design/science/hardsuit_module/orescanneradv design_name = "hardsuit module - adv. ore scanner" id = "hardsuitmod_orescanner_adv" build_path = /obj/item/hardsuit_module/device/orescanner/advanced diff --git a/code/modules/research/designs/engineering.dm b/code/modules/research/designs/engineering.dm index 408b58fa283..9f00c1e95f0 100644 --- a/code/modules/research/designs/engineering.dm +++ b/code/modules/research/designs/engineering.dm @@ -1,10 +1,10 @@ -/datum/design/science/tool - abstract_type = /datum/design/science/tool +/datum/prototype/design/science/tool + abstract_type = /datum/prototype/design/science/tool -/datum/design/science/tool/generate_name(template) +/datum/prototype/design/science/tool/generate_name(template) return "Experimental tool prototype ([..()])" -/datum/design/science/tool/experimental_welder +/datum/prototype/design/science/tool/experimental_welder design_name = "Experimental welding tool" desc = "A welding tool that generates fuel for itself." id = "expwelder" @@ -12,7 +12,7 @@ materials_base = list(MAT_STEEL = 70, MAT_GLASS = 120, MAT_PHORON = 100) build_path = /obj/item/weldingtool/experimental -/datum/design/science/tool/hand_drill +/datum/prototype/design/science/tool/hand_drill design_name = "Hand drill" desc = "A simple powered hand drill." id = "handdrill" @@ -20,7 +20,7 @@ materials_base = list(MAT_STEEL = 300, MAT_SILVER = 100) build_path = /obj/item/tool/screwdriver/power -/datum/design/science/tool/jaws_life +/datum/prototype/design/science/tool/jaws_life design_name = "Jaws of life" desc = "A set of jaws of life, compressed through the magic of science." id = "jawslife" @@ -28,7 +28,7 @@ materials_base = list(MAT_STEEL = 300, MAT_SILVER = 100) build_path = /obj/item/tool/crowbar/power -/datum/design/science/tool/switchtool +/datum/prototype/design/science/tool/switchtool design_name = "Switchtool" desc = "A combined wirecutter, screwdriver, crowbar, wrench and multitool. The small size makes it somewhat slower at work." id = "switchtool" @@ -36,13 +36,13 @@ materials_base = list(MAT_STEEL = 4000, MAT_GLASS = 2000) build_path = /obj/item/switchtool -/datum/design/science/engineering - abstract_type = /datum/design/science/engineering +/datum/prototype/design/science/engineering + abstract_type = /datum/prototype/design/science/engineering -/datum/design/science/engineering/generate_name(template) +/datum/prototype/design/science/engineering/generate_name(template) return "Engineering device prototype ([..()])" -/datum/design/science/engineering/t_scanner +/datum/prototype/design/science/engineering/t_scanner design_name = "T-ray Scanner" desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." id = "tscanner" @@ -50,7 +50,7 @@ materials_base = list(MAT_STEEL = 200) build_path = /obj/item/t_scanner -/datum/design/science/engineering/t_scanner_upg +/datum/prototype/design/science/engineering/t_scanner_upg design_name = "Upgraded T-ray Scanner" desc = "An upgraded version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." id = "upgradedtscanner" @@ -58,7 +58,7 @@ materials_base = list(MAT_STEEL = 500, MAT_PHORON = 150) build_path = /obj/item/t_scanner/upgraded -/datum/design/science/engineering/t_scanner_adv +/datum/prototype/design/science/engineering/t_scanner_adv design_name = "Advanced T-ray Scanner" desc = "An advanced version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." id = "advancedtscanner" @@ -66,7 +66,7 @@ materials_base = list(MAT_STEEL = 1250, MAT_PHORON = 500, MAT_SILVER = 50) build_path = /obj/item/t_scanner/advanced -/datum/design/science/engineering/atmosanalyzer +/datum/prototype/design/science/engineering/atmosanalyzer design_name = "Atmospheric Analyzer" desc = "A hand-held environmental scanner which reports current gas levels." id = "atmosanalyzer" @@ -74,7 +74,7 @@ materials_base = list(MAT_STEEL = 200, MAT_GLASS = 100) build_path = /obj/item/atmos_analyzer -/datum/design/science/engineering/atmosanalyzerlongrange +/datum/prototype/design/science/engineering/atmosanalyzerlongrange design_name = "Long Range Atmospheric Analyzer" desc = "A hand-held environmental scanner which reports current gas levels from a distance." id = "atmosanalyzerlr" diff --git a/code/modules/research/designs/implants.dm b/code/modules/research/designs/implants.dm index c89d5921476..4281d35d983 100644 --- a/code/modules/research/designs/implants.dm +++ b/code/modules/research/designs/implants.dm @@ -1,23 +1,23 @@ -/datum/design/science/implant - abstract_type = /datum/design/science/implant +/datum/prototype/design/science/implant + abstract_type = /datum/prototype/design/science/implant materials_base = list(MAT_STEEL = 50, MAT_GLASS = 50) -/datum/design/science/implant/generate_name(template) +/datum/prototype/design/science/implant/generate_name(template) return "Implantable biocircuit design ([..()])" -/datum/design/science/implant/chemical +/datum/prototype/design/science/implant/chemical design_name = "chemical" id = "implant_chem" req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3) build_path = /obj/item/implantcase/chem -/datum/design/science/implant/freedom +/datum/prototype/design/science/implant/freedom design_name = "freedom" id = "implant_free" req_tech = list(TECH_ILLEGAL = 2, TECH_BIO = 3) build_path = /obj/item/implantcase/freedom -/datum/design/science/implant/sizecontrol +/datum/prototype/design/science/implant/sizecontrol design_name = "Size control implant" id = "implant_size" req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_DATA = 4, TECH_ENGINEERING = 3) diff --git a/code/modules/research/designs/locator_devices.dm b/code/modules/research/designs/locator_devices.dm index a5e83a3fc0f..01e7350d93d 100644 --- a/code/modules/research/designs/locator_devices.dm +++ b/code/modules/research/designs/locator_devices.dm @@ -1,58 +1,58 @@ -/datum/design/science/gps - abstract_type = /datum/design/science/gps +/datum/prototype/design/science/gps + abstract_type = /datum/prototype/design/science/gps req_tech = list(TECH_MATERIAL = 2, TECH_DATA = 2, TECH_BLUESPACE = 2) materials_base = list(MAT_STEEL = 500) -/datum/design/science/gps/generate_name(template) +/datum/prototype/design/science/gps/generate_name(template) return "Triangulating device design ([..()])" -/datum/design/science/gps/generic +/datum/prototype/design/science/gps/generic design_name = "GEN" id = "gps_gen" build_path = /obj/item/gps -/datum/design/science/gps/command +/datum/prototype/design/science/gps/command design_name = "COM" id = "gps_com" build_path = /obj/item/gps/command -/datum/design/science/gps/security +/datum/prototype/design/science/gps/security design_name = "SEC" id = "gps_sec" build_path = /obj/item/gps/security -/datum/design/science/gps/medical +/datum/prototype/design/science/gps/medical design_name = "MED" id = "gps_med" build_path = /obj/item/gps/medical -/datum/design/science/gps/engineering +/datum/prototype/design/science/gps/engineering design_name = "ENG" id = "gps_eng" build_path = /obj/item/gps/engineering -/datum/design/science/gps/science +/datum/prototype/design/science/gps/science design_name = "SCI" id = "gps_sci" build_path = /obj/item/gps/science -/datum/design/science/gps/mining +/datum/prototype/design/science/gps/mining design_name = "MINE" id = "gps_mine" build_path = /obj/item/gps/mining -/datum/design/science/gps/explorer +/datum/prototype/design/science/gps/explorer design_name = "EXP" id = "gps_exp" build_path = /obj/item/gps/explorer -/datum/design/science/locator - abstract_type = /datum/design/science/locator +/datum/prototype/design/science/locator + abstract_type = /datum/prototype/design/science/locator -/datum/design/science/locator/generate_name(template) +/datum/prototype/design/science/locator/generate_name(template) return "Locator device design ([..()])" -/datum/design/science/locator/beacon_locator +/datum/prototype/design/science/locator/beacon_locator design_name = "Tracking beacon pinpointer" desc = "Used to scan and locate signals on a particular frequency." id = "beacon_locator" @@ -60,7 +60,7 @@ materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 500) build_path = /obj/item/beacon_locator -/datum/design/science/locator/beacon +/datum/prototype/design/science/locator/beacon design_name = "Bluespace tracking beacon" id = "beacon" req_tech = list(TECH_BLUESPACE = 1) diff --git a/code/modules/research/designs/mechfab_designs.dm b/code/modules/research/designs/mechfab_designs.dm index d38be97cb29..42ff17b2956 100644 --- a/code/modules/research/designs/mechfab_designs.dm +++ b/code/modules/research/designs/mechfab_designs.dm @@ -1,257 +1,257 @@ -/datum/design/science/mechfab - abstract_type = /datum/design/science/mechfab +/datum/prototype/design/science/mechfab + abstract_type = /datum/prototype/design/science/mechfab lathe_type = LATHE_TYPE_MECHA category = list("Other") req_tech = list(TECH_MATERIAL = 1) -/datum/design/science/mechfab/ripley - abstract_type = /datum/design/science/mechfab/ripley +/datum/prototype/design/science/mechfab/ripley + abstract_type = /datum/prototype/design/science/mechfab/ripley category = list("Ripley") -/datum/design/science/mechfab/ripley/chassis +/datum/prototype/design/science/mechfab/ripley/chassis design_name = "Ripley Chassis" id = "ripley_chassis" build_path = /obj/item/mecha_parts/chassis/ripley work = (10 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 15000) -/datum/design/science/mechfab/ripley/chassis/firefighter +/datum/prototype/design/science/mechfab/ripley/chassis/firefighter design_name = "Firefigher Chassis" id = "firefighter_chassis" build_path = /obj/item/mecha_parts/chassis/firefighter -/datum/design/science/mechfab/ripley/chassis/geiger +/datum/prototype/design/science/mechfab/ripley/chassis/geiger design_name = "Geiger Chassis" id = "geiger_chassis" build_path = /obj/item/mecha_parts/chassis/geiger -/datum/design/science/mechfab/ripley/torso +/datum/prototype/design/science/mechfab/ripley/torso design_name = "Ripley Torso" id = "ripley_torso" build_path = /obj/item/mecha_parts/part/ripley_torso work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 30000, MAT_GLASS = 11250) -/datum/design/science/mechfab/ripley/torso/geiger +/datum/prototype/design/science/mechfab/ripley/torso/geiger design_name = "Geiger Torso" id = "geiger_torso" build_path = /obj/item/mecha_parts/part/geiger_torso work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 25000, MAT_GLASS = 10000) -/datum/design/science/mechfab/ripley/left_arm +/datum/prototype/design/science/mechfab/ripley/left_arm design_name = "Ripley Left Arm" id = "ripley_left_arm" build_path = /obj/item/mecha_parts/part/ripley_left_arm work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 18750) -/datum/design/science/mechfab/ripley/right_arm +/datum/prototype/design/science/mechfab/ripley/right_arm design_name = "Ripley Right Arm" id = "ripley_right_arm" build_path = /obj/item/mecha_parts/part/ripley_right_arm work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 18750) -/datum/design/science/mechfab/ripley/left_leg +/datum/prototype/design/science/mechfab/ripley/left_leg design_name = "Ripley Left Leg" id = "ripley_left_leg" build_path = /obj/item/mecha_parts/part/ripley_left_leg work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 22500) -/datum/design/science/mechfab/ripley/right_leg +/datum/prototype/design/science/mechfab/ripley/right_leg design_name = "Ripley Right Leg" id = "ripley_right_leg" build_path = /obj/item/mecha_parts/part/ripley_right_leg work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 22500) -/datum/design/science/mechfab/odysseus - abstract_type = /datum/design/science/mechfab/odysseus +/datum/prototype/design/science/mechfab/odysseus + abstract_type = /datum/prototype/design/science/mechfab/odysseus category = list("Odysseus") -/datum/design/science/mechfab/odysseus/chassis +/datum/prototype/design/science/mechfab/odysseus/chassis design_name = "Odysseus Chassis" id = "odysseus_chassis" build_path = /obj/item/mecha_parts/chassis/odysseus work = (10 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 15000) -/datum/design/science/mechfab/odysseus/torso +/datum/prototype/design/science/mechfab/odysseus/torso design_name = "Odysseus Torso" id = "odysseus_torso" build_path = /obj/item/mecha_parts/part/odysseus_torso work = (18 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 18750) -/datum/design/science/mechfab/odysseus/head +/datum/prototype/design/science/mechfab/odysseus/head design_name = "Odysseus Head" id = "odysseus_head" build_path = /obj/item/mecha_parts/part/odysseus_head work = (10 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 1500, MAT_GLASS = 7500) -/datum/design/science/mechfab/odysseus/left_arm +/datum/prototype/design/science/mechfab/odysseus/left_arm design_name = "Odysseus Left Arm" id = "odysseus_left_arm" build_path = /obj/item/mecha_parts/part/odysseus_left_arm work = (12 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 7500) -/datum/design/science/mechfab/odysseus/right_arm +/datum/prototype/design/science/mechfab/odysseus/right_arm design_name = "Odysseus Right Arm" id = "odysseus_right_arm" build_path = /obj/item/mecha_parts/part/odysseus_right_arm work = (12 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 7500) -/datum/design/science/mechfab/odysseus/left_leg +/datum/prototype/design/science/mechfab/odysseus/left_leg design_name = "Odysseus Left Leg" id = "odysseus_left_leg" build_path = /obj/item/mecha_parts/part/odysseus_left_leg work = (13 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 11250) -/datum/design/science/mechfab/odysseus/right_leg +/datum/prototype/design/science/mechfab/odysseus/right_leg design_name = "Odysseus Right Leg" id = "odysseus_right_leg" build_path = /obj/item/mecha_parts/part/odysseus_right_leg work = (13 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 11250) -/datum/design/science/mechfab/gygax - abstract_type = /datum/design/science/mechfab/gygax +/datum/prototype/design/science/mechfab/gygax + abstract_type = /datum/prototype/design/science/mechfab/gygax category = list("Gygax") -/datum/design/science/mechfab/gygax/chassis/serenity +/datum/prototype/design/science/mechfab/gygax/chassis/serenity design_name = "Serenity Chassis" id = "serenity_chassis" build_path = /obj/item/mecha_parts/chassis/serenity materials_base = list(MAT_STEEL = 18750, MAT_PHORON = 4000) -/datum/design/science/mechfab/gygax/chassis +/datum/prototype/design/science/mechfab/gygax/chassis design_name = "Gygax Chassis" id = "gygax_chassis" build_path = /obj/item/mecha_parts/chassis/gygax work = (10 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 18750) -/datum/design/science/mechfab/gygax/torso +/datum/prototype/design/science/mechfab/gygax/torso design_name = "Gygax Torso" id = "gygax_torso" build_path = /obj/item/mecha_parts/part/gygax_torso work = (30 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 37500, MAT_GLASS = 15000) -/datum/design/science/mechfab/gygax/head +/datum/prototype/design/science/mechfab/gygax/head design_name = "Gygax Head" id = "gygax_head" build_path = /obj/item/mecha_parts/part/gygax_head work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 15000, MAT_GLASS = 7500) -/datum/design/science/mechfab/gygax/left_arm +/datum/prototype/design/science/mechfab/gygax/left_arm design_name = "Gygax Left Arm" id = "gygax_left_arm" build_path = /obj/item/mecha_parts/part/gygax_left_arm work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 22500) -/datum/design/science/mechfab/gygax/right_arm +/datum/prototype/design/science/mechfab/gygax/right_arm design_name = "Gygax Right Arm" id = "gygax_right_arm" build_path = /obj/item/mecha_parts/part/gygax_right_arm work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 22500) -/datum/design/science/mechfab/gygax/left_leg +/datum/prototype/design/science/mechfab/gygax/left_leg design_name = "Gygax Left Leg" id = "gygax_left_leg" build_path = /obj/item/mecha_parts/part/gygax_left_leg work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 26250) -/datum/design/science/mechfab/gygax/right_leg +/datum/prototype/design/science/mechfab/gygax/right_leg design_name = "Gygax Right Leg" id = "gygax_right_leg" build_path = /obj/item/mecha_parts/part/gygax_right_leg work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 26250) -/datum/design/science/mechfab/gygax/armour +/datum/prototype/design/science/mechfab/gygax/armour design_name = "Gygax Armour Plates" id = "gygax_armour" build_path = /obj/item/mecha_parts/part/gygax_armour work = (60 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 37500, MAT_DIAMOND = 7500) -/datum/design/science/mechfab/durand - abstract_type = /datum/design/science/mechfab/durand +/datum/prototype/design/science/mechfab/durand + abstract_type = /datum/prototype/design/science/mechfab/durand category = list("Durand") -/datum/design/science/mechfab/durand/chassis +/datum/prototype/design/science/mechfab/durand/chassis design_name = "Durand Chassis" id = "durand_chassis" build_path = /obj/item/mecha_parts/chassis/durand work = (10 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 18750) -/datum/design/science/mechfab/durand/torso +/datum/prototype/design/science/mechfab/durand/torso design_name = "Durand Torso" id = "durand_torso" build_path = /obj/item/mecha_parts/part/durand_torso work = (30 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 41250, MAT_GLASS = 15000, MAT_SILVER = 7500) -/datum/design/science/mechfab/durand/head +/datum/prototype/design/science/mechfab/durand/head design_name = "Durand Head" id = "durand_head" build_path = /obj/item/mecha_parts/part/durand_head work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 18750, MAT_GLASS = 7500, MAT_SILVER = 2250) -/datum/design/science/mechfab/durand/left_arm +/datum/prototype/design/science/mechfab/durand/left_arm design_name = "Durand Left Arm" id = "durand_left_arm" build_path = /obj/item/mecha_parts/part/durand_left_arm work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 26250, MAT_SILVER = 2250) -/datum/design/science/mechfab/durand/right_arm +/datum/prototype/design/science/mechfab/durand/right_arm design_name = "Durand Right Arm" id = "durand_right_arm" build_path = /obj/item/mecha_parts/part/durand_right_arm work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 26250, MAT_SILVER = 2250) -/datum/design/science/mechfab/durand/left_leg +/datum/prototype/design/science/mechfab/durand/left_leg design_name = "Durand Left Leg" id = "durand_left_leg" build_path = /obj/item/mecha_parts/part/durand_left_leg work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 30000, MAT_SILVER = 2250) -/datum/design/science/mechfab/durand/right_leg +/datum/prototype/design/science/mechfab/durand/right_leg design_name = "Durand Right Leg" id = "durand_right_leg" build_path = /obj/item/mecha_parts/part/durand_right_leg work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 30000, MAT_SILVER = 2250) -/datum/design/science/mechfab/durand/armour +/datum/prototype/design/science/mechfab/durand/armour design_name = "Durand Armour Plates" id = "durand_armour" build_path = /obj/item/mecha_parts/part/durand_armour work = (60 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 37500, MAT_URANIUM = 7500) -/datum/design/science/mechfab/janus - abstract_type = /datum/design/science/mechfab/janus +/datum/prototype/design/science/mechfab/janus + abstract_type = /datum/prototype/design/science/mechfab/janus category = list("Janus") req_tech = list(TECH_MATERIAL = 7, TECH_BLUESPACE = 5, TECH_MAGNET = 6, TECH_PHORON = 3, TECH_ARCANE = 1, TECH_PRECURSOR = 2) -/datum/design/science/mechfab/janus/chassis +/datum/prototype/design/science/mechfab/janus/chassis design_name = "Janus Chassis" id = "janus_chassis" build_path = /obj/item/mecha_parts/chassis/janus @@ -259,249 +259,249 @@ materials_base = list(MAT_DURASTEEL = 19000, MAT_MORPHIUM = 10500, MAT_PLASTEEL = 5500, MAT_LEAD = 2500) req_tech = list(TECH_MATERIAL = 7, TECH_BLUESPACE = 5, TECH_MAGNET = 6, TECH_PHORON = 3, TECH_ARCANE = 1, TECH_PRECURSOR = 3) -/datum/design/science/mechfab/janus/torso +/datum/prototype/design/science/mechfab/janus/torso design_name = "Imperion Torso" id = "janus_torso" build_path = /obj/item/mecha_parts/part/janus_torso work = (300 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 30000, MAT_DURASTEEL = 8000, MAT_MORPHIUM = 10000, MAT_GOLD = 5000, MAT_VERDANTIUM = 5000) -/datum/design/science/mechfab/janus/head +/datum/prototype/design/science/mechfab/janus/head design_name = "Imperion Head" id = "janus_head" build_path = /obj/item/mecha_parts/part/janus_head work = (200 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 30000, MAT_DURASTEEL = 2000, MAT_MORPHIUM = 6000, MAT_GOLD = 5000) -/datum/design/science/mechfab/janus/left_arm +/datum/prototype/design/science/mechfab/janus/left_arm design_name = "Prototype Gygax Left Arm" id = "janus_left_arm" build_path = /obj/item/mecha_parts/part/janus_left_arm work = (200 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 30000, MAT_METALHYDROGEN = 3000, MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_GOLD = 5000, MAT_DIAMOND = 7000) -/datum/design/science/mechfab/janus/right_arm +/datum/prototype/design/science/mechfab/janus/right_arm design_name = "Prototype Gygax Right Arm" id = "janus_right_arm" build_path = /obj/item/mecha_parts/part/janus_right_arm work = (200 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 30000, MAT_METALHYDROGEN = 3000, MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_GOLD = 5000, MAT_DIAMOND = 7000) -/datum/design/science/mechfab/janus/left_leg +/datum/prototype/design/science/mechfab/janus/left_leg design_name = "Prototype Durand Left Leg" id = "janus_left_leg" build_path = /obj/item/mecha_parts/part/janus_left_leg work = (200 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 30000, MAT_METALHYDROGEN = 3000, MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_GOLD = 5000, MAT_URANIUM = 7000) -/datum/design/science/mechfab/janus/right_leg +/datum/prototype/design/science/mechfab/janus/right_leg design_name = "Prototype Durand Right Leg" id = "janus_right_leg" build_path = /obj/item/mecha_parts/part/janus_right_leg work = (200 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 30000, MAT_METALHYDROGEN = 3000, MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_GOLD = 5000, MAT_URANIUM = 7000) -/datum/design/science/mechfab/janus/phase_coil +/datum/prototype/design/science/mechfab/janus/phase_coil design_name = "Janus Phase Coil" id = "janus_coil" build_path = /obj/item/prop/alien/phasecoil work = (600 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_SUPERMATTER = 2000, MAT_PLASTEEL = 60000, MAT_URANIUM = 3250, MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_GOLD = 5000, MAT_VERDANTIUM = 5000, MAT_DIAMOND = 10000, MAT_LEAD = 15000) -/datum/design/science/mechfab/honker - abstract_type = /datum/design/science/mechfab/honker +/datum/prototype/design/science/mechfab/honker + abstract_type = /datum/prototype/design/science/mechfab/honker category = list("H.O.N.K.") -/datum/design/science/mechfab/honker/chassis +/datum/prototype/design/science/mechfab/honker/chassis design_name = "H.O.N.K. Chassis" id = "honker_chassis" build_path = /obj/item/mecha_parts/chassis/honker work = (10 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 18750) -/datum/design/science/mechfab/honker/torso +/datum/prototype/design/science/mechfab/honker/torso design_name = "H.O.N.K. Torso" id = "honker_torso" build_path = /obj/item/mecha_parts/part/honker_torso work = (30 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 37500, MAT_GLASS = 15000, MAT_PLASTIC = 10000) -/datum/design/science/mechfab/honker/head +/datum/prototype/design/science/mechfab/honker/head design_name = "H.O.N.K. Head" id = "honker_head" build_path = /obj/item/mecha_parts/part/honker_head work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 15000, MAT_GLASS = 7500, MAT_PLASTIC = 5000) -/datum/design/science/mechfab/honker/left_arm +/datum/prototype/design/science/mechfab/honker/left_arm design_name = "H.O.N.K. Left Arm" id = "honker_left_arm" build_path = /obj/item/mecha_parts/part/honker_left_arm work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 22500, MAT_PLASTIC = 12000) -/datum/design/science/mechfab/honker/right_arm +/datum/prototype/design/science/mechfab/honker/right_arm design_name = "H.O.N.K. Right Arm" id = "honker_right_arm" build_path = /obj/item/mecha_parts/part/honker_right_arm work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 22500, MAT_PLASTIC = 12000) -/datum/design/science/mechfab/honker/left_leg +/datum/prototype/design/science/mechfab/honker/left_leg design_name = "H.O.N.K. Left Leg" id = "honker_left_leg" build_path = /obj/item/mecha_parts/part/honker_left_leg work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 26250, MAT_PLASTIC = 15000) -/datum/design/science/mechfab/honker/right_leg +/datum/prototype/design/science/mechfab/honker/right_leg design_name = "H.O.N.K. Right Leg" id = "honker_right_leg" build_path = /obj/item/mecha_parts/part/honker_right_leg work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 26250, MAT_PLASTIC = 15000) -/datum/design/science/mechfab/honker/armour +/datum/prototype/design/science/mechfab/honker/armour design_name = "H.O.N.K. Armour Plates" id = "honker_armour" build_path = /obj/item/mecha_parts/part/honker_armour work = (60 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 37500, MAT_DIAMOND = 7500, MAT_PLASTIC = 5000, MAT_BANANIUM = 20000) -/datum/design/science/mechfab/reticent - abstract_type = /datum/design/science/mechfab/reticent +/datum/prototype/design/science/mechfab/reticent + abstract_type = /datum/prototype/design/science/mechfab/reticent category = list("Reticent") -/datum/design/science/mechfab/reticent/chassis +/datum/prototype/design/science/mechfab/reticent/chassis design_name = "Reticent Chassis" id = "reticent_chassis" build_path = /obj/item/mecha_parts/chassis/reticent work = (10 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 18750) -/datum/design/science/mechfab/reticent/torso +/datum/prototype/design/science/mechfab/reticent/torso design_name = "Reticent Torso" id = "reticent_torso" build_path = /obj/item/mecha_parts/part/reticent_torso work = (30 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 37500, MAT_GLASS = 15000, MAT_OSMIUM = 5000) -/datum/design/science/mechfab/reticent/head +/datum/prototype/design/science/mechfab/reticent/head design_name = "Reticent Head" id = "reticent_head" build_path = /obj/item/mecha_parts/part/reticent_head work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 15000, MAT_GLASS = 7500, MAT_OSMIUM = 5000) -/datum/design/science/mechfab/reticent/left_arm +/datum/prototype/design/science/mechfab/reticent/left_arm design_name = "Reticent Left Arm" id = "reticent_left_arm" build_path = /obj/item/mecha_parts/part/reticent_left_arm work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 22500, MAT_PLASTIC = 12000) -/datum/design/science/mechfab/reticent/right_arm +/datum/prototype/design/science/mechfab/reticent/right_arm design_name = "Reticent Right Arm" id = "reticent_right_arm" build_path = /obj/item/mecha_parts/part/reticent_right_arm work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 22500, MAT_PLASTIC = 12000) -/datum/design/science/mechfab/reticent/left_leg +/datum/prototype/design/science/mechfab/reticent/left_leg design_name = "Reticent Left Leg" id = "reticent_left_leg" build_path = /obj/item/mecha_parts/part/reticent_left_leg work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 26250, MAT_PLASTIC = 15000) -/datum/design/science/mechfab/reticent/right_leg +/datum/prototype/design/science/mechfab/reticent/right_leg design_name = "Reticent Right Leg" id = "reticent_right_leg" build_path = /obj/item/mecha_parts/part/reticent_right_leg work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 26250, MAT_PLASTIC = 15000) -/datum/design/science/mechfab/reticent/armour +/datum/prototype/design/science/mechfab/reticent/armour design_name = "Reticent Armour Plates" id = "reticent_armour" build_path = /obj/item/mecha_parts/part/reticent_armour work = (60 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 37500, MAT_OSMIUM = 7500, MAT_PLASTIC = 5000, MAT_SILENCIUM = 20000) -/datum/design/science/mecha - abstract_type = /datum/design/science/mecha +/datum/prototype/design/science/mecha + abstract_type = /datum/prototype/design/science/mecha lathe_type = LATHE_TYPE_MECHA category = list("Exosuit Equipment") work = (10 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 7500) -/datum/design/science/mecha/generate_desc(template_name, template_desc) +/datum/prototype/design/science/mecha/generate_desc(template_name, template_desc) return "Allows for the construction of \a '[template_name]' exosuit module." -/datum/design/science/mecha/tracking +/datum/prototype/design/science/mecha/tracking design_name = "Exosuit Tracking Beacon" id = "mech_tracker" work = (5 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 375) build_path = /obj/item/mecha_parts/mecha_tracking -/datum/design/science/mecha/hydraulic_clamp +/datum/prototype/design/science/mecha/hydraulic_clamp design_name = "Hydraulic Clamp" id = "hydraulic_clamp" build_path = /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp -/datum/design/science/mecha/drill +/datum/prototype/design/science/mecha/drill design_name = "Drill" id = "mech_drill" build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill -/datum/design/science/mecha/extinguisher +/datum/prototype/design/science/mecha/extinguisher design_name = "Extinguisher" id = "extinguisher" build_path = /obj/item/mecha_parts/mecha_equipment/tool/extinguisher -/datum/design/science/mecha/cable_layer +/datum/prototype/design/science/mecha/cable_layer design_name = "Cable Layer" id = "mech_cable_layer" build_path = /obj/item/mecha_parts/mecha_equipment/tool/cable_layer materials_base = list(MAT_STEEL = 7500, MAT_PLASTIC = 1000) -/datum/design/science/mecha/flaregun +/datum/prototype/design/science/mecha/flaregun design_name = "Flare Launcher" id = "mecha_flare_gun" build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flare materials_base = list(MAT_STEEL = 9375) -/datum/design/science/mecha/sleeper +/datum/prototype/design/science/mecha/sleeper design_name = "Sleeper" id = "mech_sleeper" build_path = /obj/item/mecha_parts/mecha_equipment/tool/sleeper materials_base = list(MAT_STEEL = 3750, MAT_GLASS = 7500) -/datum/design/science/mecha/syringe_gun +/datum/prototype/design/science/mecha/syringe_gun design_name = "Syringe Gun" id = "mech_syringe_gun" build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 2250, MAT_GLASS = 1500) -/datum/design/science/mecha/passenger +/datum/prototype/design/science/mecha/passenger design_name = "Passenger Compartment" id = "mech_passenger" build_path = /obj/item/mecha_parts/mecha_equipment/tool/passenger materials_base = list(MAT_STEEL = 3750, MAT_GLASS = 3750) -/datum/design/science/mecha/taser +/datum/prototype/design/science/mecha/taser design_name = "PBT \"Pacifier\" Mounted Taser" id = "mech_taser" build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser -/datum/design/science/mecha/rigged_taser +/datum/prototype/design/science/mecha/rigged_taser design_name = "Jury-Rigged Taser" id = "mech_taser-r" build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser/rigged -/datum/design/science/mecha/shocker +/datum/prototype/design/science/mecha/shocker design_name = "Exosuit Electrifier" desc = "A device to electrify the external portions of a mecha in order to increase its defensive capabilities." id = "mech_shocker" @@ -509,147 +509,147 @@ build_path = /obj/item/mecha_parts/mecha_equipment/shocker materials_base = list(MAT_STEEL = 3500, MAT_GOLD = 750, MAT_GLASS = 1000) -/datum/design/science/mecha/lmg +/datum/prototype/design/science/mecha/lmg design_name = "Ultra AC 2" id = "mech_lmg" build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg -/datum/design/science/mecha/lmg_heavy +/datum/prototype/design/science/mecha/lmg_heavy design_name = "AC 10" id = "mech_lmg_heavy" build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg_heavy materials_base = list(MAT_STEEL = 12000, MAT_GLASS = 4000, MAT_PLASTIC = 3000, MAT_SILVER = 1500, MAT_COPPER = 4000) -/datum/design/science/mecha/gauss_rifle +/datum/prototype/design/science/mecha/gauss_rifle design_name = "Gauss Rifle" id = "mech_gauss_rifle" build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/gauss_rifle materials_base = list(MAT_STEEL = 16000, MAT_GLASS = 8000, MAT_PLASTIC = 4000, MAT_SILVER = 3500, MAT_COPPER = 8000) -/datum/design/science/mecha/rigged_lmg +/datum/prototype/design/science/mecha/rigged_lmg design_name = "Jury-Rigged Machinegun" id = "mech_lmg-r" build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg/rigged -/datum/design/science/mecha/weapon - abstract_type = /datum/design/science/mecha/weapon +/datum/prototype/design/science/mecha/weapon + abstract_type = /datum/prototype/design/science/mecha/weapon req_tech = list(TECH_COMBAT = 3) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 2000) // *** Weapon modules -/datum/design/science/mecha/weapon/scattershot +/datum/prototype/design/science/mecha/weapon/scattershot design_name = "LBX AC 10 \"Scattershot\"" id = "mech_scattershot" req_tech = list(TECH_COMBAT = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 3000, MAT_PLASTIC = 2000, MAT_SILVER = 2500) -/datum/design/science/mecha/weapon/rigged_scattershot +/datum/prototype/design/science/mecha/weapon/rigged_scattershot design_name = "Jury-Rigged Shrapnel Cannon" id = "mech_scattershot-r" req_tech = list(TECH_COMBAT = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot/rigged materials_base = list(MAT_STEEL = 7000, MAT_GLASS = 2000, MAT_PLASTIC = 2000, MAT_SILVER = 2000) -/datum/design/science/mecha/weapon/laser +/datum/prototype/design/science/mecha/weapon/laser design_name = "CH-PS \"Immolator\" Laser" id = "mech_laser" req_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 3000, MAT_PLASTIC = 2000) -/datum/design/science/mecha/weapon/laser_rigged +/datum/prototype/design/science/mecha/weapon/laser_rigged design_name = "Jury-Rigged Welder-Laser" desc = "Allows for the construction of a welder-laser assembly package for non-combat exosuits." id = "mech_laser_rigged" req_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 2) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser -/datum/design/science/mecha/weapon/laser_heavy +/datum/prototype/design/science/mecha/weapon/laser_heavy design_name = "CH-LC \"Solaris\" Laser Cannon" id = "mech_laser_heavy" req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 3000, MAT_DIAMOND = 2000, MAT_OSMIUM = 5000, MAT_PLASTIC = 2000) -/datum/design/science/mecha/weapon/rigged_laser_heavy +/datum/prototype/design/science/mecha/weapon/rigged_laser_heavy design_name = "Jury-Rigged Emitter Cannon" id = "mech_laser_heavy-r" req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4, TECH_PHORON = 3, TECH_ILLEGAL = 1) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy/rigged materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 4000, MAT_DIAMOND = 1500, MAT_OSMIUM = 4000, MAT_PLASTIC = 2000) -/datum/design/science/mecha/weapon/laser_xray +/datum/prototype/design/science/mecha/weapon/laser_xray design_name = "CH-XS \"Penetrator\" Laser" id = "mech_laser_xray" req_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_POWER = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray materials_base = list(MAT_STEEL = 9000, MAT_GLASS = 3000, MAT_PHORON = 1000, MAT_SILVER = 1500, MAT_GOLD = 2500, MAT_PLASTIC = 2000) -/datum/design/science/mecha/weapon/rigged_laser_xray +/datum/prototype/design/science/mecha/weapon/rigged_laser_xray design_name = "Jury-Rigged Xray Rifle" id = "mech_laser_xray-r" req_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_POWER = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray/rigged materials_base = list(MAT_STEEL = 8500, MAT_GLASS = 2500, MAT_PHORON = 1000, MAT_SILVER = 1250, MAT_GOLD = 2000, MAT_PLASTIC = 2000) -/datum/design/science/mecha/weapon/phase +/datum/prototype/design/science/mecha/weapon/phase design_name = "NT-PE \"Scorpio\" Phase-Emitter" id = "mech_phase" req_tech = list(TECH_MATERIAL = 1, TECH_COMBAT = 2, TECH_MAGNET = 2) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/phase materials_base = list(MAT_STEEL = 6000, MAT_GLASS = 3000, MAT_PLASTIC = 3000) -/datum/design/science/mecha/weapon/ion +/datum/prototype/design/science/mecha/weapon/ion design_name = "MK-IV Ion Heavy Cannon" id = "mech_ion" req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion materials_base = list(MAT_STEEL = 15000, MAT_URANIUM = 2000, MAT_SILVER = 2000, MAT_OSMIUM = 4500, MAT_PLASTIC = 2000) -/datum/design/science/mecha/weapon/rigged_ion +/datum/prototype/design/science/mecha/weapon/rigged_ion design_name = "Jury-Rigged Ion Cannon" id = "mech_ion-r" req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion/rigged materials_base = list(MAT_STEEL = 13000, MAT_URANIUM = 1000, MAT_SILVER = 1000, MAT_OSMIUM = 3000, MAT_PLASTIC = 2000) -/datum/design/science/mecha/weapon/sound_cannon +/datum/prototype/design/science/mecha/weapon/sound_cannon design_name = "H.O.N.K. Sound Cannon" id = "mech_soundcannon" req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4, TECH_ILLEGAL = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/honker materials_base = list(MAT_STEEL = 13000, MAT_SILVER = 1000, MAT_OSMIUM = 3000, MAT_PLASTIC = 2000, MAT_BANANIUM = 4000) -/datum/design/science/mecha/weapon/whisper_blade +/datum/prototype/design/science/mecha/weapon/whisper_blade design_name = "Reticent Whisper Blade" id = "mech_whisper" req_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 4, TECH_ILLEGAL = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/whisperblade materials_base = list(MAT_STEEL = 13000, MAT_GOLD = 1000, MAT_OSMIUM = 3000, MAT_PLASTEEL = 2000, MAT_SILENCIUM = 4000) -/datum/design/science/mecha/weapon/inferno_blade +/datum/prototype/design/science/mecha/weapon/inferno_blade design_name = "Reticent Inferno Blade" id = "mech_inferno" req_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 4, TECH_ILLEGAL = 4) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/infernoblade materials_base = list(MAT_STEEL = 13000, MAT_GOLD = 1000, MAT_LEAD = 3000, MAT_PLASTEEL = 2000, MAT_SILENCIUM = 4000) -/datum/design/science/mecha/weapon/grenade_launcher +/datum/prototype/design/science/mecha/weapon/grenade_launcher design_name = "SGL-6 Grenade Launcher" id = "mech_grenade_launcher" req_tech = list(TECH_COMBAT = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade materials_base = list(MAT_STEEL = 7000, MAT_GOLD = 2000, MAT_PLASTIC = 3000) -/datum/design/science/mecha/weapon/rigged_grenade_launcher +/datum/prototype/design/science/mecha/weapon/rigged_grenade_launcher design_name = "Jury-Rigged Pneumatic Flashlauncher" id = "mech_grenade_launcher-hardsuit" req_tech = list(TECH_COMBAT = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/rigged materials_base = list(MAT_STEEL = 5000, MAT_GOLD = 2000, MAT_PLASTIC = 2000) -/datum/design/science/mecha/weapon/clusterbang_launcher +/datum/prototype/design/science/mecha/weapon/clusterbang_launcher design_name = "SOP-6 Grenade Launcher" desc = "A weapon that violates the Geneva Convention at 6 rounds per minute." id = "clusterbang_launcher" @@ -657,35 +657,35 @@ materials_base = list(MAT_STEEL = 15000, MAT_GOLD = 4500, MAT_URANIUM = 4500) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang/limited -/datum/design/science/mecha/weapon/conc_grenade_launcher +/datum/prototype/design/science/mecha/weapon/conc_grenade_launcher design_name = "SGL-9 Grenade Launcher" id = "mech_grenade_launcher_conc" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_ILLEGAL = 1) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/concussion materials_base = list(MAT_STEEL = 9000, MAT_GOLD = 1000, MAT_OSMIUM = 1000, MAT_PLASTIC = 3000) -/datum/design/science/mecha/weapon/frag_grenade_launcher +/datum/prototype/design/science/mecha/weapon/frag_grenade_launcher design_name = "HEP-MI 6 Grenade Launcher" id = "mech_grenade_launcher_frag" req_tech = list(TECH_COMBAT = 4, TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_ILLEGAL = 2) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/frag/mini materials_base = list(MAT_STEEL = 10000, MAT_GOLD = 2500, MAT_URANIUM = 3000, MAT_OSMIUM = 3000, MAT_PLASTIC = 3000) -/datum/design/science/mecha/weapon/banana_launcher +/datum/prototype/design/science/mecha/weapon/banana_launcher design_name = "WSS-2 Banana Peel Launcher" id = "mech_banana_launcher" req_tech = list(TECH_COMBAT = 3, TECH_ILLEGAL = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/banana materials_base = list(MAT_STEEL = 7000, MAT_GOLD = 2000, MAT_OSMIUM = 1000, MAT_PLASTIC = 5000, MAT_BANANIUM = 4000) -/datum/design/science/mecha/weapon/mousetrap_launcher +/datum/prototype/design/science/mecha/weapon/mousetrap_launcher design_name = "WSS-5 Mouse Trap Launcher" id = "mech_mousetrap_launcher" req_tech = list(TECH_COMBAT = 3, TECH_ILLEGAL = 3) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/mousetrap materials_base = list(MAT_STEEL = 7000, MAT_GOLD = 2000, MAT_OSMIUM = 1000, MAT_PLASTIC = 5000, MAT_BANANIUM = 4000) -/datum/design/science/mecha/weapon/flamer +/datum/prototype/design/science/mecha/weapon/flamer design_name = "CR-3 Mark 8 Flamethrower" desc = "A weapon that violates the CCWC at two hundred gallons per minute." id = "mech_flamer_full" @@ -693,7 +693,7 @@ materials_base = list(MAT_STEEL = 10000, MAT_GOLD = 2000, MAT_URANIUM = 3000, MAT_PHORON = 8000) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer -/datum/design/science/mecha/weapon/flamer_rigged +/datum/prototype/design/science/mecha/weapon/flamer_rigged design_name = "AA-CR-1 Mark 4 Flamethrower" desc = "A weapon that accidentally violates the CCWC at one hundred gallons per minute." id = "mech_flamer_rigged" @@ -701,7 +701,7 @@ materials_base = list(MAT_STEEL = 8000, MAT_GOLD = 1500, MAT_SILVER = 1500, MAT_URANIUM = 2000, MAT_PHORON = 6000) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer/rigged -/datum/design/science/mecha/weapon/flame_mg +/datum/prototype/design/science/mecha/weapon/flame_mg design_name = "DR-AC 3 Incendiary Rotary MG" desc = "A weapon that violates the CCWC at sixty rounds a minute." id = "mech_lmg_flamer" @@ -710,21 +710,21 @@ build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/incendiary // *** Nonweapon modules -/datum/design/science/mecha/wormhole_gen +/datum/prototype/design/science/mecha/wormhole_gen design_name = "Wormhole Generator" desc = "An exosuit module that can generate small quasi-stable wormholes." id = "mech_wormhole_gen" req_tech = list(TECH_BLUESPACE = 3, TECH_MAGNET = 2) build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator -/datum/design/science/mecha/teleporter +/datum/prototype/design/science/mecha/teleporter design_name = "Teleporter" desc = "An exosuit module that allows teleportation to any position in view." id = "mech_teleporter" req_tech = list(TECH_BLUESPACE = 10, TECH_MAGNET = 5) build_path = /obj/item/mecha_parts/mecha_equipment/teleporter -/datum/design/science/mecha/rcd +/datum/prototype/design/science/mecha/rcd design_name = "RCD" desc = "An exosuit-mounted rapid construction device." id = "mech_rcd" @@ -733,14 +733,14 @@ req_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 3, TECH_MAGNET = 4, TECH_POWER = 4, TECH_ENGINEERING = 4) build_path = /obj/item/mecha_parts/mecha_equipment/tool/rcd -/datum/design/science/mecha/gravcatapult +/datum/prototype/design/science/mecha/gravcatapult design_name = "Gravitational Catapult" desc = "An exosuit-mounted gravitational catapult." id = "mech_gravcatapult" req_tech = list(TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3) build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult -/datum/design/science/mecha/repair_droid +/datum/prototype/design/science/mecha/repair_droid design_name = "Repair Droid" desc = "Automated repair droid, exosuits' best companion. BEEP BOOP" id = "mech_repair_droid" @@ -748,7 +748,7 @@ materials_base = list(MAT_STEEL = 7500, MAT_GOLD = 750, MAT_SILVER = 1500, MAT_GLASS = 3750) build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid -/datum/design/science/mecha/shield_drone +/datum/prototype/design/science/mecha/shield_drone design_name = "Shield Drone" desc = "Manual shield drone. Deploys a large, familiar, and rectangular shield in one direction at a time." id = "mech_shield_droid" @@ -756,7 +756,7 @@ materials_base = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 3000, MAT_PHORON = 5000, MAT_GLASS = 3750) build_path = /obj/item/mecha_parts/mecha_equipment/combat_shield -/datum/design/science/mecha/reticent_shield_drone +/datum/prototype/design/science/mecha/reticent_shield_drone design_name = "Reticent Wall Projector" desc = "A Le Rien specialty shield drone. Deploys a translucent rectangular shield in one direction." id = "mech_reticent_shield_droid" @@ -764,7 +764,7 @@ materials_base = list(MAT_STEEL = 8000, MAT_OSMIUM = 4000, MAT_SILVER = 3000, MAT_SILENCIUM = 10000, MAT_GLASS = 3750) build_path = /obj/item/mecha_parts/mecha_equipment/combat_shield/reticent -/datum/design/science/mecha/crisis_drone +/datum/prototype/design/science/mecha/crisis_drone design_name = "Crisis Drone" desc = "Deploys a small medical drone capable of patching small wounds in order to stabilize nearby patients." id = "mech_med_droid" @@ -772,7 +772,7 @@ materials_base = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 3000, MAT_VERDANTIUM = 2500, MAT_GLASS = 3000) build_path = /obj/item/mecha_parts/mecha_equipment/crisis_drone -/datum/design/science/mecha/rad_drone +/datum/prototype/design/science/mecha/rad_drone design_name = "Hazmat Drone" desc = "Deploys a small hazmat drone capable of purging minor radiation damage in order to stabilize nearby patients." id = "mech_rad_droid" @@ -780,7 +780,7 @@ materials_base = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_URANIUM = 3000, MAT_VERDANTIUM = 2500, MAT_GLASS = 3000) build_path = /obj/item/mecha_parts/mecha_equipment/crisis_drone/rad -/datum/design/science/mecha/medanalyzer +/datum/prototype/design/science/mecha/medanalyzer design_name = "Mounted Body Scanner" desc = "An advanced mech-mounted device that is not quite as powerful as a stationary body scanner, though still suitably powerful." id = "mech_med_analyzer" @@ -788,7 +788,7 @@ materials_base = list(MAT_PLASTEEL = 4500, MAT_GOLD = 2000, MAT_URANIUM = 3000, MAT_GLASS = 3000) build_path = /obj/item/mecha_parts/mecha_equipment/tool/powertool/medanalyzer -/datum/design/science/mecha/jetpack +/datum/prototype/design/science/mecha/jetpack design_name = "Ion Jetpack" desc = "Using directed ion bursts and cunning solar wind reflection technique, this device enables controlled space flight." id = "mech_jetpack" @@ -796,21 +796,21 @@ build_path = /obj/item/mecha_parts/mecha_equipment/tool/jetpack materials_base = list(MAT_STEEL = 7500, MAT_SILVER = 300, MAT_GLASS = 600) -/datum/design/science/mecha/phoron_generator +/datum/prototype/design/science/mecha/phoron_generator desc = "Phoron Reactor" id = "mech_phoron_generator" req_tech = list(TECH_PHORON = 2, TECH_POWER= 2, TECH_ENGINEERING = 2) build_path = /obj/item/mecha_parts/mecha_equipment/generator materials_base = list(MAT_STEEL = 7500, MAT_SILVER = 375, MAT_GLASS = 750) -/datum/design/science/mecha/energy_relay +/datum/prototype/design/science/mecha/energy_relay design_name = "Energy Relay" id = "mech_energy_relay" req_tech = list(TECH_MAGNET = 4, TECH_POWER = 3) materials_base = list(MAT_STEEL = 7500, MAT_GOLD = 1500, MAT_SILVER = 2250, MAT_GLASS = 1500) build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay -/datum/design/science/mecha/ccw_armor +/datum/prototype/design/science/mecha/ccw_armor design_name = "CCW Armor Booster" desc = "Exosuit close-combat armor booster." id = "mech_ccw_armor" @@ -818,7 +818,7 @@ materials_base = list(MAT_STEEL = 11250, MAT_SILVER = 3750) build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster -/datum/design/science/mecha/proj_armor +/datum/prototype/design/science/mecha/proj_armor design_name = "Ranged Armor Booster" desc = "Exosuit projectile armor booster." id = "mech_proj_armor" @@ -826,7 +826,7 @@ materials_base = list(MAT_STEEL = 15000, MAT_GOLD = 3750) build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster -/datum/design/science/mecha/diamond_drill +/datum/prototype/design/science/mecha/diamond_drill design_name = "Diamond Drill" desc = "A diamond version of the exosuit drill. It's harder, better, faster, stronger." id = "mech_diamond_drill" @@ -834,7 +834,7 @@ materials_base = list(MAT_STEEL = 7500, MAT_DIAMOND = 4875) build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill -/datum/design/science/mecha/ground_drill +/datum/prototype/design/science/mecha/ground_drill design_name = "Surface Bore" desc = "A heavy duty bore. Bigger, better, stronger than the core sampler, but not quite as good as a large drill." id = "mech_ground_drill" @@ -842,7 +842,7 @@ materials_base = list(MAT_STEEL = 7000, MAT_SILVER = 3000, MAT_PHORON = 2000) build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/bore -/datum/design/science/mecha/orescanner +/datum/prototype/design/science/mecha/orescanner design_name = "Ore Scanner" desc = "A hefty device used to scan for subterranean veins of ore." id = "mech_ore_scanner" @@ -850,7 +850,7 @@ materials_base = list(MAT_STEEL = 4000, MAT_GLASS = 1000) build_path = /obj/item/mecha_parts/mecha_equipment/tool/orescanner -/datum/design/science/mecha/advorescanner +/datum/prototype/design/science/mecha/advorescanner design_name = "Advanced Ore Scanner" desc = "A hefty device used to scan for the exact volumes of subterranean veins of ore." id = "mech_ore_scanner_adv" @@ -858,7 +858,7 @@ materials_base = list(MAT_STEEL = 5000, MAT_OSMIUM = 3000, MAT_SILVER = 1000) build_path = /obj/item/mecha_parts/mecha_equipment/tool/orescanner/advanced -/datum/design/science/mecha/powerwrench +/datum/prototype/design/science/mecha/powerwrench design_name = "hydraulic wrench" desc = "A large, hydraulic wrench." id = "mech_wrench" @@ -866,7 +866,7 @@ materials_base = list(MAT_STEEL = 5000, MAT_PLASTIC = 2000, MAT_GLASS = 1250) build_path = /obj/item/mecha_parts/mecha_equipment/tool/powertool -/datum/design/science/mecha/powercrowbar +/datum/prototype/design/science/mecha/powercrowbar design_name = "hydraulic prybar" desc = "A large, hydraulic prybar." id = "mech_crowbar" @@ -874,7 +874,7 @@ materials_base = list(MAT_STEEL = 4000, MAT_OSMIUM = 3000, MAT_GLASS = 1000) build_path = /obj/item/mecha_parts/mecha_equipment/tool/powertool/prybar -/datum/design/science/mecha/generator_nuclear +/datum/prototype/design/science/mecha/generator_nuclear design_name = "Nuclear Reactor" desc = "Exosuit-held nuclear reactor. Converts uranium and everyone's health to energy." id = "mech_generator_nuclear" @@ -882,7 +882,7 @@ materials_base = list(MAT_STEEL = 7500, MAT_SILVER = 375, MAT_GLASS = 750) build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear -/datum/design/science/mecha/speedboost_ripley +/datum/prototype/design/science/mecha/speedboost_ripley design_name = "Ripley Leg Actuator Overdrive" desc = "System enhancements and overdrives to make a mech's legs move faster." id = "mech_speedboost_ripley" @@ -890,7 +890,7 @@ materials_base = list(MAT_STEEL = 10000, MAT_SILVER = 1000, MAT_GOLD = 1000) build_path = /obj/item/mecha_parts/mecha_equipment/speedboost -/datum/design/science/synthetic_flash +/datum/prototype/design/science/synthetic_flash design_name = "Synthetic Flash" id = "sflash" req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2) @@ -903,7 +903,7 @@ * Printable Internal Components */ -/datum/design/science/mecha_component +/datum/prototype/design/science/mecha_component design_name = "Mecha Actuator" id = "mactuator" req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2) @@ -912,84 +912,84 @@ build_path = /obj/item/mecha_parts/component/actuator category = list("Components") -/datum/design/science/mecha_component/actuator_high +/datum/prototype/design/science/mecha_component/actuator_high design_name = "Mecha Actuator - High Speed" id = "mactuatorhigh" req_tech = list(TECH_ENGINEERING = 5, TECH_MATERIAL = 6) materials_base = list(MAT_STEEL = 7000, MAT_GLASS = 4000, MAT_GOLD = 10000) build_path = /obj/item/mecha_parts/component/actuator/hispeed -/datum/design/science/mecha_component/armor +/datum/prototype/design/science/mecha_component/armor design_name = "Mecha Plating" id = "marmor" req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 3) materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 2000) build_path = /obj/item/mecha_parts/component/armor -/datum/design/science/mecha_component/armor/blast +/datum/prototype/design/science/mecha_component/armor/blast design_name = "Mecha Plating - Blast Resistant" id = "marmorblast" req_tech = list(TECH_ENGINEERING = 5, TECH_MATERIAL = 4) materials_base = list(MAT_STEEL = 15000, MAT_GLASS = 500, MAT_PLASTEEL = 2000) build_path = /obj/item/mecha_parts/component/armor/mining -/datum/design/science/mecha_component/armor/lightweight +/datum/prototype/design/science/mecha_component/armor/lightweight design_name = "Mecha Plating - Lightweight" id = "marmorlight" req_tech = list(TECH_ENGINEERING = 5, TECH_MATERIAL = 6) materials_base = list(MAT_STEEL = 7000, MAT_PLASTIC = 5000, MAT_GOLD = 2000) build_path = /obj/item/mecha_parts/component/armor/lightweight -/datum/design/science/mecha_component/armor/reinforced +/datum/prototype/design/science/mecha_component/armor/reinforced design_name = "Mecha Plating - Reinforced" id = "marmorreinf" req_tech = list(TECH_ENGINEERING = 5, TECH_MATERIAL = 6, TECH_COMBAT = 5) materials_base = list(MAT_STEEL = 15000, MAT_PLASTEEL = 5000, MAT_URANIUM = 5000) build_path = /obj/item/mecha_parts/component/armor/reinforced -/datum/design/science/mecha_component/electrical +/datum/prototype/design/science/mecha_component/electrical design_name = "Mecha Electrical Harness" id = "melectrical" req_tech = list(TECH_ENGINEERING = 3, TECH_POWER = 3) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 2000, MAT_PLASTIC = 1000) build_path = /obj/item/mecha_parts/component/electrical -/datum/design/science/mecha_component/electrical/high_current +/datum/prototype/design/science/mecha_component/electrical/high_current design_name = "Mecha Electrical Harness - High Current" id = "melectricalhigh" req_tech = list(TECH_ENGINEERING = 5, TECH_POWER = 5, TECH_MATERIAL = 4) materials_base = list(MAT_STEEL = 3000, MAT_GLASS = 4000, MAT_PLASTIC = 5000, MAT_GOLD = 5000) build_path = /obj/item/mecha_parts/component/electrical/high_current -/datum/design/science/mecha_component/hull +/datum/prototype/design/science/mecha_component/hull design_name = "Mecha Hull" id = "mhull" req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2) materials_base = list(MAT_STEEL = 7000, MAT_GLASS = 500) build_path = /obj/item/mecha_parts/component/hull -/datum/design/science/mecha_component/hull/durable +/datum/prototype/design/science/mecha_component/hull/durable design_name = "Mecha Hull - Durable" id = "mhulldura" req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 4) materials_base = list(MAT_STEEL = 7000, MAT_GLASS = 500, MAT_PLASTEEL = 10000) build_path = /obj/item/mecha_parts/component/hull/durable -/datum/design/science/mecha_component/hull/lightweight +/datum/prototype/design/science/mecha_component/hull/lightweight design_name = "Mecha Hull - Lightweight" id = "mhulllight" req_tech = list(TECH_ENGINEERING = 5, TECH_MATERIAL = 5) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 500, MAT_PLASTIC = 3000) build_path = /obj/item/mecha_parts/component/hull/lightweight -/datum/design/science/mecha_component/gas +/datum/prototype/design/science/mecha_component/gas design_name = "Mecha Life-Support" id = "mgas" req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2, TECH_BIO = 3) materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 3000) build_path = /obj/item/mecha_parts/component/gas -/datum/design/science/mecha_component/gas/reinforced +/datum/prototype/design/science/mecha_component/gas/reinforced design_name = "Mecha Life-Support - Reinforced" id = "mgasreinf" req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 3, TECH_BIO = 5) @@ -1000,13 +1000,13 @@ * Non-Mech Vehicles */ -/datum/design/science/mechfab/vehicle - abstract_type = /datum/design/science/mechfab/vehicle +/datum/prototype/design/science/mechfab/vehicle + abstract_type = /datum/prototype/design/science/mechfab/vehicle lathe_type = LATHE_TYPE_MECHA category = list("Vehicle") req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 6) -/datum/design/science/mechfab/vehicle/spacebike_chassis +/datum/prototype/design/science/mechfab/vehicle/spacebike_chassis design_name = "Spacebike Chassis" desc = "A space-bike's un-assembled frame." id = "vehicle_chassis_spacebike" @@ -1014,7 +1014,7 @@ materials_base = list(MAT_STEEL = 12000, MAT_SILVER = 3000, MAT_PHORON = 3000, MAT_OSMIUM = 1000) build_path = /obj/item/vehicle_assembly/spacebike -/datum/design/science/mechfab/vehicle/quadbike_chassis +/datum/prototype/design/science/mechfab/vehicle/quadbike_chassis design_name = "Quadbike Chassis" desc = "A space-bike's un-assembled frame." id = "vehicle_chassis_quadbike" @@ -1023,7 +1023,7 @@ build_path = /obj/item/vehicle_assembly/quadbike /* -/datum/design/science/mechfab/uav/basic +/datum/prototype/design/science/mechfab/uav/basic design_name = "UAV - Recon Skimmer" id = "recon_skimmer" build_path = /obj/item/uav @@ -1036,65 +1036,65 @@ ///Fighters/// ///--------/// -/datum/design/science/mechfab/fighter - abstract_type = /datum/design/science/mechfab/fighter +/datum/prototype/design/science/mechfab/fighter + abstract_type = /datum/prototype/design/science/mechfab/fighter ///Pinnace/// -/datum/design/science/mechfab/fighter/pinnace - abstract_type = /datum/design/science/mechfab/fighter/pinnace +/datum/prototype/design/science/mechfab/fighter/pinnace + abstract_type = /datum/prototype/design/science/mechfab/fighter/pinnace category = list("Pinnace") -/datum/design/science/mechfab/fighter/pinnace/chassis +/datum/prototype/design/science/mechfab/fighter/pinnace/chassis design_name = "Pinnace Chassis" id = "pinnace_chassis" build_path = /obj/item/mecha_parts/fighter/chassis/pinnace work = 3 * 30 materials_base = list(MAT_STEEL = 25000, MAT_GLASS = 10000, MAT_PLASTEEL = 10000) -/datum/design/science/mechfab/fighter/pinnace/core +/datum/prototype/design/science/mechfab/fighter/pinnace/core design_name = "Pinnace Core" id = "pinnace_core" build_path = /obj/item/mecha_parts/fighter/part/pinnace_core work = 3 * 60 materials_base = list(MAT_STEEL = 25000, MAT_GLASS = 7000, MAT_PLASTEEL = 7000) -/datum/design/science/mechfab/fighter/pinnace/cockpit +/datum/prototype/design/science/mechfab/fighter/pinnace/cockpit design_name = "Pinnace Cockpit" id = "pinnace_cockpit" build_path = /obj/item/mecha_parts/fighter/part/pinnace_cockpit work = 3 * 15 materials_base = list(MAT_STEEL = 2500, MAT_PLASTEEL = 2500, MAT_GLASS = 7500, MAT_PLASTIC = 2500) -/datum/design/science/mechfab/fighter/pinnace/main_engine +/datum/prototype/design/science/mechfab/fighter/pinnace/main_engine design_name = "Pinnace Main Engine" id = "pinnace_main_engine" build_path = /obj/item/mecha_parts/fighter/part/pinnace_main_engine work = 3 * 25 materials_base = list(MAT_STEEL = 15000, MAT_PLASTEEL = 5000) -/datum/design/science/mechfab/fighter/pinnace/left_engine +/datum/prototype/design/science/mechfab/fighter/pinnace/left_engine design_name = "Pinnace Left Engine" id = "pinnace_left_engine" build_path = /obj/item/mecha_parts/fighter/part/pinnace_left_engine work = 3 * 25 materials_base = list(MAT_STEEL = 10000, MAT_PLASTEEL = 2500) -/datum/design/science/mechfab/fighter/pinnace/right_engine +/datum/prototype/design/science/mechfab/fighter/pinnace/right_engine design_name = "Pinnace Right Engine" id = "pinnace_right_engine" build_path = /obj/item/mecha_parts/fighter/part/pinnace_right_engine work = 3 * 25 materials_base = list(MAT_STEEL = 10000, MAT_PLASTEEL = 2500) -/datum/design/science/mechfab/fighter/pinnace/left_wing +/datum/prototype/design/science/mechfab/fighter/pinnace/left_wing design_name = "Pinnace Left Wing" id = "pinnace_left_wing" build_path = /obj/item/mecha_parts/fighter/part/pinnace_left_wing work = 3 * 20 materials_base = list(MAT_STEEL = 7000, MAT_PLASTIC = 3000, MAT_PLASTEEL = 5000) -/datum/design/science/mechfab/fighter/pinnace/right_wing +/datum/prototype/design/science/mechfab/fighter/pinnace/right_wing design_name = "Pinnace Right Wing" id = "pinnace_right_wing" build_path = /obj/item/mecha_parts/fighter/part/pinnace_right_wing @@ -1104,60 +1104,60 @@ ///Baron/// -/datum/design/science/mechfab/fighter/baron - abstract_type = /datum/design/science/mechfab/fighter/baron +/datum/prototype/design/science/mechfab/fighter/baron + abstract_type = /datum/prototype/design/science/mechfab/fighter/baron category = list("Baron") -/datum/design/science/mechfab/fighter/baron/chassis +/datum/prototype/design/science/mechfab/fighter/baron/chassis design_name = "Baron Chassis" id = "baron_chassis" build_path = /obj/item/mecha_parts/fighter/chassis/baron work = 3 * 30 materials_base = list(MAT_STEEL = 37500, MAT_GLASS = 15000, MAT_PLASTEEL = 15000) -/datum/design/science/mechfab/fighter/baron/core +/datum/prototype/design/science/mechfab/fighter/baron/core design_name = "Baron Core" id = "baron_core" build_path = /obj/item/mecha_parts/fighter/part/baron_core work = 3 * 60 materials_base = list(MAT_STEEL = 37500, MAT_GLASS = 15000, MAT_PLASTEEL = 15000) -/datum/design/science/mechfab/fighter/baron/cockpit +/datum/prototype/design/science/mechfab/fighter/baron/cockpit design_name = "Baron Cockpit" id = "baron_cockpit" build_path = /obj/item/mecha_parts/fighter/part/baron_cockpit work = 3 * 15 materials_base = list(MAT_STEEL = 5000, MAT_PLASTEEL = 5000, MAT_GLASS = 10000, MAT_PLASTIC = 5000) -/datum/design/science/mechfab/fighter/baron/main_engine +/datum/prototype/design/science/mechfab/fighter/baron/main_engine design_name = "Baron Main Engine" id = "baron_main_engine" build_path = /obj/item/mecha_parts/fighter/part/baron_main_engine work = 3 * 25 materials_base = list(MAT_STEEL = 25000, MAT_PLASTEEL = 10000) -/datum/design/science/mechfab/fighter/baron/left_engine +/datum/prototype/design/science/mechfab/fighter/baron/left_engine design_name = "Baron Left Engine" id = "baron_left_engine" build_path = /obj/item/mecha_parts/fighter/part/baron_left_engine work = 3 * 25 materials_base = list(MAT_STEEL = 20000, MAT_PLASTEEL = 5000) -/datum/design/science/mechfab/fighter/baron/right_engine +/datum/prototype/design/science/mechfab/fighter/baron/right_engine design_name = "Baron Right Engine" id = "baron_right_engine" build_path = /obj/item/mecha_parts/fighter/part/baron_right_engine work = 3 * 25 materials_base = list(MAT_STEEL = 20000, MAT_PLASTEEL = 5000) -/datum/design/science/mechfab/fighter/baron/left_wing +/datum/prototype/design/science/mechfab/fighter/baron/left_wing design_name = "Baron Left Wing" id = "baron_left_wing" build_path = /obj/item/mecha_parts/fighter/part/baron_left_wing work = 3 * 20 materials_base = list(MAT_STEEL = 15000, MAT_PLASTIC = 6000, MAT_PLASTEEL = 10000) -/datum/design/science/mechfab/fighter/baron/right_wing +/datum/prototype/design/science/mechfab/fighter/baron/right_wing design_name = "Baron Right Wing" id = "baron_right_wing" build_path = /obj/item/mecha_parts/fighter/part/baron_right_wing @@ -1167,60 +1167,60 @@ ///Duke/// -/datum/design/science/mechfab/fighter/duke - abstract_type = /datum/design/science/mechfab/fighter/duke +/datum/prototype/design/science/mechfab/fighter/duke + abstract_type = /datum/prototype/design/science/mechfab/fighter/duke category = list("Duke") -/datum/design/science/mechfab/fighter/duke/chassis +/datum/prototype/design/science/mechfab/fighter/duke/chassis design_name = "Duke Chassis" id = "duke_chassis" build_path = /obj/item/mecha_parts/fighter/chassis/duke work = 3 * 30 materials_base = list(MAT_STEEL = 37500, MAT_GLASS = 15000, MAT_PLASTEEL = 20000) -/datum/design/science/mechfab/fighter/duke/core +/datum/prototype/design/science/mechfab/fighter/duke/core design_name = "Duke Core" id = "duke_core" build_path = /obj/item/mecha_parts/fighter/part/duke_core work = 3 * 60 materials_base = list(MAT_STEEL = 37500, MAT_GLASS = 10000, MAT_PLASTEEL = 20000) -/datum/design/science/mechfab/fighter/duke/cockpit +/datum/prototype/design/science/mechfab/fighter/duke/cockpit design_name = "Duke Cockpit" id = "duke_cockpit" build_path = /obj/item/mecha_parts/fighter/part/duke_cockpit work = 3 * 15 materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 2500, MAT_PLASTEEL = 5000, MAT_PLASTIC = 5000) -/datum/design/science/mechfab/fighter/duke/main_engine +/datum/prototype/design/science/mechfab/fighter/duke/main_engine design_name = "Duke Main Engine" id = "duke_main_engine" build_path = /obj/item/mecha_parts/fighter/part/duke_main_engine work = 3 * 25 materials_base = list(MAT_STEEL = 25000, MAT_PLASTEEL = 15000) -/datum/design/science/mechfab/fighter/duke/left_engine +/datum/prototype/design/science/mechfab/fighter/duke/left_engine design_name = "Duke Left Engine" id = "duke_left_engine" build_path = /obj/item/mecha_parts/fighter/part/duke_left_engine work = 3 * 25 materials_base = list(MAT_STEEL = 20000, MAT_PLASTEEL = 10000) -/datum/design/science/mechfab/fighter/duke/right_engine +/datum/prototype/design/science/mechfab/fighter/duke/right_engine design_name = "Duke Right Engine" id = "duke_right_engine" build_path = /obj/item/mecha_parts/fighter/part/duke_right_engine work = 3 * 25 materials_base = list(MAT_STEEL = 20000, MAT_PLASTEEL = 10000) -/datum/design/science/mechfab/fighter/duke/left_wing +/datum/prototype/design/science/mechfab/fighter/duke/left_wing design_name = "Duke Left Wing" id = "duke_left_wing" build_path = /obj/item/mecha_parts/fighter/part/duke_left_wing work = 3 * 20 materials_base = list(MAT_STEEL = 10000, MAT_PLASTIC = 5000, MAT_PLASTEEL = 20000) -/datum/design/science/mechfab/fighter/duke/right_wing +/datum/prototype/design/science/mechfab/fighter/duke/right_wing design_name = "Duke Right Wing" id = "duke_right_wing" build_path = /obj/item/mecha_parts/fighter/part/duke_right_wing diff --git a/code/modules/research/designs/medical.dm b/code/modules/research/designs/medical.dm index 44babf4b377..bb40dc55894 100644 --- a/code/modules/research/designs/medical.dm +++ b/code/modules/research/designs/medical.dm @@ -1,13 +1,13 @@ -/datum/design/science/medical - abstract_type = /datum/design/science/medical +/datum/prototype/design/science/medical + abstract_type = /datum/prototype/design/science/medical materials_base = list(MAT_STEEL = 30, MAT_GLASS = 20) -/datum/design/science/medical/generate_name(template) +/datum/prototype/design/science/medical/generate_name(template) return "Medical equipment prototype ([..()])" // Surgical devices -/datum/design/science/medical/scalpel_laser1 +/datum/prototype/design/science/medical/scalpel_laser1 design_name = "Basic Laser Scalpel" desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved." id = "scalpel_laser1" @@ -15,7 +15,7 @@ materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 5000) build_path = /obj/item/surgical/scalpel/laser1 -/datum/design/science/medical/scalpel_laser2 +/datum/prototype/design/science/medical/scalpel_laser2 design_name = "Improved Laser Scalpel" desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced." id = "scalpel_laser2" @@ -23,7 +23,7 @@ materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 5000, MAT_SILVER = 2500) build_path = /obj/item/surgical/scalpel/laser2 -/datum/design/science/medical/scalpel_laser3 +/datum/prototype/design/science/medical/scalpel_laser3 design_name = "Advanced Laser Scalpel" desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!" id = "scalpel_laser3" @@ -31,7 +31,7 @@ materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 5000, MAT_SILVER = 2000, MAT_GOLD = 1500) build_path = /obj/item/surgical/scalpel/laser3 -/datum/design/science/medical/scalpel_manager +/datum/prototype/design/science/medical/scalpel_manager design_name = "Incision Management System" desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps." id = "scalpel_manager" @@ -39,7 +39,7 @@ materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 5000, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_DIAMOND = 750) build_path = /obj/item/surgical/scalpel/manager -/datum/design/science/medical/saw_manager +/datum/prototype/design/science/medical/saw_manager design_name = "Energetic Bone Diverter" desc = "A strange development following the I.M.S., this heavy tool can split and open, or close and shut, intentional holes in bones." id = "advanced_saw" @@ -47,7 +47,7 @@ materials_base = list (MAT_STEEL = 12500, MAT_PLASTIC = 800, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_OSMIUM = 1000) build_path = /obj/item/surgical/circular_saw/manager -/datum/design/science/medical/organ_ripper +/datum/prototype/design/science/medical/organ_ripper design_name = "Organ Ripper" desc = "A modern and horrifying take on an ancient practice, this tool is capable of rapidly removing an organ from a hopefully willing patient, without damaging it." id = "organ_ripper" @@ -55,7 +55,7 @@ materials_base = list (MAT_STEEL = 12500, MAT_PLASTIC = 8000, MAT_OSMIUM = 2500) build_path = /obj/item/surgical/scalpel/ripper -/datum/design/science/medical/bone_clamp +/datum/prototype/design/science/medical/bone_clamp design_name = "Bone Clamp" desc = "A miracle of modern science, this tool rapidly knits together bone, without the need for bone gel." id = "bone_clamp" @@ -63,7 +63,7 @@ materials_base = list (MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2500) build_path = /obj/item/surgical/bone_clamp -/datum/design/science/medical/switchtool +/datum/prototype/design/science/medical/switchtool design_name = "Surgical Multi-tool" desc = "A set of compact surgical instruments housed in a small handle, allowing surgical proccedures on the go." id = "surgery_switchtool" @@ -71,7 +71,7 @@ materials_base = list (MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2500) build_path = /obj/item/switchtool/surgery -/datum/design/science/medical/medical_analyzer +/datum/prototype/design/science/medical/medical_analyzer design_name = "health analyzer" desc = "A hand-held body scanner able to distinguish vital signs of the subject." id = "medical_analyzer" @@ -79,7 +79,7 @@ materials_base = list(MAT_STEEL = 500, MAT_GLASS = 500) build_path = /obj/item/healthanalyzer -/datum/design/science/medical/improved_analyzer +/datum/prototype/design/science/medical/improved_analyzer design_name = "improved health analyzer" desc = "A prototype version of the regular health analyzer, able to distinguish the location of more serious injuries as well as accurately determine radiation levels." id = "improved_analyzer" @@ -87,7 +87,7 @@ materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_SILVER = 1000, MAT_GOLD = 1500) build_path = /obj/item/healthanalyzer/improved -/datum/design/science/medical/advanced_analyzer +/datum/prototype/design/science/medical/advanced_analyzer design_name = "advanced health analyzer" desc = "A prototype version of the improved health analyzer, able to distinguish the location of more serious injuries as well as accurately determine radiation levels, and neurological analysis suites" id = "advanced_analyzer" @@ -95,7 +95,7 @@ materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_SILVER = 1250, MAT_GOLD = 1750, MAT_URANIUM = 1000, MAT_PLASTIC = 500) build_path = /obj/item/healthanalyzer/advanced -/datum/design/science/medical/phasic_analyzer +/datum/prototype/design/science/medical/phasic_analyzer design_name = "phasic health analyzer" desc = "A prototype version of the advanced health analyzer, able to distinguish the location of more serious injuries as well as accurately determine radiation levels, and neurological analysis suites. This analyzer even picks up chemicals in the patient's stomach." id = "phasic_analyzer" @@ -103,7 +103,7 @@ materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_SILVER = 1500, MAT_GOLD = 2000, MAT_URANIUM = 1250, MAT_DIAMOND = 750, MAT_PHORON = 500, MAT_PLASTIC = 1000, MAT_OSMIUM = 500) build_path = /obj/item/healthanalyzer/phasic -/datum/design/science/medical/advanced_roller +/datum/prototype/design/science/medical/advanced_roller design_name = "advanced roller bed" desc = "A more advanced version of the regular roller bed, with inbuilt surgical stabilisers and an improved folding system." id = "roller_bed" @@ -113,7 +113,7 @@ //General stuff -/datum/design/science/medical/protohypospray +/datum/prototype/design/science/medical/protohypospray design_name = "advanced hypospray" desc = "This prototype hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients." id = "protohypospray" @@ -121,43 +121,43 @@ materials_base = list(MAT_STEEL = 500, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 1500, MAT_URANIUM = 1000) build_path = /obj/item/hypospray/advanced -/datum/design/science/medical/cell_based - abstract_type = /datum/design/science/medical/cell_based +/datum/prototype/design/science/medical/cell_based + abstract_type = /datum/prototype/design/science/medical/cell_based // ML-3M medigun and cells -/datum/design/science/medical/cell_based/generate_name(template) +/datum/prototype/design/science/medical/cell_based/generate_name(template) return "Cell-based medical prototype ([..()])" -/datum/design/science/medical/cell_based/cell_medigun_mag_advanced +/datum/prototype/design/science/medical/cell_based/cell_medigun_mag_advanced design_name = "advanced medical cell magazine" id = "cell_medigun_mag_advanced" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 4, TECH_BIO = 7) materials_base = list(MAT_STEEL = 5000, MAT_PLASTIC = 10000, MAT_GLASS = 5000, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_DIAMOND = 5000) build_path = /obj/item/ammo_magazine/microbattery/medical/advanced -/datum/design/science/medigun_cell - abstract_type = /datum/design/science/medigun_cell +/datum/prototype/design/science/medigun_cell + abstract_type = /datum/prototype/design/science/medigun_cell -/datum/design/science/medigun_cell/generate_name(template) +/datum/prototype/design/science/medigun_cell/generate_name(template) return "Nanite cell prototype ([..()])" //Tier 1 -/datum/design/science/medigun_cell/toxin +/datum/prototype/design/science/medigun_cell/toxin design_name = "TOXIN" id = "medigun_cell_toxin" req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250) build_path = /obj/item/ammo_casing/microbattery/medical/toxin -/datum/design/science/medigun_cell/omni +/datum/prototype/design/science/medigun_cell/omni design_name = "OMNI" id = "medigun_cell_omni" req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250) build_path = /obj/item/ammo_casing/microbattery/medical/omni -/datum/design/science/medigun_cell/antirad +/datum/prototype/design/science/medigun_cell/antirad design_name = "ANTIRAD" id = "medigun_cell_antirad" req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4) @@ -166,28 +166,28 @@ //Tier 2 -/datum/design/science/medigun_cell/brute2 +/datum/prototype/design/science/medigun_cell/brute2 design_name = "BRUTE-II" id = "medigun_cell_brute2" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250, MAT_GOLD = 900) build_path = /obj/item/ammo_casing/microbattery/medical/brute2 -/datum/design/science/medigun_cell/burn2 +/datum/prototype/design/science/medigun_cell/burn2 design_name = "BURN-II" id = "medigun_cell_burn2" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250, MAT_GOLD = 900) build_path = /obj/item/ammo_casing/microbattery/medical/burn2 -/datum/design/science/medigun_cell/stabilize2 +/datum/prototype/design/science/medigun_cell/stabilize2 design_name = "STABILIZE-II" id = "medigun_cell_stabilize2" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250, MAT_SILVER = 900) build_path = /obj/item/ammo_casing/microbattery/medical/stabilize2 -/datum/design/science/medigun_cell/omni2 +/datum/prototype/design/science/medigun_cell/omni2 design_name = "OMNI-II" id = "medigun_cell_omni2" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5) @@ -196,28 +196,28 @@ //Tier 3 -/datum/design/science/medigun_cell/toxin2 +/datum/prototype/design/science/medigun_cell/toxin2 design_name = "TOXIN-II" id = "medigun_cell_toxin2" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250, MAT_URANIUM = 900, MAT_SILVER = 900, MAT_DIAMOND = 500) build_path = /obj/item/ammo_casing/microbattery/medical/toxin2 -/datum/design/science/medigun_cell/haste +/datum/prototype/design/science/medigun_cell/haste design_name = "HASTE" id = "medigun_cell_haste" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250, MAT_GOLD = 900, MAT_SILVER = 900, MAT_DIAMOND = 900) build_path = /obj/item/ammo_casing/microbattery/medical/haste -/datum/design/science/medigun_cell/resist +/datum/prototype/design/science/medigun_cell/resist design_name = "RESIST" id = "medigun_cell_resist" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250, MAT_GOLD = 900, MAT_URANIUM = 900, MAT_DIAMOND = 900) build_path = /obj/item/ammo_casing/microbattery/medical/resist -/datum/design/science/medigun_cell/corpse_mend +/datum/prototype/design/science/medigun_cell/corpse_mend design_name = "CORPSE MEND" id = "medigun_cell_corpse_mend" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6) @@ -226,28 +226,28 @@ //Tier 4 -/datum/design/science/medigun_cell/brute3 +/datum/prototype/design/science/medigun_cell/brute3 design_name = "BRUTE-III" id = "medigun_cell_brute3" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_PRECURSOR = 2) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250, MAT_DIAMOND = 500, MAT_VERDANTIUM = 900) build_path = /obj/item/ammo_casing/microbattery/medical/brute3 -/datum/design/science/medigun_cell/burn3 +/datum/prototype/design/science/medigun_cell/burn3 design_name = "BURN-III" id = "medigun_cell_burn3" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_PRECURSOR = 2) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250, MAT_DIAMOND = 500, MAT_VERDANTIUM = 900) build_path = /obj/item/ammo_casing/microbattery/medical/burn3 -/datum/design/science/medigun_cell/toxin3 +/datum/prototype/design/science/medigun_cell/toxin3 design_name = "TOXIN-III" id = "medigun_cell_toxin3" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_ARCANE = 2) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250, MAT_DIAMOND = 500, MAT_VERDANTIUM = 900) build_path = /obj/item/ammo_casing/microbattery/medical/toxin3 -/datum/design/science/medigun_cell/omni3 +/datum/prototype/design/science/medigun_cell/omni3 design_name = "OMNI-III" id = "medigun_cell_omni3" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_ARCANE = 2) @@ -256,21 +256,21 @@ //Tierless -/datum/design/science/medigun_cell/shrink +/datum/prototype/design/science/medigun_cell/shrink design_name = "SHRINK" id = "medigun_cell_shrink" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250, MAT_URANIUM = 1800) build_path = /obj/item/ammo_casing/microbattery/medical/shrink -/datum/design/science/medigun_cell/grow +/datum/prototype/design/science/medigun_cell/grow design_name = "GROW" id = "medigun_cell_grow" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5) materials_base = list(MAT_STEEL = 4500, MAT_GLASS = 4500, MAT_PLASTIC = 2250, MAT_URANIUM = 1800) build_path = /obj/item/ammo_casing/microbattery/medical/grow -/datum/design/science/medigun_cell/normalsize +/datum/prototype/design/science/medigun_cell/normalsize design_name = "NORMALSIZE" id = "medigun_cell_normalsize" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5) diff --git a/code/modules/research/designs/mining_toys.dm b/code/modules/research/designs/mining_toys.dm index 95d35fa35f5..be5ca05dc71 100644 --- a/code/modules/research/designs/mining_toys.dm +++ b/code/modules/research/designs/mining_toys.dm @@ -1,69 +1,69 @@ -/datum/design/science/mining - abstract_type = /datum/design/science/mining +/datum/prototype/design/science/mining + abstract_type = /datum/prototype/design/science/mining -/datum/design/science/mining/generate_name(template) +/datum/prototype/design/science/mining/generate_name(template) return "Mining equipment design ([..()])" // Mining digging devices -/datum/design/science/mining/drill +/datum/prototype/design/science/mining/drill id = "drill" req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 6000, MAT_GLASS = 1000) //expensive, but no need for miners. build_path = /obj/item/pickaxe/drill -/datum/design/science/mining/jackhammer +/datum/prototype/design/science/mining/jackhammer id = "jackhammer" req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 500, MAT_SILVER = 500) build_path = /obj/item/pickaxe/jackhammer -/datum/design/science/mining/plasmacutter +/datum/prototype/design/science/mining/plasmacutter id = "plasmacutter" req_tech = list(TECH_MATERIAL = 4, TECH_PHORON = 3, TECH_ENGINEERING = 3) materials_base = list(MAT_STEEL = 1500, MAT_GLASS = 500, MAT_GOLD = 500, MAT_PHORON = 500) build_path = /obj/item/pickaxe/plasmacutter -/datum/design/science/mining/pick_diamond +/datum/prototype/design/science/mining/pick_diamond id = "pick_diamond" req_tech = list(TECH_MATERIAL = 6) materials_base = list(MAT_DIAMOND = 3000) build_path = /obj/item/pickaxe/diamond -/datum/design/science/mining/drill_diamond +/datum/prototype/design/science/mining/drill_diamond id = "drill_diamond" req_tech = list(TECH_MATERIAL = 6, TECH_POWER = 4, TECH_ENGINEERING = 4) materials_base = list(MAT_STEEL = 3000, MAT_GLASS = 1000, MAT_DIAMOND = 2000) build_path = /obj/item/pickaxe/diamonddrill -/datum/design/science/mining/advbore +/datum/prototype/design/science/mining/advbore id = "adv_bore" req_tech = list(TECH_MATERIAL = 5, TECH_PHORON = 5, TECH_ENGINEERING = 4, TECH_POWER = 4) //phoron 5 needs materials to get materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 2500, MAT_GOLD = 2500, MAT_PHORON = 2500) build_path = /obj/item/gun/magnetic/matfed/advanced -/datum/design/science/mining/vertibore +/datum/prototype/design/science/mining/vertibore id = "vertibore" req_tech = list(TECH_MATERIAL = 5, TECH_PHORON = 5, TECH_ENGINEERING = 6, TECH_POWER = 7) materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 5000, MAT_GOLD = 5000, MAT_PHORON = 5000, MAT_DIAMOND = 100, MAT_URANIUM = 1000) build_path = /obj/item/vertibore // KA Upgrades (That Are Too Powerful to Just Be Vending Items) -/datum/design/science/mining/ka_modkit_aoe +/datum/prototype/design/science/mining/ka_modkit_aoe design_name = "Experimental Kinetic Accelerator Mod (Anti-Material AoE)" id = "kamodkit_aoe" req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5) materials_base = list(MAT_STEEL = 500, MAT_GLASS = 1000, MAT_SILVER = 1000, MAT_URANIUM = 500) build_path = /obj/item/ka_modkit/aoe/turfs -/datum/design/science/mining/ka_modkit_aoe_mob +/datum/prototype/design/science/mining/ka_modkit_aoe_mob design_name = "Experimental Kinetic Accelerator Mod (Anti-Organic AoE)" id = "kamodkit_aoe_mob" req_tech = list(TECH_BIO = 6, TECH_ENGINEERING = 5) materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_GOLD = 1000, MAT_PHORON = 500) build_path = /obj/item/ka_modkit/aoe/mobs -/datum/design/science/mining/ka_modkit_aoe_combo +/datum/prototype/design/science/mining/ka_modkit_aoe_combo design_name = "Experimental Kinetic Accelerator Mod (Combination AoE)" id = "kamodkit_aoe_combo" req_tech = list(TECH_MATERIAL = 7, TECH_BIO = 7, TECH_ENGINEERING = 5) @@ -71,19 +71,19 @@ build_path = /obj/item/ka_modkit/aoe/turfs/andmobs // Mining other equipment -/datum/design/science/mining/mining_scanner +/datum/prototype/design/science/mining/mining_scanner id = "mining_scanner" req_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1) materials_base = list(MAT_STEEL = 150) build_path = /obj/item/mining_scanner -/datum/design/science/mining/mining_scanner_adv +/datum/prototype/design/science/mining/mining_scanner_adv id = "mining_scanner_adv" req_tech = list(TECH_MAGNET = 4, TECH_ENGINEERING = 4) materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 1000) build_path = /obj/item/mining_scanner/advanced -/datum/design/science/mining/bs_mining_satchel +/datum/prototype/design/science/mining/bs_mining_satchel design_name = "Mining Satchel of Holding" id = "bs_mining_satchel" req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6, TECH_PHORON = 4) diff --git a/code/modules/research/designs/misc.dm b/code/modules/research/designs/misc.dm index a1dfe223dab..933fe68168c 100644 --- a/code/modules/research/designs/misc.dm +++ b/code/modules/research/designs/misc.dm @@ -1,17 +1,17 @@ -/datum/design/science/general - abstract_type = /datum/design/science/general +/datum/prototype/design/science/general + abstract_type = /datum/prototype/design/science/general -/datum/design/science/general/generate_name(template) +/datum/prototype/design/science/general/generate_name(template) return "General purpose design ([..()])" -/datum/design/science/general/communicator +/datum/prototype/design/science/general/communicator design_name = "Communicator" id = "communicator" req_tech = list(TECH_DATA = 2, TECH_MAGNET = 2) materials_base = list(MAT_STEEL = 500, MAT_GLASS = 500) build_path = /obj/item/communicator -/datum/design/science/general/laserpointer +/datum/prototype/design/science/general/laserpointer design_name = "laser pointer" desc = "Don't shine it in your eyes!" id = "laser_pointer" @@ -19,21 +19,21 @@ materials_base = list(MAT_STEEL = 100, MAT_GLASS = 50) build_path = /obj/item/laser_pointer -/datum/design/science/general/translator +/datum/prototype/design/science/general/translator design_name = "handheld translator" id = "translator" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) materials_base = list(MAT_STEEL = 3000, MAT_GLASS = 3000) build_path = /obj/item/universal_translator -/datum/design/science/general/ear_translator +/datum/prototype/design/science/general/ear_translator design_name = "earpiece translator" id = "ear_translator" req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5) //It's been hella miniaturized. materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 2000, MAT_GOLD = 1000) build_path = /obj/item/universal_translator/ear -/datum/design/science/general/light_replacer +/datum/prototype/design/science/general/light_replacer design_name = "Light replacer" desc = "A device to automatically replace lights. Refill with working lightbulbs." id = "light_replacer" @@ -41,13 +41,13 @@ materials_base = list(MAT_STEEL = 1500, MAT_SILVER = 150, MAT_GLASS = 3000) build_path = /obj/item/lightreplacer -/datum/design/science/illegal - abstract_type = /datum/design/science/illegal +/datum/prototype/design/science/illegal + abstract_type = /datum/prototype/design/science/illegal -/datum/design/science/illegal/generate_name(template) +/datum/prototype/design/science/illegal/generate_name(template) return "Non-standard design ([..()])" -/datum/design/science/illegal/binaryencrypt +/datum/prototype/design/science/illegal/binaryencrypt design_name = "Binary encryption key" desc = "Allows for deciphering the binary channel on-the-fly." id = "binaryencrypt" @@ -55,7 +55,7 @@ materials_base = list(MAT_STEEL = 300, MAT_GLASS = 300) build_path = /obj/item/encryptionkey/binary -/datum/design/science/illegal/chameleon +/datum/prototype/design/science/illegal/chameleon design_name = "Holographic equipment kit" desc = "A kit of dangerous, high-tech equipment with changeable looks." id = "chameleon" @@ -63,49 +63,49 @@ materials_base = list(MAT_STEEL = 500) build_path = /obj/item/storage/box/syndie_kit/chameleon -/datum/design/science/general/bluespace_jumpsuit +/datum/prototype/design/science/general/bluespace_jumpsuit design_name = "Bluespace jumpsuit" id = "bsjumpsuit" req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 3, TECH_POWER = 2) materials_base = list(MAT_STEEL = 4000, MAT_GLASS = 4000) build_path = /obj/item/clothing/under/bluespace -/datum/design/science/general/sizegun +/datum/prototype/design/science/general/sizegun design_name = "Size gun" id = "sizegun" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2) materials_base = list(MAT_STEEL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000) build_path = /obj/item/gun/energy/sizegun -/datum/design/science/general/inducer_sci +/datum/prototype/design/science/general/inducer_sci design_name = "Inducer (Scientific)" id = "inducersci" req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 5, TECH_POWER = 6) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 2000, MAT_URANIUM = 4000, MAT_PHORON = 4000) build_path = /obj/item/inducer/sci -/datum/design/science/general/inducer_eng +/datum/prototype/design/science/general/inducer_eng design_name = "Inducer (Industrial)" id = "inducerind" req_tech = list(TECH_BLUESPACE = 5, TECH_MATERIAL = 7, TECH_POWER = 7) materials_base = list(MAT_STEEL = 9000, MAT_GLASS = 3000, MAT_URANIUM = 5000, MAT_PHORON = 6000, MAT_DIAMOND = 1000) // Cit change until we have more of a need for titanium, MAT_TITANIUM = 2000) build_path = /obj/item/inducer/unloaded -/datum/design/science/general/translator_all +/datum/prototype/design/science/general/translator_all design_name = "handheld omni-translator" id = "translator_all" req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5) materials_base = list(MAT_STEEL = 3000, MAT_GLASS = 3000, MAT_GOLD = 500, MAT_SILVER = 500) build_path = /obj/item/universal_translator/adaptive -/datum/design/science/general/ear_translator_all +/datum/prototype/design/science/general/ear_translator_all design_name = "earpiece omni-translator" id = "ear_translator_all" req_tech = list(TECH_DATA = 6, TECH_ENGINEERING = 6) //dude what hte fuck lmao materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 2000, MAT_GOLD = 2000, MAT_SILVER = 2000) build_path = /obj/item/universal_translator/ear/adaptive -/datum/design/science/advmop +/datum/prototype/design/science/advmop design_name = "Advanced Mop" desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals." id = "advmop" @@ -113,7 +113,7 @@ materials_base = list(MAT_PLASTIC = 2500, MAT_STEEL = 500, MAT_COPPER = 200) build_path = /obj/item/mop/advanced -/datum/design/science/holosign +/datum/prototype/design/science/holosign design_name = "Holographic Sign Projector" desc = "A holograpic projector used to project various warning signs." id = "holosign" @@ -121,7 +121,7 @@ materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 1000) build_path = /obj/item/holosign_creator -/datum/design/science/blutrash +/datum/prototype/design/science/blutrash design_name = "Trashbag of Holding" desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage." id = "blutrash" @@ -129,7 +129,7 @@ materials_base = list(MAT_PLASTIC = 5000, MAT_GOLD = 1500, MAT_URANIUM = 250, MAT_PHORON = 1500) build_path = /obj/item/storage/bag/trash/bluespace -/datum/design/science/reagent_synth_chemistry +/datum/prototype/design/science/reagent_synth_chemistry design_name = "Chemistry Synthesis Module" desc = "A reagent synthesis module required for dispenser functionality" id = "ReagentSynth" @@ -137,7 +137,7 @@ materials_base = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_URANIUM = 500, MAT_GOLD = 500, MAT_SILVER = 500) build_path = /obj/item/reagent_synth/chemistry -/datum/design/science/size_standardization +/datum/prototype/design/science/size_standardization design_name = "Size Standardization Bracelet" desc = "A bracelet that changes the size of the wearer to the galactic standard." id = "sizestandardbracelet" diff --git a/code/modules/research/designs/modular_computer.dm b/code/modules/research/designs/modular_computer.dm index 0313c67e1c1..04bc0630ad2 100644 --- a/code/modules/research/designs/modular_computer.dm +++ b/code/modules/research/designs/modular_computer.dm @@ -1,195 +1,195 @@ -/datum/design/science/modularcomponent - abstract_type = /datum/design/science/modularcomponent +/datum/prototype/design/science/modularcomponent + abstract_type = /datum/prototype/design/science/modularcomponent -/datum/design/science/modularcomponent/generate_name(template) +/datum/prototype/design/science/modularcomponent/generate_name(template) return "Computer part design ([..()])" -/datum/design/science/modularcomponent/disk - abstract_type = /datum/design/science/modularcomponent/disk +/datum/prototype/design/science/modularcomponent/disk + abstract_type = /datum/prototype/design/science/modularcomponent/disk -/datum/design/science/modularcomponent/disk/normal +/datum/prototype/design/science/modularcomponent/disk/normal design_name = "basic hard drive" id = "hdd_basic" req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 100) build_path = /obj/item/computer_hardware/hard_drive/ -/datum/design/science/modularcomponent/disk/advanced +/datum/prototype/design/science/modularcomponent/disk/advanced design_name = "advanced hard drive" id = "hdd_advanced" materials_base = list(MAT_STEEL = 4000, MAT_GLASS = 200) build_path = /obj/item/computer_hardware/hard_drive/advanced -/datum/design/science/modularcomponent/disk/super +/datum/prototype/design/science/modularcomponent/disk/super design_name = "super hard drive" id = "hdd_super" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 400) build_path = /obj/item/computer_hardware/hard_drive/super -/datum/design/science/modularcomponent/disk/cluster +/datum/prototype/design/science/modularcomponent/disk/cluster design_name = "cluster hard drive" id = "hdd_cluster" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) materials_base = list(MAT_STEEL = 16000, MAT_GLASS = 800) build_path = /obj/item/computer_hardware/hard_drive/cluster -/datum/design/science/modularcomponent/disk/small +/datum/prototype/design/science/modularcomponent/disk/small design_name = "small hard drive" id = "hdd_small" req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 4000, MAT_GLASS = 200) build_path = /obj/item/computer_hardware/hard_drive/small -/datum/design/science/modularcomponent/disk/micro +/datum/prototype/design/science/modularcomponent/disk/micro design_name = "micro hard drive" id = "hdd_micro" req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 100) build_path = /obj/item/computer_hardware/hard_drive/micro -/datum/design/science/modularcomponent/netcard - abstract_type = /datum/design/science/modularcomponent/netcard +/datum/prototype/design/science/modularcomponent/netcard + abstract_type = /datum/prototype/design/science/modularcomponent/netcard -/datum/design/science/modularcomponent/netcard/basic +/datum/prototype/design/science/modularcomponent/netcard/basic design_name = "basic network card" id = "netcard_basic" req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 1) materials_base = list(MAT_STEEL = 500, MAT_GLASS = 100) build_path = /obj/item/computer_hardware/network_card -/datum/design/science/modularcomponent/netcard/advanced +/datum/prototype/design/science/modularcomponent/netcard/advanced design_name = "advanced network card" id = "netcard_advanced" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 200) build_path = /obj/item/computer_hardware/network_card/advanced -/datum/design/science/modularcomponent/netcard/wired +/datum/prototype/design/science/modularcomponent/netcard/wired design_name = "wired network card" id = "netcard_wired" req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 3) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 400) build_path = /obj/item/computer_hardware/network_card/wired -/datum/design/science/modularcomponent/battery - abstract_type = /datum/design/science/modularcomponent/battery +/datum/prototype/design/science/modularcomponent/battery + abstract_type = /datum/prototype/design/science/modularcomponent/battery -/datum/design/science/modularcomponent/battery/normal +/datum/prototype/design/science/modularcomponent/battery/normal design_name = "standard battery module" id = "bat_normal" req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1) materials_base = list(MAT_STEEL = 2000) build_path = /obj/item/computer_hardware/battery_module -/datum/design/science/modularcomponent/battery/advanced +/datum/prototype/design/science/modularcomponent/battery/advanced design_name = "advanced battery module" id = "bat_advanced" req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 4000) build_path = /obj/item/computer_hardware/battery_module/advanced -/datum/design/science/modularcomponent/battery/super +/datum/prototype/design/science/modularcomponent/battery/super design_name = "super battery module" id = "bat_super" req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3) materials_base = list(MAT_STEEL = 8000) build_path = /obj/item/computer_hardware/battery_module/super -/datum/design/science/modularcomponent/battery/ultra +/datum/prototype/design/science/modularcomponent/battery/ultra design_name = "ultra battery module" id = "bat_ultra" req_tech = list(TECH_POWER = 5, TECH_ENGINEERING = 4) materials_base = list(MAT_STEEL = 16000) build_path = /obj/item/computer_hardware/battery_module/ultra -/datum/design/science/modularcomponent/battery/nano +/datum/prototype/design/science/modularcomponent/battery/nano design_name = "nano battery module" id = "bat_nano" req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1) materials_base = list(MAT_STEEL = 2000) build_path = /obj/item/computer_hardware/battery_module/nano -/datum/design/science/modularcomponent/battery/micro +/datum/prototype/design/science/modularcomponent/battery/micro design_name = "micro battery module" id = "bat_micro" req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 4000) build_path = /obj/item/computer_hardware/battery_module/micro -/datum/design/science/modularcomponent/cpu - abstract_type = /datum/design/science/modularcomponent/cpu +/datum/prototype/design/science/modularcomponent/cpu + abstract_type = /datum/prototype/design/science/modularcomponent/cpu -/datum/design/science/modularcomponent/cpu/normal +/datum/prototype/design/science/modularcomponent/cpu/normal design_name = "computer processor unit" id = "cpu_normal" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 8000) build_path = /obj/item/computer_hardware/processor_unit -/datum/design/science/modularcomponent/cpu/small +/datum/prototype/design/science/modularcomponent/cpu/small design_name = "computer microprocessor unit" id = "cpu_small" req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 4000) build_path = /obj/item/computer_hardware/processor_unit/small -/datum/design/science/modularcomponent/cpu/photonic +/datum/prototype/design/science/modularcomponent/cpu/photonic design_name = "computer photonic processor unit" id = "pcpu_normal" req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 4) materials_base = list(MAT_STEEL = 32000, glass = 8000) build_path = /obj/item/computer_hardware/processor_unit/photonic -/datum/design/science/modularcomponent/cpu/photonic/small +/datum/prototype/design/science/modularcomponent/cpu/photonic/small design_name = "computer photonic microprocessor unit" id = "pcpu_small" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) materials_base = list(MAT_STEEL = 16000, glass = 4000) build_path = /obj/item/computer_hardware/processor_unit/photonic/small -/datum/design/science/modularcomponent/cardslot +/datum/prototype/design/science/modularcomponent/cardslot design_name = "RFID card slot" id = "cardslot" req_tech = list(TECH_DATA = 2) materials_base = list(MAT_STEEL = 3000) build_path = /obj/item/computer_hardware/card_slot -/datum/design/science/modularcomponent/nanoprinter +/datum/prototype/design/science/modularcomponent/nanoprinter design_name = "nano printer" id = "nanoprinter" req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 3000) build_path = /obj/item/computer_hardware/nano_printer -/datum/design/science/modularcomponent/teslalink +/datum/prototype/design/science/modularcomponent/teslalink design_name = "tesla link" id = "teslalink" req_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 10000) build_path = /obj/item/computer_hardware/tesla_link -/datum/design/science/modularcomponent/portabledrive - abstract_type = /datum/design/science/modularcomponent/portabledrive +/datum/prototype/design/science/modularcomponent/portabledrive + abstract_type = /datum/prototype/design/science/modularcomponent/portabledrive -/datum/design/science/modularcomponent/portabledrive/generate_name(template) +/datum/prototype/design/science/modularcomponent/portabledrive/generate_name(template) return "Portable data drive design ([..()])" -/datum/design/science/modularcomponent/portabledrive/basic +/datum/prototype/design/science/modularcomponent/portabledrive/basic design_name = "basic data crystal" id = "portadrive_basic" req_tech = list(TECH_DATA = 1) materials_base = list(MAT_GLASS = 8000) build_path = /obj/item/computer_hardware/hard_drive/portable -/datum/design/science/modularcomponent/portabledrive/advanced +/datum/prototype/design/science/modularcomponent/portabledrive/advanced design_name = "advanced data crystal" id = "portadrive_advanced" req_tech = list(TECH_DATA = 2) materials_base = list(MAT_GLASS = 16000) build_path = /obj/item/computer_hardware/hard_drive/portable/advanced -/datum/design/science/modularcomponent/portabledrive/super +/datum/prototype/design/science/modularcomponent/portabledrive/super design_name = "super data crystal" id = "portadrive_super" req_tech = list(TECH_DATA = 4) diff --git a/code/modules/research/designs/pdas.dm b/code/modules/research/designs/pdas.dm index e70305246e2..a2ca3a36061 100644 --- a/code/modules/research/designs/pdas.dm +++ b/code/modules/research/designs/pdas.dm @@ -1,6 +1,6 @@ // PDA -/datum/design/science/general/pda +/datum/prototype/design/science/general/pda design_name = "PDA" desc = "Cheaper than whiny non-digital assistants." id = "pda" @@ -10,74 +10,74 @@ // Cartridges -/datum/design/science/pda_cartridge - abstract_type = /datum/design/science/pda_cartridge +/datum/prototype/design/science/pda_cartridge + abstract_type = /datum/prototype/design/science/pda_cartridge req_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 3) materials_base = list(MAT_STEEL = 50, MAT_GLASS = 50) -/datum/design/science/pda_cartridge/generate_name(template) +/datum/prototype/design/science/pda_cartridge/generate_name(template) return "PDA cartridge ([..()])" -/datum/design/science/pda_cartridge/cart_basic +/datum/prototype/design/science/pda_cartridge/cart_basic id = "cart_basic" build_path = /obj/item/cartridge -/datum/design/science/pda_cartridge/engineering +/datum/prototype/design/science/pda_cartridge/engineering id = "cart_engineering" build_path = /obj/item/cartridge/engineering -/datum/design/science/pda_cartridge/atmos +/datum/prototype/design/science/pda_cartridge/atmos id = "cart_atmos" build_path = /obj/item/cartridge/atmos -/datum/design/science/pda_cartridge/medical +/datum/prototype/design/science/pda_cartridge/medical id = "cart_medical" build_path = /obj/item/cartridge/medical -/datum/design/science/pda_cartridge/chemistry +/datum/prototype/design/science/pda_cartridge/chemistry id = "cart_chemistry" build_path = /obj/item/cartridge/chemistry -/datum/design/science/pda_cartridge/security +/datum/prototype/design/science/pda_cartridge/security id = "cart_security" build_path = /obj/item/cartridge/security -/datum/design/science/pda_cartridge/janitor +/datum/prototype/design/science/pda_cartridge/janitor id = "cart_janitor" build_path = /obj/item/cartridge/janitor -/datum/design/science/pda_cartridge/science +/datum/prototype/design/science/pda_cartridge/science id = "cart_science" build_path = /obj/item/cartridge/signal/science -/datum/design/science/pda_cartridge/quartermaster +/datum/prototype/design/science/pda_cartridge/quartermaster id = "cart_quartermaster" build_path = /obj/item/cartridge/quartermaster -/datum/design/science/pda_cartridge/head +/datum/prototype/design/science/pda_cartridge/head id = "cart_head" build_path = /obj/item/cartridge/head -/datum/design/science/pda_cartridge/hop +/datum/prototype/design/science/pda_cartridge/hop id = "cart_hop" build_path = /obj/item/cartridge/hop -/datum/design/science/pda_cartridge/hos +/datum/prototype/design/science/pda_cartridge/hos id = "cart_hos" build_path = /obj/item/cartridge/hos -/datum/design/science/pda_cartridge/ce +/datum/prototype/design/science/pda_cartridge/ce id = "cart_ce" build_path = /obj/item/cartridge/ce -/datum/design/science/pda_cartridge/cmo +/datum/prototype/design/science/pda_cartridge/cmo id = "cart_cmo" build_path = /obj/item/cartridge/cmo -/datum/design/science/pda_cartridge/rd +/datum/prototype/design/science/pda_cartridge/rd id = "cart_rd" build_path = /obj/item/cartridge/rd -/datum/design/science/pda_cartridge/captain +/datum/prototype/design/science/pda_cartridge/captain id = "cart_captain" build_path = /obj/item/cartridge/captain diff --git a/code/modules/research/designs/power_cells.dm b/code/modules/research/designs/power_cells.dm index 6964d28a46e..159766d2940 100644 --- a/code/modules/research/designs/power_cells.dm +++ b/code/modules/research/designs/power_cells.dm @@ -1,23 +1,23 @@ -/datum/design/science/powercell - abstract_type = /datum/design/science/powercell +/datum/prototype/design/science/powercell + abstract_type = /datum/prototype/design/science/powercell lathe_type = LATHE_TYPE_PROTOLATHE | LATHE_TYPE_MECHA -/datum/design/science/powercell/generate_name(template) +/datum/prototype/design/science/powercell/generate_name(template) return "Power Cell Model ([template])" -/datum/design/science/powercell/generate_desc(template_name, template_desc) +/datum/prototype/design/science/powercell/generate_desc(template_name, template_desc) if(build_path) var/obj/item/cell/C = build_path return "Allows the construction of power cells that can hold [initial(C.maxcharge)] units of energy." return "ERROR" -/datum/design/science/powercell/print(atom/where) +/datum/prototype/design/science/powercell/print(atom/where) var/obj/item/cell/C = ..() C.charge = 0 //shouldn't produce power out of thin air. C.update_icon() return C -/datum/design/science/powercell/basic +/datum/prototype/design/science/powercell/basic design_name = "basic" lathe_type = LATHE_TYPE_PROTOLATHE | LATHE_TYPE_MECHA id = "basic_cell" @@ -26,7 +26,7 @@ build_path = /obj/item/cell category = list("Misc") -/datum/design/science/powercell/high +/datum/prototype/design/science/powercell/high design_name = "high-capacity" lathe_type = LATHE_TYPE_PROTOLATHE | LATHE_TYPE_MECHA id = "high_cell" @@ -35,7 +35,7 @@ build_path = /obj/item/cell/high category = list("Misc") -/datum/design/science/powercell/super +/datum/prototype/design/science/powercell/super design_name = "super-capacity" id = "super_cell" req_tech = list(TECH_POWER = 3, TECH_MATERIAL = 2) @@ -43,7 +43,7 @@ build_path = /obj/item/cell/super category = list("Misc") -/datum/design/science/powercell/hyper +/datum/prototype/design/science/powercell/hyper design_name = "hyper-capacity" id = "hyper_cell" req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4) @@ -51,7 +51,7 @@ build_path = /obj/item/cell/hyper category = list("Misc") -/datum/design/science/powercell/device +/datum/prototype/design/science/powercell/device design_name = "device" lathe_type = LATHE_TYPE_PROTOLATHE id = "device" @@ -59,7 +59,7 @@ build_path = /obj/item/cell/device category = list("Misc") -/datum/design/science/powercell/weapon +/datum/prototype/design/science/powercell/weapon design_name = "weapon" lathe_type = LATHE_TYPE_PROTOLATHE id = "weapon" diff --git a/code/modules/research/designs/precursor.dm b/code/modules/research/designs/precursor.dm index feaafee7b0a..880620e4921 100644 --- a/code/modules/research/designs/precursor.dm +++ b/code/modules/research/designs/precursor.dm @@ -1,10 +1,10 @@ -/datum/design/science/anomaly - abstract_type = /datum/design/science/anomaly +/datum/prototype/design/science/anomaly + abstract_type = /datum/prototype/design/science/anomaly -/datum/design/science/anomaly/generate_name(template) +/datum/prototype/design/science/anomaly/generate_name(template) return "Anomalous prototype ([..()])" -/datum/design/science/anomaly/camotrap +/datum/prototype/design/science/anomaly/camotrap design_name = "Chameleon Trap" desc = "A self-miraging mechanical trap, capable of producing short bursts of electric current when triggered." id = "hunt_trap" @@ -12,13 +12,13 @@ req_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 3, TECH_MAGNET = 4, TECH_PHORON = 2, TECH_ARCANE = 2) build_path = /obj/item/beartrap/hunting -/datum/design/science/precursor - abstract_type = /datum/design/science/precursor +/datum/prototype/design/science/precursor + abstract_type = /datum/prototype/design/science/precursor -/datum/design/science/precursor/generate_name(template) +/datum/prototype/design/science/precursor/generate_name(template) return "Alien prototype ([..()])" -/datum/design/science/precursor/crowbar +/datum/prototype/design/science/precursor/crowbar design_name = "Hybrid Crowbar" desc = "A tool utilizing cutting edge modern technology, and ancient component designs." id = "hybridcrowbar" @@ -26,7 +26,7 @@ materials_base = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_GOLD = 250, MAT_URANIUM = 2500) build_path = /obj/item/tool/crowbar/hybrid -/datum/design/science/precursor/wrench +/datum/prototype/design/science/precursor/wrench design_name = "Hybrid Wrench" desc = "A tool utilizing cutting edge modern technology, and ancient component designs." id = "hybridwrench" @@ -34,7 +34,7 @@ materials_base = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_SILVER = 300, MAT_URANIUM = 2000) build_path = /obj/item/tool/wrench/hybrid -/datum/design/science/precursor/screwdriver +/datum/prototype/design/science/precursor/screwdriver design_name = "Hybrid Screwdriver" desc = "A tool utilizing cutting edge modern technology, and ancient component designs." id = "hybridscrewdriver" @@ -42,7 +42,7 @@ materials_base = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_PLASTIC = 8000, MAT_DIAMOND = 2000) build_path = /obj/item/tool/screwdriver/hybrid -/datum/design/science/precursor/wirecutters +/datum/prototype/design/science/precursor/wirecutters design_name = "Hybrid Wirecutters" desc = "A tool utilizing cutting edge modern technology, and ancient component designs." id = "hybridwirecutters" @@ -50,7 +50,7 @@ materials_base = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_PLASTIC = 8000, MAT_PHORON = 2750, MAT_DIAMOND = 2000) build_path = /obj/item/tool/wirecutters/hybrid -/datum/design/science/precursor/welder +/datum/prototype/design/science/precursor/welder design_name = "Hybrid Welding Tool" desc = "A tool utilizing cutting edge modern technology, and ancient component designs." id = "hybridwelder" @@ -59,7 +59,7 @@ build_path = /obj/item/weldingtool/experimental/hybrid -/datum/design/science/precursor/janusmodule +/datum/prototype/design/science/precursor/janusmodule design_name = "Blackbox Circuit Datamass" desc = "A design that seems to be in a constantly shifting superposition." id = "janus_module" diff --git a/code/modules/research/designs/prosfab_designs.dm b/code/modules/research/designs/prosfab_designs.dm index 6f90a74c625..ed81b7cd3e2 100644 --- a/code/modules/research/designs/prosfab_designs.dm +++ b/code/modules/research/designs/prosfab_designs.dm @@ -1,15 +1,15 @@ -/datum/design/science/prosfab - abstract_type = /datum/design/science/prosfab +/datum/prototype/design/science/prosfab + abstract_type = /datum/prototype/design/science/prosfab lathe_type = LATHE_TYPE_PROSTHETICS category = list("Misc") req_tech = list(TECH_MATERIAL = 1) -/datum/design/science/prosfab/pros - abstract_type = /datum/design/science/prosfab/pros +/datum/prototype/design/science/prosfab/pros + abstract_type = /datum/prototype/design/science/prosfab/pros category = list("Prosthetics") // Make new external organs and make 'em robotish -/datum/design/science/prosfab/pros/legacy_print(atom/where, fabricator) +/datum/prototype/design/science/prosfab/pros/legacy_print(atom/where, fabricator) if(istype(fabricator, /obj/machinery/mecha_part_fabricator/pros)) var/obj/machinery/mecha_part_fabricator/pros/prosfab = fabricator var/obj/item/organ/O = new build_path(where) @@ -40,7 +40,7 @@ return ..() // Deep Magic for the torso since it needs to be a new mob -/datum/design/science/prosfab/pros/torso/legacy_print(atom/where, fabricator) +/datum/prototype/design/science/prosfab/pros/torso/legacy_print(atom/where, fabricator) if(istype(fabricator, /obj/machinery/mecha_part_fabricator/pros)) var/obj/machinery/mecha_part_fabricator/pros/prosfab = fabricator var/newspecies = SPECIES_HUMAN @@ -94,14 +94,14 @@ return H //////////////////// Prosthetics //////////////////// -/datum/design/science/prosfab/pros/torso - abstract_type = /datum/design/science/prosfab/pros/torso +/datum/prototype/design/science/prosfab/pros/torso + abstract_type = /datum/prototype/design/science/prosfab/pros/torso work = (35 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 30000, MAT_GLASS = 7500) // req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3) //Saving the values just in case var/gender = MALE -/datum/design/science/prosfab/pros/torso/male +/datum/prototype/design/science/prosfab/pros/torso/male design_name = "FBP Torso (M)" id = "pros_torso_m" build_path = /obj/item/organ/external/chest @@ -109,13 +109,13 @@ /obj/item/organ/external/chest/f //To satisfy CI. :| -/datum/design/science/prosfab/pros/torso/female +/datum/prototype/design/science/prosfab/pros/torso/female design_name = "FBP Torso (F)" id = "pros_torso_f" build_path = /obj/item/organ/external/chest/f gender = FEMALE -/datum/design/science/prosfab/pros/head +/datum/prototype/design/science/prosfab/pros/head design_name = "Prosthetic Head" id = "pros_head" build_path = /obj/item/organ/external/head @@ -123,67 +123,67 @@ materials_base = list(MAT_STEEL = 18750, MAT_GLASS = 3750) // req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3) //Saving the values just in case -/datum/design/science/prosfab/pros/l_arm +/datum/prototype/design/science/prosfab/pros/l_arm design_name = "Prosthetic Left Arm" id = "pros_l_arm" build_path = /obj/item/organ/external/arm work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 10125) -/datum/design/science/prosfab/pros/l_hand +/datum/prototype/design/science/prosfab/pros/l_hand design_name = "Prosthetic Left Hand" id = "pros_l_hand" build_path = /obj/item/organ/external/hand work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 3375) -/datum/design/science/prosfab/pros/r_arm +/datum/prototype/design/science/prosfab/pros/r_arm design_name = "Prosthetic Right Arm" id = "pros_r_arm" build_path = /obj/item/organ/external/arm/right work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 10125) -/datum/design/science/prosfab/pros/r_hand +/datum/prototype/design/science/prosfab/pros/r_hand design_name = "Prosthetic Right Hand" id = "pros_r_hand" build_path = /obj/item/organ/external/hand/right work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 3375) -/datum/design/science/prosfab/pros/l_leg +/datum/prototype/design/science/prosfab/pros/l_leg design_name = "Prosthetic Left Leg" id = "pros_l_leg" build_path = /obj/item/organ/external/leg work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 8437) -/datum/design/science/prosfab/pros/l_foot +/datum/prototype/design/science/prosfab/pros/l_foot design_name = "Prosthetic Left Foot" id = "pros_l_foot" build_path = /obj/item/organ/external/foot work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 2813) -/datum/design/science/prosfab/pros/r_leg +/datum/prototype/design/science/prosfab/pros/r_leg design_name = "Prosthetic Right Leg" id = "pros_r_leg" build_path = /obj/item/organ/external/leg/right work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 8437) -/datum/design/science/prosfab/pros/r_foot +/datum/prototype/design/science/prosfab/pros/r_foot design_name = "Prosthetic Right Foot" id = "pros_r_foot" build_path = /obj/item/organ/external/foot/right work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 2813) -/datum/design/science/prosfab/pros/internal - abstract_type = /datum/design/science/prosfab/pros/internal +/datum/prototype/design/science/prosfab/pros/internal + abstract_type = /datum/prototype/design/science/prosfab/pros/internal category = list("Prosthetics, Internal") -/datum/design/science/prosfab/pros/internal/cell +/datum/prototype/design/science/prosfab/pros/internal/cell design_name = "Prosthetic Powercell" id = "pros_cell" build_path = /obj/item/organ/internal/cell @@ -191,7 +191,7 @@ materials_base = list(MAT_STEEL = 7500, MAT_GLASS = 3000) // req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2) -/datum/design/science/prosfab/pros/internal/eyes +/datum/prototype/design/science/prosfab/pros/internal/eyes design_name = "Prosthetic Eyes" id = "pros_eyes" build_path = /obj/item/organ/internal/eyes/robot @@ -199,35 +199,35 @@ materials_base = list(MAT_STEEL = 5625, MAT_GLASS = 5625) // req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2) -/datum/design/science/prosfab/pros/internal/hydraulic +/datum/prototype/design/science/prosfab/pros/internal/hydraulic design_name = "Hydraulic Hub" id = "pros_hydraulic" build_path = /obj/item/organ/internal/heart/machine work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 7500, MAT_PLASTIC = 3000) -/datum/design/science/prosfab/pros/internal/reagcycler +/datum/prototype/design/science/prosfab/pros/internal/reagcycler design_name = "Reagent Cycler" id = "pros_reagcycler" build_path = /obj/item/organ/internal/stomach/machine work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 7500, MAT_PLASTIC = 3000) -/datum/design/science/prosfab/pros/internal/heatsink +/datum/prototype/design/science/prosfab/pros/internal/heatsink design_name = "Heatsink" id = "pros_heatsink" build_path = /obj/item/organ/internal/robotic/heatsink work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 7500, MAT_PLASTIC = 3000) -/datum/design/science/prosfab/pros/internal/diagnostic +/datum/prototype/design/science/prosfab/pros/internal/diagnostic design_name = "Diagnostic Controller" id = "pros_diagnostic" build_path = /obj/item/organ/internal/robotic/diagnostic work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 7500, MAT_PLASTIC = 3000) -/datum/design/science/prosfab/pros/internal/heart +/datum/prototype/design/science/prosfab/pros/internal/heart design_name = "Prosthetic Heart" id = "pros_heart" build_path = /obj/item/organ/internal/heart @@ -235,7 +235,7 @@ materials_base = list(MAT_STEEL = 5625, MAT_GLASS = 1000) // req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2) -/datum/design/science/prosfab/pros/internal/lungs +/datum/prototype/design/science/prosfab/pros/internal/lungs design_name = "Prosthetic Lungs" id = "pros_lung" build_path = /obj/item/organ/internal/lungs @@ -243,7 +243,7 @@ materials_base = list(MAT_STEEL = 5625, MAT_GLASS = 1000) // req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2) -/datum/design/science/prosfab/pros/internal/liver +/datum/prototype/design/science/prosfab/pros/internal/liver design_name = "Prosthetic Liver" id = "pros_liver" build_path = /obj/item/organ/internal/liver @@ -251,7 +251,7 @@ materials_base = list(MAT_STEEL = 5625, MAT_GLASS = 1000) // req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2) -/datum/design/science/prosfab/pros/internal/kidneys +/datum/prototype/design/science/prosfab/pros/internal/kidneys design_name = "Prosthetic Kidneys" id = "pros_kidney" build_path = /obj/item/organ/internal/kidneys @@ -259,7 +259,7 @@ materials_base = list(MAT_STEEL = 5625, MAT_GLASS = 1000) // req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2) -/datum/design/science/prosfab/pros/internal/spleen +/datum/prototype/design/science/prosfab/pros/internal/spleen design_name = "Prosthetic Spleen" id = "pros_spleen" build_path = /obj/item/organ/internal/spleen @@ -267,14 +267,14 @@ materials_base = list(MAT_STEEL = 3000, MAT_GLASS = 750) // req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2) -/datum/design/science/prosfab/pros/internal/larynx +/datum/prototype/design/science/prosfab/pros/internal/larynx design_name = "Prosthetic Larynx" id = "pros_larynx" build_path = /obj/item/organ/internal/voicebox work = (15 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 750, MAT_PLASTIC = 500) -/datum/design/science/prosfab/pros/internal/backup_battery +/datum/prototype/design/science/prosfab/pros/internal/backup_battery design_name = "Synthetic Back-Up Battery" id = "synth_backup_battery" build_path = /obj/item/fbp_backup_cell @@ -282,69 +282,69 @@ materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 1500) //////////////// Cybernetic Augments ////////////////// -/datum/design/science/prosfab/augment - abstract_type = /datum/design/science/prosfab/augment +/datum/prototype/design/science/prosfab/augment + abstract_type = /datum/prototype/design/science/prosfab/augment category = list("Augments") lathe_type = LATHE_TYPE_PROSTHETICS work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 3750, MAT_GLASS = 1750) -/datum/design/science/prosfab/augment/hand +/datum/prototype/design/science/prosfab/augment/hand design_name = "resonant analyzer" id = "aug_hand" materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 500) build_path = /obj/item/organ/internal/augment/armmounted/hand -/datum/design/science/prosfab/augment/shoulder +/datum/prototype/design/science/prosfab/augment/shoulder design_name = "rotary toolkit" id = "aug_shoulder" req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 4, TECH_ENGINEERING = 4, TECH_DATA = 3) materials_base = list(MAT_STEEL = 1500, MAT_GLASS = 500, MAT_PLASTIC = 1000) build_path = /obj/item/organ/internal/augment/armmounted/shoulder/multiple -/datum/design/science/prosfab/augment/arm +/datum/prototype/design/science/prosfab/augment/arm design_name = "implanted taser" id = "aug_arm" req_tech = list(TECH_BIO = 4, TECH_COMBAT = 4, TECH_MATERIAL = 4) materials_base = list(MAT_STEEL = 1500, MAT_GLASS = 500, MAT_PLASTIC = 2000) build_path = /obj/item/organ/internal/augment/armmounted/taser -/datum/design/science/prosfab/augment/shoulder_med +/datum/prototype/design/science/prosfab/augment/shoulder_med design_name = "rotary medical kit" id = "aug_shouldermed" req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_DATA = 3) materials_base = list(MAT_STEEL = 1500, MAT_GLASS = 1000, MAT_PLASTIC = 1000) build_path = /obj/item/organ/internal/augment/armmounted/shoulder/multiple/medical -/datum/design/science/prosfab/augment/shoulder_combat +/datum/prototype/design/science/prosfab/augment/shoulder_combat design_name = "muscular overclocker" id = "aug_shouldercombat" req_tech = list(TECH_BIO = 5, TECH_COMBAT = 5, TECH_MATERIAL = 4, TECH_ENGINEERING = 4) materials_base = list(MAT_STEEL = 2000, MAT_PLASTIC = 3000, MAT_SILVER = 1000, MAT_GOLD = 500) build_path = /obj/item/organ/internal/augment/armmounted/shoulder/surge -/datum/design/science/prosfab/augment/pelvis +/datum/prototype/design/science/prosfab/augment/pelvis design_name = "locomotive optimizer" id = "aug_pelvis" req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5) materials_base = list(MAT_STEEL = 1500, MAT_PLASTIC = 2000, MAT_SILVER = 500, MAT_GOLD = 1000) build_path = /obj/item/organ/internal/augment/bioaugment/sprint_enhance -/datum/design/science/prosfab/augment/arm_laser +/datum/prototype/design/science/prosfab/augment/arm_laser design_name = "implanted laser rifle" id = "aug_armlaser" req_tech = list(TECH_BIO = 5, TECH_COMBAT = 5, TECH_MATERIAL = 5) materials_base = list(MAT_STEEL = 3000, MAT_GLASS = 1000, MAT_PLASTIC = 2000, MAT_GOLD = 2000) build_path = /obj/item/organ/internal/augment/armmounted -/datum/design/science/prosfab/augment/eyes +/datum/prototype/design/science/prosfab/augment/eyes design_name = "thermolensing sunglasses" id = "aug_eyes" req_tech = list(TECH_BIO = 6, TECH_ILLEGAL = 4, TECH_MATERIAL = 4, TECH_DATA = 5) materials_base = list(MAT_STEEL = 500, MAT_GLASS = 1000, MAT_PLASTIC = 1500, MAT_GOLD = 1000, MAT_DIAMOND = 2000) build_path = /obj/item/organ/internal/augment/bioaugment/thermalshades -/datum/design/science/prosfab/augment/hand_sword +/datum/prototype/design/science/prosfab/augment/hand_sword design_name = "implanted energy blade" id = "aug_handsword" req_tech = list(TECH_BIO = 6, TECH_COMBAT = 6, TECH_ILLEGAL = 4, TECH_MATERIAL = 4) @@ -352,55 +352,55 @@ build_path = /obj/item/organ/internal/augment/armmounted/hand/sword //////////////////// Cyborg Parts //////////////////// -/datum/design/science/prosfab/cyborg - abstract_type = /datum/design/science/prosfab/cyborg +/datum/prototype/design/science/prosfab/cyborg + abstract_type = /datum/prototype/design/science/prosfab/cyborg category = list("Cyborg Parts") work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 3750) -/datum/design/science/prosfab/cyborg/exoskeleton +/datum/prototype/design/science/prosfab/cyborg/exoskeleton design_name = "Robot Exoskeleton" id = "robot_exoskeleton" build_path = /obj/item/robot_parts/robot_suit work = (50 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 37500) -/datum/design/science/prosfab/cyborg/torso +/datum/prototype/design/science/prosfab/cyborg/torso design_name = "Robot Torso" id = "robot_torso" build_path = /obj/item/robot_parts/chest work = (35 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 30000) -/datum/design/science/prosfab/cyborg/head +/datum/prototype/design/science/prosfab/cyborg/head design_name = "Robot Head" id = "robot_head" build_path = /obj/item/robot_parts/head work = (35 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 18750) -/datum/design/science/prosfab/cyborg/l_arm +/datum/prototype/design/science/prosfab/cyborg/l_arm design_name = "Robot Left Arm" id = "robot_l_arm" build_path = /obj/item/robot_parts/l_arm work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 13500) -/datum/design/science/prosfab/cyborg/r_arm +/datum/prototype/design/science/prosfab/cyborg/r_arm design_name = "Robot Right Arm" id = "robot_r_arm" build_path = /obj/item/robot_parts/r_arm work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 13500) -/datum/design/science/prosfab/cyborg/l_leg +/datum/prototype/design/science/prosfab/cyborg/l_leg design_name = "Robot Left Leg" id = "robot_l_leg" build_path = /obj/item/robot_parts/l_leg work = (20 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 11250) -/datum/design/science/prosfab/cyborg/r_leg +/datum/prototype/design/science/prosfab/cyborg/r_leg design_name = "Robot Right Leg" id = "robot_r_leg" build_path = /obj/item/robot_parts/r_leg @@ -409,95 +409,95 @@ //////////////////// Cyborg Internals //////////////////// -/datum/design/science/prosfab/cyborg/component - abstract_type = /datum/design/science/prosfab/cyborg/component +/datum/prototype/design/science/prosfab/cyborg/component + abstract_type = /datum/prototype/design/science/prosfab/cyborg/component category = list("Cyborg Internals") lathe_type = LATHE_TYPE_PROSTHETICS work = (12 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 7500) -/datum/design/science/prosfab/cyborg/component/binary_communication_device +/datum/prototype/design/science/prosfab/cyborg/component/binary_communication_device design_name = "Binary Communication Device" id = "binary_communication_device" build_path = /obj/item/robot_parts/robot_component/binary_communication_device -/datum/design/science/prosfab/cyborg/component/radio +/datum/prototype/design/science/prosfab/cyborg/component/radio design_name = "Radio" id = "radio" build_path = /obj/item/robot_parts/robot_component/radio -/datum/design/science/prosfab/cyborg/component/actuator +/datum/prototype/design/science/prosfab/cyborg/component/actuator design_name = "Actuator" id = "actuator" build_path = /obj/item/robot_parts/robot_component/actuator -/datum/design/science/prosfab/cyborg/component/diagnosis_unit +/datum/prototype/design/science/prosfab/cyborg/component/diagnosis_unit design_name = "Diagnosis Unit" id = "diagnosis_unit" build_path = /obj/item/robot_parts/robot_component/diagnosis_unit -/datum/design/science/prosfab/cyborg/component/camera +/datum/prototype/design/science/prosfab/cyborg/component/camera design_name = "Camera" id = "camera" build_path = /obj/item/robot_parts/robot_component/camera -/datum/design/science/prosfab/cyborg/component/armour +/datum/prototype/design/science/prosfab/cyborg/component/armour design_name = "Armour Plating (Robot)" id = "armour" build_path = /obj/item/robot_parts/robot_component/armour -// /datum/design/science/prosfab/cyborg/component/armour_heavy +// /datum/prototype/design/science/prosfab/cyborg/component/armour_heavy // design_name = "Armour Plating (Platform)" // id = "platform_armour" // build_path = /obj/item/robot_parts/robot_component/armour_platform -/datum/design/science/prosfab/cyborg/component/ai_shell +/datum/prototype/design/science/prosfab/cyborg/component/ai_shell design_name = "AI Remote Interface" id = "mmi_ai_shell" build_path = /obj/item/mmi/inert/ai_remote //////////////////// Cyborg Modules //////////////////// -/datum/design/science/prosfab/robot_upgrade - abstract_type = /datum/design/science/prosfab/robot_upgrade +/datum/prototype/design/science/prosfab/robot_upgrade + abstract_type = /datum/prototype/design/science/prosfab/robot_upgrade category = list("Cyborg Modules") lathe_type = LATHE_TYPE_PROSTHETICS work = (12 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. materials_base = list(MAT_STEEL = 7500) -/datum/design/science/prosfab/robot_upgrade/rename +/datum/prototype/design/science/prosfab/robot_upgrade/rename design_name = "Rename Module" desc = "Used to rename a cyborg." id = "borg_rename_s" build_path = /obj/item/borg/upgrade/rename -/datum/design/science/prosfab/robot_upgrade/reset +/datum/prototype/design/science/prosfab/robot_upgrade/reset design_name = "Reset Module" desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the robot." id = "borg_reset_module" build_path = /obj/item/borg/upgrade/reset -/datum/design/science/prosfab/robot_upgrade/restart +/datum/prototype/design/science/prosfab/robot_upgrade/restart design_name = "Emergency Restart Module" desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online." id = "borg_restart_module" materials_base = list(MAT_STEEL = 45000, MAT_GLASS = 3750) build_path = /obj/item/borg/upgrade/restart -/datum/design/science/prosfab/robot_upgrade/vtec +/datum/prototype/design/science/prosfab/robot_upgrade/vtec design_name = "VTEC Module" desc = "Used to kick in a robot's VTEC systems, increasing their speed." id = "borg_vtec_module" materials_base = list(MAT_STEEL = 60000, MAT_GLASS = 4500, MAT_GOLD = 3750) build_path = /obj/item/borg/upgrade/vtec -/datum/design/science/prosfab/robot_upgrade/tasercooler +/datum/prototype/design/science/prosfab/robot_upgrade/tasercooler design_name = "Rapid Taser Cooling Module" desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate." id = "borg_taser_module" materials_base = list(MAT_STEEL = 60000, MAT_GLASS = 4500, MAT_GOLD = 1500, MAT_DIAMOND = 375) build_path = /obj/item/borg/upgrade/tasercooler -/datum/design/science/prosfab/robot_upgrade/bluespaceoresatchel +/datum/prototype/design/science/prosfab/robot_upgrade/bluespaceoresatchel design_name = "Bluespace Ore Satchel Module" desc = "Improves the ore satchels of mining units to hold a lot more ores." id = "borg_bsorebag_module" @@ -505,21 +505,21 @@ materials_base = list(MAT_STEEL = 7500, MAT_GOLD = 1500, MAT_DIAMOND = 750, MAT_URANIUM = 150, MAT_PHORON = 1000) build_path = /obj/item/borg/upgrade/bluespaceorebag -/datum/design/science/prosfab/robot_upgrade/jetpack +/datum/prototype/design/science/prosfab/robot_upgrade/jetpack design_name = "Jetpack Module" desc = "A carbon dioxide jetpack suitable for low-gravity mining operations." id = "borg_jetpack_module" materials_base = list(MAT_STEEL = 7500, MAT_PHORON = 11250, MAT_URANIUM = 15000) build_path = /obj/item/borg/upgrade/jetpack -/datum/design/science/prosfab/robot_upgrade/advhealth +/datum/prototype/design/science/prosfab/robot_upgrade/advhealth design_name = "Advanced Health Analyzer Module" desc = "An advanced health analyzer suitable for diagnosing more serious injuries." id = "borg_advhealth_module" materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 6500, MAT_DIAMOND = 350) build_path = /obj/item/borg/upgrade/advhealth -/datum/design/science/prosfab/robot_upgrade/syndicate +/datum/prototype/design/science/prosfab/robot_upgrade/syndicate design_name = "Scrambled Equipment Module" desc = "Allows for the construction of lethal upgrades for cyborgs." id = "borg_syndicate_module" @@ -527,7 +527,7 @@ materials_base = list(MAT_STEEL = 7500, MAT_GLASS = 11250, MAT_DIAMOND = 7500) build_path = /obj/item/borg/upgrade/syndicate -/datum/design/science/prosfab/robot_upgrade/language +/datum/prototype/design/science/prosfab/robot_upgrade/language design_name = "Language Module" desc = "Used to let cyborgs other than clerical or service speak a variety of languages." id = "borg_language_module" @@ -535,7 +535,7 @@ materials_base = list(MAT_STEEL = 25000, MAT_GLASS = 3000, MAT_GOLD = 350) build_path = /obj/item/borg/upgrade/language -/datum/design/science/prosfab/robot_upgrade/sizeshift +/datum/prototype/design/science/prosfab/robot_upgrade/sizeshift design_name = "Size Alteration Module" id = "borg_sizeshift_module" req_tech = list(TECH_BLUESPACE = 3, TECH_MATERIAL = 3, TECH_POWER = 2) @@ -544,42 +544,42 @@ // Synthmorph Bags. -/datum/design/science/prosfab/synthmorphbag +/datum/prototype/design/science/prosfab/synthmorphbag design_name = "Synthmorph Storage Bag" desc = "Used to store or slowly defragment an FBP." id = "misc_synth_bag" materials_base = list(MAT_STEEL = 250, MAT_GLASS = 250, MAT_PLASTIC = 2000) build_path = /obj/item/bodybag/cryobag/robobag -/datum/design/science/prosfab/badge_nt +/datum/prototype/design/science/prosfab/badge_nt design_name = "Nanotrasen Tag" desc = "Used to identify an empty Nanotrasen FBP." id = "misc_synth_bag_tag_nt" materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000) build_path = /obj/item/clothing/accessory/badge/corporate_tag -/datum/design/science/prosfab/badge_morph +/datum/prototype/design/science/prosfab/badge_morph design_name = "Morpheus Tag" desc = "Used to identify an empty Morpheus FBP." id = "misc_synth_bag_tag_morph" materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000) build_path = /obj/item/clothing/accessory/badge/corporate_tag/morpheus -/datum/design/science/prosfab/badge_wardtaka +/datum/prototype/design/science/prosfab/badge_wardtaka design_name = "Ward-Takahashi Tag" desc = "Used to identify an empty Ward-Takahashi FBP." id = "misc_synth_bag_tag_wardtaka" materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000) build_path = /obj/item/clothing/accessory/badge/corporate_tag/wardtaka -/datum/design/science/prosfab/badge_zenghu +/datum/prototype/design/science/prosfab/badge_zenghu design_name = "Zeng-Hu Tag" desc = "Used to identify an empty Zeng-Hu FBP." id = "misc_synth_bag_tag_zenghu" materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000) build_path = /obj/item/clothing/accessory/badge/corporate_tag/zenghu -/datum/design/science/prosfab/badge_gilthari +/datum/prototype/design/science/prosfab/badge_gilthari design_name = "Gilthari Tag" desc = "Used to identify an empty Gilthari FBP." id = "misc_synth_bag_tag_gilthari" @@ -587,7 +587,7 @@ build_path = /obj/item/clothing/accessory/badge/corporate_tag/gilthari req_tech = list(TECH_MATERIAL = 4, TECH_ILLEGAL = 2, TECH_PHORON = 2) -/datum/design/science/prosfab/badge_veymed +/datum/prototype/design/science/prosfab/badge_veymed design_name = "Vey-Medical Tag" desc = "Used to identify an empty Vey-Medical FBP." id = "misc_synth_bag_tag_veymed" @@ -595,28 +595,28 @@ build_path = /obj/item/clothing/accessory/badge/corporate_tag/veymed req_tech = list(TECH_MATERIAL = 3, TECH_ILLEGAL = 1, TECH_BIO = 4) -/datum/design/science/prosfab/badge_hephaestus +/datum/prototype/design/science/prosfab/badge_hephaestus design_name = "Hephaestus Tag" desc = "Used to identify an empty Hephaestus FBP." id = "misc_synth_bag_tag_heph" materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000) build_path = /obj/item/clothing/accessory/badge/corporate_tag/hephaestus -/datum/design/science/prosfab/badge_grayson +/datum/prototype/design/science/prosfab/badge_grayson design_name = "Grayson Tag" desc = "Used to identify an empty Grayson FBP." id = "misc_synth_bag_tag_grayson" materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000) build_path = /obj/item/clothing/accessory/badge/corporate_tag/grayson -/datum/design/science/prosfab/badge_xion +/datum/prototype/design/science/prosfab/badge_xion design_name = "Xion Tag" desc = "Used to identify an empty Xion FBP." id = "misc_synth_bag_tag_xion" materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000) build_path = /obj/item/clothing/accessory/badge/corporate_tag/xion -/datum/design/science/prosfab/badge_bishop +/datum/prototype/design/science/prosfab/badge_bishop design_name = "Bishop Tag" desc = "Used to identify an empty Bishop FBP." id = "misc_synth_bag_tag_bishop" diff --git a/code/modules/research/designs/rigs_vr.dm b/code/modules/research/designs/rigs_vr.dm index 70bdce274c1..307caf2f671 100644 --- a/code/modules/research/designs/rigs_vr.dm +++ b/code/modules/research/designs/rigs_vr.dm @@ -1,87 +1,87 @@ -/datum/design/science/hardsuit_module - abstract_type = /datum/design/science/hardsuit_module +/datum/prototype/design/science/hardsuit_module + abstract_type = /datum/prototype/design/science/hardsuit_module req_tech = list(TECH_MATERIAL = 5, TECH_POWER = 5, TECH_MAGNET = 5) materials_base = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 4000, MAT_URANIUM = 2000) -/datum/design/science/hardsuit_module/generate_name(template) +/datum/prototype/design/science/hardsuit_module/generate_name(template) return "hardsuit module prototype ([..()])" -/datum/design/science/hardsuit_module/maneuvering_jets +/datum/prototype/design/science/hardsuit_module/maneuvering_jets design_name = "maneuvering jets" id = "hardsuitmod_maneuveringjets" build_path = /obj/item/hardsuit_module/maneuvering_jets -/datum/design/science/hardsuit_module/sprinter +/datum/prototype/design/science/hardsuit_module/sprinter design_name = "sprinter" id = "hardsuitmod_sprinter" build_path = /obj/item/hardsuit_module/sprinter -/datum/design/science/hardsuit_module/plasma_cutter +/datum/prototype/design/science/hardsuit_module/plasma_cutter design_name = "plasma cutter" id = "hardsuitmod_plasmacutter" build_path = /obj/item/hardsuit_module/device/plasmacutter -/datum/design/science/hardsuit_module/diamond_drill +/datum/prototype/design/science/hardsuit_module/diamond_drill design_name = "diamond drill" id = "hardsuitmod_diamonddrill" build_path = /obj/item/hardsuit_module/device/drill -/datum/design/science/hardsuit_module/anomaly_scanner +/datum/prototype/design/science/hardsuit_module/anomaly_scanner design_name = "anomaly scanner" id = "hardsuitmod_anomalyscanner" build_path = /obj/item/hardsuit_module/device/anomaly_scanner -/datum/design/science/hardsuit_module/orescanner +/datum/prototype/design/science/hardsuit_module/orescanner design_name = "ore scanner" id = "hardsuitmod_orescanner" build_path = /obj/item/hardsuit_module/device/orescanner -/datum/design/science/hardsuit_module/orescanneradv +/datum/prototype/design/science/hardsuit_module/orescanneradv design_name = "adv. ore scanner" id = "hardsuitmod_orescanneradv" build_path = /obj/item/hardsuit_module/device/orescanner/advanced -/datum/design/science/hardsuit_module/rescue_pharm +/datum/prototype/design/science/hardsuit_module/rescue_pharm design_name = "rescue pharm" id = "hardsuitmod_rescue_pharm" build_path = /obj/item/hardsuit_module/rescue_pharm -/datum/design/science/hardsuit_module/lasercannon +/datum/prototype/design/science/hardsuit_module/lasercannon design_name = "laser cannon" id = "hardsuitmod_lasercannon" build_path = /obj/item/hardsuit_module/mounted materials_base = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 4000, MAT_URANIUM = 2000, MAT_DIAMOND = 2000) -/datum/design/science/hardsuit_module/egun +/datum/prototype/design/science/hardsuit_module/egun design_name = "energy gun" id = "hardsuitmod_egun" build_path = /obj/item/hardsuit_module/mounted/egun materials_base = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 4000, MAT_URANIUM = 2000, MAT_DIAMOND = 1000) -/datum/design/science/hardsuit_module/taser +/datum/prototype/design/science/hardsuit_module/taser design_name = "taser" id = "hardsuitmod_taser" build_path = /obj/item/hardsuit_module/mounted/taser -/datum/design/science/hardsuit_module/armblade +/datum/prototype/design/science/hardsuit_module/armblade design_name = "arm-mounted blade" id = "hardsuitmod_armblade" build_path = /obj/item/hardsuit_module/armblade materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_GOLD = 2000) -/datum/design/science/hardsuit_module/rcd +/datum/prototype/design/science/hardsuit_module/rcd design_name = "rcd" id = "hardsuitmod_rcd" build_path = /obj/item/hardsuit_module/device/rcd materials_base = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 4000, MAT_URANIUM = 2000, MAT_DIAMOND = 2000) -/datum/design/science/hardsuit_module/hardsuitwelder +/datum/prototype/design/science/hardsuit_module/hardsuitwelder design_name = "RIG arc-welder" id = "hardsuitmod_welder" build_path = /obj/item/hardsuit_module/device/rigwelder materials_base = list(MAT_STEEL = 6000, MAT_GLASS = 4000, MAT_SILVER = 2000, MAT_GOLD = 4000) -/datum/design/science/hardsuit_module/toolset +/datum/prototype/design/science/hardsuit_module/toolset design_name = "RIG toolset" id = "hardsuitmod_tools" build_path = /obj/item/hardsuit_module/device/toolset diff --git a/code/modules/research/designs/stock_parts.dm b/code/modules/research/designs/stock_parts.dm index 027b3f5d376..534b2f9e078 100644 --- a/code/modules/research/designs/stock_parts.dm +++ b/code/modules/research/designs/stock_parts.dm @@ -2,48 +2,48 @@ Various Stock Parts */ -/datum/design/science/stock_part - abstract_type = /datum/design/science/stock_part +/datum/prototype/design/science/stock_part + abstract_type = /datum/prototype/design/science/stock_part lathe_type = LATHE_TYPE_PROTOLATHE work = (3 * (1 / 3) * 10) // auto regexed to be old time divided by 3 in seconds. //Sets an independent time for stock parts, currently one third normal print time. var/tier = 0 -/datum/design/science/stock_part/generate_name(template) +/datum/prototype/design/science/stock_part/generate_name(template) if(tier > 0) return "Component design (T[tier]: [..()])" return "Component design ([..()])" // Matter Bins -/datum/design/science/stock_part/basic_matter_bin +/datum/prototype/design/science/stock_part/basic_matter_bin id = "basic_matter_bin" req_tech = list(TECH_MATERIAL = 1) materials_base = list(MAT_STEEL = 80) build_path = /obj/item/stock_parts/matter_bin tier = 1 -/datum/design/science/stock_part/adv_matter_bin +/datum/prototype/design/science/stock_part/adv_matter_bin id = "adv_matter_bin" req_tech = list(TECH_MATERIAL = 3) materials_base = list(MAT_STEEL = 80) build_path = /obj/item/stock_parts/matter_bin/adv tier = 2 -/datum/design/science/stock_part/super_matter_bin +/datum/prototype/design/science/stock_part/super_matter_bin id = "super_matter_bin" req_tech = list(TECH_MATERIAL = 5) materials_base = list(MAT_STEEL = 80) build_path = /obj/item/stock_parts/matter_bin/super tier = 3 -/datum/design/science/stock_part/hyper_matter_bin +/datum/prototype/design/science/stock_part/hyper_matter_bin id = "hyper_matter_bin" req_tech = list(TECH_MATERIAL = 6, TECH_ARCANE = 2) materials_base = list(MAT_STEEL = 200, MAT_VERDANTIUM = 60, MAT_DURASTEEL = 75) build_path = /obj/item/stock_parts/matter_bin/hyper tier = 4 -/datum/design/science/stock_part/omni_matter_bin +/datum/prototype/design/science/stock_part/omni_matter_bin id = "omni_matter_bin" req_tech = list(TECH_MATERIAL = 7, TECH_PRECURSOR = 2) materials_base = list(MAT_STEEL = 2000, MAT_PLASTEEL = 100, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100) @@ -52,35 +52,35 @@ // Micro-manipulators -/datum/design/science/stock_part/micro_mani +/datum/prototype/design/science/stock_part/micro_mani id = "micro_mani" req_tech = list(TECH_MATERIAL = 1, TECH_DATA = 1) materials_base = list(MAT_STEEL = 30) build_path = /obj/item/stock_parts/manipulator tier = 1 -/datum/design/science/stock_part/nano_mani +/datum/prototype/design/science/stock_part/nano_mani id = "nano_mani" req_tech = list(TECH_MATERIAL = 3, TECH_DATA = 2) materials_base = list(MAT_STEEL = 30) build_path = /obj/item/stock_parts/manipulator/nano tier = 2 -/datum/design/science/stock_part/pico_mani +/datum/prototype/design/science/stock_part/pico_mani id = "pico_mani" req_tech = list(TECH_MATERIAL = 5, TECH_DATA = 2) materials_base = list(MAT_STEEL = 30) build_path = /obj/item/stock_parts/manipulator/pico tier = 3 -/datum/design/science/stock_part/hyper_mani +/datum/prototype/design/science/stock_part/hyper_mani id = "hyper_mani" req_tech = list(TECH_MATERIAL = 6, TECH_DATA = 3, TECH_ARCANE = 2) materials_base = list(MAT_STEEL = 200, MAT_VERDANTIUM = 50, MAT_DURASTEEL = 50) build_path = /obj/item/stock_parts/manipulator/hyper tier = 4 -/datum/design/science/stock_part/omni_mani +/datum/prototype/design/science/stock_part/omni_mani id = "omni_mani" req_tech = list(TECH_MATERIAL = 7, TECH_DATA = 4, TECH_PRECURSOR = 2) materials_base = list(MAT_STEEL = 2000, MAT_PLASTEEL = 500, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100) @@ -89,35 +89,35 @@ // Capacitors -/datum/design/science/stock_part/basic_capacitor +/datum/prototype/design/science/stock_part/basic_capacitor id = "basic_capacitor" req_tech = list(TECH_POWER = 1) materials_base = list(MAT_STEEL = 50, MAT_GLASS = 50) build_path = /obj/item/stock_parts/capacitor tier = 1 -/datum/design/science/stock_part/adv_capacitor +/datum/prototype/design/science/stock_part/adv_capacitor id = "adv_capacitor" req_tech = list(TECH_POWER = 3) materials_base = list(MAT_STEEL = 50, MAT_GLASS = 50) build_path = /obj/item/stock_parts/capacitor/adv tier = 2 -/datum/design/science/stock_part/super_capacitor +/datum/prototype/design/science/stock_part/super_capacitor id = "super_capacitor" req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4) materials_base = list(MAT_STEEL = 50, MAT_GLASS = 50, MAT_GOLD = 20) build_path = /obj/item/stock_parts/capacitor/super tier = 3 -/datum/design/science/stock_part/hyper_capacitor +/datum/prototype/design/science/stock_part/hyper_capacitor id = "hyper_capacitor" req_tech = list(TECH_POWER = 6, TECH_MATERIAL = 5, TECH_BLUESPACE = 1, TECH_ARCANE = 1) materials_base = list(MAT_STEEL = 200, MAT_GLASS = 100, MAT_VERDANTIUM = 30, MAT_DURASTEEL = 25) build_path = /obj/item/stock_parts/capacitor/hyper tier = 4 -/datum/design/science/stock_part/omni_capacitor +/datum/prototype/design/science/stock_part/omni_capacitor id = "omni_capacitor" req_tech = list(TECH_POWER = 7, TECH_MATERIAL = 6, TECH_BLUESPACE = 3, TECH_PRECURSOR = 1) materials_base = list(MAT_STEEL = 2000, MAT_DIAMOND = 1000, MAT_GLASS = 1000, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100) @@ -126,35 +126,35 @@ // Sensors -/datum/design/science/stock_part/basic_sensor +/datum/prototype/design/science/stock_part/basic_sensor id = "basic_sensor" req_tech = list(TECH_MAGNET = 1) materials_base = list(MAT_STEEL = 50, MAT_GLASS = 20) build_path = /obj/item/stock_parts/scanning_module tier = 1 -/datum/design/science/stock_part/adv_sensor +/datum/prototype/design/science/stock_part/adv_sensor id = "adv_sensor" req_tech = list(TECH_MAGNET = 3) materials_base = list(MAT_STEEL = 50, MAT_GLASS = 20) build_path = /obj/item/stock_parts/scanning_module/adv tier = 2 -/datum/design/science/stock_part/phasic_sensor +/datum/prototype/design/science/stock_part/phasic_sensor id = "phasic_sensor" req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 3) materials_base = list(MAT_STEEL = 50, MAT_GLASS = 20, MAT_SILVER = 10) build_path = /obj/item/stock_parts/scanning_module/phasic tier = 3 -/datum/design/science/stock_part/hyper_sensor +/datum/prototype/design/science/stock_part/hyper_sensor id = "hyper_sensor" req_tech = list(TECH_MAGNET = 6, TECH_MATERIAL = 4, TECH_ARCANE = 1) materials_base = list(MAT_STEEL = 50, MAT_GLASS = 20, MAT_SILVER = 50, MAT_VERDANTIUM = 40, MAT_DURASTEEL = 50) build_path = /obj/item/stock_parts/scanning_module/hyper tier = 4 -/datum/design/science/stock_part/omni_sensor +/datum/prototype/design/science/stock_part/omni_sensor id = "omni_sensor" req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1) materials_base = list(MAT_STEEL = 1000, MAT_PLASTEEL = 500, MAT_GLASS = 750, MAT_SILVER = 500, MAT_MORPHIUM = 60, MAT_DURASTEEL = 100) @@ -163,35 +163,35 @@ // Micro-lasers -/datum/design/science/stock_part/basic_micro_laser +/datum/prototype/design/science/stock_part/basic_micro_laser id = "basic_micro_laser" req_tech = list(TECH_MAGNET = 1) materials_base = list(MAT_STEEL = 10, MAT_GLASS = 20) build_path = /obj/item/stock_parts/micro_laser tier = 1 -/datum/design/science/stock_part/high_micro_laser +/datum/prototype/design/science/stock_part/high_micro_laser id = "high_micro_laser" req_tech = list(TECH_MAGNET = 3) materials_base = list(MAT_STEEL = 10, MAT_GLASS = 20) build_path = /obj/item/stock_parts/micro_laser/high tier = 2 -/datum/design/science/stock_part/ultra_micro_laser +/datum/prototype/design/science/stock_part/ultra_micro_laser id = "ultra_micro_laser" req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 5) materials_base = list(MAT_STEEL = 10, MAT_GLASS = 20, MAT_URANIUM = 10) build_path = /obj/item/stock_parts/micro_laser/ultra tier = 3 -/datum/design/science/stock_part/hyper_micro_laser +/datum/prototype/design/science/stock_part/hyper_micro_laser id = "hyper_micro_laser" req_tech = list(TECH_MAGNET = 6, TECH_MATERIAL = 6, TECH_ARCANE = 2) materials_base = list(MAT_STEEL = 200, MAT_GLASS = 20, MAT_URANIUM = 30, MAT_VERDANTIUM = 50, MAT_DURASTEEL = 100) build_path = /obj/item/stock_parts/micro_laser/hyper tier = 4 -/datum/design/science/stock_part/omni_micro_laser +/datum/prototype/design/science/stock_part/omni_micro_laser id = "omni_micro_laser" req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 7, TECH_PRECURSOR = 2) materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 500, MAT_URANIUM = 2000, MAT_MORPHIUM = 50, MAT_DURASTEEL = 100) @@ -200,21 +200,21 @@ // RPEDs -/datum/design/science/stock_part/RPED +/datum/prototype/design/science/stock_part/RPED design_name = "Rapid Part Exchange Device" desc = "Special mechanical module made to store, sort, and apply standard machine parts." id = "rped" req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 3) build_path = /obj/item/storage/part_replacer -/datum/design/science/stock_part/ARPED +/datum/prototype/design/science/stock_part/ARPED design_name = "Advanced Rapid Part Exchange Device" desc = "Special mechanical module made to store, sort, and apply standard machine parts. This one has a greatly upgraded storage capacity." id = "arped" req_tech = list(TECH_ENGINEERING = 5, TECH_MATERIAL = 5) build_path = /obj/item/storage/part_replacer/adv -/datum/design/science/stock_part/ERPED +/datum/prototype/design/science/stock_part/ERPED design_name = "Experimental Rapid Part Exchange Device" desc = "Special mechanical module made to store, sort, and apply standard machine parts. This one has a greatly upgraded storage capacity, \ is made more compact, and can upgrade while maintenance panels are closed." diff --git a/code/modules/research/designs/subspace_parts.dm b/code/modules/research/designs/subspace_parts.dm index f4a21ca4662..0ebad2b128e 100644 --- a/code/modules/research/designs/subspace_parts.dm +++ b/code/modules/research/designs/subspace_parts.dm @@ -1,46 +1,46 @@ -/datum/design/science/stock_part/subspace - abstract_type = /datum/design/science/stock_part/subspace +/datum/prototype/design/science/stock_part/subspace + abstract_type = /datum/prototype/design/science/stock_part/subspace -/datum/design/science/stock_part/subspace/generate_name(template) +/datum/prototype/design/science/stock_part/subspace/generate_name(template) return "Subspace component design ([..()])" -/datum/design/science/stock_part/subspace/subspace_ansible +/datum/prototype/design/science/stock_part/subspace/subspace_ansible id = "s-ansible" req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) materials_base = list(MAT_STEEL = 80, MAT_SILVER = 20) build_path = /obj/item/stock_parts/subspace/ansible -/datum/design/science/stock_part/subspace/hyperwave_filter +/datum/prototype/design/science/stock_part/subspace/hyperwave_filter id = "s-filter" req_tech = list(TECH_DATA = 3, TECH_MAGNET = 3) materials_base = list(MAT_STEEL = 40, MAT_SILVER = 10) build_path = /obj/item/stock_parts/subspace/sub_filter -/datum/design/science/stock_part/subspace/subspace_amplifier +/datum/prototype/design/science/stock_part/subspace/subspace_amplifier id = "s-amplifier" req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) materials_base = list(MAT_STEEL = 10, MAT_GOLD = 30, MAT_URANIUM = 15) build_path = /obj/item/stock_parts/subspace/amplifier -/datum/design/science/stock_part/subspace/subspace_treatment +/datum/prototype/design/science/stock_part/subspace/subspace_treatment id = "s-treatment" req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) materials_base = list(MAT_STEEL = 10, MAT_SILVER = 20) build_path = /obj/item/stock_parts/subspace/treatment -/datum/design/science/stock_part/subspace/subspace_analyzer +/datum/prototype/design/science/stock_part/subspace/subspace_analyzer id = "s-analyzer" req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) materials_base = list(MAT_STEEL = 10, MAT_GOLD = 15) build_path = /obj/item/stock_parts/subspace/analyzer -/datum/design/science/stock_part/subspace/subspace_crystal +/datum/prototype/design/science/stock_part/subspace/subspace_crystal id = "s-crystal" req_tech = list(TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) materials_base = list(MAT_GLASS = 1000, MAT_SILVER = 20, MAT_GOLD = 20) build_path = /obj/item/stock_parts/subspace/crystal -/datum/design/science/stock_part/subspace/subspace_transmitter +/datum/prototype/design/science/stock_part/subspace/subspace_transmitter id = "s-transmitter" req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 5, TECH_BLUESPACE = 3) materials_base = list(MAT_GLASS = 100, MAT_SILVER = 10, MAT_URANIUM = 15) diff --git a/code/modules/research/designs/tech_disks.dm b/code/modules/research/designs/tech_disks.dm index 62512983b31..0906c20e06b 100644 --- a/code/modules/research/designs/tech_disks.dm +++ b/code/modules/research/designs/tech_disks.dm @@ -1,10 +1,10 @@ -/datum/design/science/disk - abstract_type = /datum/design/science/disk +/datum/prototype/design/science/disk + abstract_type = /datum/prototype/design/science/disk -/datum/design/science/disk/generate_name(template) +/datum/prototype/design/science/disk/generate_name(template) return "Data storage design ([..()])" -/datum/design/science/disk/design_disk +/datum/prototype/design/science/disk/design_disk design_name = "Design Storage Disk" desc = "Produce additional disks for storing device designs." id = "design_disk" @@ -12,7 +12,7 @@ materials_base = list(MAT_STEEL = 30, MAT_GLASS = 10) build_path = /obj/item/disk/design_disk -/datum/design/science/disk/tech_disk +/datum/prototype/design/science/disk/tech_disk design_name = "Technology Data Storage Disk" desc = "Produce additional disks for storing technology data." id = "tech_disk" diff --git a/code/modules/research/designs/teleport_vr.dm b/code/modules/research/designs/teleport_vr.dm index e6fc47a3027..764a9f8dc27 100644 --- a/code/modules/research/designs/teleport_vr.dm +++ b/code/modules/research/designs/teleport_vr.dm @@ -1,11 +1,11 @@ -/datum/design/science/teleport - abstract_type = /datum/design/science/teleport +/datum/prototype/design/science/teleport + abstract_type = /datum/prototype/design/science/teleport -/datum/design/science/teleport/generate_name(template) +/datum/prototype/design/science/teleport/generate_name(template) return "Teleportation device prototype ([..()])" -/datum/design/science/teleport/translocator +/datum/prototype/design/science/teleport/translocator design_name = "Personal translocator" id = "translocator" req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_ILLEGAL = 6) @@ -13,7 +13,7 @@ build_path = /obj/item/perfect_tele /* -/datum/design/science/teleport/bluespace_crystal +/datum/prototype/design/science/teleport/bluespace_crystal design_name = "Artificial Bluespace Crystal" id = "bluespace_crystal" req_tech = list(TECH_BLUESPACE = 3, TECH_PHORON = 4) diff --git a/code/modules/research/designs/weapons.dm b/code/modules/research/designs/weapons.dm index e966586ce3a..aa37178f054 100644 --- a/code/modules/research/designs/weapons.dm +++ b/code/modules/research/designs/weapons.dm @@ -1,92 +1,92 @@ -/datum/design/science/weapon - abstract_type = /datum/design/science/weapon +/datum/prototype/design/science/weapon + abstract_type = /datum/prototype/design/science/weapon -/datum/design/science/weapon/generate_name(template) +/datum/prototype/design/science/weapon/generate_name(template) return "Weapon prototype ([..()])" -/datum/design/science/weapon/ammo - abstract_type = /datum/design/science/weapon/ammo +/datum/prototype/design/science/weapon/ammo + abstract_type = /datum/prototype/design/science/weapon/ammo -/datum/design/science/weapon/ammo/generate_name(template) +/datum/prototype/design/science/weapon/ammo/generate_name(template) return "Weapon ammo ([..()])" -/datum/design/science/weapon/energy - abstract_type = /datum/design/science/weapon/energy +/datum/prototype/design/science/weapon/energy + abstract_type = /datum/prototype/design/science/weapon/energy -/datum/design/science/weapon/energy/generate_name(template) +/datum/prototype/design/science/weapon/energy/generate_name(template) return "Energy weapon prototype ([..()])" -/datum/design/science/weapon/energy/stunrevolver +/datum/prototype/design/science/weapon/energy/stunrevolver id = "stunrevolver" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2) materials_base = list(MAT_STEEL = 4000) build_path = /obj/item/gun/energy/stunrevolver -/datum/design/science/weapon/energy/nuclear_gun +/datum/prototype/design/science/weapon/energy/nuclear_gun id = "nuclear_gun" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_POWER = 3) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 1000, MAT_URANIUM = 500) build_path = /obj/item/gun/energy/gun/nuclear -/datum/design/science/weapon/energy/phoronpistol +/datum/prototype/design/science/weapon/energy/phoronpistol id = "ppistol" req_tech = list(TECH_COMBAT = 5, TECH_PHORON = 4) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 1000, MAT_PHORON = 3000) build_path = /obj/item/gun/energy/toxgun -/datum/design/science/weapon/energy/lasercannon +/datum/prototype/design/science/weapon/energy/lasercannon desc = "The lasing medium of this prototype is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core." id = "lasercannon" req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3) materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 1000, MAT_DIAMOND = 2000) build_path = /obj/item/gun/energy/lasercannon -/datum/design/science/weapon/energy/decloner +/datum/prototype/design/science/weapon/energy/decloner id = "decloner" req_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 7, TECH_BIO = 5, TECH_POWER = 6) materials_base = list(MAT_GOLD = 5000,MAT_URANIUM = 10000) build_path = /obj/item/gun/energy/decloner -/datum/design/science/weapon/energy/temp_gun +/datum/prototype/design/science/weapon/energy/temp_gun desc = "A gun that shoots high-powered glass-encased energy temperature bullets." id = "temp_gun" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_POWER = 3, TECH_MAGNET = 2) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 500, MAT_SILVER = 3000) build_path = /obj/item/gun/energy/temperature -/datum/design/science/weapon/energy/flora_gun +/datum/prototype/design/science/weapon/energy/flora_gun id = "flora_gun" req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3, TECH_POWER = 3) materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 500, MAT_URANIUM = 500) build_path = /obj/item/gun/energy/floragun -/datum/design/science/weapon/ballistic - abstract_type = /datum/design/science/weapon/ballistic +/datum/prototype/design/science/weapon/ballistic + abstract_type = /datum/prototype/design/science/weapon/ballistic -/datum/design/science/weapon/ballistic/generate_name(template) +/datum/prototype/design/science/weapon/ballistic/generate_name(template) return "Ballistic weapon prototype ([..()])" -/datum/design/science/weapon/ballistic/advanced_smg +/datum/prototype/design/science/weapon/ballistic/advanced_smg id = "smg" desc = "An advanced 9mm SMG with a reflective laser optic." req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) materials_base = list(MAT_STEEL = 8000, MAT_SILVER = 2000, MAT_DIAMOND = 1000) build_path = /obj/item/gun/ballistic/automatic/advanced_smg -/datum/design/science/weapon/ballistic/p90 +/datum/prototype/design/science/weapon/ballistic/p90 id = "p90" desc = "The H90K is a compact, large capacity submachine gun produced by Hephaestus Industries. Despite its fierce reputation, it still manages to feel like a toy. Uses 9mm rounds." req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4) materials_base = list(MAT_STEEL = 5000, MAT_PLASTIC = 5000, MAT_URANIUM = 1000) build_path = /obj/item/gun/ballistic/automatic/p90 -/datum/design/science/weapon/ballistic/ammo - abstract_type = /datum/design/science/weapon/ballistic/ammo +/datum/prototype/design/science/weapon/ballistic/ammo + abstract_type = /datum/prototype/design/science/weapon/ballistic/ammo -/datum/design/science/weapon/ballistic/ammo/generate_name(template) +/datum/prototype/design/science/weapon/ballistic/ammo/generate_name(template) return "Ballistic weapon ammo ([..()])" -/datum/design/science/weapon/ballistic/ammo/ammo_9mmAdvanced +/datum/prototype/design/science/weapon/ballistic/ammo/ammo_9mmAdvanced design_name = "9mm magazine" id = "ammo_9mm" desc = "A 21 round magazine for an advanced 9mm SMG." @@ -94,7 +94,7 @@ materials_base = list(MAT_STEEL = 3750, MAT_SILVER = 100) // Requires silver for proprietary magazines! Or something. build_path = /obj/item/ammo_magazine/a9mm/advanced_smg -/datum/design/science/weapon/ballistic/ammo/techshell +/datum/prototype/design/science/weapon/ballistic/ammo/techshell design_name = "unloaded tech shell" desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects." id = "techshell" @@ -102,7 +102,7 @@ materials_base = list(MAT_STEEL = 500, MAT_PHORON = 200) build_path = /obj/item/ammo_casing/a12g/techshell -/datum/design/science/weapon/ballistic/ammo/stunshell +/datum/prototype/design/science/weapon/ballistic/ammo/stunshell design_name = "stun shell" desc = "A stunning shell for a shotgun." id = "stunshell" @@ -110,7 +110,7 @@ materials_base = list(MAT_STEEL = 360, MAT_GLASS = 720) build_path = /obj/item/ammo_casing/a12g/stunshell -/datum/design/science/weapon/ballistic/ammo/m57x28mmp90 +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mmp90 design_name = "H90K magazine" desc = "A large capacity top mounted magazine (5.7x28mm armor-piercing)." id = "m57x28mmp90" @@ -118,10 +118,10 @@ materials_base = list(MAT_STEEL = 2250, MAT_PLASTIC = 1500, MAT_COPPER = 1000) build_path = /obj/item/ammo_magazine/a5_7mm/p90 -/datum/design/science/weapon/ballistic/ammo/m57x28mm - abstract_type = /datum/design/science/weapon/ballistic/ammo/m57x28mm +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm + abstract_type = /datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm -/datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/ntles design_name = "5.7 top-mounted magazine" desc = "A standard capacity sidearm magazine (5.7x28mm)." id = "ntles" @@ -129,28 +129,28 @@ materials_base = list(MAT_STEEL = 1500, MAT_COPPER = 750) build_path = /obj/item/ammo_magazine/a5_7mm/nt_les -/datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/ap +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/ntles/ap design_name = "5.7 top-mounted magazine (AP)" desc = "A standard capacity sidearm magazine (5.7x28mm armor-piercing)." id = "ntlesap" materials_base = list(MAT_STEEL = 1500, MAT_COPPER = 1000) build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/ap -/datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/hp +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/ntles/hp design_name = "5.7 top-mounted magazine (HP)" desc = "A standard capacity sidearm magazine (5.7x28mm hollow point)." id = "ntleshp" materials_base = list(MAT_STEEL = 1500, MAT_COPPER = 750) build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/hp -/datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/hunter +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/ntles/hunter design_name = "5.7 top-mounted magazine (Hunter)" desc = "A standard capacity sidearm magazine (5.7x28mm hunter)." id = "ntleshunter" materials_base = list(MAT_STEEL = 1500, MAT_COPPER = 500) build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/hunter -/datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/highcap +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/ntles/highcap design_name = "5.7 highcap top-mounted magazine" desc = "A high capacity sidearm magazine (5.7x28mm)." id = "ntleshc" @@ -158,28 +158,28 @@ materials_base = list(MAT_STEEL = 2500, MAT_COPPER = 2000) build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/highcap -/datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/highcap/ap +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/ntles/highcap/ap design_name = "5.7 highcap top-mounted magazine (AP)" desc = "A high capacity sidearm magazine (5.7x28mm armor-piercing)." id = "ntleshcap" materials_base = list(MAT_STEEL = 2500, MAT_COPPER = 2500) build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/highcap/ap -/datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/highcap/hp +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/ntles/highcap/hp design_name = "5.7 highcap top-mounted magazine (HP)" desc = "A high capacity sidearm magazine (5.7x28mm hollow point)." id = "ntleshchp" materials_base = list(MAT_STEEL = 2500, MAT_COPPER = 2000) build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/highcap/hp -/datum/design/science/weapon/ballistic/ammo/m57x28mm/ntles/highcap/hunter +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/ntles/highcap/hunter design_name = "5.7 highcap top-mounted magazine (Hunter)" desc = "A high capacity sidearm magazine (5.7x28mm hunter)." id = "ntleshchunter" materials_base = list(MAT_STEEL = 2500, MAT_COPPER = 1750) build_path = /obj/item/ammo_magazine/a5_7mm/nt_les/highcap/hunter -/datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven design_name = "5.7 sidearm magazine" desc = "A standard capacity sidearm magazine (5.7x28mm)." id = "fiveseven" @@ -187,28 +187,28 @@ materials_base = list(MAT_STEEL = 1250, MAT_COPPER = 750) build_path = /obj/item/ammo_magazine/a5_7mm/five_seven -/datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/ap +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/ap design_name = "5.7 sidearm magazine (AP)" desc = "A standard capacity sidearm magazine (5.7x28mm armor-piercing)." id = "fivesevenap" materials_base = list(MAT_STEEL = 1250, MAT_COPPER = 1000) build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/ap -/datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/hp +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/hp design_name = "5.7 sidearm magazine (HP)" desc = "A standard capacity sidearm magazine (5.7x28mm hollow point)." id = "fivesevenhp" materials_base = list(MAT_STEEL = 1250, MAT_COPPER = 750) build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/hp -/datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/hunter +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/hunter design_name = "5.7 sidearm magazine (Hunter)" desc = "A standard capacity sidearm magazine (5.7x28mm hunter)." id = "fivesevenhunter" materials_base = list(MAT_STEEL = 1250, MAT_COPPER = 250) build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/hunter -/datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/highcap +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/highcap design_name = "5.7 sidearm high-cap magazine" desc = "A high capacity sidearm magazine (5.7x28mm)." id = "fivesevenhc" @@ -216,52 +216,52 @@ materials_base = list(MAT_STEEL = 2000, MAT_COPPER = 750) build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/highcap -/datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/highcap/ap +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/highcap/ap design_name = "5.7 sidearm high-cap magazine (AP)" desc = "A high capacity sidearm magazine (5.7x28mm armor-piercing)." id = "fivesevenhcap" materials_base = list(MAT_STEEL = 2500, MAT_COPPER = 1000) build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/highcap/ap -/datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/highcap/hp +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/highcap/hp design_name = "5.7 sidearm high-cap magazine (HP)" desc = "A high capacity sidearm magazine (5.7x28mm hollow point)." id = "fivesevenhchp" materials_base = list(MAT_STEEL = 2000, MAT_COPPER = 750) build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/highcap/hp -/datum/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/highcap/hunter +/datum/prototype/design/science/weapon/ballistic/ammo/m57x28mm/fiveseven/highcap/hunter design_name = "5.7 sidearm high-cap magazine (Hunter)" desc = "A high capacity sidearm magazine (5.7x28mm hunter)." id = "fivesevenhchunter" materials_base = list(MAT_STEEL = 2000, MAT_COPPER = 500) build_path = /obj/item/ammo_magazine/a5_7mm/five_seven/highcap/hunter -/datum/design/science/weapon/phase - abstract_type = /datum/design/science/weapon/phase +/datum/prototype/design/science/weapon/phase + abstract_type = /datum/prototype/design/science/weapon/phase -/datum/design/science/weapon/phase/generate_name(template) +/datum/prototype/design/science/weapon/phase/generate_name(template) return "Phase weapon prototype ([..()])" -/datum/design/science/weapon/phase/phase_pistol +/datum/prototype/design/science/weapon/phase/phase_pistol id = "phasepistol" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2, TECH_POWER = 2) materials_base = list(MAT_STEEL = 4000) build_path = /obj/item/gun/energy/phasegun/pistol -/datum/design/science/weapon/phase/phase_carbine +/datum/prototype/design/science/weapon/phase/phase_carbine id = "phasecarbine" req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_POWER = 2) materials_base = list(MAT_STEEL = 6000, MAT_GLASS = 1500) build_path = /obj/item/gun/energy/phasegun -/datum/design/science/weapon/phase/phase_rifle +/datum/prototype/design/science/weapon/phase/phase_rifle id = "phaserifle" req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3) materials_base = list(MAT_STEEL = 7000, MAT_GLASS = 2000, MAT_SILVER = 500) build_path = /obj/item/gun/energy/phasegun/rifle -/datum/design/science/weapon/phase/phase_cannon +/datum/prototype/design/science/weapon/phase/phase_cannon id = "phasecannon" req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4, TECH_POWER = 4) materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 2000, MAT_SILVER = 1000, MAT_DIAMOND = 750) @@ -269,26 +269,26 @@ // Other weapons -/datum/design/science/weapon/rapidsyringe +/datum/prototype/design/science/weapon/rapidsyringe id = "rapidsyringe" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 1000) build_path = /obj/item/gun/launcher/syringe/rapid -/datum/design/science/weapon/dartgun +/datum/prototype/design/science/weapon/dartgun desc = "A gun that fires small hollow chemical-payload darts." id = "dartgun_r" req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_BIO = 4, TECH_MAGNET = 3, TECH_ILLEGAL = 1) materials_base = list(MAT_STEEL = 5000, MAT_GOLD = 5000, MAT_SILVER = 2500, MAT_GLASS = 750) build_path = /obj/item/gun/ballistic/dartgun/research -/datum/design/science/weapon/chemsprayer +/datum/prototype/design/science/weapon/chemsprayer desc = "An advanced chem spraying device." id = "chemsprayer" req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2) build_path = /obj/item/reagent_containers/spray/chemsprayer -/datum/design/science/weapon/fuelrod +/datum/prototype/design/science/weapon/fuelrod id = "fuelrod_gun" req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_PHORON = 4, TECH_ILLEGAL = 5, TECH_MAGNET = 5) materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 2000, MAT_GOLD = 500, MAT_SILVER = 500, MAT_URANIUM = 1000, MAT_PHORON = 3000, MAT_DIAMOND = 1000) @@ -296,192 +296,192 @@ // Ammo for those -/datum/design/science/weapon/ammo/dartgunmag_small +/datum/prototype/design/science/weapon/ammo/dartgunmag_small id = "dartgun_mag_s" req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) materials_base = list(MAT_STEEL = 300, MAT_GOLD = 100, MAT_SILVER = 100, MAT_GLASS = 300) build_path = /obj/item/ammo_magazine/chemdart/small -/datum/design/science/weapon/ammo/dartgun_ammo_small +/datum/prototype/design/science/weapon/ammo/dartgun_ammo_small id = "dartgun_ammo_s" req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) materials_base = list(MAT_STEEL = 50, MAT_GOLD = 30, MAT_SILVER = 30, MAT_GLASS = 50) build_path = /obj/item/ammo_casing/dart/chemdart/small -/datum/design/science/weapon/ammo/dartgunmag_med +/datum/prototype/design/science/weapon/ammo/dartgunmag_med id = "dartgun_mag_m" req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) materials_base = list(MAT_STEEL = 500, MAT_GOLD = 150, MAT_SILVER = 150, MAT_DIAMOND = 200, MAT_GLASS = 400) build_path = /obj/item/ammo_magazine/chemdart -/datum/design/science/weapon/ammo/dartgun_ammo_med +/datum/prototype/design/science/weapon/ammo/dartgun_ammo_med id = "dartgun_ammo_m" req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) materials_base = list(MAT_STEEL = 80, MAT_GOLD = 40, MAT_SILVER = 40, MAT_GLASS = 60) build_path = /obj/item/ammo_casing/dart/chemdart -/datum/design/science/weapon/melee - abstract_type = /datum/design/science/weapon/melee +/datum/prototype/design/science/weapon/melee + abstract_type = /datum/prototype/design/science/weapon/melee -/datum/design/science/weapon/melee/generate_name(template) +/datum/prototype/design/science/weapon/melee/generate_name(template) return "Melee weapon prototype ([..()])" -/datum/design/science/weapon/melee/esword +/datum/prototype/design/science/weapon/melee/esword design_name = "Portable Energy Blade" id = "chargesword" req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 4, TECH_ENGINEERING = 5, TECH_ILLEGAL = 4, TECH_ARCANE = 1) materials_base = list(MAT_PLASTEEL = 3500, MAT_GLASS = 1000, MAT_LEAD = 2250, MAT_METALHYDROGEN = 500) build_path = /obj/item/melee/transforming/energy/sword/charge -/datum/design/science/weapon/melee/eaxe +/datum/prototype/design/science/weapon/melee/eaxe design_name = "Energy Axe" id = "chargeaxe" req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 5, TECH_ENGINEERING = 4, TECH_ILLEGAL = 4) materials_base = list(MAT_PLASTEEL = 3500, MAT_OSMIUM = 2000, MAT_LEAD = 2000, MAT_METALHYDROGEN = 500) build_path = /obj/item/melee/transforming/energy/axe/charge -/datum/design/science/weapon/grenade - abstract_type = /datum/design/science/weapon/grenade +/datum/prototype/design/science/weapon/grenade + abstract_type = /datum/prototype/design/science/weapon/grenade -/datum/design/science/weapon/grenade/generate_name(template) +/datum/prototype/design/science/weapon/grenade/generate_name(template) return "Grenade casing prototype ([..()])" -/datum/design/science/weapon/grenade/large_grenade +/datum/prototype/design/science/weapon/grenade/large_grenade id = "large_Grenade" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) materials_base = list(MAT_STEEL = 3000) build_path = /obj/item/grenade/chem_grenade/large -/datum/design/science/weapon/energy/netgun +/datum/prototype/design/science/weapon/energy/netgun design_name = "\'Retiarius\' capture gun" id = "netgun" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_MAGNET = 3) materials_base = list(MAT_STEEL = 6000, MAT_GLASS = 3000) build_path = /obj/item/gun/energy/netgun -/datum/design/science/weapon/energy/sickshot +/datum/prototype/design/science/weapon/energy/sickshot desc = "The 'Discombobulator' is a 4-shot energy revolver that causes nausea and confusion." id = "sickshot" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_MAGNET = 2) materials_base = list(MAT_STEEL = 3000, MAT_GLASS = 2000) build_path = /obj/item/gun/energy/sickshot -/datum/design/science/weapon/pummeler +/datum/prototype/design/science/weapon/pummeler desc = "With the 'Pummeler', punt anyone you don't like out of the room!" id = "pummeler" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_MAGNET = 5) materials_base = list(MAT_STEEL = 3000, MAT_GLASS = 3000, MAT_URANIUM = 1000) build_path = /obj/item/gun/energy/pummeler -/datum/design/science/weapon/particle - abstract_type = /datum/design/science/weapon/particle +/datum/prototype/design/science/weapon/particle + abstract_type = /datum/prototype/design/science/weapon/particle -/datum/design/science/weapon/particle/generate_name(template) +/datum/prototype/design/science/weapon/particle/generate_name(template) return "Anti-particle weapon prototype ([..()])" -/datum/design/science/weapon/particle/advparticle +/datum/prototype/design/science/weapon/particle/advparticle design_name = "Advanced anti-particle rifle" id = "advparticle" req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 5, TECH_POWER = 3, TECH_MAGNET = 3) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_URANIUM = 750) build_path = /obj/item/gun/energy/particle/advanced -/datum/design/science/weapon/particle/particlecannon +/datum/prototype/design/science/weapon/particle/particlecannon design_name = "Anti-particle cannon" id = "particlecannon" req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5, TECH_POWER = 4, TECH_MAGNET = 4) materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 1500, MAT_GOLD = 2000, MAT_URANIUM = 1000, MAT_DIAMOND = 2000) build_path = /obj/item/gun/energy/particle/cannon -/datum/design/science/weapon/particle/pressureinterlock +/datum/prototype/design/science/weapon/particle/pressureinterlock design_name = "APP pressure interlock" id = "pressureinterlock" req_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 250) build_path = /obj/item/pressurelock -/datum/design/science/weapon/cell_based - abstract_type = /datum/design/science/weapon/cell_based +/datum/prototype/design/science/weapon/cell_based + abstract_type = /datum/prototype/design/science/weapon/cell_based -/datum/design/science/weapon/cell_based/generate_name(template) +/datum/prototype/design/science/weapon/cell_based/generate_name(template) return "Cell-based weapon prototype ([..()])" -/datum/design/science/weapon/cell_based/prototype_nsfw +/datum/prototype/design/science/weapon/cell_based/prototype_nsfw design_name = "cell-loaded revolver" id = "nsfw_prototype" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 4, TECH_COMBAT = 7) materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 6000, MAT_PHORON = 8000, MAT_URANIUM = 4000) build_path = /obj/item/gun/ballistic/microbattery/combat/prototype -/datum/design/science/weapon/cell_based/prototype_nsfw_mag +/datum/prototype/design/science/weapon/cell_based/prototype_nsfw_mag design_name = "combat cell magazine" id = "nsfw_mag_prototype" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 4, TECH_COMBAT = 7) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 4000, MAT_PHORON = 4000) build_path = /obj/item/ammo_magazine/microbattery/combat/prototype -/datum/design/science/nsfw_cell - abstract_type = /datum/design/science/nsfw_cell +/datum/prototype/design/science/nsfw_cell + abstract_type = /datum/prototype/design/science/nsfw_cell -/datum/design/science/nsfw_cell/generate_name(template) +/datum/prototype/design/science/nsfw_cell/generate_name(template) return "Microbattery prototype ([..()])" -/datum/design/science/nsfw_cell/stun +/datum/prototype/design/science/nsfw_cell/stun design_name = "STUN" id = "nsfw_cell_stun" req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 2, TECH_POWER = 3, TECH_COMBAT = 3) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 5000) build_path = /obj/item/ammo_casing/microbattery/combat/stun -/datum/design/science/nsfw_cell/lethal +/datum/prototype/design/science/nsfw_cell/lethal design_name = "LETHAL" id = "nsfw_cell_lethal" req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 5) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PHORON = 3000) build_path = /obj/item/ammo_casing/microbattery/combat/lethal -/datum/design/science/nsfw_cell/net +/datum/prototype/design/science/nsfw_cell/net design_name = "NET" id = "nsfw_cell_net" req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 4) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_URANIUM = 3000) build_path = /obj/item/ammo_casing/microbattery/combat/net -/datum/design/science/nsfw_cell/ion +/datum/prototype/design/science/nsfw_cell/ion design_name = "ION" id = "nsfw_cell_ion" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 5, TECH_COMBAT = 5) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 3000) build_path = /obj/item/ammo_casing/microbattery/combat/ion -/datum/design/science/nsfw_cell/shotstun +/datum/prototype/design/science/nsfw_cell/shotstun design_name = "SCATTERSTUN" id = "nsfw_cell_shotstun" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 6, TECH_COMBAT = 6) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 2000, MAT_GOLD = 2000) build_path = /obj/item/ammo_casing/microbattery/combat/shotstun -/datum/design/science/nsfw_cell/xray +/datum/prototype/design/science/nsfw_cell/xray design_name = "XRAY" id = "nsfw_cell_xray" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 5, TECH_COMBAT = 7) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 1000, MAT_GOLD = 1000, MAT_URANIUM = 1000, MAT_PHORON = 1000) build_path = /obj/item/ammo_casing/microbattery/combat/xray -/datum/design/science/nsfw_cell/stripper +/datum/prototype/design/science/nsfw_cell/stripper design_name = "STRIPPER" id = "nsfw_cell_stripper" req_tech = list(TECH_MATERIAL = 7, TECH_BIO = 4, TECH_POWER = 4, TECH_COMBAT = 4, TECH_ILLEGAL = 5) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_URANIUM = 2000, MAT_PHORON = 2000, MAT_DIAMOND = 500) build_path = /obj/item/ammo_casing/microbattery/combat/stripper -/datum/design/science/modweapon - abstract_type = /datum/design/science/modweapon +/datum/prototype/design/science/modweapon + abstract_type = /datum/prototype/design/science/modweapon -/datum/design/science/modweapon/generate_name(template) +/datum/prototype/design/science/modweapon/generate_name(template) return "Modular weapon prototype ([..()])" -/datum/design/science/modweapon/basic +/datum/prototype/design/science/modweapon/basic design_name = "modular energy pistol" id = "modpistol" req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 3) @@ -490,7 +490,7 @@ /* -/datum/design/science/modweapon/adv +/datum/prototype/design/science/modweapon/adv design_name = "advanced modular energy pistol" id = "advmodpistol" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 5, TECH_POWER = 5, TECH_COMBAT = 5) @@ -499,21 +499,21 @@ */ -/datum/design/science/modweapon/carbine +/datum/prototype/design/science/modweapon/carbine design_name = "modular energy carbine" id = "modcarbine" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 5, TECH_POWER = 5, TECH_COMBAT = 5) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 8000, MAT_URANIUM = 2000, MAT_GOLD = 4000, MAT_DIAMOND = 500) build_path = /obj/item/gun/energy/modular/carbine -/datum/design/science/modweapon/rifle +/datum/prototype/design/science/modweapon/rifle design_name = "modular energy rifle" id = "modrifle" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 5, TECH_POWER = 5, TECH_COMBAT = 5) materials_base = list(MAT_STEEL = 12000, MAT_GLASS = 12000, MAT_SILVER = 6000, MAT_GOLD = 6000, MAT_URANIUM = 4000, MAT_DIAMOND = 500) build_path = /obj/item/gun/energy/modular/rifle -/datum/design/science/modweapon/tririfle +/datum/prototype/design/science/modweapon/tririfle design_name = "tri-core modular energy rifle" id = "threemodrifle" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 5, TECH_POWER = 5, TECH_COMBAT = 5) @@ -522,21 +522,21 @@ /* -/datum/design/science/modweapon/compact +/datum/prototype/design/science/modweapon/compact design_name = "compact modular energy pistol" id = "modcompact" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 6, TECH_COMBAT = 5) materials_base = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_DIAMOND = 3000) build_path = /obj/item/gun/energy/modular/compact -/datum/design/science/modweapon/scatter +/datum/prototype/design/science/modweapon/scatter design_name = "modular energy scattergun" id = "modscatter" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 6, TECH_COMBAT = 5, TECH_ILLEGAL = 4) materials_base = list(MAT_STEEL = 12000, MAT_GLASS = 12000, MAT_SILVER = 6000, MAT_GOLD = 6000, MAT_URANIUM = 4000, MAT_DIAMOND = 2000) build_path = /obj/item/gun/energy/modular/rifle/scatter -/datum/design/science/modweapon/cannon +/datum/prototype/design/science/modweapon/cannon design_name = "modular energy cannon" id = "modcannon" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 6, TECH_POWER = 6, TECH_COMBAT = 6, TECH_ENGINEERING = 6) @@ -545,27 +545,27 @@ */ -/datum/design/science/modweapon/nuclear +/datum/prototype/design/science/modweapon/nuclear design_name = "modular AEG" id = "modAEG" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 6, TECH_POWER = 6, TECH_COMBAT = 6, TECH_ENGINEERING = 6, TECH_BLUESPACE = 4) materials_base = list(MAT_STEEL = 12000, MAT_GLASS = 12000, MAT_SILVER = 6000, MAT_LEAD = 20000, MAT_URANIUM = 20000, MAT_DIAMOND = 4000) build_path = /obj/item/gun/energy/modular/nuke -/datum/design/science/modweaponnodule - abstract_type = /datum/design/science/modweaponnodule +/datum/prototype/design/science/modweaponnodule + abstract_type = /datum/prototype/design/science/modweaponnodule -/datum/design/science/modweaponnodule/generate_name(template) +/datum/prototype/design/science/modweaponnodule/generate_name(template) return "Modular weapon module design ([..()])" -/datum/design/science/modweaponnodule/stunmedium +/datum/prototype/design/science/modweaponnodule/stunmedium design_name = "stun medium" id = "stunmedium" req_tech = list(TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 2) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 8000, MAT_GOLD = 4000) build_path = /obj/item/modularlaser/lasermedium/stun -/datum/design/science/modweaponnodule/stunweak +/datum/prototype/design/science/modweaponnodule/stunweak design_name = "weak stun medium" id = "stunweak" req_tech = list(TECH_MAGNET = 1, TECH_POWER = 2, TECH_COMBAT = 1) @@ -574,7 +574,7 @@ /* -/datum/design/science/modweaponnodule/netmedium +/datum/prototype/design/science/modweaponnodule/netmedium design_name = "net projector medium" id = "netmedium" req_tech = list(TECH_MAGNET = 5, TECH_POWER = 5, TECH_COMBAT = 5) @@ -583,21 +583,21 @@ */ -/datum/design/science/modweaponnodule/electrode +/datum/prototype/design/science/modweaponnodule/electrode design_name = "electrode projector tube" id = "electrodetube" req_tech = list(TECH_MAGNET = 2, TECH_POWER = 3, TECH_COMBAT = 2) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 8000) build_path = /obj/item/modularlaser/lasermedium/electrode -/datum/design/science/modweaponnodule/laser +/datum/prototype/design/science/modweaponnodule/laser design_name = "laser medium" id = "lasermedium" req_tech = list(TECH_MAGNET = 5, TECH_POWER = 5, TECH_COMBAT = 2) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 8000, MAT_URANIUM = 2000, MAT_SILVER = 4000) build_path = /obj/item/modularlaser/lasermedium/laser -/datum/design/science/modweaponnodule/weaklaser +/datum/prototype/design/science/modweaponnodule/weaklaser design_name = "low-power laser medium" id = "weaklaser" req_tech = list(TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 2) @@ -606,21 +606,21 @@ /* -/datum/design/science/modweaponnodule/sniper +/datum/prototype/design/science/modweaponnodule/sniper design_name = "laser sniper medium" id = "sniperlaser" req_tech = list(TECH_MAGNET = 5, TECH_POWER = 6, TECH_COMBAT = 4) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 8000, MAT_URANIUM = 2000, MAT_DIAMOND = 10) build_path = /obj/item/modularlaser/lasermedium/laser/sniper -/datum/design/science/modweaponnodule/heavylaser +/datum/prototype/design/science/modweaponnodule/heavylaser design_name = "heavy laser medium" id = "heavylasermedium" req_tech = list(TECH_MAGNET = 6, TECH_POWER = 6, TECH_COMBAT = 5, TECH_ILLEGAL = 2) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 8000, MAT_URANIUM = 2000, MAT_GOLD = 4000, MAT_DIAMOND = 500) build_path = /obj/item/modularlaser/lasermedium/laser/heavy -/datum/design/science/modweaponnodule/cannonmedium +/datum/prototype/design/science/modweaponnodule/cannonmedium design_name = "cannon beam medium" id = "cannonmedium" req_tech = list(TECH_MAGNET = 5, TECH_POWER = 5, TECH_COMBAT = 5, TECH_ILLEGAL = 5) @@ -629,56 +629,56 @@ */ -/datum/design/science/modweaponnodule/xraser +/datum/prototype/design/science/modweaponnodule/xraser design_name = "xraser medium" id = "xraser" req_tech = list(TECH_MAGNET = 5, TECH_POWER = 5, TECH_COMBAT = 5, TECH_ILLEGAL = 5) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 8000, MAT_URANIUM = 4000, MAT_GOLD = 4000, MAT_DIAMOND = 500) build_path = /obj/item/modularlaser/lasermedium/laser/xray -/datum/design/science/modweaponnodule/dig +/datum/prototype/design/science/modweaponnodule/dig design_name = "excavation beam medium" id = "digbeam" req_tech = list(TECH_MAGNET = 3, TECH_POWER = 2) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 8000, MAT_PLASTEEL = 500) build_path = /obj/item/modularlaser/lasermedium/dig -/datum/design/science/modweaponnodule/lightning +/datum/prototype/design/science/modweaponnodule/lightning design_name = "lightning arc tube" id = "lightning" req_tech = list(TECH_MAGNET = 6, TECH_POWER = 7) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 8000, MAT_SILVER = 4000, MAT_GOLD = 4000) build_path = /obj/item/modularlaser/lasermedium/lightning -/datum/design/science/modweaponnodule/hook +/datum/prototype/design/science/modweaponnodule/hook design_name = "graviton grapple tube" id = "hook" req_tech = list(TECH_ARCANE = 4, TECH_POWER = 2) materials_base =list(MAT_STEEL = 8000, MAT_GLASS = 8000, MAT_MORPHIUM = 4000, MAT_VERDANTIUM = 4000) build_path = /obj/item/modularlaser/lasermedium/hook -/datum/design/science/modweaponnodule/phasemedium +/datum/prototype/design/science/modweaponnodule/phasemedium design_name = "phase projector tube" id = "phasemedium" req_tech = list(TECH_MAGNET = 3, TECH_POWER = 2) materials_base = list(MAT_STEEL = 8000, MAT_GLASS = 8000) build_path = /obj/item/modularlaser/lasermedium/phase -/datum/design/science/modweaponnodule/basiclens +/datum/prototype/design/science/modweaponnodule/basiclens design_name = "basic lens" id = "basiclens" req_tech = list(TECH_MATERIAL = 3) materials_base = list(MAT_GLASS = 8000) build_path = /obj/item/modularlaser/lens/basic -/datum/design/science/modweaponnodule/advlens +/datum/prototype/design/science/modweaponnodule/advlens design_name = "advanced lens" id = "advlens" req_tech = list(TECH_MATERIAL = 6) materials_base = list(MAT_GLASS = 8000, MAT_SILVER = 3000) build_path = /obj/item/modularlaser/lens/advanced -/datum/design/science/modweaponnodule/superlens +/datum/prototype/design/science/modweaponnodule/superlens design_name = "superior lens" id = "superlens" req_tech = list(TECH_MATERIAL = 9) @@ -687,14 +687,14 @@ /* -/datum/design/science/modweaponnodule/scatterlens +/datum/prototype/design/science/modweaponnodule/scatterlens design_name = "scatter lens" id = "scatterlens" req_tech = list(TECH_MATERIAL = 6) materials_base = list(MAT_GLASS = 8000, MAT_SILVER = 3000) build_path = /obj/item/modularlaser/lens/scatter -/datum/design/science/modweaponnodule/advscatterlens +/datum/prototype/design/science/modweaponnodule/advscatterlens design_name = "advanced scatter lens" id = "advscatterlens" req_tech = list(TECH_MATERIAL = 9) @@ -703,21 +703,21 @@ */ -/datum/design/science/modweaponnodule/basiccap +/datum/prototype/design/science/modweaponnodule/basiccap design_name = "basic capacitor" id = "basiccap" req_tech = list(TECH_POWER = 2) materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 1000) build_path = /obj/item/modularlaser/capacitor/basic -/datum/design/science/modweaponnodule/ecocap +/datum/prototype/design/science/modweaponnodule/ecocap design_name = "efficient capacitor" id = "ecocap" req_tech = list(TECH_POWER = 4) materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 1000, MAT_SILVER = 500) build_path = /obj/item/modularlaser/capacitor/eco -/datum/design/science/modweaponnodule/supereco +/datum/prototype/design/science/modweaponnodule/supereco design_name = "economical capacitor" id = "superecocap" req_tech = list(TECH_POWER = 6) @@ -726,14 +726,14 @@ /* -/datum/design/science/modweaponnodule/quickcap +/datum/prototype/design/science/modweaponnodule/quickcap design_name = "high throughput capactior" id = "quickcap" req_tech = list(TECH_POWER = 8) materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 1000, MAT_SILVER = 500, MAT_GOLD = 500) build_path = /obj/item/modularlaser/capacitor/speed -/datum/design/science/modweaponnodule/advqcap +/datum/prototype/design/science/modweaponnodule/advqcap design_name = "very high throughput capactior" id = "advqcap" req_tech = list(TECH_POWER = 8) @@ -742,21 +742,21 @@ */ -/datum/design/science/modweaponnodule/basicac +/datum/prototype/design/science/modweaponnodule/basicac design_name = "cooling system" id = "basicac" req_tech = list(TECH_ENGINEERING = 2) materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 1000) build_path = /obj/item/modularlaser/cooling/basic -/datum/design/science/modweaponnodule/recoverac +/datum/prototype/design/science/modweaponnodule/recoverac design_name = "regenerative cooling system" id = "recoverac" req_tech = list(TECH_ENGINEERING = 4) materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 1000, MAT_SILVER = 500, MAT_GOLD = 500) build_path = /obj/item/modularlaser/cooling/efficient -/datum/design/science/modweaponnodule/fastac +/datum/prototype/design/science/modweaponnodule/fastac design_name = "high-power regenerative cooling system" id = "fastac" req_tech = list(TECH_ENGINEERING = 7) @@ -765,14 +765,14 @@ /* -/datum/design/science/modweaponnodule/superac +/datum/prototype/design/science/modweaponnodule/superac design_name = "supercharged cooling system" id = "superac" req_tech = list(TECH_ENGINEERING = 4) materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 1000, MAT_SILVER = 500, MAT_GOLD = 500) build_path = /obj/item/modularlaser/cooling/speed -/datum/design/science/modweaponnodule/bestac +/datum/prototype/design/science/modweaponnodule/bestac design_name = "hypercharged cooling system" id = "hyperac" req_tech = list(TECH_ENGINEERING = 7) @@ -781,7 +781,7 @@ */ -/datum/design/science/modweaponnodule/modcontrol +/datum/prototype/design/science/modweaponnodule/modcontrol design_name = "controller" id = "modcontrol" req_tech = list(TECH_DATA = 2) @@ -790,7 +790,7 @@ /* -/datum/design/science/modweaponnodule/an94 +/datum/prototype/design/science/modweaponnodule/an94 design_name = "AN-94 patterned fire controller" id = "an94" req_tech = list(TECH_DATA = 5, TECH_COMBAT = 3) @@ -799,7 +799,7 @@ */ -/datum/design/science/modweaponnodule/threecontrol +/datum/prototype/design/science/modweaponnodule/threecontrol design_name = "burst FCU" id = "threecontrol" req_tech = list(TECH_DATA = 5, TECH_COMBAT = 3) @@ -808,7 +808,7 @@ /* -/datum/design/science/modweaponnodule/fivecontrol +/datum/prototype/design/science/modweaponnodule/fivecontrol design_name = "quintburst FCU" id = "fivecontrol" req_tech = list(TECH_DATA = 5, TECH_COMBAT = 4) @@ -817,20 +817,20 @@ */ -/datum/design/science/pin - abstract_type = /datum/design/science/pin +/datum/prototype/design/science/pin + abstract_type = /datum/prototype/design/science/pin -/datum/design/science/pin/generate_name(template) +/datum/prototype/design/science/pin/generate_name(template) return "Weapon firing pin ([..()])" -/datum/design/science/pin/test +/datum/prototype/design/science/pin/test design_name = "Testing range" id = "test_range_pin" req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_COMBAT = 2) materials_base = list(MAT_STEEL = 1000) build_path = /obj/item/firing_pin/test_range -/datum/design/science/pin/explorer +/datum/prototype/design/science/pin/explorer design_name = "Exploration" id = "explorer_pin" req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_COMBAT = 2) diff --git a/code/modules/research/designs/xenoarch_toys.dm b/code/modules/research/designs/xenoarch_toys.dm index b378afa3c5a..153c955d284 100644 --- a/code/modules/research/designs/xenoarch_toys.dm +++ b/code/modules/research/designs/xenoarch_toys.dm @@ -1,10 +1,10 @@ -/datum/design/science/xenoarch - abstract_type = /datum/design/science/xenoarch +/datum/prototype/design/science/xenoarch + abstract_type = /datum/prototype/design/science/xenoarch -/datum/design/science/xenoarch/generate_name(template) +/datum/prototype/design/science/xenoarch/generate_name(template) return "Xenoarcheology equipment design ([..()])" -/datum/design/science/xenoarch/ano_scanner +/datum/prototype/design/science/xenoarch/ano_scanner design_name = "Alden-Saraspova counter" id = "ano_scanner" desc = "Aids in triangulation of exotic particles." @@ -12,21 +12,21 @@ materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 5000) build_path = /obj/item/ano_scanner -/datum/design/science/xenoarch/depth_scanner +/datum/prototype/design/science/xenoarch/depth_scanner desc = "Used to check spatial depth and density of rock outcroppings." id = "depth_scanner" req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_BLUESPACE = 2) materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 1000) build_path = /obj/item/depth_scanner -/datum/design/science/xenoarch/xenoarch_multi_tool +/datum/prototype/design/science/xenoarch/xenoarch_multi_tool design_name = "xenoarcheology multitool" id = "xenoarch_multitool" req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3, TECH_BLUESPACE = 3) build_path = /obj/item/xenoarch_multi_tool materials_base = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_URANIUM = 500, MAT_PHORON = 500) -/datum/design/science/xenoarch/excavationdrill +/datum/prototype/design/science/xenoarch/excavationdrill design_name = "Excavation Drill" id = "excavationdrill" req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2, TECH_BLUESPACE = 3) diff --git a/code/modules/research/designs/xenobio_toys.dm b/code/modules/research/designs/xenobio_toys.dm index 598ddd376e2..66966c6747d 100644 --- a/code/modules/research/designs/xenobio_toys.dm +++ b/code/modules/research/designs/xenobio_toys.dm @@ -1,22 +1,22 @@ -/datum/design/science/xenobio - abstract_type = /datum/design/science/xenobio +/datum/prototype/design/science/xenobio + abstract_type = /datum/prototype/design/science/xenobio -/datum/design/science/xenobio/generate_name(template) +/datum/prototype/design/science/xenobio/generate_name(template) return "Xenobiology equipment design ([..()])" -/datum/design/science/xenobio/slimebaton +/datum/prototype/design/science/xenobio/slimebaton id = "slimebaton" req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2, TECH_POWER = 3, TECH_COMBAT = 3) materials_base = list(MAT_STEEL = 5000) build_path = /obj/item/melee/baton/slime -/datum/design/science/xenobio/slimetaser +/datum/prototype/design/science/xenobio/slimetaser id = "slimetaser" req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 3, TECH_POWER = 4, TECH_COMBAT = 4) materials_base = list(MAT_STEEL = 5000) build_path = /obj/item/gun/energy/taser/xeno -/datum/design/science/xenobio/slime_scanner +/datum/prototype/design/science/xenobio/slime_scanner design_name = "slime scanner" desc = "A hand-held body scanner able to learn information about slimes." id = "slime_scanner" @@ -24,7 +24,7 @@ materials_base = list(MAT_STEEL = 500, MAT_GLASS = 500) build_path = /obj/item/slime_scanner -/datum/design/science/xenobio/gene_disk +/datum/prototype/design/science/xenobio/gene_disk design_name = "genetics disk" desc = "A disk designed to retain humanoid genetic information." id = "gene_disk" @@ -32,7 +32,7 @@ materials_base = list(MAT_STEEL = 300, MAT_GLASS = 300) build_path = /obj/item/disk/data -/datum/design/science/xenobio/botany_disk +/datum/prototype/design/science/xenobio/botany_disk design_name = "flora data disk" desc = "A small disk used for carrying data on plant genetics." id = "plant_disk" diff --git a/code/modules/research/items/design_disk.dm b/code/modules/research/items/design_disk.dm new file mode 100644 index 00000000000..8d66c199d90 --- /dev/null +++ b/code/modules/research/items/design_disk.dm @@ -0,0 +1,14 @@ +/obj/item/disk/design_disk + name = "component design disk" + desc = "A disk for storing device design data for construction in lathes." + icon = 'icons/obj/cloning.dmi' + icon_state = "datadisk2" + item_state = "card-id" + w_class = WEIGHT_CLASS_SMALL + materials_base = list(MAT_STEEL = 30, MAT_GLASS = 10) + var/design_id + +/obj/item/disk/design_disk/Initialize(mapload) + . = ..() + pixel_x = rand(-5.0, 5) + pixel_y = rand(-5.0, 5) diff --git a/code/modules/research/items/tech_disk.dm b/code/modules/research/items/tech_disk.dm new file mode 100644 index 00000000000..a78b8f2ce4d --- /dev/null +++ b/code/modules/research/items/tech_disk.dm @@ -0,0 +1,14 @@ +/obj/item/disk/tech_disk + name = "technology disk" + desc = "A disk for storing technology data for further research." + icon = 'icons/obj/cloning.dmi' + icon_state = "datadisk2" + item_state = "card-id" + w_class = WEIGHT_CLASS_SMALL + materials_base = list(MAT_STEEL = 30, MAT_GLASS = 10) + var/datum/tech/stored + +/obj/item/disk/tech_disk/Initialize(mapload) + . = ..() + pixel_x = rand(-5.0, 5) + pixel_y = rand(-5.0, 5) diff --git a/code/modules/research/machinery/circuitprinter.dm b/code/modules/research/machinery/circuitprinter.dm index f8e73e32124..ad3a0a9d35d 100644 --- a/code/modules/research/machinery/circuitprinter.dm +++ b/code/modules/research/machinery/circuitprinter.dm @@ -11,7 +11,7 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid). base_icon_state = "imprinter" atom_flags = OPENCONTAINER circuit = /obj/item/circuitboard/circuit_imprinter - var/list/datum/design/queue = list() + var/list/datum/prototype/design/queue = list() var/progress = 0 var/max_material_storage = 75000 @@ -60,7 +60,7 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid). busy = 0 update_appearance() return - var/datum/design/D = queue[1] + var/datum/prototype/design/D = queue[1] if(canBuild(D)) busy = 1 progress += speed @@ -189,7 +189,7 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid). updateUsrDialog() return -/obj/machinery/r_n_d/circuit_imprinter/proc/addToQueue(var/datum/design/D) +/obj/machinery/r_n_d/circuit_imprinter/proc/addToQueue(var/datum/prototype/design/D) queue += D return @@ -197,7 +197,7 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid). queue.Cut(index, index + 1) return -/obj/machinery/r_n_d/circuit_imprinter/proc/canBuild(var/datum/design/D) +/obj/machinery/r_n_d/circuit_imprinter/proc/canBuild(var/datum/prototype/design/D) for(var/M in D.materials_base) if(stored_materials[M] < (D.materials_base[M] * mat_efficiency)) return 0 @@ -206,7 +206,7 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid). return 0 return 1 -/obj/machinery/r_n_d/circuit_imprinter/proc/getLackingMaterials(var/datum/design/D) +/obj/machinery/r_n_d/circuit_imprinter/proc/getLackingMaterials(var/datum/prototype/design/D) var/ret = "" for(var/M in D.materials_base) if(stored_materials[M] < D.materials_base[M]) @@ -220,7 +220,7 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid). ret += C return ret -/obj/machinery/r_n_d/circuit_imprinter/proc/build(var/datum/design/D) +/obj/machinery/r_n_d/circuit_imprinter/proc/build(var/datum/prototype/design/D) var/power = active_power_usage for(var/M in D.materials_base) power += round(D.materials_base[M] / 5) diff --git a/code/modules/research/machinery/protolathe.dm b/code/modules/research/machinery/protolathe.dm index 377e77d06af..858eece0157 100644 --- a/code/modules/research/machinery/protolathe.dm +++ b/code/modules/research/machinery/protolathe.dm @@ -11,7 +11,7 @@ var/max_material_storage = 100000 - var/list/datum/design/queue = list() + var/list/datum/prototype/design/queue = list() var/progress = 0 var/mat_efficiency = 1 @@ -30,7 +30,7 @@ busy = 0 update_appearance() return - var/datum/design/D = queue[1] + var/datum/prototype/design/D = queue[1] if(canBuild(D)) busy = 1 progress += speed @@ -153,7 +153,7 @@ updateUsrDialog() return -/obj/machinery/r_n_d/protolathe/proc/addToQueue(var/datum/design/D) +/obj/machinery/r_n_d/protolathe/proc/addToQueue(var/datum/prototype/design/D) queue += D return @@ -161,7 +161,7 @@ queue.Cut(index, index + 1) return -/obj/machinery/r_n_d/protolathe/proc/canBuild(var/datum/design/D) +/obj/machinery/r_n_d/protolathe/proc/canBuild(var/datum/prototype/design/D) for(var/M in D.materials_base) if(stored_materials[M] < (D.materials_base[M] * mat_efficiency)) return 0 @@ -170,7 +170,7 @@ return 0 return 1 -/obj/machinery/r_n_d/protolathe/proc/getLackingMaterials(var/datum/design/D) +/obj/machinery/r_n_d/protolathe/proc/getLackingMaterials(var/datum/prototype/design/D) var/ret = "" for(var/M in D.materials_base) if(stored_materials[M] < D.materials_base[M]) @@ -184,7 +184,7 @@ ret += C return ret -/obj/machinery/r_n_d/protolathe/proc/build(var/datum/design/D) +/obj/machinery/r_n_d/protolathe/proc/build(var/datum/prototype/design/D) var/power = active_power_usage for(var/M in D.materials_base) power += round(D.materials_base[M] / 5) @@ -206,7 +206,7 @@ var/recursive = amount == -1 ? 1 : 0 material = lowertext(material) var/obj/item/stack/material/mattype - var/datum/material/MAT = get_material_by_name(material) + var/datum/prototype/material/MAT = get_material_by_name(material) if(!MAT) return diff --git a/code/modules/research/machinery/rdconsole.dm b/code/modules/research/machinery/rdconsole.dm index 4aed6ff2db3..201b3f9e0ad 100644 --- a/code/modules/research/machinery/rdconsole.dm +++ b/code/modules/research/machinery/rdconsole.dm @@ -91,15 +91,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(linked_imprinter == null) linked_imprinter = D D.linked_console = src - return - -/obj/machinery/computer/rdconsole/proc/griefProtection() //Have it automatically push research to the CentCom server so wild griffins can't fuck up R&D's work - for(var/obj/machinery/r_n_d/server/centcom/C in GLOB.machines) - for(var/datum/tech/T in files.known_tech) - C.files.AddTech2Known(T) - for(var/datum/design/D in files.known_designs) - C.files.AddDesign2Known(D) - C.files.RefreshResearch() /obj/machinery/computer/rdconsole/Initialize(mapload) . = ..() @@ -159,7 +150,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/proc/GetResearchListInfo() var/list/dat = list() dat += "