diff --git a/code/datums/ai_holo.dm b/code/datums/ai_holo.dm index c56bb5f303e5..f3e550972742 100644 --- a/code/datums/ai_holo.dm +++ b/code/datums/ai_holo.dm @@ -3,6 +3,7 @@ * bypass_colorize: if false, the hologram will be decolorized. */ /decl/ai_holo + abstract_type = /decl/ai_holo var/requires_malf = FALSE var/icon = 'icons/mob/hologram.dmi' var/icon_state = "icon_state" diff --git a/code/datums/appearances/automatic/cardborg.dm b/code/datums/appearances/automatic/cardborg.dm index dcc909286344..e7d65004c860 100644 --- a/code/datums/appearances/automatic/cardborg.dm +++ b/code/datums/appearances/automatic/cardborg.dm @@ -49,6 +49,7 @@ appearances[disguise.backpack_type] = disguise /decl/cardborg_appearance + abstract_type = /decl/cardborg_appearance var/backpack_type var/icon_state = ICON_STATE_WORLD var/icon = 'icons/mob/robots/robot.dmi' diff --git a/code/datums/colors/color_generator.dm b/code/datums/colors/color_generator.dm index 756d350ffd8e..91bdb5a03391 100644 --- a/code/datums/colors/color_generator.dm +++ b/code/datums/colors/color_generator.dm @@ -1,4 +1,5 @@ /decl/color_generator + abstract_type = /decl/color_generator var/color = COLOR_WHITE var/min_random_span = -25 var/max_random_span = 25 diff --git a/code/datums/communication/channel.dm b/code/datums/communication/channel.dm index c9dc993cb37f..8a942e3afc21 100644 --- a/code/datums/communication/channel.dm +++ b/code/datums/communication/channel.dm @@ -1,6 +1,7 @@ #define plain_key_name(A) key_name(A, highlight_special_characters = 0) /decl/communication_channel + abstract_type = /decl/communication_channel var/name var/config_setting var/expected_communicator_type = /datum diff --git a/code/datums/footsteps.dm b/code/datums/footsteps.dm index 3530bbbc082f..5f593f42d34d 100644 --- a/code/datums/footsteps.dm +++ b/code/datums/footsteps.dm @@ -1,4 +1,5 @@ /decl/footsteps + abstract_type = /decl/footsteps var/list/footstep_sounds /decl/footsteps/catwalk diff --git a/code/datums/genetics/genetic_conditions.dm b/code/datums/genetics/genetic_conditions.dm index 3b0a80e7532c..6d813e4afcbb 100644 --- a/code/datums/genetics/genetic_conditions.dm +++ b/code/datums/genetics/genetic_conditions.dm @@ -1,4 +1,6 @@ /decl/genetic_condition + abstract_type = /decl/genetic_condition + decl_flags = DECL_FLAG_MANDATORY_UID /// Descriptive name, used in VV panel. var/name /// Verb to be added or removed on activate/deactivate @@ -50,73 +52,91 @@ /decl/genetic_condition/superpower/no_breath name = "No Breathing" activation_message = "You feel no need to breathe." + uid = "genetic_condition_superpower_nobreath" /decl/genetic_condition/superpower/remoteview name = "Remote Viewing" grant_verb = /mob/living/human/proc/remoteobserve activation_message = "Your mind expands." + uid = "genetic_condition_superpower_remoteview" /decl/genetic_condition/superpower/running name = "Super Speed" activation_message = "Your leg muscles pulsate." + uid = "genetic_condition_superpower_running" /decl/genetic_condition/superpower/remotetalk name = "Telepathy" grant_verb = /mob/living/human/proc/remotesay activation_message = "You expand your mind outwards." + uid = "genetic_condition_superpower_remotetalk" /decl/genetic_condition/superpower/cold_resist name = "Cold Resistance" underlay_state = "fire_s" activation_message = "Your body is filled with warmth." + uid = "genetic_condition_superpower_cold_resist" /decl/genetic_condition/superpower/noprints name = "No Prints" activation_message = "Your fingers feel numb." + uid = "genetic_condition_superpower_noprints" /decl/genetic_condition/superpower/xray name = "X-Ray Vision" activation_message = "The walls suddenly disappear." + uid = "genetic_condition_superpower_xray" /decl/genetic_condition/superpower/space_resist name = "Space Resistance" activation_message = "Your skin feels strange." + uid = "genetic_condition_superpower_spaceresist" /decl/genetic_condition/disability abstract_type = /decl/genetic_condition/disability /decl/genetic_condition/disability/clumsy name = "Clumsy" + uid = "genetic_condition_disability_clumsy" /decl/genetic_condition/disability/nearsighted name = "Nearsighted" + uid = "genetic_condition_disability_nearsighted" /decl/genetic_condition/disability/epilepsy name = "Epilepsy" + uid = "genetic_condition_disability_epilepsy" /decl/genetic_condition/disability/coughing name = "Coughing" + uid = "genetic_condition_disability_coughing" /decl/genetic_condition/disability/tourettes name = "Tourettes" + uid = "genetic_condition_disability_tourettes" /decl/genetic_condition/disability/nervous name = "Nervous" + uid = "genetic_condition_disability_nervous" /decl/genetic_condition/disability/blinded name = "Blinded" check_synthetic = null + uid = "genetic_condition_disability_blinded" /decl/genetic_condition/disability/muted name = "Mute" check_synthetic = null + uid = "genetic_condition_disability_mute" /decl/genetic_condition/disability/deafened name = "Deafened" check_synthetic = null + uid = "genetic_condition_disability_deafened" /decl/genetic_condition/husk name = "Husk" + uid = "genetic_condition_husk" /decl/genetic_condition/husk/activate_condition(mob/living/M) . = ..() diff --git a/code/datums/hostility/hostility.dm b/code/datums/hostility/hostility.dm index 12106d4250ab..93bfeaeea2c3 100644 --- a/code/datums/hostility/hostility.dm +++ b/code/datums/hostility/hostility.dm @@ -1,4 +1,5 @@ // A singleton useful for recycling hostility logic in things such as mobs or turrets. +// intentionally NOT abstract /decl/hostility // Returns a value determining whether or not whatever is calling should attack the target. diff --git a/code/datums/item_modifiers/item_modifier.dm b/code/datums/item_modifiers/item_modifier.dm index 8dfeff61d569..9f0af19db9ee 100644 --- a/code/datums/item_modifiers/item_modifier.dm +++ b/code/datums/item_modifiers/item_modifier.dm @@ -1,4 +1,5 @@ /decl/item_modifier + abstract_type = /decl/item_modifier var/name var/list/type_setups diff --git a/code/datums/licences/license.dm b/code/datums/licences/license.dm index 8f9318bc5e63..dc30a985727e 100644 --- a/code/datums/licences/license.dm +++ b/code/datums/licences/license.dm @@ -1,4 +1,5 @@ /decl/license + abstract_type = /decl/license var/name var/url var/attribution_mandatory = TRUE diff --git a/code/datums/mind/memory.dm b/code/datums/mind/memory.dm index 0089d7d8dfc9..d63c27c172c5 100644 --- a/code/datums/mind/memory.dm +++ b/code/datums/mind/memory.dm @@ -122,6 +122,7 @@ // General memory handling /decl/memory_options + abstract_type = /decl/memory_options var/memory_type = /datum/memory /decl/memory_options/proc/validate_mind(var/datum/mind/target) diff --git a/code/datums/move_intent/move_intent.dm b/code/datums/move_intent/move_intent.dm index b520d57b73d7..70aedb731881 100644 --- a/code/datums/move_intent/move_intent.dm +++ b/code/datums/move_intent/move_intent.dm @@ -6,6 +6,7 @@ #define MOVE_INTENT_NEUTRAL BITFLAG(3) /decl/move_intent + abstract_type = /decl/move_intent var/name var/flags = MOVE_INTENT_NONE var/move_delay = 1 diff --git a/code/datums/observation/observation.dm b/code/datums/observation/observation.dm index ee87ba09d524..4f9cd7d19c66 100644 --- a/code/datums/observation/observation.dm +++ b/code/datums/observation/observation.dm @@ -57,6 +57,7 @@ // The first argument shall always be the event_source belonging to the event. Beyond that there are no restrictions. /decl/observ + abstract_type = /decl/observ var/name = "Unnamed Event" // The name of this event, used mainly for debug/VV purposes. The list of event managers can be reached through the "Debug Controller" verb, selecting the "Observation" entry. var/expected_type = /datum // The expected event source for this event. register() will CRASH() if it receives an unexpected type. var/list/global_listeners = list() // Associative list of instances that listen to all events of this type (as opposed to events belonging to a specific source) and the proc to call. diff --git a/code/datums/outfits/equipment/backpacks.dm b/code/datums/outfits/equipment/backpacks.dm index 8e6c68468285..ccd15917bebf 100644 --- a/code/datums/outfits/equipment/backpacks.dm +++ b/code/datums/outfits/equipment/backpacks.dm @@ -53,6 +53,7 @@ /* Code */ /decl/backpack_outfit + abstract_type = /decl/backpack_outfit var/flags var/name var/path diff --git a/code/datums/state_machine/state.dm b/code/datums/state_machine/state.dm index 72e6bee39c2c..79b9cf1eff9d 100644 --- a/code/datums/state_machine/state.dm +++ b/code/datums/state_machine/state.dm @@ -1,6 +1,7 @@ // An individual state, defined as a `/decl` to save memory. // On a directed graph, these would be the nodes themselves, connected to each other by unidirectional arrows. /decl/state + abstract_type = /decl/state // Transition decl types, which get turned into refs to those types. // Note that the order DOES matter, as decls earlier in the list have higher priority // if more than one becomes 'open'. diff --git a/code/datums/state_machine/transition.dm b/code/datums/state_machine/transition.dm index f6a89418df8f..1fbe37f15047 100644 --- a/code/datums/state_machine/transition.dm +++ b/code/datums/state_machine/transition.dm @@ -1,6 +1,7 @@ // Used to connect `/decl/state`s together so the FSM knows what state to switch to, and on what conditions. // On a directed graph, these would be the arrows connecting the nodes representing states. /decl/state_transition + abstract_type = /decl/state_transition var/list/from = null var/decl/state/target = null diff --git a/code/datums/traits/_traits.dm b/code/datums/traits/_traits.dm index 94ce0f5da28d..a10a814e135f 100644 --- a/code/datums/traits/_traits.dm +++ b/code/datums/traits/_traits.dm @@ -84,6 +84,7 @@ /decl/trait abstract_type = /decl/trait + decl_flags = DECL_FLAG_MANDATORY_UID /// String identifier. var/name /// Flavour text. diff --git a/code/datums/traits/metabolically_inert.dm b/code/datums/traits/metabolically_inert.dm index e885d28867d7..6be36d5eaacf 100644 --- a/code/datums/traits/metabolically_inert.dm +++ b/code/datums/traits/metabolically_inert.dm @@ -1,3 +1,4 @@ /decl/trait/metabolically_inert name = "Metabolically Inert" - description = "For better or worse, there is little that this creature metabolizes." \ No newline at end of file + description = "For better or worse, there is little that this creature metabolizes." + uid = "trait_metabolically_inert" \ No newline at end of file diff --git a/code/datums/uplink/uplink_sources.dm b/code/datums/uplink/uplink_sources.dm index 69fe364a6c1d..49d497f0ad1b 100644 --- a/code/datums/uplink/uplink_sources.dm +++ b/code/datums/uplink/uplink_sources.dm @@ -9,6 +9,8 @@ var/global/list/default_uplink_source_priority = list( ) /decl/uplink_source + abstract_type = /decl/uplink_source + decl_flags = DECL_FLAG_MANDATORY_UID var/name var/desc @@ -17,6 +19,7 @@ var/global/list/default_uplink_source_priority = list( /decl/uplink_source/pda name = "PDA" + uid = "uplink_pda" /decl/uplink_source/pda/Initialize() desc = NO_GUARANTEE_NO_EXTRA_COST_DESC("a PDA") @@ -48,6 +51,7 @@ var/global/list/default_uplink_source_priority = list( /decl/uplink_source/radio name = "Radio" + uid = "uplink_radio" /decl/uplink_source/radio/Initialize() desc = NO_GUARANTEE_NO_EXTRA_COST_DESC("a radio") @@ -67,6 +71,7 @@ var/global/list/default_uplink_source_priority = list( /decl/uplink_source/implant name = "Implant" desc = "Teleports an uplink implant into your head. Costs 20% of the initial TC amount." + uid = "uplink_implant" /decl/uplink_source/implant/setup_uplink_source(var/mob/living/human/recipient, var/amount) if(!istype(recipient)) @@ -82,6 +87,7 @@ var/global/list/default_uplink_source_priority = list( /decl/uplink_source/unit name = "Uplink Unit" desc = "Teleports an uplink unit to your location. Has 30% more TC." + uid = "uplink_unit" /decl/uplink_source/unit/setup_uplink_source(var/mob/M, var/amount) var/obj/item/radio/uplink/U = new(M, M.mind, round(amount * 1.3)) @@ -90,6 +96,7 @@ var/global/list/default_uplink_source_priority = list( /decl/uplink_source/telecrystals name = "Telecrystals" desc = "Get your telecrystals in pure form, without the means to trade them for goods, Gives 150% of initial TC amount" + uid = "uplink_telecrystals" /decl/uplink_source/telecrystals/setup_uplink_source(var/mob/M, var/amount) amount = round(amount * 1.5) diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm index 130f060c8591..41fe820ee791 100644 --- a/code/game/antagonist/antagonist.dm +++ b/code/game/antagonist/antagonist.dm @@ -1,5 +1,6 @@ /decl/special_role abstract_type = /decl/special_role + decl_flags = DECL_FLAG_MANDATORY_UID // Text shown when becoming this antagonist. var/list/restricted_jobs = list() // Jobs that cannot be this antagonist at roundstart (depending on config) diff --git a/code/game/machinery/_machines_base/machine_construction/_construction.dm b/code/game/machinery/_machines_base/machine_construction/_construction.dm index 72679df311c5..8da89a0355de 100644 --- a/code/game/machinery/_machines_base/machine_construction/_construction.dm +++ b/code/game/machinery/_machines_base/machine_construction/_construction.dm @@ -26,6 +26,7 @@ return MCS_CHANGE /decl/machine_construction + abstract_type = /decl/machine_construction var/needs_board // Type of circuitboard expected, if any. Used in unit testing. var/cannot_print // If false, unit testing will attempt to guarantee that the machine is buildable in-round. This inverts that behavior. var/visible_components = TRUE // Whether user can see installed components on examine diff --git a/code/game/machinery/_machines_base/machinery_public_vars.dm b/code/game/machinery/_machines_base/machinery_public_vars.dm index 81871d962fa5..38010c6efc85 100644 --- a/code/game/machinery/_machines_base/machinery_public_vars.dm +++ b/code/game/machinery/_machines_base/machinery_public_vars.dm @@ -1,8 +1,11 @@ /decl/public_access + abstract_type = /decl/public_access + decl_flags = DECL_FLAG_MANDATORY_UID var/name var/desc /decl/public_access/public_variable + abstract_type = /decl/public_access/public_variable var/expected_type var/can_write = FALSE var/var_type = VAR_FORMAT_BOOLEAN // Reuses IC defines for better compatibility. @@ -115,6 +118,7 @@ Public methods machines can expose. Pretty bare-bones; just wraps a proc and giv */ /decl/public_access/public_method + abstract_type = /decl/public_access/public_method var/call_proc var/forward_args = FALSE diff --git a/code/game/machinery/_machines_base/machinery_public_vars_common.dm b/code/game/machinery/_machines_base/machinery_public_vars_common.dm index 82739c5e4f02..1c6addf1d2fd 100644 --- a/code/game/machinery/_machines_base/machinery_public_vars_common.dm +++ b/code/game/machinery/_machines_base/machinery_public_vars_common.dm @@ -12,6 +12,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th desc = "The input toggle variable does not do anything by itself. This makes it useful for having receivers trigger transmitters. Can be toggled by a public method." can_write = FALSE has_updates = TRUE + uid = "public_var_machine_input_toggle" /decl/public_access/public_variable/input_toggle/access_var(obj/machinery/machine) return machine.input_toggle @@ -25,6 +26,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th name = "toggle input" desc = "Toggles the input toggle variable." call_proc = TYPE_PROC_REF(/obj/machinery, toggle_input_toggle) + uid = "public_method_machine_toggle_input" /obj/machinery/proc/toggle_input_toggle() var/decl/public_access/public_variable/variable = GET_DECL(/decl/public_access/public_variable/input_toggle) @@ -37,6 +39,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th can_write = FALSE has_updates = FALSE var_type = VAR_FORMAT_STRING + uid = "public_var_machine_area_id" /decl/public_access/public_variable/area_uid/access_var(obj/machinery/machine) return machine.area_uid() @@ -52,6 +55,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th can_write = TRUE has_updates = TRUE var_type = VAR_FORMAT_STRING + uid = "public_var_machine_identifier" /decl/public_access/public_variable/identifier/access_var(obj/machinery/machine) return machine.identifier @@ -68,6 +72,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_NUMBER + uid = "public_var_machine_power_use" /decl/public_access/public_variable/use_power/access_var(obj/machinery/machine) return machine.use_power @@ -86,6 +91,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_STRING + uid = "public_var_machine_name" /decl/public_access/public_variable/name/access_var(obj/machinery/machine) return machine.name @@ -102,6 +108,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th can_write = FALSE has_updates = TRUE var_type = VAR_FORMAT_LIST + uid = "public_var_machine_reagents" /decl/public_access/public_variable/reagents/access_var(obj/machinery/machine) return istype(machine?.reagents) ? UNLINT(machine.reagents.reagent_data) : null @@ -110,6 +117,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th name = "reagents volumes" desc = "Obtain the list of reagents and their volumes in the machine." var_type = VAR_FORMAT_LIST + uid = "public_var_machine_reagent_volumes" /decl/public_access/public_variable/reagents/volumes/access_var(obj/machinery/machine) return istype(machine?.reagents) ? UNLINT(REAGENT_VOLUMES(machine.reagents)) : null @@ -118,6 +126,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th name = "reagents free space" desc = "Obtain the volume of free space left for reagents in the machine." var_type = VAR_FORMAT_NUMBER + uid = "public_var_machine_reagents_free_space" /decl/public_access/public_variable/reagents/free_space/access_var(obj/machinery/machine) return REAGENTS_FREE_SPACE(machine?.reagents) @@ -126,6 +135,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th name = "reagents total volume" desc = "Obtain the total volume of reagents in the machine." var_type = VAR_FORMAT_NUMBER + uid = "public_var_machine_reagents_total_volume" /decl/public_access/public_variable/reagents/total_volume/access_var(obj/machinery/machine) return REAGENT_TOTAL_VOLUME(machine?.reagents) @@ -134,6 +144,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th name = "reagents maximum volume" desc = "Obtain the maximum volume of reagents that can fit in the machine." var_type = VAR_FORMAT_NUMBER + uid = "public_var_machine_reagents_maximum_volume" /decl/public_access/public_variable/reagents/maximum_volume/access_var(obj/machinery/machine) return REAGENT_MAXIMUM_VOLUME(machine?.reagents) @@ -142,6 +153,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th name = "toggle power" desc = "Turns the machine on or off." call_proc = TYPE_PROC_REF(/obj/machinery, toggle_power) + uid = "public_method_machine_power_toggle" /obj/machinery/proc/toggle_power() update_use_power(!use_power) @@ -150,6 +162,7 @@ Public vars at /obj/machinery level. Just because they are here does not mean th name = "refresh machine" desc = "Attempts to refresh the machine's status. Implementation may vary." call_proc = TYPE_PROC_REF(/obj/machinery, refresh) + uid = "public_var_machine_refresh" /obj/machinery/proc/refresh() queue_icon_update() \ No newline at end of file diff --git a/code/game/machinery/_machines_base/stock_parts/stock_parts_presets.dm b/code/game/machinery/_machines_base/stock_parts/stock_parts_presets.dm index 63fab9666014..e7802f94c69a 100644 --- a/code/game/machinery/_machines_base/stock_parts/stock_parts_presets.dm +++ b/code/game/machinery/_machines_base/stock_parts/stock_parts_presets.dm @@ -8,6 +8,7 @@ Do not work with lazy-initialized parts. var/list/stock_part_presets // Format: assotiative list of decl path -> number to apply. /decl/stock_part_preset + abstract_type = /decl/stock_part_preset var/expected_part_type /decl/stock_part_preset/proc/apply(obj/machinery/machine, obj/item/stock_parts/part) diff --git a/code/game/machinery/air_sensor.dm b/code/game/machinery/air_sensor.dm index 6a4774c0759b..55c86eed568d 100644 --- a/code/game/machinery/air_sensor.dm +++ b/code/game/machinery/air_sensor.dm @@ -37,6 +37,7 @@ can_write = FALSE has_updates = FALSE var_type = VAR_FORMAT_LIST + uid = "public_var_gas" /decl/public_access/public_variable/gas/access_var(obj/machinery/sensor) var/datum/gas_mixture/air_sample = sensor.return_air() @@ -59,6 +60,7 @@ can_write = FALSE has_updates = FALSE var_type = VAR_FORMAT_STRING + uid = "public_var_pressure" /decl/public_access/public_variable/pressure/access_var(obj/machinery/sensor) var/datum/gas_mixture/air_sample = sensor.return_air() @@ -71,6 +73,7 @@ can_write = FALSE has_updates = FALSE var_type = VAR_FORMAT_NUMBER + uid = "public_var_temperature" /decl/public_access/public_variable/temperature/access_var(obj/machinery/sensor) var/datum/gas_mixture/air_sample = sensor.return_air() diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index eda811c59e8f..2f7ded00cd6a 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -89,6 +89,7 @@ desc = "Toggled whenever the button is pressed." can_write = FALSE has_updates = TRUE + uid = "public_var_button_active" /decl/public_access/public_variable/button_active/access_var(obj/machinery/button/button) return button.active @@ -104,6 +105,7 @@ desc = "Toggled whenever the button is pressed. Inverse value of button toggle." can_write = FALSE has_updates = TRUE + uid = "public_var_button_active_inverse" /decl/public_access/public_variable/inv_button_active/access_var(obj/machinery/button/button) return !button.active @@ -121,6 +123,7 @@ can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_BOOLEAN + uid = "public_var_button_state" /decl/public_access/public_variable/button_state/access_var(obj/machinery/button/button) return button.state diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 8d28f55a3c86..73bbf9fa55db 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -357,12 +357,14 @@ name = "toggle camera" desc = "Toggles camera on or off." call_proc = TYPE_PROC_REF(/obj/machinery/camera, toggle_status) + uid = "public_method_camera_toggle" /decl/public_access/public_variable/camera_state expected_type = /obj/machinery/camera name = "camera status" desc = "Status of the camera." can_write = FALSE + uid = "public_var_camera_status" /decl/public_access/public_variable/camera_state/access_var(obj/machinery/camera/C) return C.status ? "enabled" : "disabled" @@ -372,6 +374,7 @@ name = "camera name" desc = "Displayed name of the camera." can_write = FALSE + uid = "public_var_camera_name" /decl/public_access/public_variable/camera_name/access_var(obj/machinery/camera/C) var/datum/extension/network_device/camera/camera_device = get_extension(C, /datum/extension/network_device/) @@ -382,6 +385,7 @@ name = "camera channels" desc = "List of the channels this camera broadcasts on." can_write = FALSE + uid = "public_var_camera_channels" /decl/public_access/public_variable/camera_channels/access_var(obj/machinery/camera/C) return english_list(C.get_channels()) \ No newline at end of file diff --git a/code/game/machinery/doors/_door.dm b/code/game/machinery/doors/_door.dm index 2aef4698196b..5ef1df08587a 100644 --- a/code/game/machinery/doors/_door.dm +++ b/code/game/machinery/doors/_door.dm @@ -606,19 +606,23 @@ name = "open door" desc = "Opens the door if possible." call_proc = TYPE_PROC_REF(/obj/machinery/door, open) + uid = "public_method_door_open" /decl/public_access/public_method/toggle_door name = "toggle door" desc = "Toggles whether the door is open or not, if possible." call_proc = TYPE_PROC_REF(/obj/machinery/door, toggle) + uid = "public_method_door_toggle" /decl/public_access/public_method/toggle_door_to name = "toggle door to" desc = "Toggles the door, depending on the supplied argument, to open (if 1) or closed (if 0)." call_proc = TYPE_PROC_REF(/obj/machinery/door, toggle) forward_args = TRUE + uid = "public_method_door_set" /decl/public_access/public_method/close_door name = "close door" desc = "Closes the door if possible." call_proc = TYPE_PROC_REF(/obj/machinery/door, close) + uid = "public_method_door_close" diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm index 3ac2040598f2..b0c38c26a41c 100644 --- a/code/game/machinery/doors/airlock_control.dm +++ b/code/game/machinery/doors/airlock_control.dm @@ -57,16 +57,19 @@ name = "engage bolts" desc = "Bolts the airlock, if possible." call_proc = TYPE_PROC_REF(/obj/machinery/door/airlock, lock) + uid = "public_method_airlock_lock" /decl/public_access/public_method/airlock_unlock name = "disengage bolts" desc = "Unbolts the airlock, if possible." call_proc = TYPE_PROC_REF(/obj/machinery/door/airlock, unlock) + uid = "public_method_airlock_unlock" /decl/public_access/public_method/airlock_toggle_bolts name = "toggle bolts" desc = "Toggles whether the airlock is bolted or not, if possible." call_proc = TYPE_PROC_REF(/obj/machinery/door/airlock, toggle_lock) + uid = "public_method_airlock_bolts_toggle" /decl/public_access/public_variable/airlock_door_state expected_type = /obj/machinery/door/airlock @@ -75,6 +78,7 @@ can_write = FALSE has_updates = FALSE var_type = VAR_FORMAT_STRING + uid = "public_var_airlock_state" /decl/public_access/public_variable/airlock_door_state/access_var(obj/machinery/door/airlock/door) return door.density ? "closed" : "open" @@ -86,6 +90,7 @@ can_write = FALSE has_updates = FALSE var_type = VAR_FORMAT_STRING + uid = "public_var_airlock_bolt_state" /decl/public_access/public_variable/airlock_bolt_state/access_var(obj/machinery/door/airlock/door) return door.locked ? "locked" : "unlocked" @@ -191,6 +196,7 @@ can_write = FALSE has_updates = TRUE var_type = VAR_FORMAT_NUMBER + uid = "public_var_airlock_sensor_pressure" /decl/public_access/public_variable/airlock_pressure/access_var(obj/machinery/airlock_sensor/sensor) return sensor.pressure @@ -206,10 +212,14 @@ "pressure" = /decl/public_access/public_variable/airlock_pressure ) -/decl/public_access/public_variable/set_airlock_cycling/airlock_sensor - expected_type = /obj/machinery/airlock_sensor +/decl/public_access/public_variable/set_airlock_cycling can_write = TRUE var_type = VAR_FORMAT_BOOLEAN + abstract_type = /decl/public_access/public_variable/set_airlock_cycling + +/decl/public_access/public_variable/set_airlock_cycling/airlock_sensor + expected_type = /obj/machinery/airlock_sensor + uid = "public_var_airlock_sensor_cycling" /decl/public_access/public_variable/set_airlock_cycling/airlock_sensor/access_var(obj/machinery/airlock_sensor/owner) return owner.master_cycling @@ -358,8 +368,7 @@ // /decl/public_access/public_variable/set_airlock_cycling/access_button expected_type = /obj/machinery/button/access - can_write = TRUE - var_type = VAR_FORMAT_BOOLEAN + uid = "public_var_airlock_button_cycling" /decl/public_access/public_variable/set_airlock_cycling/access_button/access_var(obj/machinery/button/access/owner) return owner.master_cycling @@ -377,6 +386,7 @@ can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_STRING + uid = "public_var_airlock_button_command" /decl/public_access/public_variable/button_command/access_var(obj/machinery/button/access/button) return button.command diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index 830d9f241672..dcb8e78ba9c2 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -233,6 +233,7 @@ name = "delayed close door" desc = "Closes the door if possible, after a short delay." call_proc = TYPE_PROC_REF(/obj/machinery/door/blast, delayed_close) + uid = "public_method_blastdoor_close_delayed" /decl/stock_part_preset/radio/receiver/blast_door frequency = BLAST_DOORS_FREQ diff --git a/code/game/machinery/emitter.dm b/code/game/machinery/emitter.dm index a497a6d2c5f6..7c3febcf71bd 100644 --- a/code/game/machinery/emitter.dm +++ b/code/game/machinery/emitter.dm @@ -180,6 +180,7 @@ name = "toggle emitter" desc = "Toggles whether or not the emitter is active. It must be unlocked to work." call_proc = TYPE_PROC_REF(/obj/machinery/emitter, activate) + uid = "public_method_emitter_toggle" /decl/public_access/public_variable/emitter_active expected_type = /obj/machinery/emitter @@ -187,6 +188,7 @@ desc = "Whether or not the emitter is firing." can_write = FALSE has_updates = FALSE + uid = "public_var_emitter_active" /decl/public_access/public_variable/emitter_active/access_var(obj/machinery/emitter/emitter) return emitter.active @@ -197,6 +199,7 @@ desc = "Whether or not the emitter is locked. Being locked prevents one from changing the active state." can_write = FALSE has_updates = FALSE + uid = "public_var_emitter_locked" /decl/public_access/public_variable/emitter_locked/access_var(obj/machinery/emitter/emitter) return emitter.locked diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index cc28f19f2c22..4ad10c81884f 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -122,6 +122,7 @@ name = "flash" desc = "Performs a flash, if possible." call_proc = TYPE_PROC_REF(/obj/machinery/flasher, flash) + uid = "public_var_flasher_flash" /decl/stock_part_preset/radio/receiver/flasher frequency = BUTTON_FREQ diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm index 81ea2fc50ed0..edce21999ebf 100644 --- a/code/game/machinery/holosign.dm +++ b/code/game/machinery/holosign.dm @@ -46,6 +46,7 @@ desc = "Whether or not the holosign is active." can_write = FALSE has_updates = FALSE + uid = "public_var_holosign_active" /decl/public_access/public_variable/holosign_on/access_var(obj/machinery/holosign/sign) return sign.lit @@ -54,6 +55,7 @@ name = "holosign toggle" desc = "Toggle the holosign's active state." call_proc = TYPE_PROC_REF(/obj/machinery/holosign, toggle) + uid = "public_method_holosign_toggle" /decl/stock_part_preset/radio/receiver/holosign frequency = BUTTON_FREQ diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 176f286e06bb..63e12ccf3d6b 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -66,6 +66,7 @@ desc = "Whether or not the igniter is igniting." can_write = FALSE has_updates = FALSE + uid = "public_var_igniter_active" /decl/public_access/public_variable/igniter_on/access_var(obj/machinery/igniter/igniter) return igniter.on @@ -74,6 +75,7 @@ name = "igniter toggle" desc = "Toggle the igniter on or off." call_proc = TYPE_PROC_REF(/obj/machinery/igniter, toggle_igniter) + uid = "public_method_igniter_toggle" /decl/stock_part_preset/radio/receiver/igniter frequency = BUTTON_FREQ @@ -162,6 +164,7 @@ name = "spark" desc = "Creates sparks to ignite nearby gases." call_proc = TYPE_PROC_REF(/obj/machinery/sparker, create_sparks) + uid = "public_method_sparker_spark" /decl/stock_part_preset/radio/receiver/sparker frequency = BUTTON_FREQ diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index cc4014b6eaab..ab4ce5ab31a2 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -56,11 +56,13 @@ name = "launch" desc = "Makes the mass driver launch immediately" call_proc = TYPE_PROC_REF(/obj/machinery/mass_driver, drive) + uid = "public_method_massdriver_launch" /decl/public_access/public_method/driver_drive_delayed name = "delayed launch" desc = "Makes the mass driver launch after a short delay" call_proc = TYPE_PROC_REF(/obj/machinery/mass_driver, delayed_drive) + uid = "public_method_massdriver_launch_delayed" /decl/stock_part_preset/radio/receiver/driver frequency = BLAST_DOORS_FREQ diff --git a/code/game/objects/structures/crates_lockers/closets/_closet_appearance_definitions.dm b/code/game/objects/structures/crates_lockers/closets/_closet_appearance_definitions.dm index 11241f5a6292..9ecc7da3d9e1 100644 --- a/code/game/objects/structures/crates_lockers/closets/_closet_appearance_definitions.dm +++ b/code/game/objects/structures/crates_lockers/closets/_closet_appearance_definitions.dm @@ -3,6 +3,7 @@ . = ..(maploading) /decl/closet_appearance + // this is NOT abstract var/color = COLOR_GRAY40 var/decals = list( "upper_vent", diff --git a/code/game/objects/structures/curtain_decls.dm b/code/game/objects/structures/curtain_decls.dm index fa5524530c01..8f9223f8771a 100644 --- a/code/game/objects/structures/curtain_decls.dm +++ b/code/game/objects/structures/curtain_decls.dm @@ -2,10 +2,16 @@ // Curtain types declaration // /decl/curtain_kind + abstract_type = /decl/curtain_kind var/name = "curtain" var/color = COLOR_WHITE var/alpha = 255 - var/material_key = /decl/material/solid/organic/plastic + var/material_key + +/decl/curtain_kind/validate() + . = ..() + if(isnull(material_key)) + . += "no material key set" /decl/curtain_kind/proc/make_item(var/loc) var/obj/item/curtain/C = new(loc) diff --git a/code/modules/admin/view_variables/vv_set_handlers.dm b/code/modules/admin/view_variables/vv_set_handlers.dm index 7c81beb725b1..7a4a47b393df 100644 --- a/code/modules/admin/view_variables/vv_set_handlers.dm +++ b/code/modules/admin/view_variables/vv_set_handlers.dm @@ -1,4 +1,5 @@ /decl/vv_set_handler + abstract_type = /decl/vv_set_handler var/handled_type var/predicates var/list/handled_vars diff --git a/code/modules/atmospherics/atmos_primitives.dm b/code/modules/atmospherics/atmos_primitives.dm index 13a0044acfc6..da7d3afabafb 100644 --- a/code/modules/atmospherics/atmos_primitives.dm +++ b/code/modules/atmospherics/atmos_primitives.dm @@ -478,6 +478,7 @@ can_write = FALSE has_updates = FALSE var_type = VAR_FORMAT_NUMBER + uid = "public_var_atmos_powerdraw" /decl/public_access/public_variable/power_draw/access_var(obj/machinery/atmospherics/machine) return machine.last_power_draw @@ -489,6 +490,7 @@ can_write = FALSE has_updates = FALSE var_type = VAR_FORMAT_NUMBER + uid = "public_var_atmos_flowrate" /decl/public_access/public_variable/flow_rate/access_var(obj/machinery/atmospherics/machine) return machine.last_flow_rate \ No newline at end of file diff --git a/code/modules/atmospherics/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/components/binary_devices/passive_gate.dm index e34784fb7ee1..ed15c10daa13 100644 --- a/code/modules/atmospherics/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/components/binary_devices/passive_gate.dm @@ -197,6 +197,7 @@ can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_BOOLEAN + uid = "public_var_passive_gate_unlocked" /decl/public_access/public_variable/passive_gate_unlocked/access_var(obj/machinery/atmospherics/binary/passive_gate/machine) return machine.unlocked @@ -214,6 +215,7 @@ can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_NUMBER + uid = "public_var_passive_gate_flowrate" /decl/public_access/public_variable/passive_gate_flow_rate/access_var(obj/machinery/atmospherics/binary/passive_gate/machine) return machine.set_flow_rate @@ -231,6 +233,7 @@ can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_NUMBER + uid = "public_var_passive_gate_mode" /decl/public_access/public_variable/passive_gate_mode/access_var(obj/machinery/atmospherics/binary/passive_gate/machine) return machine.regulate_mode @@ -248,6 +251,7 @@ can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_NUMBER + uid = "public_var_passive_gate_target_pressure" /decl/public_access/public_variable/passive_gate_target_pressure/access_var(obj/machinery/atmospherics/binary/passive_gate/machine) return machine.target_pressure @@ -262,6 +266,7 @@ name = "toggle valve" desc = "Open or close the valve." call_proc = TYPE_PROC_REF(/obj/machinery/atmospherics/binary/passive_gate, toggle_unlocked) + uid = "public_method_passive_gate_toggle" /decl/stock_part_preset/radio/event_transmitter/passive_gate frequency = PUMP_FREQ diff --git a/code/modules/atmospherics/components/binary_devices/pump.dm b/code/modules/atmospherics/components/binary_devices/pump.dm index 27fe8910c85f..b64e84c8a768 100644 --- a/code/modules/atmospherics/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/components/binary_devices/pump.dm @@ -174,6 +174,7 @@ Thus, the two variables affect pump operation are set in New(): can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_NUMBER + uid = "public_var_pump_target_pressure" /decl/public_access/public_variable/pump_target_output/access_var(obj/machinery/atmospherics/binary/pump/machine) return machine.target_pressure diff --git a/code/modules/atmospherics/components/tvalve.dm b/code/modules/atmospherics/components/tvalve.dm index f24062ba123d..77ff20e08ff3 100644 --- a/code/modules/atmospherics/components/tvalve.dm +++ b/code/modules/atmospherics/components/tvalve.dm @@ -125,6 +125,7 @@ desc = "If true, the output is diverted to the side; if false, the output goes straight." can_write = FALSE has_updates = FALSE + uid = "public_var_tvalve_state" /decl/public_access/public_variable/tvalve_state/access_var(obj/machinery/atmospherics/tvalve/tvalve) return tvalve.state @@ -133,16 +134,19 @@ name = "valve go straight" desc = "Sets the valve to send output straight." call_proc = TYPE_PROC_REF(/obj/machinery/atmospherics/tvalve, go_straight) + uid = "public_method_tvalve_straight" /decl/public_access/public_method/tvalve_go_side name = "valve go side" desc = "Redirects output to the side." call_proc = TYPE_PROC_REF(/obj/machinery/atmospherics/tvalve, go_to_side) + uid = "public_method_tvalve_side" /decl/public_access/public_method/tvalve_toggle name = "valve toggle" desc = "Toggles the output direction." call_proc = TYPE_PROC_REF(/obj/machinery/atmospherics/tvalve, toggle) + uid = "public_method_tvalve_toggle" /decl/stock_part_preset/radio/receiver/tvalve frequency = FUEL_FREQ diff --git a/code/modules/atmospherics/components/unary/outlet_injector.dm b/code/modules/atmospherics/components/unary/outlet_injector.dm index 8f3d287c78c1..4a49c539bd00 100644 --- a/code/modules/atmospherics/components/unary/outlet_injector.dm +++ b/code/modules/atmospherics/components/unary/outlet_injector.dm @@ -137,11 +137,12 @@ /decl/public_access/public_variable/volume_rate expected_type = /obj/machinery/atmospherics/unary/outlet_injector - name = "volume_rate" + name = "volume rate" desc = "The rate at which the machine pumps (a number)." can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_NUMBER + uid = "public_var_outlet_injector_volume_rate" /decl/public_access/public_variable/volume_rate/access_var(obj/machinery/atmospherics/unary/outlet_injector/machine) return machine.volume_rate @@ -156,6 +157,7 @@ name = "inject" desc = "Injects gas into its environment." call_proc = TYPE_PROC_REF(/obj/machinery/atmospherics/unary/outlet_injector, inject) + uid = "public_method_outlet_injector_inject" /decl/stock_part_preset/radio/event_transmitter/outlet_injector frequency = ATMOS_TANK_FREQ diff --git a/code/modules/atmospherics/components/unary/vent_pump.dm b/code/modules/atmospherics/components/unary/vent_pump.dm index 9041a5956203..4048ac0e65ec 100644 --- a/code/modules/atmospherics/components/unary/vent_pump.dm +++ b/code/modules/atmospherics/components/unary/vent_pump.dm @@ -367,6 +367,7 @@ can_write = TRUE has_updates = TRUE var_type = VAR_FORMAT_STRING + uid = "public_var_vent_pump_dir" /decl/public_access/public_variable/pump_dir/access_var(obj/machinery/atmospherics/unary/vent_pump/machine) return machine.pump_direction ? "release" : "siphon" @@ -385,6 +386,7 @@ can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_ANY + uid = "public_var_vent_pump_checks" /decl/public_access/public_variable/pump_checks/access_var(obj/machinery/atmospherics/unary/vent_pump/machine) return machine.pressure_checks @@ -404,6 +406,7 @@ can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_ANY + uid = "public_var_vent_pump_bound_internal" /decl/public_access/public_variable/pressure_bound/access_var(obj/machinery/atmospherics/unary/vent_pump/machine) return machine.internal_pressure_bound @@ -423,6 +426,7 @@ expected_type = /obj/machinery/atmospherics/unary/vent_pump name = "external pressure bound" desc = "The bound on external pressure used in checks (a number). When writing, can be supplied the string keyword \"default\" instead." + uid = "public_var_vent_pump_bound_external" /decl/public_access/public_variable/pressure_bound/external/access_var(obj/machinery/atmospherics/unary/vent_pump/machine) return machine.external_pressure_bound @@ -439,11 +443,13 @@ name = "activate purge mode" desc = "Activates purge mode, overriding pressure checks and removing air." call_proc = TYPE_PROC_REF(/obj/machinery/atmospherics/unary/vent_pump, purge) + uid = "public_method_vent_pump_purge" /decl/public_access/public_method/toggle_pump_dir name = "toggle pump direction" desc = "Toggles the pump's direction, from release to siphon or vice versa." call_proc = TYPE_PROC_REF(/obj/machinery/atmospherics/unary/vent_pump, toggle_pump_dir) + uid = "public_method_vent_pump_toggle_dir" /decl/stock_part_preset/radio/event_transmitter/vent_pump frequency = PUMP_FREQ diff --git a/code/modules/atmospherics/components/unary/vent_scrubber.dm b/code/modules/atmospherics/components/unary/vent_scrubber.dm index a22a770b326f..add22e0625d4 100644 --- a/code/modules/atmospherics/components/unary/vent_scrubber.dm +++ b/code/modules/atmospherics/components/unary/vent_scrubber.dm @@ -265,6 +265,7 @@ can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_STRING + uid = "public_var_vent_scrubber_mode" /decl/public_access/public_variable/scrubbing/access_var(obj/machinery/atmospherics/unary/vent_scrubber/machine) return machine.scrubbing @@ -285,6 +286,7 @@ can_write = TRUE has_updates = FALSE var_type = VAR_FORMAT_BOOLEAN + uid = "public_var_vent_scrubber_panic" /decl/public_access/public_variable/panic/access_var(obj/machinery/atmospherics/unary/vent_scrubber/machine) return machine.panic @@ -307,6 +309,7 @@ can_write = FALSE has_updates = FALSE var_type = VAR_FORMAT_LIST + uid = "public_var_vent_scrubber_scrubbing_gas" /decl/public_access/public_variable/scrubbing_gas/access_var(obj/machinery/atmospherics/unary/vent_scrubber/machine) return machine.scrubbing_gas.Copy() @@ -315,12 +318,14 @@ name = "toggle panic siphon" desc = "Toggles the panic siphon function." call_proc = TYPE_PROC_REF(/obj/machinery/atmospherics/unary/vent_scrubber, toggle_panic) + uid = "public_method_vent_scrubber_panic_toggle" /decl/public_access/public_method/set_scrub_gas name = "set filter gases" desc = "Given a list of gases, sets whether the gas is being scrubbed to the value of the gas in the list." forward_args = TRUE call_proc = TYPE_PROC_REF(/obj/machinery/atmospherics/unary/vent_scrubber, set_scrub_gas) + uid = "public_method_vent_scrubber_set_scrub_gas" /decl/stock_part_preset/radio/event_transmitter/vent_scrubber frequency = PUMP_FREQ diff --git a/code/modules/atmospherics/components/valve.dm b/code/modules/atmospherics/components/valve.dm index 5ffd62ff0826..b2235a4645cb 100644 --- a/code/modules/atmospherics/components/valve.dm +++ b/code/modules/atmospherics/components/valve.dm @@ -125,6 +125,7 @@ desc = "Whether or not the valve is open." can_write = FALSE has_updates = FALSE + uid = "public_var_valve_open" /decl/public_access/public_variable/valve_open/access_var(obj/machinery/atmospherics/valve/valve) return valve.open @@ -133,16 +134,19 @@ name = "open valve" desc = "Sets the valve to open." call_proc = TYPE_PROC_REF(/obj/machinery/atmospherics/valve, open) + uid = "public_method_valve_open" /decl/public_access/public_method/close_valve name = "open valve" desc = "Sets the valve to open." call_proc = TYPE_PROC_REF(/obj/machinery/atmospherics/valve, close) + uid = "public_method_valve_close" /decl/public_access/public_method/toggle_valve name = "toggle valve" desc = "Toggles whether the valve is open or closed." call_proc = TYPE_PROC_REF(/obj/machinery/atmospherics/valve, toggle) + uid = "public_method_valve_toggle" /obj/machinery/atmospherics/valve/digital // can be controlled by AI name = "digital valve" diff --git a/code/modules/client/preference_setup/global/prefixes.dm b/code/modules/client/preference_setup/global/prefixes.dm index d9b165f2d4c3..4db8c0b13aed 100644 --- a/code/modules/client/preference_setup/global/prefixes.dm +++ b/code/modules/client/preference_setup/global/prefixes.dm @@ -1,4 +1,6 @@ /decl/prefix + abstract_type = /decl/prefix + decl_flags = DECL_FLAG_MANDATORY_UID var/name var/default_key var/is_locked = FALSE @@ -6,24 +8,30 @@ /decl/prefix/language name = "Language" default_key = "," + uid = "chat_prefix_language" /decl/prefix/radio_channel_selection name = "Radio, channel selection" default_key = ":" is_locked = TRUE + uid = "chat_prefix_radio_channel" /decl/prefix/radio_main_channel name = "Radio, main channel" default_key = ";" + uid = "chat_prefix_radio_channel_main" /decl/prefix/audible_emote name = "Emote, audible" default_key = "!" + uid = "chat_prefix_emote_audible" /decl/prefix/visible_emote name = "Emote, visible" default_key = "^" + uid = "chat_prefix_emote_visible" /decl/prefix/custom_emote name = "Emote, custom" default_key = "*" + uid = "chat_prefix_emote_custom" diff --git a/code/modules/client/preference_setup/loadout/lists/accessories.dm b/code/modules/client/preference_setup/loadout/lists/accessories.dm index b79e0f9f4710..2cb01b79a9fb 100644 --- a/code/modules/client/preference_setup/loadout/lists/accessories.dm +++ b/code/modules/client/preference_setup/loadout/lists/accessories.dm @@ -1,5 +1,6 @@ /decl/loadout_category/accessories name = "Accessories" + uid = "loadout_category_accessories" /decl/loadout_option/accessory category = /decl/loadout_category/accessories diff --git a/code/modules/client/preference_setup/loadout/lists/clothing.dm b/code/modules/client/preference_setup/loadout/lists/clothing.dm index 98b1c7544ba4..f1bd8a7b34f4 100644 --- a/code/modules/client/preference_setup/loadout/lists/clothing.dm +++ b/code/modules/client/preference_setup/loadout/lists/clothing.dm @@ -1,5 +1,6 @@ /decl/loadout_category/clothing name = "Clothing" + uid = "loadout_category_clothing" /decl/loadout_option/clothing category = /decl/loadout_category/clothing diff --git a/code/modules/client/preference_setup/loadout/lists/earwear.dm b/code/modules/client/preference_setup/loadout/lists/earwear.dm index 9abea9dfedfd..d146a07a0892 100644 --- a/code/modules/client/preference_setup/loadout/lists/earwear.dm +++ b/code/modules/client/preference_setup/loadout/lists/earwear.dm @@ -1,5 +1,6 @@ /decl/loadout_category/ears name = "Earwear" + uid = "loadout_category_ears" // Stuff worn on the ears. Items here go in the "ears" sort_category but they must not use // the slot_r_ear_str or slot_l_ear_str as the slot, or else players will spawn with no headset. diff --git a/code/modules/client/preference_setup/loadout/lists/eyegear.dm b/code/modules/client/preference_setup/loadout/lists/eyegear.dm index 5e2c27feb80a..2ca5bad24ebc 100644 --- a/code/modules/client/preference_setup/loadout/lists/eyegear.dm +++ b/code/modules/client/preference_setup/loadout/lists/eyegear.dm @@ -1,5 +1,6 @@ /decl/loadout_category/eyes name = "Eyewear" + uid = "loadout_category_eyes" /decl/loadout_option/eyes category = /decl/loadout_category/eyes diff --git a/code/modules/client/preference_setup/loadout/lists/footwear.dm b/code/modules/client/preference_setup/loadout/lists/footwear.dm index b9990a778bac..a34826ef9d4d 100644 --- a/code/modules/client/preference_setup/loadout/lists/footwear.dm +++ b/code/modules/client/preference_setup/loadout/lists/footwear.dm @@ -1,5 +1,6 @@ /decl/loadout_category/feet name = "Footwear" + uid = "loadout_category_feet" /decl/loadout_option/shoes slot = slot_shoes_str diff --git a/code/modules/client/preference_setup/loadout/lists/gloves.dm b/code/modules/client/preference_setup/loadout/lists/gloves.dm index c923ba47b6bb..988f2ce79581 100644 --- a/code/modules/client/preference_setup/loadout/lists/gloves.dm +++ b/code/modules/client/preference_setup/loadout/lists/gloves.dm @@ -1,5 +1,6 @@ /decl/loadout_category/hands name = "Handwear" + uid = "loadout_category_hands" /decl/loadout_option/gloves cost = 2 diff --git a/code/modules/client/preference_setup/loadout/lists/headwear.dm b/code/modules/client/preference_setup/loadout/lists/headwear.dm index 08184fa964cd..eb59da87935a 100644 --- a/code/modules/client/preference_setup/loadout/lists/headwear.dm +++ b/code/modules/client/preference_setup/loadout/lists/headwear.dm @@ -1,5 +1,6 @@ /decl/loadout_category/head name = "Headwear" + uid = "loadout_category_head" /decl/loadout_option/head slot = slot_head_str diff --git a/code/modules/client/preference_setup/loadout/lists/suits.dm b/code/modules/client/preference_setup/loadout/lists/suits.dm index 660190b9bbb1..b22077b4cb14 100644 --- a/code/modules/client/preference_setup/loadout/lists/suits.dm +++ b/code/modules/client/preference_setup/loadout/lists/suits.dm @@ -1,5 +1,6 @@ /decl/loadout_category/suit name = "Suits" + uid = "loadout_category_suit" /decl/loadout_option/suit slot = slot_wear_suit_str diff --git a/code/modules/client/preference_setup/loadout/lists/uniforms.dm b/code/modules/client/preference_setup/loadout/lists/uniforms.dm index 09530e440dc8..0b81e9b454d1 100644 --- a/code/modules/client/preference_setup/loadout/lists/uniforms.dm +++ b/code/modules/client/preference_setup/loadout/lists/uniforms.dm @@ -1,5 +1,6 @@ /decl/loadout_category/uniform name = "Uniform" + uid = "loadout_category_uniform" /decl/loadout_option/uniform slot = slot_w_uniform_str diff --git a/code/modules/client/preference_setup/loadout/lists/utility.dm b/code/modules/client/preference_setup/loadout/lists/utility.dm index 6676a4ccc86f..6e99e7034e18 100644 --- a/code/modules/client/preference_setup/loadout/lists/utility.dm +++ b/code/modules/client/preference_setup/loadout/lists/utility.dm @@ -1,5 +1,6 @@ /decl/loadout_category/utility name = "Utility" + uid = "loadout_category_utility" // "Useful" items - I'm guessing things that might be used at work? /decl/loadout_option/utility diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm index d8b2da85e07e..c7a137dcb721 100644 --- a/code/modules/client/preference_setup/loadout/loadout.dm +++ b/code/modules/client/preference_setup/loadout/loadout.dm @@ -382,6 +382,8 @@ return ..() /decl/loadout_category + decl_flags = DECL_FLAG_MANDATORY_UID + uid = "loadout_category_miscellaneous" var/name = "Miscellaneous" var/max_selections = INFINITY var/list/gear = list() diff --git a/code/modules/codex/categories/_category.dm b/code/modules/codex/categories/_category.dm index 046f5b6a773e..e660bb432fbc 100644 --- a/code/modules/codex/categories/_category.dm +++ b/code/modules/codex/categories/_category.dm @@ -1,4 +1,5 @@ /decl/codex_category + abstract_type = /decl/codex_category var/name = "Generic Category" var/desc = "Some description for category's codex entry" var/list/items = list() diff --git a/code/modules/crafting/slapcrafting/_crafting_stage.dm b/code/modules/crafting/slapcrafting/_crafting_stage.dm index 50ede2c90bd8..edae1e7f2d94 100644 --- a/code/modules/crafting/slapcrafting/_crafting_stage.dm +++ b/code/modules/crafting/slapcrafting/_crafting_stage.dm @@ -1,4 +1,5 @@ /decl/crafting_stage + abstract_type = /decl/crafting_stage var/descriptor = "undefined crafted item" var/item_desc = "It's an unfinished item of some sort." var/item_icon = 'icons/obj/crafting_icons.dmi' diff --git a/code/modules/crafting/stack_recipes/_recipe.dm b/code/modules/crafting/stack_recipes/_recipe.dm index 205948de85e2..a179cb7afaac 100644 --- a/code/modules/crafting/stack_recipes/_recipe.dm +++ b/code/modules/crafting/stack_recipes/_recipe.dm @@ -15,6 +15,7 @@ */ /decl/stack_recipe abstract_type = /decl/stack_recipe + decl_flags = DECL_FLAG_MANDATORY_UID /// Descriptive name, omitting any materials etc. Taken from product if null. var/name /// Descriptive name for multiple products, uses "[name]s" if null. diff --git a/code/modules/crafting/stack_recipes/recipe_structures.dm b/code/modules/crafting/stack_recipes/recipe_structures.dm index 9fa95f7e88c3..d391e1e2d575 100644 --- a/code/modules/crafting/stack_recipes/recipe_structures.dm +++ b/code/modules/crafting/stack_recipes/recipe_structures.dm @@ -6,4 +6,5 @@ apply_material_name = FALSE required_material = /decl/material/solid/metal/chromium available_to_map_tech_level = MAP_TECH_LEVEL_SPACE - category = "furniture" \ No newline at end of file + category = "furniture" + uid = "stack_recipe_anomaly_container" \ No newline at end of file diff --git a/code/modules/crafting/stack_recipes/recipes_bricks.dm b/code/modules/crafting/stack_recipes/recipes_bricks.dm index a7dcdbc92fdb..211ef10f2f41 100644 --- a/code/modules/crafting/stack_recipes/recipes_bricks.dm +++ b/code/modules/crafting/stack_recipes/recipes_bricks.dm @@ -14,12 +14,15 @@ /decl/stack_recipe/bricks/cup result_type = /obj/item/chems/glass/handmade/cup + uid = "stack_recipe_brick_cup" /decl/stack_recipe/bricks/mug result_type = /obj/item/chems/glass/handmade/mug + uid = "stack_recipe_brick_mug" /decl/stack_recipe/bricks/bowl result_type = /obj/item/chems/glass/handmade/bowl + uid = "stack_recipe_brick_bowl" /decl/stack_recipe/bricks/fire_source abstract_type = /decl/stack_recipe/bricks/fire_source @@ -41,12 +44,15 @@ /obj/item/stack/material/log, ) difficulty = MAT_VALUE_EASY_DIY + uid = "stack_recipe_brick_firepit" /decl/stack_recipe/bricks/fire_source/kiln result_type = /obj/structure/fire_source/kiln + uid = "stack_recipe_brick_kiln" /decl/stack_recipe/bricks/fire_source/alembic result_type = /obj/structure/fire_source/heater + uid = "stack_recipe_brick_alembic" /decl/stack_recipe/bricks/furniture abstract_type = /decl/stack_recipe/bricks/furniture @@ -59,71 +65,87 @@ name = "pillar, square" result_type = /obj/structure/pillar category = "structures" + uid = "stack_recipe_brick_pillar_square" /decl/stack_recipe/bricks/furniture/pillar/narrow name = "pillar, narrow" result_type = /obj/structure/pillar/narrow + uid = "stack_recipe_brick_pillar_narrow" /decl/stack_recipe/bricks/furniture/pillar/triad name = "pillar, triad" result_type = /obj/structure/pillar/triad + uid = "stack_recipe_brick_pillar_triad" /decl/stack_recipe/bricks/furniture/pillar/round name = "pillar, round" result_type = /obj/structure/pillar/round + uid = "stack_recipe_brick_pillar_round" /decl/stack_recipe/bricks/furniture/pillar/wide_round name = "pillar, wide round" result_type = /obj/structure/pillar/wide + uid = "stack_recipe_brick_pillar_wide_round" /decl/stack_recipe/bricks/furniture/pillar/wide_square name = "pillar, wide square" - result_type = /obj/structure/pillar/wide/square + uid = "stack_recipe_brick_pillar_wide_square" /decl/stack_recipe/bricks/furniture/pillar/wide_inset name = "pillar, wide inset" result_type = /obj/structure/pillar/wide/inset + uid = "stack_recipe_brick_wide_inset" /decl/stack_recipe/bricks/furniture/pillar/pedestal name = "pedestal, square" result_type = /obj/structure/pedestal + uid = "stack_recipe_brick_pedestal_square" /decl/stack_recipe/bricks/furniture/pillar/pedestal_narrow name = "pedestal, narrow" result_type = /obj/structure/pedestal/narrow + uid = "stack_recipe_brick_pedestal_narrow" /decl/stack_recipe/bricks/furniture/pillar/pedestal_triad name = "pedestal, triad" result_type = /obj/structure/pedestal/triad + uid = "stack_recipe_brick_pedestal_triad" /decl/stack_recipe/bricks/furniture/pillar/pedestal_round name = "pedestal, round" result_type = /obj/structure/pedestal/round + uid = "stack_recipe_brick_pedestal_round" /decl/stack_recipe/bricks/furniture/fence result_type = /obj/structure/fence/brick difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_brick_fence" /decl/stack_recipe/bricks/furniture/fence_door result_type = /obj/structure/fence/door/brick difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_brick_fence_door" /decl/stack_recipe/bricks/gravestone result_type = /obj/item/gravemarker/gravestone difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_brick_gravestone" /decl/stack_recipe/bricks/fountain result_type = /obj/structure/fountain/mundane one_per_turf = TRUE on_floor = TRUE difficulty = MAT_VALUE_VERY_HARD_DIY + uid = "stack_recipe_brick_fountain" /decl/stack_recipe/bricks/fountain/well result_type = /obj/structure/reagent_dispensers/well + uid = "stack_recipe_brick_well" /decl/stack_recipe/bricks/fountain/wall result_type = /obj/structure/reagent_dispensers/well/wall_fountain + uid = "stack_recipe_brick_wall_fountain" /decl/stack_recipe/turfs/wall/brick name = "brick wall" @@ -131,23 +153,28 @@ craft_stack_types = /obj/item/stack/material/brick difficulty = MAT_VALUE_HARD_DIY validation_material = /decl/material/solid/stone/basalt + uid = "stack_recipe_brick_wall" /decl/stack_recipe/turfs/wall/brick/shutter name = "shuttered brick wall" result_type = /turf/wall/brick/shutter + uid = "stack_recipe_brick_wall_shutter" /decl/stack_recipe/turfs/floor/brick name = "cobblestone path" result_type = /turf/floor/path craft_stack_types = /obj/item/stack/material/brick validation_material = /decl/material/solid/stone/basalt + uid = "stack_recipe_brick_path_cobblestone" /decl/stack_recipe/turfs/floor/brick/herringbone name = "herringbone path" result_type = /turf/floor/path/herringbone difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_brick_path_herringbone" /decl/stack_recipe/turfs/floor/brick/running_bond name = "running bond path" result_type = /turf/floor/path/running_bond difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_brick_path_running_bond" diff --git a/code/modules/crafting/stack_recipes/recipes_cardstock.dm b/code/modules/crafting/stack_recipes/recipes_cardstock.dm index 12ef76c3ecd8..0f1a9f5a4265 100644 --- a/code/modules/crafting/stack_recipes/recipes_cardstock.dm +++ b/code/modules/crafting/stack_recipes/recipes_cardstock.dm @@ -7,48 +7,63 @@ /decl/stack_recipe/cardstock/box result_type = /obj/item/box category = "cardstock boxes" + uid = "stack_recipe_cardstock_box" /decl/stack_recipe/cardstock/box/large result_type = /obj/item/box/large + uid = "stack_recipe_cardstock_box_large" /decl/stack_recipe/cardstock/box/donut result_type = /obj/item/box/fancy/donut/empty + uid = "stack_recipe_cardstock_box_donut" /decl/stack_recipe/cardstock/box/egg result_type = /obj/item/box/fancy/egg_box/empty + uid = "stack_recipe_cardstock_box_egg" /decl/stack_recipe/cardstock/box/light_tubes result_type = /obj/item/box/lights/tubes/empty + uid = "stack_recipe_cardstock_box_tubes" /decl/stack_recipe/cardstock/box/light_bulbs result_type = /obj/item/box/lights/bulbs/empty + uid = "stack_recipe_cardstock_box_bulbs" /decl/stack_recipe/cardstock/box/mouse_traps result_type = /obj/item/box/mousetraps/empty + uid = "stack_recipe_cardstock_box_mousetraps" /decl/stack_recipe/cardstock/box/pizza result_type = /obj/item/pizzabox + uid = "stack_recipe_cardstock_box_pizza" /decl/stack_recipe/cardstock/cardborg_suit result_type = /obj/item/clothing/suit/cardborg difficulty = MAT_VALUE_EASY_DIY + uid = "stack_recipe_cardstock_cardborg_suit" /decl/stack_recipe/cardstock/cardborg_helmet result_type = /obj/item/clothing/head/cardborg difficulty = MAT_VALUE_EASY_DIY + uid = "stack_recipe_cardstock_cardborg_helmet" /decl/stack_recipe/cardstock/folder result_type = /obj/item/folder category = "folders" + uid = "stack_recipe_cardstock_folder" /decl/stack_recipe/cardstock/folder/yellow result_type = /obj/item/folder/yellow + uid = "stack_recipe_cardstock_folder_yellow" /decl/stack_recipe/cardstock/folder/cyan result_type = /obj/item/folder/cyan + uid = "stack_recipe_cardstock_folder_cyan" /decl/stack_recipe/cardstock/folder/red result_type = /obj/item/folder/red + uid = "stack_recipe_cardstock_folder_red" /decl/stack_recipe/cardstock/folder/blue result_type = /obj/item/folder/blue + uid = "stack_recipe_cardstock_folder_blue" diff --git a/code/modules/crafting/stack_recipes/recipes_fodder.dm b/code/modules/crafting/stack_recipes/recipes_fodder.dm index f6002a657768..ecba71a632ee 100644 --- a/code/modules/crafting/stack_recipes/recipes_fodder.dm +++ b/code/modules/crafting/stack_recipes/recipes_fodder.dm @@ -8,6 +8,8 @@ difficulty = MAT_VALUE_EASY_DIY recipe_skill = SKILL_BOTANY req_amount = 30 * SHEET_MATERIAL_AMOUNT // Arbitrary amount to make 20 food items. + uid = "stack_recipe_fodder_stack" /decl/stack_recipe/fodder/bale result_type = /obj/structure/haystack/bale + uid = "stack_recipe_fodder_bale" diff --git a/code/modules/crafting/stack_recipes/recipes_grass.dm b/code/modules/crafting/stack_recipes/recipes_grass.dm index 776dfb49589e..9f4774b376f5 100644 --- a/code/modules/crafting/stack_recipes/recipes_grass.dm +++ b/code/modules/crafting/stack_recipes/recipes_grass.dm @@ -13,39 +13,47 @@ return ..() /decl/stack_recipe/woven/rug - result_type = /obj/structure/rug/crafted - one_per_turf = TRUE - on_floor = TRUE - category = "furniture" + result_type = /obj/structure/rug/crafted + one_per_turf = TRUE + on_floor = TRUE + category = "furniture" + uid = "stack_recipe_woven_rug" /decl/stack_recipe/woven/basket - result_type = /obj/item/basket + result_type = /obj/item/basket + uid = "stack_recipe_woven_basket" /decl/stack_recipe/woven/large_basket - result_type = /obj/item/basket/large + result_type = /obj/item/basket/large + uid = "stack_recipe_woven_basket_large" /decl/stack_recipe/woven/banner - result_type = /obj/item/banner/woven + result_type = /obj/item/banner/woven + uid = "stack_recipe_woven_banner" /decl/stack_recipe/tile/woven - name = "woven roof tile" - craft_stack_types = /obj/item/stack/material/bundle - required_material = /decl/material/solid/organic/plantmatter/grass/dry - result_type = /obj/item/stack/tile/roof/woven + name = "woven roof tile" + craft_stack_types = /obj/item/stack/material/bundle + required_material = /decl/material/solid/organic/plantmatter/grass/dry + result_type = /obj/item/stack/tile/roof/woven forbidden_craft_stack_types = null + uid = "stack_recipe_woven_roof_tile" /decl/stack_recipe/tile/woven/floor - name = "woven floor tile" - result_type = /obj/item/stack/tile/woven + name = "woven floor tile" + result_type = /obj/item/stack/tile/woven + uid = "stack_recipe_woven_floor_tile" /decl/stack_recipe/woven/bowstring - result_type = /obj/item/bowstring - difficulty = MAT_VALUE_VERY_HARD_DIY + result_type = /obj/item/bowstring + difficulty = MAT_VALUE_VERY_HARD_DIY // TODO: cord - craft_stack_types = list( + craft_stack_types = list( /obj/item/stack/material/bundle, /obj/item/stack/material/thread ) + uid = "stack_recipe_woven_bowstring" /decl/stack_recipe/woven/dummy - result_type = /obj/item/training_dummy/straw + result_type = /obj/item/training_dummy/straw + uid = "stack_recipe_woven_dummy" diff --git a/code/modules/crafting/stack_recipes/recipes_hardness.dm b/code/modules/crafting/stack_recipes/recipes_hardness.dm index 5f8f43e2a4b7..4a8c9a1998a1 100644 --- a/code/modules/crafting/stack_recipes/recipes_hardness.dm +++ b/code/modules/crafting/stack_recipes/recipes_hardness.dm @@ -6,15 +6,19 @@ /decl/stack_recipe/hardness/improvised_armour result_type = /obj/item/clothing/suit/armor/crafted category = "improvised armor" + uid = "stack_recipe_improvised_suit" /decl/stack_recipe/hardness/improvised_armour/armguards result_type = /obj/item/clothing/gloves/armguards/craftable + uid = "stack_recipe_improvised_armguards" /decl/stack_recipe/hardness/improvised_armour/legguards result_type = /obj/item/clothing/shoes/legguards/craftable + uid = "stack_recipe_improvised_legguards" /decl/stack_recipe/hardness/improvised_armour/gauntlets result_type = /obj/item/clothing/gloves/thick/craftable + uid = "stack_recipe_improvised_gauntlets" /decl/stack_recipe/hardness/utensils abstract_type = /decl/stack_recipe/hardness/utensils @@ -22,25 +26,31 @@ /decl/stack_recipe/hardness/utensils/fork result_type = /obj/item/utensil/fork + uid = "stack_recipe_fork" /decl/stack_recipe/hardness/utensils/chopsticks result_type = /obj/item/utensil/chopsticks + uid = "stack_recipe_chopsticks" /decl/stack_recipe/hardness/utensils/knife result_type = /obj/item/utensil/knife difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_knife" /decl/stack_recipe/hardness/utensils/spoon result_type = /obj/item/utensil/spoon + uid = "stack_recipe_spoon" /decl/stack_recipe/hardness/bell result_type = /obj/item/bell available_to_map_tech_level = MAP_TECH_LEVEL_SPACE // similar to boxes and bats, not thematically appropriate to low tech + uid = "stack_recipe_bell" /decl/stack_recipe/hardness/blade result_type = /obj/item/butterflyblade difficulty = MAT_VALUE_NORMAL_DIY category = "weapons" + uid = "stack_recipe_butterfly_blade" /decl/stack_recipe/hardness/urn result_type = /obj/item/urn @@ -57,31 +67,38 @@ /obj/item/stack/material/slab, /obj/item/stack/material/plank ) + uid = "stack_recipe_urn" /decl/stack_recipe/hardness/drill_head result_type = /obj/item/drill_head difficulty = MAT_VALUE_EASY_DIY available_to_map_tech_level = MAP_TECH_LEVEL_SPACE + uid = "stack_recipe_drill_head" /decl/stack_recipe/hardness/baseball_bat result_type = /obj/item/baseball_bat difficulty = MAT_VALUE_HARD_DIY available_to_map_tech_level = MAP_TECH_LEVEL_SPACE // similar to boxes, not thematically appropriate to low tech category = "weapons" + uid = "stack_recipe_baseball_bat" /decl/stack_recipe/hardness/ashtray result_type = /obj/item/ashtray + uid = "stack_recipe_ashtray" /decl/stack_recipe/hardness/mortar - result_type = /obj/item/chems/glass/mortar + result_type = /obj/item/chems/glass/mortar + uid = "stack_recipe_mortar" /decl/stack_recipe/hardness/clipboard result_type = /obj/item/clipboard available_to_map_tech_level = MAP_TECH_LEVEL_SPACE + uid = "stack_recipe_clipboard" /decl/stack_recipe/hardness/cross result_type = /obj/item/cross on_floor = TRUE + uid = "stack_recipe_cross" /decl/stack_recipe/hardness/surgical abstract_type = /decl/stack_recipe/hardness/surgical @@ -91,18 +108,24 @@ /decl/stack_recipe/hardness/surgical/retractor result_type = /obj/item/ancient_surgery/retractor + uid = "stack_recipe_ancient_retractor" /decl/stack_recipe/hardness/surgical/cautery result_type = /obj/item/ancient_surgery/cautery + uid = "stack_recipe_ancient_cautery" /decl/stack_recipe/hardness/surgical/bonesetter result_type = /obj/item/ancient_surgery/bonesetter + uid = "stack_recipe_ancient_bonesetter" /decl/stack_recipe/hardness/surgical/scalpel result_type = /obj/item/ancient_surgery/scalpel + uid = "stack_recipe_ancient_scalpel" /decl/stack_recipe/hardness/surgical/forceps result_type = /obj/item/ancient_surgery/forceps + uid = "stack_recipe_ancient_forceps" /decl/stack_recipe/hardness/surgical/bonesaw result_type = /obj/item/ancient_surgery/bonesaw + uid = "stack_recipe_ancient_bonesaw" diff --git a/code/modules/crafting/stack_recipes/recipes_hardness_integrity.dm b/code/modules/crafting/stack_recipes/recipes_hardness_integrity.dm index 57fc74fddf57..37152d1f6831 100644 --- a/code/modules/crafting/stack_recipes/recipes_hardness_integrity.dm +++ b/code/modules/crafting/stack_recipes/recipes_hardness_integrity.dm @@ -4,15 +4,18 @@ /decl/stack_recipe/hardness/integrity/sign result_type = /obj/item/banner/sign + uid = "stack_recipe_sign" /decl/stack_recipe/hardness/integrity/buckler result_type = /obj/item/shield_base/buckler difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_buckler_base" // TODO: forging /decl/stack_recipe/hardness/integrity/shield_fasteners result_type = /obj/item/shield_fasteners difficulty = MAT_VALUE_VERY_HARD_DIY + uid = "stack_recipe_shield_fastener" /decl/stack_recipe/hardness/integrity/furniture abstract_type = /decl/stack_recipe/hardness/integrity/furniture @@ -24,92 +27,119 @@ /decl/stack_recipe/hardness/integrity/furniture/door result_type = /obj/structure/door req_amount = 5 * SHEET_MATERIAL_AMOUNT // Arbitrary value since doors return weird matter values. + uid = "stack_recipe_door" /decl/stack_recipe/hardness/integrity/furniture/barricade result_type = /obj/structure/barricade + uid = "stack_recipe_barricade" /decl/stack_recipe/hardness/integrity/furniture/banner_frame result_type = /obj/structure/banner_frame + uid = "stack_recipe_banner_frame" /decl/stack_recipe/hardness/integrity/furniture/sign_hook result_type = /obj/structure/banner_frame/sign + uid = "stack_recipe_sign_hook" /decl/stack_recipe/hardness/integrity/furniture/sign_hook/wall result_type = /obj/structure/banner_frame/sign/wall + uid = "stack_recipe_sign_hook_wall" /decl/stack_recipe/hardness/integrity/furniture/coatrack result_type = /obj/structure/coatrack + uid = "stack_recipe_coatrack" /decl/stack_recipe/hardness/integrity/furniture/stool result_type = /obj/item/stool category = "seating" + uid = "stack_recipe_stool" /decl/stack_recipe/hardness/integrity/furniture/bar_stool result_type = /obj/item/stool/bar category = "seating" + uid = "stack_recipe_stool_bar" /decl/stack_recipe/hardness/integrity/furniture/bench result_type = /obj/structure/chair/bench category = "seating" + uid = "stack_recipe_bench" /decl/stack_recipe/hardness/integrity/furniture/bench/pew result_type = /obj/structure/chair/bench/pew + uid = "stack_recipe_bench_pew" /decl/stack_recipe/hardness/integrity/furniture/bench/lounge result_type = /obj/structure/chair/bench/lounge difficulty = MAT_VALUE_VERY_HARD_DIY + uid = "stack_recipe_bench_lounge" /decl/stack_recipe/hardness/integrity/furniture/closet result_type = /obj/structure/closet + uid = "stack_recipe_closet" /decl/stack_recipe/hardness/integrity/furniture/tank_dispenser result_type = /obj/structure/tank_rack/empty available_to_map_tech_level = MAP_TECH_LEVEL_SPACE + uid = "stack_recipe_tank_dispenser" /decl/stack_recipe/hardness/integrity/furniture/coffin result_type = /obj/structure/closet/coffin + uid = "stack_recipe_coffin" /decl/stack_recipe/hardness/integrity/furniture/chair result_type = /obj/structure/chair category = "seating" + uid = "stack_recipe_chair" /decl/stack_recipe/hardness/integrity/furniture/chair/office result_type = /obj/structure/chair/office/comfy/unpadded available_to_map_tech_level = MAP_TECH_LEVEL_SPACE + uid = "stack_recipe_chair_office" /decl/stack_recipe/hardness/integrity/furniture/chair/comfy result_type = /obj/structure/chair/comfy/unpadded + uid = "stack_recipe_chair_comfy" /decl/stack_recipe/hardness/integrity/furniture/chair/arm result_type = /obj/structure/chair/armchair/unpadded + uid = "stack_recipe_chair_comfy_arm" /decl/stack_recipe/hardness/integrity/furniture/chair/roundedchair result_type = /obj/structure/chair/rounded + uid = "stack_recipe_chair_rounded" /decl/stack_recipe/hardness/integrity/furniture/chair/backed result_type = /obj/structure/chair/backed + uid = "stack_recipe_chair_backed" /decl/stack_recipe/hardness/integrity/furniture/chair/slatted result_type = /obj/structure/chair/slatted + uid = "stack_recipe_chair_slatted" /decl/stack_recipe/hardness/integrity/furniture/drying_rack result_type = /obj/structure/drying_rack + uid = "stack_recipe_drying_rack" /decl/stack_recipe/hardness/integrity/lock result_type = /obj/item/lock_construct + uid = "stack_recipe_lock_construct" /decl/stack_recipe/hardness/integrity/lockpick result_type = /obj/item/lockpick + uid = "stack_recipe_lockpick" /decl/stack_recipe/hardness/integrity/key result_type = /obj/item/key + uid = "stack_recipe_key" /decl/stack_recipe/hardness/integrity/keyring result_type = /obj/item/keyring + uid = "stack_recipe_keyring" /decl/stack_recipe/hardness/integrity/rod result_type = /obj/item/stack/material/rods difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_rod" /decl/stack_recipe/hardness/integrity/nonflammable abstract_type = /decl/stack_recipe/hardness/integrity/nonflammable @@ -123,8 +153,10 @@ result_type = /obj/item/wall_sconce difficulty = MAT_VALUE_NORMAL_DIY available_to_map_tech_level = MAP_TECH_LEVEL_MEDIEVAL + uid = "stack_recipe_wall_sconce" /decl/stack_recipe/hardness/integrity/nonflammable/lantern result_type = /obj/item/flame/fuelled/lantern difficulty = MAT_VALUE_HARD_DIY - available_to_map_tech_level = MAP_TECH_LEVEL_MEDIEVAL \ No newline at end of file + available_to_map_tech_level = MAP_TECH_LEVEL_MEDIEVAL + uid = "stack_recipe_lantern" \ No newline at end of file diff --git a/code/modules/crafting/stack_recipes/recipes_items.dm b/code/modules/crafting/stack_recipes/recipes_items.dm index e09b5b933cf9..26797b0b3e8e 100644 --- a/code/modules/crafting/stack_recipes/recipes_items.dm +++ b/code/modules/crafting/stack_recipes/recipes_items.dm @@ -5,21 +5,25 @@ required_material = /decl/material/solid/metal/aluminium available_to_map_tech_level = MAP_TECH_LEVEL_SPACE category = "weapons" + uid = "stack_recipe_chem_grenade" /decl/stack_recipe/candle result_type = /obj/item/flame/candle/handmade difficulty = MAT_VALUE_EASY_DIY required_material = /decl/material/solid/organic/wax + uid = "stack_recipe_candle" /decl/stack_recipe/scroll name = "scroll" result_type = /obj/item/paper/scroll required_material = /decl/material/solid/organic/paper + uid = "stack_recipe_scroll" /decl/stack_recipe/paper_sheets name = "sheet of paper" result_type = /obj/item/paper required_material = /decl/material/solid/organic/paper + uid = "stack_recipe_paper_sheet" /decl/stack_recipe/paper_sheets/spawn_result(mob/user, location, amount, decl/material/mat, decl/material/reinf_mat, paint_color, spent_type, spent_amount = 1) . = ..() @@ -44,15 +48,19 @@ /decl/stack_recipe/ring result_type = /obj/item/clothing/gloves/ring validation_material = /decl/material/solid/metal/silver + uid = "stack_recipe_ring" /decl/stack_recipe/ring/thin name = "ring, thin" result_type = /obj/item/clothing/gloves/ring/thin + uid = "stack_recipe_ring_thin" /decl/stack_recipe/ring/thick name = "ring, thick" result_type = /obj/item/clothing/gloves/ring/thick + uid = "stack_recipe_ring_thick" /decl/stack_recipe/ring/split name = "ring, split" - result_type = /obj/item/clothing/gloves/ring/split \ No newline at end of file + result_type = /obj/item/clothing/gloves/ring/split + uid = "stack_recipe_ring_split" \ No newline at end of file diff --git a/code/modules/crafting/stack_recipes/recipes_logs.dm b/code/modules/crafting/stack_recipes/recipes_logs.dm index 3dadcadb4248..3432f61f802c 100644 --- a/code/modules/crafting/stack_recipes/recipes_logs.dm +++ b/code/modules/crafting/stack_recipes/recipes_logs.dm @@ -7,6 +7,7 @@ /decl/stack_recipe/logs/travois result_type = /obj/structure/travois difficulty = MAT_VALUE_EASY_DIY + uid = "stack_recipe_log_travois" /decl/stack_recipe/turfs/wall/logs name = "log wall" @@ -15,26 +16,31 @@ forbidden_craft_stack_types = /obj/item/stack/material/ore validation_material = /decl/material/solid/organic/wood/oak difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_log_wall" /decl/stack_recipe/turfs/wall/logs/shutter name = "shuttered log wall" result_type = /turf/wall/log/shutter + uid = "stack_recipe_log_wall_shutter" /decl/stack_recipe/logs/wall_frame result_type = /obj/structure/wall_frame/log difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_log_wall_frame" /decl/stack_recipe/logs/furniture - abstract_type = /decl/stack_recipe/logs/furniture - one_per_turf = TRUE - on_floor = TRUE - difficulty = MAT_VALUE_HARD_DIY - category = "furniture" + abstract_type = /decl/stack_recipe/logs/furniture + one_per_turf = TRUE + on_floor = TRUE + difficulty = MAT_VALUE_HARD_DIY + category = "furniture" /decl/stack_recipe/logs/furniture/fence - result_type = /obj/structure/fence/palisade - difficulty = MAT_VALUE_NORMAL_DIY + result_type = /obj/structure/fence/palisade + difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_log_palisade" /decl/stack_recipe/logs/furniture/fence_door - result_type = /obj/structure/fence/door/palisade - difficulty = MAT_VALUE_NORMAL_DIY + result_type = /obj/structure/fence/door/palisade + difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_log_palisade_door" diff --git a/code/modules/crafting/stack_recipes/recipes_opacity.dm b/code/modules/crafting/stack_recipes/recipes_opacity.dm index c712344f2464..df4d436efb79 100644 --- a/code/modules/crafting/stack_recipes/recipes_opacity.dm +++ b/code/modules/crafting/stack_recipes/recipes_opacity.dm @@ -16,6 +16,7 @@ one_per_turf = TRUE result_type = /obj/structure/window allow_multiple_craft = FALSE + uid = "stack_recipe_window_full" /decl/stack_recipe/opacity/fullwindow/can_make(mob/user) . = ..() @@ -36,6 +37,7 @@ result_type = /obj/structure/window one_per_turf = FALSE allow_multiple_craft = FALSE + uid = "stack_recipe_window_border" /decl/stack_recipe/opacity/borderwindow/can_make(mob/user) . = ..() @@ -54,6 +56,7 @@ /decl/stack_recipe/opacity/windoor result_type = /obj/structure/windoor_assembly allow_multiple_craft = FALSE + uid = "stack_recipe_window_door" /decl/stack_recipe/opacity/windoor/can_make(mob/user) . = ..() diff --git a/code/modules/crafting/stack_recipes/recipes_panels.dm b/code/modules/crafting/stack_recipes/recipes_panels.dm index dc21533bd6a7..6c8b00e3f669 100644 --- a/code/modules/crafting/stack_recipes/recipes_panels.dm +++ b/code/modules/crafting/stack_recipes/recipes_panels.dm @@ -7,10 +7,12 @@ /decl/stack_recipe/panels/bag result_type = /obj/item/bag/flimsy on_floor = TRUE + uid = "stack_recipe_panel_flimsy_bag" /decl/stack_recipe/panels/ivbag result_type = /obj/item/chems/ivbag difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_panel_iv_bag" /decl/stack_recipe/panels/cartridge difficulty = MAT_VALUE_HARD_DIY @@ -20,18 +22,22 @@ /decl/stack_recipe/panels/cartridge/small name = "small dispenser cartridge" result_type = /obj/item/chems/chem_disp_cartridge/small + uid = "stack_recipe_panel_dispenser_cartridge_small" /decl/stack_recipe/panels/cartridge/medium name = "medium dispenser cartridge" result_type = /obj/item/chems/chem_disp_cartridge/medium + uid = "stack_recipe_panel_dispenser_cartridge_medium" /decl/stack_recipe/panels/cartridge/large name = "large dispenser cartridge" result_type = /obj/item/chems/chem_disp_cartridge + uid = "stack_recipe_panel_dispenser_cartridge_large" /decl/stack_recipe/panels/hazard_cone result_type = /obj/item/caution/cone on_floor = TRUE + uid = "stack_recipe_panel_caution_cone" /decl/stack_recipe/panels/furniture abstract_type = /decl/stack_recipe/panels/furniture @@ -42,6 +48,8 @@ /decl/stack_recipe/panels/furniture/crate result_type = /obj/structure/closet/crate/plastic + uid = "stack_recipe_panel_crate" /decl/stack_recipe/panels/furniture/flaps result_type = /obj/structure/flaps + uid = "stack_recipe_panel_flaps" diff --git a/code/modules/crafting/stack_recipes/recipes_planks.dm b/code/modules/crafting/stack_recipes/recipes_planks.dm index a7114078dda1..f965aaa845e9 100644 --- a/code/modules/crafting/stack_recipes/recipes_planks.dm +++ b/code/modules/crafting/stack_recipes/recipes_planks.dm @@ -5,72 +5,95 @@ /decl/stack_recipe/planks/sandals result_type = /obj/item/clothing/shoes/sandal + uid = "stack_recipe_plank_sandals" /decl/stack_recipe/planks/crossbowframe result_type = /obj/item/crossbowframe difficulty = MAT_VALUE_VERY_HARD_DIY category = "weapons" + uid = "stack_recipe_plank_crossbowframe" /decl/stack_recipe/planks/zipgunframe result_type = /obj/item/zipgunframe difficulty = MAT_VALUE_VERY_HARD_DIY available_to_map_tech_level = MAP_TECH_LEVEL_SPACE category = "weapons" + uid = "stack_recipe_plank_zipgunframe" /decl/stack_recipe/planks/coilgun result_type = /obj/item/coilgun_assembly difficulty = MAT_VALUE_VERY_HARD_DIY available_to_map_tech_level = MAP_TECH_LEVEL_SPACE + uid = "stack_recipe_plank_coilgunassembly" /decl/stack_recipe/planks/stick result_type = /obj/item/stick difficulty = MAT_VALUE_EASY_DIY + uid = "stack_recipe_plank_stick" /decl/stack_recipe/planks/staff result_type = /obj/item/staff difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_plank_staff" /decl/stack_recipe/planks/cane result_type = /obj/item/cane difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_plank_cane" /decl/stack_recipe/planks/bucket result_type = /obj/item/chems/glass/bucket/wood difficulty = MAT_VALUE_EASY_DIY + uid = "stack_recipe_plank_bucket" /decl/stack_recipe/planks/bolt result_type = /obj/item/stack/material/bow_ammo/bolt difficulty = MAT_VALUE_EASY_DIY + uid = "stack_recipe_plank_bolt" /decl/stack_recipe/planks/arrow result_type = /obj/item/stack/material/bow_ammo/arrow difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_plank_arrow" /decl/stack_recipe/planks/bow result_type = /obj/item/gun/launcher/bow/crafted difficulty = MAT_VALUE_VERY_HARD_DIY + uid = "stack_recipe_plank_bow" /decl/stack_recipe/planks/bow/fancy name = "decorated bow" result_type = /obj/item/gun/launcher/bow/fancy/crafted + uid = "stack_recipe_plank_bow_fancy" /decl/stack_recipe/planks/noticeboard result_type = /obj/structure/noticeboard on_floor = TRUE difficulty = MAT_VALUE_HARD_DIY set_dir_on_spawn = FALSE + uid = "stack_recipe_plank_noticeboard" + +/decl/stack_recipe/planks/noticeboard/spawn_result(mob/user, location, amount, decl/material/mat, decl/material/reinf_mat, paint_color, spent_type, spent_amount = 1) + . = ..() + if(user) + for(var/obj/structure/noticeboard/board in .) + board.set_dir(global.reverse_dir[user.dir]) /decl/stack_recipe/planks/cup result_type = /obj/item/chems/glass/handmade/cup + uid = "stack_recipe_plank_handmade_cup" /decl/stack_recipe/planks/mug result_type = /obj/item/chems/glass/handmade/mug + uid = "stack_recipe_plank_handmade_mug" /decl/stack_recipe/planks/bowl result_type = /obj/item/chems/glass/handmade/bowl + uid = "stack_recipe_plank_handmade_bowl" /decl/stack_recipe/planks/buckler result_type = /obj/item/shield_base/buckler + uid = "stack_recipe_plank_buckler_base" /decl/stack_recipe/planks/fancy abstract_type = /decl/stack_recipe/planks/fancy @@ -78,25 +101,24 @@ /decl/stack_recipe/planks/fancy/decanter result_type = /obj/item/chems/glass/handmade/fancy/decanter + uid = "stack_recipe_plank_handmade_fancy_decanter" /decl/stack_recipe/planks/fancy/goblet result_type = /obj/item/chems/glass/handmade/fancy/goblet + uid = "stack_recipe_plank_handmade_fancy_goblet" /decl/stack_recipe/planks/fancy/bowl result_type = /obj/item/chems/glass/handmade/fancy/bowl + uid = "stack_recipe_plank_handmade_fancy_bowl" /decl/stack_recipe/planks/fancy/vase result_type = /obj/item/chems/glass/handmade/fancy/vase + uid = "stack_recipe_plank_handmade_fancy_vase" /decl/stack_recipe/planks/fancy/vase_fluted name = "vase, fluted" result_type = /obj/item/chems/glass/handmade/fancy/vase/fluted - -/decl/stack_recipe/planks/noticeboard/spawn_result(mob/user, location, amount, decl/material/mat, decl/material/reinf_mat, paint_color, spent_type, spent_amount = 1) - . = ..() - if(user) - for(var/obj/structure/noticeboard/board in .) - board.set_dir(global.reverse_dir[user.dir]) + uid = "stack_recipe_plank_handmade_fancy_vase_fluted" /decl/stack_recipe/planks/prosthetic abstract_type = /decl/stack_recipe/planks/prosthetic @@ -114,27 +136,35 @@ /decl/stack_recipe/planks/prosthetic/left_arm result_type = /obj/item/organ/external/arm + uid = "stack_recipe_plank_prosthetic_left_arm" /decl/stack_recipe/planks/prosthetic/right_arm result_type = /obj/item/organ/external/arm/right + uid = "stack_recipe_plank_prosthetic_right_arm" /decl/stack_recipe/planks/prosthetic/left_leg result_type = /obj/item/organ/external/leg + uid = "stack_recipe_plank_prosthetic_left_leg" /decl/stack_recipe/planks/prosthetic/right_leg result_type = /obj/item/organ/external/leg/right + uid = "stack_recipe_plank_prosthetic_right_leg" /decl/stack_recipe/planks/prosthetic/left_hand result_type = /obj/item/organ/external/hand + uid = "stack_recipe_plank_prosthetic_left_hand" /decl/stack_recipe/planks/prosthetic/right_hand result_type = /obj/item/organ/external/hand/right + uid = "stack_recipe_plank_prosthetic_right_hand" /decl/stack_recipe/planks/prosthetic/left_foot result_type = /obj/item/organ/external/foot + uid = "stack_recipe_plank_prosthetic_left_foot" /decl/stack_recipe/planks/prosthetic/right_foot result_type = /obj/item/organ/external/foot/right + uid = "stack_recipe_plank_prosthetic_right_foot" /decl/stack_recipe/planks/furniture abstract_type = /decl/stack_recipe/planks/furniture @@ -144,115 +174,146 @@ category = "furniture" /decl/stack_recipe/planks/furniture/simple_bed - result_type = /obj/structure/bed/simple/crafted + result_type = /obj/structure/bed/simple/crafted + uid = "stack_recipe_plank_bed_simple" /decl/stack_recipe/planks/furniture/compost_bin result_type = /obj/structure/reagent_dispensers/compost_bin + uid = "stack_recipe_plank_compost_bin" /decl/stack_recipe/planks/furniture/filter_stand result_type = /obj/structure/filter_stand + uid = "stack_recipe_plank_filter_stand" /decl/stack_recipe/planks/furniture/produce_bin result_type = /obj/structure/produce_bin + uid = "stack_recipe_plank_produce_bin" /decl/stack_recipe/planks/furniture/coffin result_type = /obj/structure/closet/coffin/wooden + uid = "stack_recipe_plank_coffin" /decl/stack_recipe/planks/furniture/sofa name = "sofa, middle" result_type = /obj/structure/bed/sofa/middle/unpadded category = "seating" + uid = "stack_recipe_plank_sofa_middle" /decl/stack_recipe/planks/furniture/sofa/left name = "sofa, left" result_type = /obj/structure/bed/sofa/left/unpadded + uid = "stack_recipe_plank_sofa_left" /decl/stack_recipe/planks/furniture/sofa/right name = "sofa, right" result_type = /obj/structure/bed/sofa/right/unpadded + uid = "stack_recipe_plank_sofa_right" /decl/stack_recipe/planks/furniture/bookcase result_type = /obj/structure/bookcase + uid = "stack_recipe_plank_bookcase" /decl/stack_recipe/planks/furniture/book_cart result_type = /obj/structure/bookcase/cart + uid = "stack_recipe_plank_bookcart" /decl/stack_recipe/planks/furniture/chair result_type = /obj/structure/chair/wood category = "seating" + uid = "stack_recipe_plank_chair" /decl/stack_recipe/planks/furniture/chair/fancy result_type = /obj/structure/chair/wood/wings + uid = "stack_recipe_plank_chair_fancy" /decl/stack_recipe/planks/furniture/chest result_type = /obj/structure/closet/crate/chest + uid = "stack_recipe_plank_chest" /decl/stack_recipe/planks/furniture/meathook result_type = /obj/structure/meat_hook + uid = "stack_recipe_plank_meathook" /decl/stack_recipe/planks/furniture/meathook/improvised result_type = /obj/structure/meat_hook/improvised difficulty = MAT_VALUE_EASY_DIY + uid = "stack_recipe_plank_meathook_improvised" /decl/stack_recipe/planks/furniture/spinning_wheel result_type = /obj/structure/working/spinning_wheel difficulty = MAT_VALUE_VERY_HARD_DIY + uid = "stack_recipe_plank_spinning_wheel" /decl/stack_recipe/planks/furniture/loom result_type = /obj/structure/working/loom difficulty = MAT_VALUE_VERY_HARD_DIY + uid = "stack_recipe_plank_loom" /decl/stack_recipe/planks/furniture/twisting_bench result_type = /obj/structure/working/spinning_wheel/twisting_bench difficulty = MAT_VALUE_VERY_HARD_DIY + uid = "stack_recipe_plank_twisting_bench" /decl/stack_recipe/planks/furniture/butter_churn result_type = /obj/structure/working/butter_churn difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_plank_butter_churn" /decl/stack_recipe/planks/furniture/cabinet result_type = /obj/structure/closet/cabinet/wooden difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_plank_cabinet" /decl/stack_recipe/planks/furniture/barrel result_type = /obj/structure/reagent_dispensers/barrel/crafted difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_plank_barrel" /decl/stack_recipe/planks/furniture/barrel/cask result_type = /obj/structure/reagent_dispensers/barrel/cask/crafted + uid = "stack_recipe_plank_cask" /decl/stack_recipe/planks/furniture/barrel/cask_rack result_type = /obj/structure/cask_rack + uid = "stack_recipe_plank_cask_rack" /decl/stack_recipe/planks/furniture/barrel/large_cask_rack name = "cask rack, large" result_type = /obj/structure/cask_rack/large + uid = "stack_recipe_plank_cask_rack_large" /decl/stack_recipe/planks/furniture/table_frame result_type = /obj/structure/table/frame category = "furniture" difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_plank_table_frame" /decl/stack_recipe/planks/furniture/gravemarker result_type = /obj/item/gravemarker difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_plank_gravemarker" /decl/stack_recipe/planks/furniture/divider result_type = /obj/structure/divider difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_plank_divider" /decl/stack_recipe/planks/furniture/armor_stand result_type = /obj/structure/armor_stand difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_plank_armor_stand" /decl/stack_recipe/planks/furniture/target_stake result_type = /obj/structure/target_stake difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_plank_target_stake" /decl/stack_recipe/planks/furniture/fence result_type = /obj/structure/fence/plank difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_plank_fence" /decl/stack_recipe/planks/furniture/fence_door result_type = /obj/structure/fence/door/plank difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_plank_fence_door" diff --git a/code/modules/crafting/stack_recipes/recipes_reinforced.dm b/code/modules/crafting/stack_recipes/recipes_reinforced.dm index 6a918cac0ef8..f441c3e5b36b 100644 --- a/code/modules/crafting/stack_recipes/recipes_reinforced.dm +++ b/code/modules/crafting/stack_recipes/recipes_reinforced.dm @@ -11,13 +11,16 @@ on_floor = FALSE available_to_map_tech_level = MAP_TECH_LEVEL_SPACE category = "furniture" + uid = "stack_recipe_reinforced_aicore" /decl/stack_recipe/reinforced/crate result_type = /obj/structure/closet/crate category = "furniture" + uid = "stack_recipe_reinforced_crate" /decl/stack_recipe/reinforced/grip result_type = /obj/item/butterflyhandle difficulty = MAT_VALUE_NORMAL_DIY one_per_turf = FALSE category = "weapons" + uid = "stack_recipe_reinforced_butterflyhandle" diff --git a/code/modules/crafting/stack_recipes/recipes_rods.dm b/code/modules/crafting/stack_recipes/recipes_rods.dm index 7458e9389290..619c0c563b43 100644 --- a/code/modules/crafting/stack_recipes/recipes_rods.dm +++ b/code/modules/crafting/stack_recipes/recipes_rods.dm @@ -17,57 +17,69 @@ on_floor = FALSE difficulty = MAT_VALUE_EASY_DIY category = "items" + uid = "stack_recipe_rod_stick" /decl/stack_recipe/rods/stick/staff result_type = /obj/item/staff difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_rod_staff" /decl/stack_recipe/rods/stick/cane result_type = /obj/item/cane difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_rod_cane" /decl/stack_recipe/rods/railing result_type = /obj/structure/railing + uid = "stack_recipe_rod_railing" /decl/stack_recipe/rods/ladder result_type = /obj/structure/ladder on_floor = FALSE required_wall_support_value = 10 + uid = "stack_recipe_rod_ladder" /decl/stack_recipe/rods/girder result_type = /obj/structure/girder required_wall_support_value = 10 available_to_map_tech_level = MAP_TECH_LEVEL_SPACE + uid = "stack_recipe_rod_girder" /decl/stack_recipe/rods/wall_frame result_type = /obj/structure/wall_frame available_to_map_tech_level = MAP_TECH_LEVEL_SPACE + uid = "stack_recipe_rod_wall_frame" /decl/stack_recipe/rods/table_frame result_type = /obj/structure/table/frame category = "furniture" + uid = "stack_recipe_rod_table_frame" /decl/stack_recipe/rods/rack result_type = /obj/structure/rack category = "furniture" + uid = "stack_recipe_rod_rack" /decl/stack_recipe/rods/butcher_hook result_type = /obj/structure/meat_hook one_per_turf = TRUE difficulty = MAT_VALUE_NORMAL_DIY category = "furniture" + uid = "stack_recipe_rod_meat_hook" /decl/stack_recipe/rods/bed result_type = /obj/structure/bed required_integrity = 50 required_min_hardness = MAT_VALUE_FLEXIBLE + 10 category = "furniture" + uid = "stack_recipe_rod_bed" /decl/stack_recipe/rods/machine result_type = /obj/machinery/constructable_frame/machine_frame req_amount = 5 * SHEET_MATERIAL_AMOUNT // Arbitrary value since machines don't handle matter properly yet. required_material = /decl/material/solid/metal/steel available_to_map_tech_level = MAP_TECH_LEVEL_SPACE + uid = "stack_recipe_rod_machineframe" /decl/stack_recipe/rods/machine/spawn_result(mob/user, location, amount, decl/material/mat, decl/material/reinf_mat, paint_color, spent_type, spent_amount = 1) return ..(user, location, amount, null, null, paint_color, spent_type, spent_amount) @@ -76,19 +88,22 @@ result_type = /obj/structure/grille one_per_turf = TRUE difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_rod_grille" /decl/stack_recipe/rods/furniture - abstract_type = /decl/stack_recipe/rods/furniture - one_per_turf = TRUE - on_floor = TRUE - difficulty = MAT_VALUE_HARD_DIY - category = "furniture" + abstract_type = /decl/stack_recipe/rods/furniture + one_per_turf = TRUE + on_floor = TRUE + difficulty = MAT_VALUE_HARD_DIY + category = "furniture" /decl/stack_recipe/rods/furniture/fence - result_type = /obj/structure/fence/stick - difficulty = MAT_VALUE_NORMAL_DIY + result_type = /obj/structure/fence/stick + difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_rod_fence" /decl/stack_recipe/rods/furniture/fence_door - result_type = /obj/structure/fence/door/stick - difficulty = MAT_VALUE_NORMAL_DIY + result_type = /obj/structure/fence/door/stick + difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_rod_fence_door" diff --git a/code/modules/crafting/stack_recipes/recipes_soft.dm b/code/modules/crafting/stack_recipes/recipes_soft.dm index e7e6d12d924f..8775464ed9d6 100644 --- a/code/modules/crafting/stack_recipes/recipes_soft.dm +++ b/code/modules/crafting/stack_recipes/recipes_soft.dm @@ -14,40 +14,45 @@ /decl/stack_recipe/soft/teapot result_type = /obj/item/chems/glass/handmade/teapot + uid = "stack_recipe_soft_handmade_teapot" /decl/stack_recipe/soft/cup result_type = /obj/item/chems/glass/handmade/cup + uid = "stack_recipe_soft_handmade_cup" /decl/stack_recipe/soft/mug result_type = /obj/item/chems/glass/handmade/mug + uid = "stack_recipe_soft_handmade_mug" /decl/stack_recipe/soft/vase result_type = /obj/item/chems/glass/handmade/vase + uid = "stack_recipe_soft_handmade_vase" /decl/stack_recipe/soft/bowl result_type = /obj/item/chems/glass/handmade/bowl + uid = "stack_recipe_soft_handmade_bowl" /decl/stack_recipe/soft/jar result_type = /obj/item/chems/glass/handmade/jar + uid = "stack_recipe_soft_handmade_jar" /decl/stack_recipe/soft/bottle result_type = /obj/item/chems/glass/handmade/bottle + uid = "stack_recipe_soft_handmade_bottle" /decl/stack_recipe/soft/bottle_wide result_type = /obj/item/chems/glass/handmade/bottle/wide + uid = "stack_recipe_soft_handmade_bottle_wide" /decl/stack_recipe/soft/bottle_tall result_type = /obj/item/chems/glass/handmade/bottle/tall + uid = "stack_recipe_soft_handmade_bottle_tall" /decl/stack_recipe/soft/stack name = "brick" name_plural = "bricks" result_type = /obj/item/stack/material/brick - -/decl/stack_recipe/soft/bar - name = "bar" - name_plural = "bars" - result_type = /obj/item/stack/material/bar + uid = "stack_recipe_soft_stack_brick" /decl/stack_recipe/soft/stack/spawn_result(mob/user, location, amount, decl/material/mat, decl/material/reinf_mat, paint_color, spent_type, spent_amount = 1) var/obj/item/stack/S = ..() @@ -61,37 +66,45 @@ name = "bar" name_plural = "bars" result_type = /obj/item/stack/material/bar - result_type = /obj/item/stack/material/bar/wax + uid = "stack_recipe_soft_stack_bar" /decl/stack_recipe/soft/stack/large_lump name = "large lump" name_plural = "large lumps" result_type = /obj/item/stack/material/lump/large + uid = "stack_recipe_soft_stack_lump_large" /decl/stack_recipe/soft/stack/small_lump name = "small lump" name_plural = "small lumps" result_type = /obj/item/stack/material/lump + uid = "stack_recipe_soft_stack_lump_small" /decl/stack_recipe/soft/crucible - result_type = /obj/item/chems/crucible + result_type = /obj/item/chems/crucible + uid = "stack_recipe_soft_crucible" /decl/stack_recipe/soft/mould - name = "mould, blank" - result_type = /obj/item/chems/mould - category = "moulds" + name = "mould, blank" + result_type = /obj/item/chems/mould + category = "moulds" + uid = "stack_recipe_soft_mould_blank" +// todo: remove since you can make a clay crucible to take an impression of? /decl/stack_recipe/soft/mould/crucible name = "mould, crucible" result_type = /obj/item/chems/mould/crucible + uid = "stack_recipe_soft_mould_crucible" /decl/stack_recipe/soft/mould/rod name = "mould, rod" result_type = /obj/item/chems/mould/rod + uid = "stack_recipe_soft_mould_rod" /decl/stack_recipe/soft/mould/ingot name = "mould, ingot" result_type = /obj/item/chems/mould/ingot + uid = "stack_recipe_soft_mould_ingot" /decl/stack_recipe/soft/sculpture abstract_type = /decl/stack_recipe/soft/sculpture @@ -101,11 +114,14 @@ /decl/stack_recipe/soft/sculpture/snowman result_type = /obj/structure/snowman + uid = "stack_recipe_soft_sculpture_snowman" /decl/stack_recipe/soft/sculpture/snowspider result_type = /obj/structure/snowman/spider difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_soft_sculpture_snowspider" /decl/stack_recipe/soft/sculpture/snowbot result_type = /obj/structure/snowman/bot available_to_map_tech_level = MAP_TECH_LEVEL_SPACE + uid = "stack_recipe_soft_sculpture_nowbot" diff --git a/code/modules/crafting/stack_recipes/recipes_stacks.dm b/code/modules/crafting/stack_recipes/recipes_stacks.dm index a37f344a89f1..61d027ec33b1 100644 --- a/code/modules/crafting/stack_recipes/recipes_stacks.dm +++ b/code/modules/crafting/stack_recipes/recipes_stacks.dm @@ -11,72 +11,88 @@ /decl/stack_recipe/tile/wood/oak result_type = /obj/item/stack/tile/wood/oak required_material = /decl/material/solid/organic/wood/oak + uid = "stack_recipe_tile_wood_oak" /decl/stack_recipe/tile/wood/mahogany result_type = /obj/item/stack/tile/wood/mahogany required_material = /decl/material/solid/organic/wood/mahogany + uid = "stack_recipe_tile_wood_mahogany" /decl/stack_recipe/tile/wood/maple result_type = /obj/item/stack/tile/wood/maple required_material = /decl/material/solid/organic/wood/maple + uid = "stack_recipe_tile_wood_maple" /decl/stack_recipe/tile/wood/ebony difficulty = MAT_VALUE_VERY_HARD_DIY result_type = /obj/item/stack/tile/wood/ebony required_material = /decl/material/solid/organic/wood/ebony + uid = "stack_recipe_tile_wood_ebony" /decl/stack_recipe/tile/wood/walnut result_type = /obj/item/stack/tile/wood/walnut required_material = /decl/material/solid/organic/wood/walnut + uid = "stack_recipe_tile_wood_walnut" /decl/stack_recipe/tile/wood/oak/rough crafting_extra_cost_factor = 2 // wasteful but easy difficulty = MAT_VALUE_EASY_DIY result_type = /obj/item/stack/tile/wood/rough/oak + uid = "stack_recipe_tile_wood_oak_rough" /decl/stack_recipe/tile/wood/mahogany/rough crafting_extra_cost_factor = 2 difficulty = MAT_VALUE_EASY_DIY result_type = /obj/item/stack/tile/wood/rough/mahogany + uid = "stack_recipe_tile_wood_mahogany_rough" /decl/stack_recipe/tile/wood/maple/rough crafting_extra_cost_factor = 2 difficulty = MAT_VALUE_EASY_DIY result_type = /obj/item/stack/tile/wood/rough/maple + uid = "stack_recipe_tile_wood_maple_rough" /decl/stack_recipe/tile/wood/ebony/rough crafting_extra_cost_factor = 2 difficulty = MAT_VALUE_HARD_DIY result_type = /obj/item/stack/tile/wood/rough/ebony + uid = "stack_recipe_tile_wood_ebony_rough" /decl/stack_recipe/tile/wood/walnut/rough crafting_extra_cost_factor = 2 difficulty = MAT_VALUE_EASY_DIY result_type = /obj/item/stack/tile/wood/rough/walnut + uid = "stack_recipe_tile_wood_walnut_rough" /decl/stack_recipe/tile/wood/oak_laminate result_type = /obj/item/stack/tile/wood/laminate/oak required_material = /decl/material/solid/organic/wood/chipboard + uid = "stack_recipe_tile_wood_laminate_oak" /decl/stack_recipe/tile/wood/mahogany_laminate result_type = /obj/item/stack/tile/wood/laminate/mahogany required_material = /decl/material/solid/organic/wood/chipboard/mahogany + uid = "stack_recipe_tile_wood_laminate_mahogany" /decl/stack_recipe/tile/wood/maple_laminate result_type = /obj/item/stack/tile/wood/laminate/maple required_material = /decl/material/solid/organic/wood/chipboard/maple + uid = "stack_recipe_tile_wood_laminate_maple" /decl/stack_recipe/tile/wood/ebony_laminate result_type = /obj/item/stack/tile/wood/laminate/ebony required_material = /decl/material/solid/organic/wood/chipboard/ebony + uid = "stack_recipe_tile_wood_laminate_ebony" /decl/stack_recipe/tile/wood/walnut_laminate result_type = /obj/item/stack/tile/wood/walnut required_material = /decl/material/solid/organic/wood/chipboard/walnut + uid = "stack_recipe_tile_wood_laminate_walnut" /decl/stack_recipe/tile/wood/yew_laminate result_type = /obj/item/stack/tile/wood/laminate/yew required_material = /decl/material/solid/organic/wood/chipboard/yew + uid = "stack_recipe_tile_wood_laminate_yew" /decl/stack_recipe/tile/steel abstract_type = /decl/stack_recipe/tile/steel @@ -85,36 +101,47 @@ /decl/stack_recipe/tile/steel/floor result_type = /obj/item/stack/tile/floor + uid = "stack_recipe_tile_steel_floor" /decl/stack_recipe/tile/steel/roof result_type = /obj/item/stack/tile/roof + uid = "stack_recipe_tile_steel_roof" /decl/stack_recipe/tile/steel/mono result_type = /obj/item/stack/tile/mono + uid = "stack_recipe_tile_steel_mono" /decl/stack_recipe/tile/steel/mono_dark result_type = /obj/item/stack/tile/mono/dark + uid = "stack_recipe_tile_steel_mono_dark" /decl/stack_recipe/tile/steel/grid result_type = /obj/item/stack/tile/grid + uid = "stack_recipe_tile_steel_grid" /decl/stack_recipe/tile/steel/ridged result_type = /obj/item/stack/tile/ridge + uid = "stack_recipe_tile_steel_ridge" /decl/stack_recipe/tile/steel/tech_grey result_type = /obj/item/stack/tile/techgrey + uid = "stack_recipe_tile_steel_tech_grey" /decl/stack_recipe/tile/steel/tech_grid result_type = /obj/item/stack/tile/techgrid + uid = "stack_recipe_tile_steel_tech_grid" /decl/stack_recipe/tile/steel/tech_maint result_type = /obj/item/stack/tile/techmaint + uid = "stack_recipe_tile_steel_tech_maint" /decl/stack_recipe/tile/steel/dark result_type = /obj/item/stack/tile/floor_dark + uid = "stack_recipe_tile_steel_dark" /decl/stack_recipe/tile/steel/pool result_type = /obj/item/stack/tile/pool + uid = "stack_recipe_tile_steel_pool" /decl/stack_recipe/tile/panels abstract_type = /decl/stack_recipe/tile/panels @@ -124,6 +151,8 @@ /decl/stack_recipe/tile/panels/floor result_type = /obj/item/stack/tile/floor_white + uid = "stack_recipe_tile_panel_floor_white" /decl/stack_recipe/tile/panels/freezer result_type = /obj/item/stack/tile/floor_freezer + uid = "stack_recipe_tile_panel_floor_freezer" diff --git a/code/modules/crafting/stack_recipes/recipes_steel.dm b/code/modules/crafting/stack_recipes/recipes_steel.dm index 9befbe3d3f12..837fa9e0e33b 100644 --- a/code/modules/crafting/stack_recipes/recipes_steel.dm +++ b/code/modules/crafting/stack_recipes/recipes_steel.dm @@ -7,38 +7,47 @@ /decl/stack_recipe/steel/apc result_type = /obj/item/frame/apc difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_steel_apc_frame" /decl/stack_recipe/steel/air_alarm result_type = /obj/item/frame/air_alarm difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_steel_air_alarm_frame" /decl/stack_recipe/steel/fire_alarm result_type = /obj/item/frame/fire_alarm difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_steel_fire_alarm_frame" /decl/stack_recipe/steel/light result_type = /obj/item/frame/light difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_steel_light_fixture" /decl/stack_recipe/steel/light_small result_type = /obj/item/frame/light/small difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_steel_light_fixture_small" /decl/stack_recipe/steel/light_switch result_type = /obj/item/frame/button/light_switch difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_steel_light_switch_frame" /decl/stack_recipe/steel/light_switch/windowtint result_type = /obj/item/frame/button/light_switch/windowtint difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_steel_windowtint_switch_frame" /decl/stack_recipe/grenade/steel required_material = /decl/material/solid/metal/steel + uid = "stack_recipe_steel_chem_grenade" /decl/stack_recipe/steel/cannon result_type = /obj/item/cannonframe difficulty = MAT_VALUE_VERY_HARD_DIY category = "weapons" + uid = "stack_recipe_steel_cannonframe" /decl/stack_recipe/steel/furniture abstract_type = /decl/stack_recipe/steel/furniture @@ -50,6 +59,7 @@ /decl/stack_recipe/steel/furniture/computerframe result_type = /obj/machinery/constructable_frame/computerframe req_amount = 5 * SHEET_MATERIAL_AMOUNT // Arbitrary value since machines don't handle matter properly yet. + uid = "stack_recipe_steel_computerframe" /decl/stack_recipe/steel/furniture/computerframe/spawn_result(mob/user, location, amount, decl/material/mat, decl/material/reinf_mat, paint_color, spent_type, spent_amount = 1) return ..(user, location, amount, null, null) @@ -61,58 +71,73 @@ /decl/stack_recipe/steel/furniture/door_assembly/standard result_type = /obj/structure/door_assembly + uid = "stack_recipe_steel_doorassembly_standard" /decl/stack_recipe/steel/furniture/door_assembly/airtight name = "airtight hatch assembly" result_type = /obj/structure/door_assembly/door_assembly_hatch + uid = "stack_recipe_steel_doorassembly_hatch" /decl/stack_recipe/steel/furniture/door_assembly/highsec name = "high security airlock assembly" result_type = /obj/structure/door_assembly/door_assembly_highsecurity + uid = "stack_recipe_steel_doorassembly_highsec" /decl/stack_recipe/steel/furniture/door_assembly/ext name = "exterior airlock assembly" result_type = /obj/structure/door_assembly/door_assembly_ext + uid = "stack_recipe_steel_doorassembly_ext" /decl/stack_recipe/steel/furniture/door_assembly/firedoor name = "emergency shutter assembly" result_type = /obj/structure/firedoor_assembly + uid = "stack_recipe_steel_doorassembly_firedoor" /decl/stack_recipe/steel/furniture/door_assembly/firedoor/border name = "unidirectional emergency shutter assembly" result_type = /obj/structure/firedoor_assembly/border one_per_turf = FALSE + uid = "stack_recipe_steel_doorassembly_firedoor_border" /decl/stack_recipe/steel/furniture/door_assembly/double name = "double airlock assembly" result_type = /obj/structure/door_assembly/double + uid = "stack_recipe_steel_doorassembly_double" /decl/stack_recipe/steel/furniture/door_assembly/blast name = "blast door assembly" result_type = /obj/structure/door_assembly/blast + uid = "stack_recipe_steel_doorassembly_blast" /decl/stack_recipe/steel/furniture/door_assembly/shutter name = "shutter assembly" result_type = /obj/structure/door_assembly/blast/shutter + uid = "stack_recipe_steel_doorassembly_shutter" /decl/stack_recipe/steel/furniture/door_assembly/morgue name = "morgue door assembly" result_type = /obj/structure/door_assembly/blast/morgue + uid = "stack_recipe_steel_doorassembly_morgue" /decl/stack_recipe/steel/furniture/canister result_type = /obj/machinery/portable_atmospherics/canister req_amount = 5 * SHEET_MATERIAL_AMOUNT // Arbitrary value since machines don't handle matter properly yet. + uid = "stack_recipe_steel_canister" /decl/stack_recipe/steel/furniture/tank result_type = /obj/item/pipe/tank + uid = "stack_recipe_steel_tank" /decl/stack_recipe/steel/furniture/drill_brace result_type = /obj/structure/drill_brace + uid = "stack_recipe_steel_drill_brace" /decl/stack_recipe/steel/furniture/armor_stand result_type = /obj/structure/armor_stand difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_steel_armor_stand" /decl/stack_recipe/steel/furniture/target_stake result_type = /obj/structure/target_stake difficulty = MAT_VALUE_NORMAL_DIY + uid = "stack_recipe_steel_target_stake" diff --git a/code/modules/crafting/stack_recipes/recipes_textiles.dm b/code/modules/crafting/stack_recipes/recipes_textiles.dm index 0e0a5e20271a..15ee1e2b5c35 100644 --- a/code/modules/crafting/stack_recipes/recipes_textiles.dm +++ b/code/modules/crafting/stack_recipes/recipes_textiles.dm @@ -13,10 +13,12 @@ one_per_turf = TRUE on_floor = TRUE category = "furniture" + uid = "stack_recipe_textile_rug" /decl/stack_recipe/textiles/cloak result_type = /obj/item/clothing/suit/cloak/hide category = "clothing" + uid = "stack_recipe_textile_cloak" /decl/stack_recipe/textiles/banner name = "banner" @@ -24,41 +26,50 @@ category = "furniture" crafting_extra_cost_factor = 1.1 // less material is lost because it's relatively simple difficulty = MAT_VALUE_NORMAL_DIY // Slightly easier than making actual clothing. + uid = "stack_recipe_textile_banner" /decl/stack_recipe/textiles/banner/forked name = "banner, forked" result_type = /obj/item/banner/forked + uid = "stack_recipe_textile_banner_forked" /decl/stack_recipe/textiles/banner/pointed name = "banner, pointed" result_type = /obj/item/banner/pointed + uid = "stack_recipe_textile_banner_pointed" /decl/stack_recipe/textiles/banner/rounded name = "banner, rounded" result_type = /obj/item/banner/rounded + uid = "stack_recipe_textile_banner_rounded" /decl/stack_recipe/textiles/banner/square name = "banner, square" result_type = /obj/item/banner/square + uid = "stack_recipe_textile_banner_square" /decl/stack_recipe/textiles/banner/tasselled name = "banner, tasselled" result_type = /obj/item/banner/tasselled + uid = "stack_recipe_textile_banner_tasselled" /decl/stack_recipe/textiles/sack result_type = /obj/item/bag/sack category = "storage" crafting_extra_cost_factor = 1.1 // less material is lost because it's relatively simple difficulty = MAT_VALUE_NORMAL_DIY // Slightly easier than making actual clothing. + uid = "stack_recipe_textile_sack" /decl/stack_recipe/textiles/bandolier result_type = /obj/item/clothing/webbing/bandolier/crafted category = "storage" + uid = "stack_recipe_textile_bandolier" /decl/stack_recipe/textiles/headband result_type = /obj/item/clothing/head/headband crafting_extra_cost_factor = 1.2 // less material is lost because it's relatively simple category = "clothing" + uid = "stack_recipe_textile_headband" /decl/stack_recipe/textiles/leather @@ -66,44 +77,55 @@ validation_material = /decl/material/solid/organic/leather craft_stack_types = /obj/item/stack/material/skin category = "clothing" + uid = "stack_recipe_textile_leather_" /decl/stack_recipe/textiles/leather/bedroll result_type = /obj/item/bedroll difficulty = MAT_VALUE_NORMAL_DIY // Slightly easier than making clothing. category = "bedding" + uid = "stack_recipe_textile_leather_bedroll" /decl/stack_recipe/textiles/leather/shoes result_type = /obj/item/clothing/shoes/craftable + uid = "stack_recipe_textile_leather_shoes" /decl/stack_recipe/textiles/leather/boots result_type = /obj/item/clothing/shoes/craftable/boots + uid = "stack_recipe_textile_leather_boots" /decl/stack_recipe/textiles/leather/coat result_type = /obj/item/clothing/suit/leathercoat + uid = "stack_recipe_textile_leather_coat" /decl/stack_recipe/textiles/leather/gloves result_type = /obj/item/clothing/gloves/thick + uid = "stack_recipe_textile_leather_gloves" /decl/stack_recipe/textiles/leather/sling result_type = /obj/item/gun/launcher/bow/sling crafting_extra_cost_factor = 1.1 // less material is lost because it's relatively simple difficulty = MAT_VALUE_NORMAL_DIY // Slightly easier than making clothing. + uid = "stack_recipe_textile_leather_sling" /decl/stack_recipe/textiles/leather/sack result_type = /obj/item/bag/sack difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_textile_leather_sack" /decl/stack_recipe/textiles/leather/backpack result_type = /obj/item/backpack/crafted/backpack difficulty = MAT_VALUE_VERY_HARD_DIY + uid = "stack_recipe_textile_leather_backpack" /decl/stack_recipe/textiles/leather/backpack/haversack result_type = /obj/item/backpack/crafted + uid = "stack_recipe_textile_leather_haversack" /decl/stack_recipe/textiles/leather/waterskin result_type = /obj/item/chems/glass/waterskin/crafted required_material = /decl/material/solid/organic/leather category = null + uid = "stack_recipe_textile_leather_waterskin" /decl/stack_recipe/textiles/cloth abstract_type = /decl/stack_recipe/textiles/cloth @@ -115,31 +137,38 @@ result_type = /obj/item/chems/filter difficulty = MAT_VALUE_EASY_DIY // see above comment category = "utility" + uid = "stack_recipe_textile_cloth_filter" /decl/stack_recipe/textiles/cloth/bandana result_type = /obj/item/clothing/mask/bandana/colourable difficulty = MAT_VALUE_EASY_DIY // see above comment crafting_extra_cost_factor = 1 // basically just a rag + uid = "stack_recipe_textile_cloth_bandana" /decl/stack_recipe/textiles/cloth/gloves result_type = /obj/item/clothing/gloves + uid = "stack_recipe_textile_cloth_gloves" /decl/stack_recipe/textiles/cloth/robe result_type = /obj/item/clothing/suit/robe + uid = "stack_recipe_textile_cloth_robe" /decl/stack_recipe/textiles/cloth/poncho result_type = /obj/item/clothing/suit/poncho/colored + uid = "stack_recipe_textile_cloth_poncho" /decl/stack_recipe/textiles/cloth/bedding result_type = /obj/item/bedsheet crafting_extra_cost_factor = 1.1 // less material is lost because it's relatively simple category = "bedding" + uid = "stack_recipe_textile_cloth_bedsheet" /decl/stack_recipe/textiles/cloth/bandages result_type = /obj/item/stack/medical/bandage/crafted difficulty = MAT_VALUE_EASY_DIY crafting_extra_cost_factor = 1.1 // it's not that much more complicated than making a rag, but you probably want to at least tidy up the edges category = "medical" + uid = "stack_recipe_textile_cloth_bandage" /decl/stack_recipe/textiles/fur abstract_type = /decl/stack_recipe/textiles/fur @@ -151,6 +180,7 @@ crafting_extra_cost_factor = 1.1 // you're basically just trimming the edges and cleaning the pelt result_type = /obj/item/bedsheet/furs category = "bedding" + uid = "stack_recipe_textile_fur_bedding" /decl/stack_recipe/textiles/surgical_sutures result_type = /obj/item/ancient_surgery/sutures @@ -159,8 +189,10 @@ crafting_extra_cost_factor = 1 // no overall material loss, you're just prepping the thread category = "medical" available_to_map_tech_level = MAP_TECH_LEVEL_MEDIEVAL + uid = "stack_recipe_textile_sutures" /decl/stack_recipe/textiles/rag - result_type = /obj/item/chems/rag + result_type = /obj/item/chems/rag crafting_extra_cost_factor = 1 // whatever you produce is going to be a rag, there's no wastage - difficulty = MAT_VALUE_TRIVIAL_DIY + difficulty = MAT_VALUE_TRIVIAL_DIY + uid = "stack_recipe_textile_rag" diff --git a/code/modules/departments/department.dm b/code/modules/departments/department.dm index e3c54d66391f..f0fde21c441c 100644 --- a/code/modules/departments/department.dm +++ b/code/modules/departments/department.dm @@ -2,11 +2,12 @@ . = b.display_priority - a.display_priority /decl/department + // this isn't abstract because it's used as a fallback var/name var/noun = "department" var/noun_adj = "departmental" var/announce_channel = "Common" // The Channel for spawn annoncement. Leave as common if unsure. The channel will be selected based of the first deparment listed in a jobs .department_types - var/list/goals = list() + var/list/goals = list() var/min_goals = 1 var/max_goals = 2 var/colour = "#808080" diff --git a/code/modules/economy/worth_currency.dm b/code/modules/economy/worth_currency.dm index 9e5de940b128..639c49c9f13b 100644 --- a/code/modules/economy/worth_currency.dm +++ b/code/modules/economy/worth_currency.dm @@ -129,9 +129,11 @@ /decl/stack_recipe/coin/credits name = "two credit coin" currency = /decl/currency/credits + uid = "stack_recipe_coin_credit_two" /decl/stack_recipe/coin/credits/one name = "one credit coin" + uid = "stack_recipe_coin_credit_one" /datum/denomination/coin/mid state = "coin_medium" @@ -155,12 +157,15 @@ /decl/stack_recipe/coin/trader currency = /decl/currency/trader name = "ten scrip coin" + uid = "stack_recipe_coin_scrip_ten" /decl/stack_recipe/coin/trader/mid name = "five scrip coin" + uid = "stack_recipe_coin_scrip_five" /decl/stack_recipe/coin/trader/small name = "one scrip coin" + uid = "stack_recipe_coin_scrip_one" /decl/currency/scav name = "scavbucks" @@ -171,12 +176,15 @@ /datum/denomination/trash name = "wiggly string" state = "string" + /datum/denomination/trash/bone name = "pointy bone" state = "bone" + /datum/denomination/trash/rock name = "neat rock" state = "rock" + /datum/denomination/trash/shell name = "tasty shell" state = "shell" diff --git a/code/modules/fusion/fusion_reactions.dm b/code/modules/fusion/fusion_reactions.dm index 5ff951b477b0..eb96a6df20e9 100644 --- a/code/modules/fusion/fusion_reactions.dm +++ b/code/modules/fusion/fusion_reactions.dm @@ -1,6 +1,7 @@ #define FUSION_PROCESSING_TIME_MULT 2 // SSmachines.wait / (1 SECOND) - previous values were intended for SSobj 1-second wait. /decl/fusion_reaction + abstract_type = /decl/fusion_reaction var/p_react // Primary reactant. var/s_react // Secondary reactant. var/minimum_energy_level = 1 diff --git a/code/modules/genetics/plants/_gene_plant.dm b/code/modules/genetics/plants/_gene_plant.dm index 79168f4345ac..71d5bb439678 100644 --- a/code/modules/genetics/plants/_gene_plant.dm +++ b/code/modules/genetics/plants/_gene_plant.dm @@ -1,5 +1,6 @@ /decl/plant_gene abstract_type = /decl/plant_gene + decl_flags = DECL_FLAG_MANDATORY_UID //expected_source = /datum/seed //expected_target = /datum/seed /// Set to a randomized gene mask in Initialize(). diff --git a/code/modules/genetics/plants/gene_atmosphere.dm b/code/modules/genetics/plants/gene_atmosphere.dm index f51bd5d7a28c..7103ac48e8b3 100644 --- a/code/modules/genetics/plants/gene_atmosphere.dm +++ b/code/modules/genetics/plants/gene_atmosphere.dm @@ -5,6 +5,7 @@ TRAIT_LOWKPA_TOLERANCE, TRAIT_HIGHKPA_TOLERANCE ) + uid = "plant_gene_atmosphere" /decl/plant_gene/atmosphere/mutate(datum/seed/seed, turf/location) if(prob(60)) diff --git a/code/modules/genetics/plants/gene_biochemistry.dm b/code/modules/genetics/plants/gene_biochemistry.dm index 74276d797a6f..91ccd1a7dfa1 100644 --- a/code/modules/genetics/plants/gene_biochemistry.dm +++ b/code/modules/genetics/plants/gene_biochemistry.dm @@ -7,6 +7,7 @@ TRAIT_YIELD, TRAIT_ENDURANCE ) + uid = "plant_gene_biochemistry" /decl/plant_gene/biochemistry/mutate(datum/seed/seed) seed.set_trait(TRAIT_POTENCY, seed.get_trait(TRAIT_POTENCY)+rand(-20,20),200, 0) diff --git a/code/modules/genetics/plants/gene_diet.dm b/code/modules/genetics/plants/gene_diet.dm index bc002938ed08..b44f18b3e017 100644 --- a/code/modules/genetics/plants/gene_diet.dm +++ b/code/modules/genetics/plants/gene_diet.dm @@ -6,6 +6,7 @@ TRAIT_NUTRIENT_CONSUMPTION, TRAIT_WATER_CONSUMPTION ) + uid = "plant_gene_diet" /decl/plant_gene/diet/mutate(datum/seed/seed, turf/location) if(prob(60)) diff --git a/code/modules/genetics/plants/gene_environment.dm b/code/modules/genetics/plants/gene_environment.dm index 2ada19ba2c58..57303a1856cf 100644 --- a/code/modules/genetics/plants/gene_environment.dm +++ b/code/modules/genetics/plants/gene_environment.dm @@ -5,6 +5,7 @@ TRAIT_IDEAL_LIGHT, TRAIT_LIGHT_TOLERANCE ) + uid = "plant_gene_environment" /decl/plant_gene/environment/mutate(datum/seed/seed, turf/location) if(prob(60)) diff --git a/code/modules/genetics/plants/gene_fruit.dm b/code/modules/genetics/plants/gene_fruit.dm index 6ea6f419f6cc..aa6bd150dbf4 100644 --- a/code/modules/genetics/plants/gene_fruit.dm +++ b/code/modules/genetics/plants/gene_fruit.dm @@ -6,6 +6,7 @@ TRAIT_FLESH_COLOUR, TRAIT_JUICY ) + uid = "plant_gene_fruit" /decl/plant_gene/fruit/mutate(datum/seed/seed, turf/location) if(prob(65)) diff --git a/code/modules/genetics/plants/gene_hardiness.dm b/code/modules/genetics/plants/gene_hardiness.dm index 86002a560499..1d707a9abdbb 100644 --- a/code/modules/genetics/plants/gene_hardiness.dm +++ b/code/modules/genetics/plants/gene_hardiness.dm @@ -6,6 +6,7 @@ TRAIT_WEED_TOLERANCE, TRAIT_ENDURANCE ) + uid = "plant_gene_hardiness" /decl/plant_gene/hardiness/mutate(datum/seed/seed, turf/location) if(prob(60)) diff --git a/code/modules/genetics/plants/gene_metabolism.dm b/code/modules/genetics/plants/gene_metabolism.dm index 01dc3c5c8f45..db2860454b75 100644 --- a/code/modules/genetics/plants/gene_metabolism.dm +++ b/code/modules/genetics/plants/gene_metabolism.dm @@ -5,6 +5,7 @@ TRAIT_REQUIRES_WATER, TRAIT_ALTER_TEMP ) + uid = "plant_gene_metabolism" /decl/plant_gene/metabolism/mutate(datum/seed/seed, turf/location) if(prob(65)) diff --git a/code/modules/genetics/plants/gene_output.dm b/code/modules/genetics/plants/gene_output.dm index 57c5b7f87e64..c233c3a96380 100644 --- a/code/modules/genetics/plants/gene_output.dm +++ b/code/modules/genetics/plants/gene_output.dm @@ -4,6 +4,7 @@ TRAIT_PRODUCES_POWER, TRAIT_BIOLUM ) + uid = "plant_gene_output" /decl/plant_gene/output/mutate(datum/seed/seed, turf/location) if(prob(50)) diff --git a/code/modules/genetics/plants/gene_pigment.dm b/code/modules/genetics/plants/gene_pigment.dm index e7b87dea2f39..9d77a6527a95 100644 --- a/code/modules/genetics/plants/gene_pigment.dm +++ b/code/modules/genetics/plants/gene_pigment.dm @@ -6,3 +6,4 @@ TRAIT_BIOLUM_COLOUR, TRAIT_LEAVES_COLOUR ) + uid = "plant_gene_pigment" diff --git a/code/modules/genetics/plants/gene_special.dm b/code/modules/genetics/plants/gene_special.dm index 2e864d759695..ac9447b5dca5 100644 --- a/code/modules/genetics/plants/gene_special.dm +++ b/code/modules/genetics/plants/gene_special.dm @@ -3,6 +3,7 @@ associated_traits = list( TRAIT_TELEPORTING ) + uid = "plant_gene_special" /decl/plant_gene/special/mutate(datum/seed/seed, atom/location) if(prob(65)) diff --git a/code/modules/genetics/plants/gene_structure.dm b/code/modules/genetics/plants/gene_structure.dm index 228d09d57c09..9b4cd600549b 100644 --- a/code/modules/genetics/plants/gene_structure.dm +++ b/code/modules/genetics/plants/gene_structure.dm @@ -6,3 +6,4 @@ TRAIT_HARVEST_REPEAT, TRAIT_LARGE ) + uid = "plant_gene_structure" diff --git a/code/modules/genetics/plants/gene_vigour.dm b/code/modules/genetics/plants/gene_vigour.dm index 335556230cd6..0b113387484e 100644 --- a/code/modules/genetics/plants/gene_vigour.dm +++ b/code/modules/genetics/plants/gene_vigour.dm @@ -6,6 +6,7 @@ TRAIT_YIELD, TRAIT_SPREAD ) + uid = "plant_gene_vigour" /decl/plant_gene/vigour/mutate(datum/seed/seed, atom/location) if(prob(65)) diff --git a/code/modules/geology/_strata.dm b/code/modules/geology/_strata.dm index 411da879d3d7..b5e60c5bb024 100644 --- a/code/modules/geology/_strata.dm +++ b/code/modules/geology/_strata.dm @@ -1,4 +1,5 @@ /decl/strata + abstract_type = /decl/strata var/name var/list/base_materials var/list/ores_sparse diff --git a/code/modules/ghosttrap/trap.dm b/code/modules/ghosttrap/trap.dm index 1f450a9aadff..eea4d3bfc1c7 100644 --- a/code/modules/ghosttrap/trap.dm +++ b/code/modules/ghosttrap/trap.dm @@ -1,5 +1,6 @@ // This system is used to grab a ghost from observers with the required preferences and lack of bans set. /decl/ghosttrap + abstract_type = /decl/ghosttrap var/name var/minutes_since_death = 0 // If non-zero the ghost must have been dead for this many minutes to be allowed to spawn var/list/ban_checks diff --git a/code/modules/mob/grab/grab_datum.dm b/code/modules/mob/grab/grab_datum.dm index 2783cfb571f9..56ca50e4f540 100644 --- a/code/modules/mob/grab/grab_datum.dm +++ b/code/modules/mob/grab/grab_datum.dm @@ -1,4 +1,5 @@ /decl/grab + abstract_type = /decl/grab var/name = "generic grab" /// Whether or not the grabbed person can move out of the grab var/stop_move = 0 diff --git a/code/modules/modular_computers/networking/device_types/acl.dm b/code/modules/modular_computers/networking/device_types/acl.dm index 3dea9e1dd8a8..577f938c4f78 100644 --- a/code/modules/modular_computers/networking/device_types/acl.dm +++ b/code/modules/modular_computers/networking/device_types/acl.dm @@ -112,15 +112,18 @@ desc = "Adds a new group with the passed name. A parent group can be passed to add a child group." call_proc = TYPE_PROC_REF(/datum/extension/network_device/acl, add_group) forward_args = TRUE + uid = "public_method_acl_group_add" /decl/public_access/public_method/remove_group name = "Remove group" desc = "Removes a group with the passed name. A parent group can be passed to remove a child group of that parent." call_proc = TYPE_PROC_REF(/datum/extension/network_device/acl, remove_group) forward_args = TRUE + uid = "public_method_acl_group_remove" /decl/public_access/public_method/list_groups name = "List groups" desc = "Lists groups on the group access controller. A parent group can be passed list children of that parent group." call_proc = TYPE_PROC_REF(/datum/extension/network_device/acl, get_group_listing) - forward_args = TRUE \ No newline at end of file + forward_args = TRUE + uid = "public_method_acl_group_list" \ No newline at end of file diff --git a/code/modules/organs/external/diagnostics.dm b/code/modules/organs/external/diagnostics.dm index d7047a14aa82..4b647786f22f 100644 --- a/code/modules/organs/external/diagnostics.dm +++ b/code/modules/organs/external/diagnostics.dm @@ -178,6 +178,7 @@ return sounds /decl/diagnostic_sign + abstract_type = /decl/diagnostic_sign var/name = "Some symptom" var/descriptor var/explanation diff --git a/code/modules/overmap/events/event.dm b/code/modules/overmap/events/event.dm index d2d63a62c262..36e546ec6127 100644 --- a/code/modules/overmap/events/event.dm +++ b/code/modules/overmap/events/event.dm @@ -253,6 +253,7 @@ //These now are basically only used to spawn hazards. Will be useful when we need to spawn group of moving hazards /decl/overmap_event + abstract_type = /decl/overmap_event var/name = "map event" var/radius = 2 var/count = 6 diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index fd66d7857a94..497ef43bbe9c 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -622,6 +622,7 @@ var/global/list/adminfaxes = list() //cache for faxes that have been sent to desc = "Sends the specified document over to the specified network tag." call_proc = TYPE_PROC_REF(/obj/machinery/faxmachine, receive_fax) forward_args = TRUE + uid = "public_method_fax_receive_message" //////////////////////////////////////////////////////////////////////////////////////// // Admin Faxes Handling diff --git a/code/modules/projectiles/guns/energy/capacitor.dm b/code/modules/projectiles/guns/energy/capacitor.dm index ac72d5d1e52b..255c27246b66 100644 --- a/code/modules/projectiles/guns/energy/capacitor.dm +++ b/code/modules/projectiles/guns/energy/capacitor.dm @@ -1,6 +1,7 @@ var/global/list/laser_wavelengths /decl/laser_wavelength + abstract_type = /decl/laser_wavelength var/name var/color var/light_color diff --git a/code/modules/projectiles/guns/projectile/random_pistol.dm b/code/modules/projectiles/guns/projectile/random_pistol.dm index ba767072bafa..f4199fc48d40 100644 --- a/code/modules/projectiles/guns/projectile/random_pistol.dm +++ b/code/modules/projectiles/guns/projectile/random_pistol.dm @@ -59,6 +59,7 @@ safety.pixel_x = safety_offset[base_state][1] safety.pixel_y = safety_offset[base_state][2] return safety + /decl/gun_look/cover icon = 'icons/obj/guns/random_pistol/looks/cover.dmi' ammo_offset = list( diff --git a/code/modules/reagents/chems/random/random_effects.dm b/code/modules/reagents/chems/random/random_effects.dm index 9136a9577f31..ec41a3f3edc8 100644 --- a/code/modules/reagents/chems/random/random_effects.dm +++ b/code/modules/reagents/chems/random/random_effects.dm @@ -3,6 +3,7 @@ #define RANDOM_CHEM_EFFECT_FLOAT 3 /decl/random_chem_effect + abstract_type = /decl/random_chem_effect var/minimum = 0 var/maximum = 1 var/mode = RANDOM_CHEM_EFFECT_TRUE diff --git a/code/modules/research/research_fields.dm b/code/modules/research/research_fields.dm index d37be7dde722..d2b611cda2ee 100644 --- a/code/modules/research/research_fields.dm +++ b/code/modules/research/research_fields.dm @@ -1,4 +1,5 @@ /decl/research_field + abstract_type = /decl/research_field var/name var/desc var/id diff --git a/code/modules/scent/_scent.dm b/code/modules/scent/_scent.dm index 9af54db56df2..68875f37363e 100644 --- a/code/modules/scent/_scent.dm +++ b/code/modules/scent/_scent.dm @@ -2,6 +2,7 @@ Scent intensity *****/ /decl/scent_intensity + abstract_type = /decl/scent_intensity var/cooldown = 5 MINUTES var/intensity = 1 diff --git a/code/modules/scent/scent_decls.dm b/code/modules/scent/scent_decls.dm index 93facfba7876..ba1d9203a7d5 100644 --- a/code/modules/scent/scent_decls.dm +++ b/code/modules/scent/scent_decls.dm @@ -1,4 +1,5 @@ /decl/scent_type + abstract_type = /decl/scent_type var/color var/scent //this is for the desc, the actual scent goes in the datum var/scent_datum diff --git a/code/modules/security_levels/_security_level.dm b/code/modules/security_levels/_security_level.dm index ca4ba811c82f..5e2cab99fdd0 100644 --- a/code/modules/security_levels/_security_level.dm +++ b/code/modules/security_levels/_security_level.dm @@ -1,4 +1,5 @@ /decl/security_level + decl_flags = DECL_FLAG_MANDATORY_UID var/icon = 'icons/misc/security_state.dmi' var/name diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm index 186fd37fbbe7..7e30fe769ede 100644 --- a/code/modules/security_levels/security_levels.dm +++ b/code/modules/security_levels/security_levels.dm @@ -32,6 +32,7 @@ /decl/security_level/default/code_green name = "code green" + uid = "security_level_green" light_range = 2 light_power = 1 @@ -47,6 +48,7 @@ /decl/security_level/default/code_blue name = "code blue" + uid = "security_level_blue" light_range = 2 light_power = 1 @@ -61,6 +63,7 @@ /decl/security_level/default/code_red name = "code red" + uid = "security_level_red" light_range = 4 light_power = 2 @@ -75,6 +78,7 @@ /decl/security_level/default/code_delta name = "code delta" + uid = "security_level_delta" light_range = 4 light_power = 2 @@ -101,5 +105,6 @@ /// A dummy security level with no effects. /decl/security_level/none name = "none" + uid = "security_level_none" // Since currently we're required to have an alarm_appearance, we just use a blank one. alarm_appearance = /datum/alarm_appearance \ No newline at end of file diff --git a/code/modules/status_conditions/_status_condition.dm b/code/modules/status_conditions/_status_condition.dm index a377bed14b3d..7d159eb88971 100644 --- a/code/modules/status_conditions/_status_condition.dm +++ b/code/modules/status_conditions/_status_condition.dm @@ -3,6 +3,7 @@ var/global/list/status_marker_holders = list() // Check code/modules/mob/mob_status.dm code/modules/mob/living/living_status.dm // for the procs that check/set/process these status conditions. /decl/status_condition + abstract_type = /decl/status_condition var/name var/check_flags = 0 var/list/victim_data diff --git a/code/modules/submaps/submap_archetype.dm b/code/modules/submaps/submap_archetype.dm index 9597b64f1f6f..d4b98c8f4ffa 100644 --- a/code/modules/submaps/submap_archetype.dm +++ b/code/modules/submaps/submap_archetype.dm @@ -1,4 +1,5 @@ /decl/submap_archetype + abstract_type = /decl/submap_archetype // TODO: use UID instead of name for pref saving. var/name = "generic ship archetype" var/list/whitelisted_species = list() diff --git a/code/modules/tools/components/recipes.dm b/code/modules/tools/components/recipes.dm index 38b76cff8959..f5af29ba13c9 100644 --- a/code/modules/tools/components/recipes.dm +++ b/code/modules/tools/components/recipes.dm @@ -21,9 +21,11 @@ /decl/stack_recipe/tool/handle/long result_type = /obj/item/tool_component/handle/long + uid = "stack_recipe_tool_handle_long" /decl/stack_recipe/tool/handle/short result_type = /obj/item/tool_component/handle/short + uid = "stack_recipe_tool_handle_short" /decl/stack_recipe/tool/head abstract_type = /decl/stack_recipe/tool/head @@ -31,15 +33,19 @@ /decl/stack_recipe/tool/head/hammer result_type = /obj/item/tool_component/head/hammer + uid = "stack_recipe_tool_head_hammer" /decl/stack_recipe/tool/head/hoe result_type = /obj/item/tool_component/head/hoe + uid = "stack_recipe_tool_head_hoe" /decl/stack_recipe/tool/head/shovel result_type = /obj/item/tool_component/head/shovel + uid = "stack_recipe_tool_head_shovel" /decl/stack_recipe/tool/head/handaxe result_type = /obj/item/tool_component/head/handaxe + uid = "stack_recipe_tool_head_handaxe" /decl/stack_recipe/tool/head/sledgehammer difficulty = MAT_VALUE_VERY_HARD_DIY @@ -48,6 +54,7 @@ /obj/item/stack/material/ore, /obj/item/stack/material/lump ) + uid = "stack_recipe_tool_head_sledgehammer" /decl/stack_recipe/tool/head/pickaxe difficulty = MAT_VALUE_VERY_HARD_DIY @@ -56,3 +63,4 @@ /obj/item/stack/material/ore, /obj/item/stack/material/lump ) + uid = "stack_recipe_tool_head_pickaxe" diff --git a/code/modules/webhooks/_webhook.dm b/code/modules/webhooks/_webhook.dm index af9ae44ac1dc..590960e6a793 100644 --- a/code/modules/webhooks/_webhook.dm +++ b/code/modules/webhooks/_webhook.dm @@ -1,4 +1,5 @@ /decl/webhook + abstract_type = /decl/webhook var/id var/list/urls var/list/mentions diff --git a/code/modules/xenoarcheaology/artifacts/artifact_appearance.dm b/code/modules/xenoarcheaology/artifacts/artifact_appearance.dm index 79bd2fbb62d2..e45654ced28c 100644 --- a/code/modules/xenoarcheaology/artifacts/artifact_appearance.dm +++ b/code/modules/xenoarcheaology/artifacts/artifact_appearance.dm @@ -3,12 +3,15 @@ /decl/artifact_appearance var/name = "alien artifact" + /decl/artifact_appearance/proc/apply_to(obj/structure/artifact/A) A.SetName(name) adjust_desc(A) adjust_icon(A) A.update_icon() + /decl/artifact_appearance/proc/adjust_desc(obj/structure/artifact/A) + /decl/artifact_appearance/proc/adjust_icon(obj/structure/artifact/A) var/icon_num = rand(0, 6) A.base_icon = "ano[icon_num]" @@ -17,8 +20,10 @@ /decl/artifact_appearance/vents name = "alien artifact" + /decl/artifact_appearance/vents/adjust_desc(obj/structure/artifact/A) A.desc = "A large alien device, there appear to be some kind of vents in the side." + /decl/artifact_appearance/vents/adjust_icon(obj/structure/artifact/A) A.base_icon = "ano10" @@ -26,21 +31,25 @@ /decl/artifact_appearance/computer name = "alien computer" + /decl/artifact_appearance/computer/adjust_desc(obj/structure/artifact/A) A.desc = "It is covered in strange markings." + /decl/artifact_appearance/computer/adjust_icon(obj/structure/artifact/A) A.base_icon = "ano9" - + // Sealed pod /decl/artifact_appearance/pod name = "sealed alien pod" + /decl/artifact_appearance/pod/adjust_icon(obj/structure/artifact/A) A.base_icon = "ano11" // Crystals /decl/artifact_appearance/crystal name = "large crystal" + /decl/artifact_appearance/crystal/adjust_desc(obj/structure/artifact/A) A.desc = pick( "It shines faintly as it catches the light.", @@ -48,5 +57,6 @@ "It seems to draw you inward as you look it at.", "Something twinkles faintly as you look at it.", "It's mesmerizing to behold.") + /decl/artifact_appearance/crystal/adjust_icon(obj/structure/artifact/A) A.base_icon = "ano[pick(7,8)]" \ No newline at end of file diff --git a/mods/_modpack.dm b/mods/_modpack.dm index b9bad3954441..4ca72609a3c9 100644 --- a/mods/_modpack.dm +++ b/mods/_modpack.dm @@ -1,4 +1,5 @@ /decl/modpack + abstract_type = /decl/modpack /// A string name for the modpack. Used for looking up other modpacks in init. var/name /// A string desc for the modpack. Can be used for modpack verb list as description. diff --git a/mods/content/actors.dm b/mods/content/actors.dm index fbb88bad4975..996ac17f6dc9 100644 --- a/mods/content/actors.dm +++ b/mods/content/actors.dm @@ -20,6 +20,7 @@ default_outfit = /decl/outfit/actor default_access = list() id_title = "Actor" + uid = "special_role_actor" /obj/abstract/landmark/actor_spawn name = "ActorSpawn" diff --git a/mods/content/augments/augment_loadout.dm b/mods/content/augments/augment_loadout.dm index 3fd9d8efa984..b432e8474a90 100644 --- a/mods/content/augments/augment_loadout.dm +++ b/mods/content/augments/augment_loadout.dm @@ -1,5 +1,6 @@ /decl/loadout_category/augmentation name = "Augmentations" + uid = "loadout_category_augmentation" /decl/loadout_option/augmentation category = /decl/loadout_category/augmentation diff --git a/mods/content/beekeeping/recipes.dm b/mods/content/beekeeping/recipes.dm index 3d8515113826..427a6e05dae6 100644 --- a/mods/content/beekeeping/recipes.dm +++ b/mods/content/beekeeping/recipes.dm @@ -1,5 +1,7 @@ /decl/stack_recipe/planks/furniture/apiary result_type = /obj/structure/apiary + uid = "stack_recipe_plank_apiary" /decl/stack_recipe/planks/beehive_frame result_type = /obj/item/hive_frame/crafted + uid = "stack_recipe_plank_beehive_frame" diff --git a/mods/content/blacksmithy/anvil.dm b/mods/content/blacksmithy/anvil.dm index 9f88267f22a8..abff8f12c1fb 100644 --- a/mods/content/blacksmithy/anvil.dm +++ b/mods/content/blacksmithy/anvil.dm @@ -130,6 +130,7 @@ material = /decl/material/solid/metal/steel max_health = 500 -/decl/stack_recipe/steel/furniture +/decl/stack_recipe/steel/furniture/anvil result_type = /obj/structure/anvil/improvised difficulty = MAT_VALUE_HARD_DIY + uid = "stack_recipe_steel_anvil_improvised" diff --git a/mods/content/blacksmithy/barrel_rim.dm b/mods/content/blacksmithy/barrel_rim.dm index 0175a04d3e02..575a187fff28 100644 --- a/mods/content/blacksmithy/barrel_rim.dm +++ b/mods/content/blacksmithy/barrel_rim.dm @@ -11,6 +11,7 @@ one_per_turf = FALSE on_floor = FALSE category = "items" + uid = "stack_recipe_stick_barrel_rim" /obj/structure/reagent_dispensers/barrel // Skill used for coopery. diff --git a/mods/content/corporate/datum/antagonists/commando.dm b/mods/content/corporate/datum/antagonists/commando.dm index 3aac5874e4b6..7f49b43cd2dd 100644 --- a/mods/content/corporate/datum/antagonists/commando.dm +++ b/mods/content/corporate/datum/antagonists/commando.dm @@ -12,6 +12,7 @@ default_access = list(access_mercenary) rig_type = /obj/item/rig/merc id_title = "Commando" + uid = "special_role_deathsquad_mercenary" /decl/outfit/mercenary_commando name = "Special Role - Mercenary Commando" diff --git a/mods/content/corporate/datum/antagonists/deathsquad.dm b/mods/content/corporate/datum/antagonists/deathsquad.dm index 28311da174e8..201e7771c677 100644 --- a/mods/content/corporate/datum/antagonists/deathsquad.dm +++ b/mods/content/corporate/datum/antagonists/deathsquad.dm @@ -20,6 +20,7 @@ faction = "deathsquad" default_outfit = /decl/outfit/commando id_title = "Asset Protection" + uid = "special_role_deathsquad" var/deployed = 0 /decl/special_role/deathsquad/attempt_spawn() diff --git a/mods/content/fantasy/datum/currencies.dm b/mods/content/fantasy/datum/currencies.dm index f16917dcc787..e1984ba6665f 100644 --- a/mods/content/fantasy/datum/currencies.dm +++ b/mods/content/fantasy/datum/currencies.dm @@ -46,9 +46,12 @@ /decl/stack_recipe/coin/imperial currency = /decl/currency/imperial name = "\improper Imperial crown" + uid = "stack_recipe_coin_imperial_crown" /decl/stack_recipe/coin/imperial/quin name = "\improper Imperial quincrown" + uid = "stack_recipe_coin_imperial_quincrown" /decl/stack_recipe/coin/imperial/huge name = "\improper Imperial crown regalis" + uid = "stack_recipe_coin_imperial_regalis" diff --git a/mods/content/fantasy/items/clothing/_loadout.dm b/mods/content/fantasy/items/clothing/_loadout.dm index c9d6b1e21255..bac664a0ed95 100644 --- a/mods/content/fantasy/items/clothing/_loadout.dm +++ b/mods/content/fantasy/items/clothing/_loadout.dm @@ -3,6 +3,7 @@ /decl/loadout_category/fantasy/clothing name = "Clothing" + uid = "loadout_category_fantasy_clothing" /decl/loadout_option/fantasy abstract_type = /decl/loadout_option/fantasy @@ -215,6 +216,7 @@ /decl/loadout_category/fantasy/utility name = "Utility" + uid = "loadout_category_fantasy_utility" /decl/loadout_option/fantasy/utility abstract_type = /decl/loadout_option/fantasy/utility diff --git a/mods/content/fantasy/items/clothing/_recipes.dm b/mods/content/fantasy/items/clothing/_recipes.dm index 99942d8918ed..07abf92fee65 100644 --- a/mods/content/fantasy/items/clothing/_recipes.dm +++ b/mods/content/fantasy/items/clothing/_recipes.dm @@ -1,23 +1,29 @@ /decl/stack_recipe/textiles/jerkin result_type = /obj/item/clothing/shirt/crafted category = "clothing" + uid = "stack_recipe_textile_jerkin" /decl/stack_recipe/textiles/gown - result_type = /obj/item/clothing/dress/gown - category = "clothing" + result_type = /obj/item/clothing/dress/gown + category = "clothing" + uid = "stack_recipe_textile_gown" /decl/stack_recipe/textiles/trousers result_type = /obj/item/clothing/pants/trousers category = "clothing" + uid = "stack_recipe_textile_trousers" /decl/stack_recipe/textiles/braies result_type = /obj/item/clothing/pants/trousers/braies category = "clothing" + uid = "stack_recipe_textile_braies" /decl/stack_recipe/textiles/tunic result_type = /obj/item/clothing/shirt/tunic category = "clothing" + uid = "stack_recipe_textile_tunic" /decl/stack_recipe/textiles/tunic_short result_type = /obj/item/clothing/shirt/tunic/short category = "clothing" + uid = "stack_recipe_textile_tunic_short" diff --git a/mods/content/fantasy/items/clothing/loincloth.dm b/mods/content/fantasy/items/clothing/loincloth.dm index 5cb8288038e1..05c8edd23175 100644 --- a/mods/content/fantasy/items/clothing/loincloth.dm +++ b/mods/content/fantasy/items/clothing/loincloth.dm @@ -8,4 +8,5 @@ material = /decl/material/solid/organic/skin/fur /decl/stack_recipe/textiles/loincloth - result_type = /obj/item/clothing/pants/loincloth + result_type = /obj/item/clothing/pants/loincloth + uid = "stack_recipe_textile_loincloth" diff --git a/mods/content/fishing/fishing_recipes.dm b/mods/content/fishing/fishing_recipes.dm index 405773b34267..c4420548b043 100644 --- a/mods/content/fishing/fishing_recipes.dm +++ b/mods/content/fishing/fishing_recipes.dm @@ -1,2 +1,3 @@ /decl/stack_recipe/planks/fishing_rod - result_type = /obj/item/fishing_rod \ No newline at end of file + result_type = /obj/item/fishing_rod + uid = "stack_recipe_planks_fishingrod" \ No newline at end of file diff --git a/mods/content/psionics/datum/antagonists/beguiled.dm b/mods/content/psionics/datum/antagonists/beguiled.dm index b4745b871262..199048faea52 100644 --- a/mods/content/psionics/datum/antagonists/beguiled.dm +++ b/mods/content/psionics/datum/antagonists/beguiled.dm @@ -3,6 +3,7 @@ name_plural = "Beguiled" welcome_text = "Your mind is no longer solely your own..." flags = ANTAG_IMPLANT_IMMUNE + uid = "special_role_beguiled" var/list/minion_controllers = list() diff --git a/mods/content/psionics/datum/antagonists/foundation.dm b/mods/content/psionics/datum/antagonists/foundation.dm index 8b4f204cad66..b5f957b5c78d 100644 --- a/mods/content/psionics/datum/antagonists/foundation.dm +++ b/mods/content/psionics/datum/antagonists/foundation.dm @@ -24,6 +24,7 @@ faction = "foundation" default_outfit = /decl/outfit/foundation id_title = "Foundation Agent" + uid = "special_role_foundation_agent" /decl/special_role/foundation/equip_role(var/mob/living/human/player) . = ..() diff --git a/mods/content/psionics/datum/antagonists/paramount.dm b/mods/content/psionics/datum/antagonists/paramount.dm index b7c76a8cb407..5819623d8c5a 100644 --- a/mods/content/psionics/datum/antagonists/paramount.dm +++ b/mods/content/psionics/datum/antagonists/paramount.dm @@ -12,6 +12,7 @@ min_player_age = 18 faction = "paramount" default_outfit = /decl/outfit/paramount + uid = "special_role_paramount" /decl/outfit/paramount name = "Special Role - Paramount Grandmaster" diff --git a/mods/content/psionics/system/psionics/faculties/_faculty.dm b/mods/content/psionics/system/psionics/faculties/_faculty.dm index 03d9fc7a2363..8f63077a83cc 100644 --- a/mods/content/psionics/system/psionics/faculties/_faculty.dm +++ b/mods/content/psionics/system/psionics/faculties/_faculty.dm @@ -1,4 +1,5 @@ /decl/psionic_faculty + abstract_type = /decl/psionic_faculty var/id var/name var/associated_intent_flag diff --git a/mods/content/psionics/system/psionics/null/material.dm b/mods/content/psionics/system/psionics/null/material.dm index e28146d5b44a..dac92d36141f 100644 --- a/mods/content/psionics/system/psionics/null/material.dm +++ b/mods/content/psionics/system/psionics/null/material.dm @@ -30,3 +30,4 @@ /decl/stack_recipe/tile/nullglass result_type = /obj/item/stack/tile/floor_nullglass required_material = /decl/material/nullglass + uid = "stack_recipe_nullglass_tile" diff --git a/mods/content/response_team/datum/ert_special_role.dm b/mods/content/response_team/datum/ert_special_role.dm index 439d9f7f23bc..0cd5e00571d6 100644 --- a/mods/content/response_team/datum/ert_special_role.dm +++ b/mods/content/response_team/datum/ert_special_role.dm @@ -23,6 +23,7 @@ default_outfit = /decl/outfit/ert base_to_load = "ERT Base" + uid = "special_role_emergency_responder" /decl/special_role/ert/create_default(var/mob/source) var/mob/living/human/M = ..() diff --git a/mods/content/undead/traits.dm b/mods/content/undead/traits.dm index 06d4f34e9572..c7c7926b4f3e 100644 --- a/mods/content/undead/traits.dm +++ b/mods/content/undead/traits.dm @@ -2,3 +2,4 @@ name = "Undead" description = "Your body is dead, but remains animated through some supernatural force." levels = list(TRAIT_LEVEL_MINOR, TRAIT_LEVEL_MODERATE) // Moderate means skeleton, minor means zombie. + uid = "trait_undead" \ No newline at end of file diff --git a/mods/content/xenobiology/colours/_colour.dm b/mods/content/xenobiology/colours/_colour.dm index c5de84b8fbe1..12976bdf96b8 100644 --- a/mods/content/xenobiology/colours/_colour.dm +++ b/mods/content/xenobiology/colours/_colour.dm @@ -1,4 +1,5 @@ /decl/slime_colour + abstract_type = /decl/slime_colour var/name var/min_children = 4 var/max_children = 4 diff --git a/mods/content/xenobiology/slime/slime_commands.dm b/mods/content/xenobiology/slime/slime_commands.dm index 3be381f2a01f..2da3a044fac6 100644 --- a/mods/content/xenobiology/slime/slime_commands.dm +++ b/mods/content/xenobiology/slime/slime_commands.dm @@ -1,4 +1,5 @@ /decl/slime_command + abstract_type = /decl/slime_command var/list/triggers /decl/slime_command/proc/resolve(var/speaker, var/spoken, var/datum/mob_controller/slime/holder) diff --git a/mods/gamemodes/cult/special_role.dm b/mods/gamemodes/cult/special_role.dm index 4f25ddeb6d20..372a1de34d9b 100644 --- a/mods/gamemodes/cult/special_role.dm +++ b/mods/gamemodes/cult/special_role.dm @@ -19,6 +19,7 @@ skill_setter = /datum/antag_skill_setter/station faction = "cult" blocked_job_event_categories = list(ASSIGNMENT_ROBOT, ASSIGNMENT_COMPUTER) + uid = "special_role_cultist" var/allow_narsie = 1 var/powerless = 0 diff --git a/mods/gamemodes/heist/special_role.dm b/mods/gamemodes/heist/special_role.dm index d9f984dcf6c7..ba6021272794 100644 --- a/mods/gamemodes/heist/special_role.dm +++ b/mods/gamemodes/heist/special_role.dm @@ -16,6 +16,7 @@ base_to_load = "Heist Base" default_outfit = /decl/outfit/raider id_title = "Visitor" + uid = "special_role_raider" var/list/outfits_per_species diff --git a/mods/gamemodes/mercenary/mercenary_antagonist.dm b/mods/gamemodes/mercenary/mercenary_antagonist.dm index 7b9bbc83e968..4a7237944400 100644 --- a/mods/gamemodes/mercenary/mercenary_antagonist.dm +++ b/mods/gamemodes/mercenary/mercenary_antagonist.dm @@ -19,6 +19,7 @@ base_to_load = "Mercenary Base" default_outfit = /decl/outfit/mercenary + uid = "special_role_mercenary" /decl/special_role/mercenary/create_global_objectives() if(!..()) diff --git a/mods/gamemodes/ninja/datums/special_role.dm b/mods/gamemodes/ninja/datums/special_role.dm index 46100fe7caa8..02b12f5803fc 100644 --- a/mods/gamemodes/ninja/datums/special_role.dm +++ b/mods/gamemodes/ninja/datums/special_role.dm @@ -16,6 +16,7 @@ default_outfit = /decl/outfit/ninja id_title = "Infiltrator" rig_type = /obj/item/rig/light/ninja + uid = "special_role_ninja" var/list/ninja_titles var/list/ninja_names diff --git a/mods/gamemodes/revolution/loyalist.dm b/mods/gamemodes/revolution/loyalist.dm index ff59a4eae546..66e4c28d0c71 100644 --- a/mods/gamemodes/revolution/loyalist.dm +++ b/mods/gamemodes/revolution/loyalist.dm @@ -20,6 +20,7 @@ blacklisted_jobs = list(/datum/job/submap) skill_setter = /datum/antag_skill_setter/station faction = "loyalist" + uid = "special_role_loyalist" var/command_department_id /decl/special_role/loyalist/Initialize() diff --git a/mods/gamemodes/revolution/revolutionary.dm b/mods/gamemodes/revolution/revolutionary.dm index e51486d733ce..6e437a022df0 100644 --- a/mods/gamemodes/revolution/revolutionary.dm +++ b/mods/gamemodes/revolution/revolutionary.dm @@ -21,6 +21,7 @@ faction_indicator = "hud_rev" faction_invisible = 1 faction = "revolutionary" + uid = "special_role_revolutionary" blacklisted_jobs = list(/datum/job/submap) var/command_department_id diff --git a/mods/gamemodes/spyvspy/special_role.dm b/mods/gamemodes/spyvspy/special_role.dm index 96b6e6e31745..7f137034ffde 100644 --- a/mods/gamemodes/spyvspy/special_role.dm +++ b/mods/gamemodes/spyvspy/special_role.dm @@ -22,6 +22,7 @@ antaghud_indicator = "hud_renegade" skill_setter = /datum/antag_skill_setter/station blocked_job_event_categories = list(ASSIGNMENT_COMPUTER) + uid = "special_role_renegade" var/list/spawn_guns = list( /obj/item/gun/projectile/revolver/lasvolver, diff --git a/mods/gamemodes/traitor/special_role.dm b/mods/gamemodes/traitor/special_role.dm index 495156274c05..201669fb5470 100644 --- a/mods/gamemodes/traitor/special_role.dm +++ b/mods/gamemodes/traitor/special_role.dm @@ -7,6 +7,7 @@ flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE skill_setter = /datum/antag_skill_setter/station blocked_job_event_categories = list(ASSIGNMENT_COMPUTER) + uid = "special_role_traitor" /decl/special_role/traitor/get_extra_panel_options(var/datum/mind/player) return "\[set crystals\]\[spawn uplink\]" diff --git a/mods/mobs/borers/datum/antagonist.dm b/mods/mobs/borers/datum/antagonist.dm index 423297f09f87..d1f84538bd2f 100644 --- a/mods/mobs/borers/datum/antagonist.dm +++ b/mods/mobs/borers/datum/antagonist.dm @@ -21,6 +21,7 @@ spawn_announcement_title = "Lifesign Alert" spawn_announcement_delay = 5000 + uid = "special_role_borer" /decl/special_role/borer/get_extra_panel_options(var/datum/mind/player) return "\[put in host\]" diff --git a/mods/species/ascent/datum/antagonist.dm b/mods/species/ascent/datum/antagonist.dm index f30768cb15b8..c3bea8aa0c4d 100644 --- a/mods/species/ascent/datum/antagonist.dm +++ b/mods/species/ascent/datum/antagonist.dm @@ -14,6 +14,7 @@ initial_spawn_req = 4 initial_spawn_target = 6 rig_type = /obj/item/rig/mantid + uid = "special_role_gyne_hunter" /decl/special_role/hunter/update_antag_mob(var/datum/mind/player, var/preserve_appearance) . = ..() diff --git a/mods/species/ascent/datum/traits.dm b/mods/species/ascent/datum/traits.dm index 9faaa45fd242..a134d69c3dc3 100644 --- a/mods/species/ascent/datum/traits.dm +++ b/mods/species/ascent/datum/traits.dm @@ -20,15 +20,18 @@ name = "Upgraded Support Systems" description = "Coming soon!" category = "Suit Upgrades" + uid = "trait_ascent_suit_upgrade" // Physical modifications like extra organs or different resistances. /decl/trait/ascent/adaptation name = "Specialized Molt" description = "Coming soon!" category = "Adaptations" + uid = "trait_ascent_specialized_molt" // Behavioral compulsions enforced by AI /decl/trait/ascent/derangement name = "Megalomania" description = "Coming soon!" category = "Derangements" + uid = "trait_ascent_megalomania" diff --git a/mods/species/drakes/drake_traits.dm b/mods/species/drakes/drake_traits.dm index 4e82bf59b224..6f50adb261bf 100644 --- a/mods/species/drakes/drake_traits.dm +++ b/mods/species/drakes/drake_traits.dm @@ -1,3 +1,4 @@ /decl/trait/sivian_biochemistry name = "Sivian Biochemistry" description = "This creature is adapted to the complex bacteria of the garden world of Sif." + uid = "trait_sivian_biochemistry" \ No newline at end of file diff --git a/mods/species/neoavians/datum/loadout.dm b/mods/species/neoavians/datum/loadout.dm index 125b2de01b4b..113cb5e5f3c1 100644 --- a/mods/species/neoavians/datum/loadout.dm +++ b/mods/species/neoavians/datum/loadout.dm @@ -1,5 +1,6 @@ /decl/loadout_category/avian name = "Avian" + uid = "loadout_category_avian" /decl/loadout_option/avian whitelisted = list(/decl/species/neoavian::uid) diff --git a/mods/species/utility_frames/traits.dm b/mods/species/utility_frames/traits.dm index 8e1150fce82e..8bf67ef4e6b7 100644 --- a/mods/species/utility_frames/traits.dm +++ b/mods/species/utility_frames/traits.dm @@ -15,15 +15,18 @@ name = "Heavy Frame" description = "Coming soon!" category = "Frame Customisation" + uid = "trait_utility_frame_heavy" // Additional augments, organs, better armour, robomodules /decl/trait/utility_frame/upgrade name = "Upgraded Widget" description = "Coming soon!" category = "Upgrades" + uid = "trait_utility_frame_upgraded_widget" // Various maluses /decl/trait/utility_frame/fault name = "Faulty Widget" description = "Coming soon!" category = "Faults" + uid = "trait_utility_frame_faulty_widget" diff --git a/mods/species/vox/datum/traits.dm b/mods/species/vox/datum/traits.dm index 0ce137e24e10..d7f032c2fa23 100644 --- a/mods/species/vox/datum/traits.dm +++ b/mods/species/vox/datum/traits.dm @@ -15,9 +15,11 @@ name = "Apex-Edited" description = "Coming soon!" category = "Psyche" + uid = "trait_vox_apex_edited" // Perks for interacting with vox equipment. /decl/trait/vox/symbiosis name = "Self-Maintaining Equipment" description = "Coming soon!" category = "Symbiosis" + uid = "trait_vox_self_maintaining" diff --git a/mods/utility/prometheus_metrics/metric_family.dm b/mods/utility/prometheus_metrics/metric_family.dm index 0054e97a257e..514589807a8f 100644 --- a/mods/utility/prometheus_metrics/metric_family.dm +++ b/mods/utility/prometheus_metrics/metric_family.dm @@ -1,5 +1,6 @@ // Datum used for gathering a set of prometheus metrics. /decl/metric_family + abstract_type = /decl/metric_family var/name = null var/metric_type = null var/help = null