diff --git a/_maps/RandomRuins/SpaceRuins/film_studio.dmm b/_maps/RandomRuins/SpaceRuins/film_studio.dmm
index 583a6ea0ea9..f5446779a06 100644
--- a/_maps/RandomRuins/SpaceRuins/film_studio.dmm
+++ b/_maps/RandomRuins/SpaceRuins/film_studio.dmm
@@ -2050,7 +2050,7 @@
/turf/open/floor/iron/showroomfloor,
/area/ruin/space/has_grav/film_studio/dorms)
"Ki" = (
-/obj/item/clothing/head/frenchberet{
+/obj/item/clothing/head/beret/frenchberet{
pixel_x = 15
},
/turf/open/floor/plating,
diff --git a/_maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm b/_maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm
index 7a76e71debf..c5566cdeeab 100644
--- a/_maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm
+++ b/_maps/RandomRuins/SpaceRuins/mimesvsclowns.dmm
@@ -61,8 +61,8 @@
/obj/item/clothing/mask/gas/mime,
/obj/item/clothing/under/rank/civilian/mime,
/obj/item/clothing/under/rank/civilian/mime,
-/obj/item/clothing/head/frenchberet,
-/obj/item/clothing/head/frenchberet,
+/obj/item/clothing/head/beret/frenchberet,
+/obj/item/clothing/head/beret/frenchberet,
/obj/item/storage/backpack/mime,
/turf/open/floor/iron/checker/airless,
/area/ruin)
diff --git a/code/__DEFINES/_flags.dm b/code/__DEFINES/_flags.dm
index 5aefb1507e5..e483be107d6 100644
--- a/code/__DEFINES/_flags.dm
+++ b/code/__DEFINES/_flags.dm
@@ -58,6 +58,8 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
#define DECAL_INIT_UPDATE_EXPERIENCED_1 (1<<17)
/// This atom always returns its turf in get_turf_pixel instead of the turf from its offsets
#define IGNORE_TURF_PIXEL_OFFSET_1 (1<<18)
+/// This atom does not need to generate its own preview icon for GAGS
+#define NO_NEW_GAGS_PREVIEW_1 (1<<19)
// Update flags for [/atom/proc/update_appearance]
/// Update the atom's name
diff --git a/code/__DEFINES/dcs/signals/signals_subsystem.dm b/code/__DEFINES/dcs/signals/signals_subsystem.dm
index a41ec035a33..749ba9f6381 100644
--- a/code/__DEFINES/dcs/signals/signals_subsystem.dm
+++ b/code/__DEFINES/dcs/signals/signals_subsystem.dm
@@ -3,7 +3,7 @@
// All signals send the source datum of the signal as the first argument
///Subsystem signals
-///From base of datum/controller/subsystem/Initialize
+///From base of /datum/controller/master/init_subsystem()
#define COMSIG_SUBSYSTEM_POST_INITIALIZE "subsystem_post_initialize"
///Called when the ticker enters the pre-game phase
diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm
index 85838631fd6..cae40d02233 100644
--- a/code/_globalvars/bitfields.dm
+++ b/code/_globalvars/bitfields.dm
@@ -131,12 +131,16 @@ DEFINE_BITFIELD(flags_1, list(
"ALLOW_DARK_PAINTS_1" = ALLOW_DARK_PAINTS_1,
"ATMOS_IS_PROCESSING_1" = ATMOS_IS_PROCESSING_1,
"CAN_BE_DIRTY_1" = CAN_BE_DIRTY_1,
+ "DECAL_INIT_UPDATE_EXPERIENCED_1" = DECAL_INIT_UPDATE_EXPERIENCED_1,
"HAS_CONTEXTUAL_SCREENTIPS_1" = HAS_CONTEXTUAL_SCREENTIPS_1,
"HAS_DISASSOCIATED_STORAGE_1" = HAS_DISASSOCIATED_STORAGE_1,
"HOLOGRAM_1" = HOLOGRAM_1,
+ "HTML_USE_INITAL_ICON_1" = HTML_USE_INITAL_ICON_1,
+ "IGNORE_TURF_PIXEL_OFFSET_1" = IGNORE_TURF_PIXEL_OFFSET_1,
"INITIALIZED_1" = INITIALIZED_1,
"IS_ONTOP_1" = IS_ONTOP_1,
"IS_PLAYER_COLORABLE_1" = IS_PLAYER_COLORABLE_1,
+ "NO_NEW_GAGS_PREVIEW_1" = NO_NEW_GAGS_PREVIEW_1,
"NO_SCREENTIPS_1" = NO_SCREENTIPS_1,
"ON_BORDER_1" = ON_BORDER_1,
"PREVENT_CLICK_UNDER_1" = PREVENT_CLICK_UNDER_1,
diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm
index bc937d4007c..879b7b64e1f 100644
--- a/code/controllers/configuration/entries/general.dm
+++ b/code/controllers/configuration/entries/general.dm
@@ -785,3 +785,6 @@
// If set, enables the "Link forum account" OOC verb
/datum/config_entry/string/forum_link_uri
+
+/datum/config_entry/flag/generate_assets_in_init
+ default = FALSE
diff --git a/code/controllers/master.dm b/code/controllers/master.dm
index 82e2881f255..d42826cd6ae 100644
--- a/code/controllers/master.dm
+++ b/code/controllers/master.dm
@@ -514,7 +514,6 @@ ADMIN_VERB(cmd_controller_view_ui, R_SERVER|R_DEBUG, "Controller Overview", "Vie
if(result != SS_INIT_FAILURE)
// Some form of success, implicit failure, or the SS in unused.
subsystem.initialized = TRUE
-
SEND_SIGNAL(subsystem, COMSIG_SUBSYSTEM_POST_INITIALIZE)
else
// The subsystem officially reports that it failed to init and wishes to be treated as such.
diff --git a/code/controllers/subsystem/assets.dm b/code/controllers/subsystem/assets.dm
index d6629d1bb44..e3b03c01222 100644
--- a/code/controllers/subsystem/assets.dm
+++ b/code/controllers/subsystem/assets.dm
@@ -3,7 +3,7 @@ SUBSYSTEM_DEF(assets)
dependencies = list(
/datum/controller/subsystem/atoms,
/datum/controller/subsystem/persistent_paintings,
- /datum/controller/subsystem/processing/greyscale,
+ /datum/controller/subsystem/greyscale_previews,
)
flags = SS_NO_FIRE
var/list/datum/asset_cache_item/cache = list()
diff --git a/code/controllers/subsystem/atoms.dm b/code/controllers/subsystem/atoms.dm
index 7b0e705de38..3b62f241360 100644
--- a/code/controllers/subsystem/atoms.dm
+++ b/code/controllers/subsystem/atoms.dm
@@ -162,6 +162,7 @@ SUBSYSTEM_DEF(atoms)
initialized = base_initialized
base_initialized = INITIALIZATION_INNEW_REGULAR
return
+
initialized = initialized_state[length(initialized_state)][2]
/// Returns TRUE if anything is currently being initialized
diff --git a/code/controllers/subsystem/early_assets.dm b/code/controllers/subsystem/early_assets.dm
index ad2624789af..df155a4db10 100644
--- a/code/controllers/subsystem/early_assets.dm
+++ b/code/controllers/subsystem/early_assets.dm
@@ -7,7 +7,7 @@ SUBSYSTEM_DEF(early_assets)
name = "Early Assets"
dependencies = list(
/datum/controller/subsystem/processing/reagents,
- /datum/controller/subsystem/processing/greyscale,
+ /datum/controller/subsystem/greyscale_previews,
)
dependents = list(
/datum/controller/subsystem/mapping,
@@ -17,6 +17,9 @@ SUBSYSTEM_DEF(early_assets)
flags = SS_NO_FIRE
/datum/controller/subsystem/early_assets/Initialize()
+ var/init_source = "early assets"
+ SSatoms.set_tracked_initalized(INITIALIZATION_INNEW_REGULAR, init_source)
+
for (var/datum/asset/asset_type as anything in subtypesof(/datum/asset))
if (initial(asset_type._abstract) == asset_type)
continue
@@ -29,4 +32,6 @@ SUBSYSTEM_DEF(early_assets)
CHECK_TICK
+ SSatoms.clear_tracked_initalize(init_source)
+
return SS_INIT_SUCCESS
diff --git a/code/controllers/subsystem/greyscale_previews.dm b/code/controllers/subsystem/greyscale_previews.dm
new file mode 100644
index 00000000000..e5b108b1fd4
--- /dev/null
+++ b/code/controllers/subsystem/greyscale_previews.dm
@@ -0,0 +1,122 @@
+/// If we are in unit tests OR if we are not using iconforge, then we should make sure the icons we are using are valid.
+#if !defined(USE_RUSTG_ICONFORGE_GAGS) || defined(UNIT_TESTS)
+ #define CHECK_SPRITESHEET_ICON_VALIDITY
+#endif
+
+SUBSYSTEM_DEF(greyscale_previews)
+ name = "Greyscale Previews"
+ flags = SS_NO_FIRE
+ init_stage = INITSTAGE_EARLY
+ dependencies = list(
+ /datum/controller/subsystem/processing/greyscale,
+ )
+
+/datum/controller/subsystem/greyscale_previews/Initialize()
+#ifndef UNIT_TESTS // We want this to run during unit tests regardless of the config
+ if(!CONFIG_GET(flag/generate_assets_in_init))
+ return SS_INIT_SUCCESS
+#endif
+
+ ExportMapPreviews()
+ return SS_INIT_SUCCESS
+
+/datum/controller/subsystem/greyscale_previews/proc/ExportMapPreviews()
+ // Put subtypes before their parent or the parent file will take all the generated icons
+ var/static/list/types_that_get_their_own_file = list(
+ "turfs" = /turf, // None of these yet but it's harmless to be prepared
+ "mobs" = /mob, // Ditto
+ "clothing/accessory" = /obj/item/clothing/accessory,
+ "clothing/head/beret" = /obj/item/clothing/head/beret,
+ "clothing/head/_head" = /obj/item/clothing/head,
+ "clothing/mask" = /obj/item/clothing/mask,
+ "clothing/neck" = /obj/item/clothing/neck,
+ "clothing/shoes" = /obj/item/clothing/shoes,
+ "clothing/suit/costume" = /obj/item/clothing/suit/costume,
+ "clothing/suit/_suit" = /obj/item/clothing/suit,
+ "clothing/under/color" = /obj/item/clothing/under/color,
+ "clothing/under/costume" = /obj/item/clothing/under/costume,
+ "clothing/under/dress" = /obj/item/clothing/under/dress,
+ "clothing/under/_under" = /obj/item/clothing/under,
+ "clothing/_clothing" = /obj/item/clothing,
+ "items/encryptionkey" = /obj/item/encryptionkey,
+ "items/pda" = /obj/item/modular_computer/pda,
+ "items/_item" = /obj/item,
+ "objects" = /obj,
+)
+
+#ifdef UNIT_TESTS
+ if(!check_map_previews_filepath_order(types_that_get_their_own_file))
+ CRASH("The list 'types_that_get_their_own_file', used by ExportMapPreviews, is invalid. Please ensure that subtypes come BEFORE parent types in the list order.")
+#endif
+
+ var/list/handled_types = list()
+ for(var/filename in types_that_get_their_own_file)
+ var/type_to_export = types_that_get_their_own_file[filename]
+ handled_types += ExportMapPreviewsForType(filename, type_to_export, handled_types)
+
+ ExportMapPreviewsForType("unsorted", /atom, handled_types)
+
+/// Checks that we do not have any parent types coming before subtypes in the types_that_get_their_own_file list (which is an assoc list (filepath, typepath))
+/datum/controller/subsystem/greyscale_previews/proc/check_map_previews_filepath_order(list/our_list)
+ var/list/type_paths_to_check = list()
+ for(var/filepath in our_list)
+ type_paths_to_check += our_list[filepath]
+
+ if(!length(type_paths_to_check))
+ return TRUE
+
+ for(var/i = 1 to length(type_paths_to_check))
+ var/path_i = type_paths_to_check[i]
+ for(var/j = i+1 to length(type_paths_to_check))
+ var/path_j = type_paths_to_check[j]
+ if(ispath(path_j, path_i))
+ stack_trace("Error: [path_j] (index [j]) is a subtype of [path_i] (index [i]) but appears after it.")
+ return FALSE
+ return TRUE
+
+/datum/controller/subsystem/greyscale_previews/proc/ExportMapPreviewsForType(filename, atom/atom_typepath, list/type_blacklist)
+ var/list/handled_types = list()
+ var/list/icons = list()
+ for(var/atom/atom_type as anything in typesof(atom_typepath))
+ if(type_blacklist && type_blacklist[atom_type])
+ continue
+ handled_types[atom_type] = TRUE
+ var/greyscale_config = atom_type::greyscale_config
+ var/greyscale_colors = atom_type::greyscale_colors
+ if(!greyscale_config || !greyscale_colors || atom_type::flags_1 & NO_NEW_GAGS_PREVIEW_1)
+ continue
+ #ifdef CHECK_SPRITESHEET_ICON_VALIDITY
+ var/icon/map_icon = icon(SSgreyscale.GetColoredIconByType(greyscale_config, greyscale_colors))
+ if((map_icon.Height() > 32) || (map_icon.Width() > 32)) // No large icons, use icon_preview and icon_preview_state instead.
+ stack_trace("GAGS configuration is trying to generate a map preview graphic for '[atom_type]', which has a large icon. This is not suppoorted; implement icon_preview instead.")
+ continue
+ if(!(atom_type::post_init_icon_state in map_icon.IconStates()))
+ stack_trace("GAGS configuration missing icon state needed to generate map preview graphic for '[atom_type]'. Make sure the right greyscale_config is set up.")
+ continue
+ map_icon = icon(map_icon, atom_type::post_init_icon_state)
+ icons["[atom_type]"] = map_icon
+ #else // will be updated to use iconforge's new .dmi spritesheet generation instead
+ var/icon/map_icon = icon(SSgreyscale.GetColoredIconByType(greyscale_config, greyscale_colors))
+ map_icon = icon(map_icon, atom_type::post_init_icon_state)
+ icons["[atom_type]"] = map_icon
+ #endif
+
+ var/icon/holder = icon('icons/testing/greyscale_error.dmi')
+ for(var/state in icons)
+ holder.Insert(icons[state], state)
+
+ var/filepath = "icons/map_icons/[filename].dmi"
+#ifdef UNIT_TESTS
+ var/old_md5 = rustg_hash_file(RUSTG_HASH_MD5, filepath)
+#endif
+ fcopy(holder, filepath)
+#ifdef UNIT_TESTS
+ var/new_md5 = rustg_hash_file(RUSTG_HASH_MD5, filepath)
+ if(old_md5 != new_md5)
+ stack_trace("Generated map icons were different than what is currently saved. If you see this in a CI run it means you need to run the game once through initialization and commit the resulting files in 'icons/map_icons/'")
+#endif
+ return handled_types
+
+#ifdef CHECK_SPRITESHEET_ICON_VALIDITY
+ #undef CHECK_SPRITESHEET_ICON_VALIDITY
+#endif
diff --git a/code/controllers/subsystem/processing/greyscale.dm b/code/controllers/subsystem/processing/greyscale.dm
index fcd7b482847..0b7b4d3b66e 100644
--- a/code/controllers/subsystem/processing/greyscale.dm
+++ b/code/controllers/subsystem/processing/greyscale.dm
@@ -17,8 +17,8 @@ PROCESSING_SUBSYSTEM_DEF(greyscale)
#endif
/datum/controller/subsystem/processing/greyscale/Initialize()
- for(var/datum/greyscale_layer/fake_type as anything in subtypesof(/datum/greyscale_layer))
- layer_types[initial(fake_type.layer_type)] = fake_type
+ for(var/datum/greyscale_layer/greyscale_layer as anything in subtypesof(/datum/greyscale_layer))
+ layer_types[initial(greyscale_layer.layer_type)] = greyscale_layer
for(var/greyscale_type in subtypesof(/datum/greyscale_config))
var/datum/greyscale_config/config = new greyscale_type()
diff --git a/code/datums/components/toggle_attached_clothing.dm b/code/datums/components/toggle_attached_clothing.dm
index a1cde8cba63..a251fd0e38a 100644
--- a/code/datums/components/toggle_attached_clothing.dm
+++ b/code/datums/components/toggle_attached_clothing.dm
@@ -70,7 +70,7 @@
RegisterSignal(parent, COMSIG_ITEM_POST_UNEQUIP, PROC_REF(remove_deployable))
RegisterSignal(parent, COMSIG_ITEM_EQUIPPED_AS_OUTFIT, PROC_REF(on_parent_equipped_outfit))
if (down_overlay_state_suffix)
- var/overlay_state = "[initial(clothing_parent.icon_state)][down_overlay_state_suffix]"
+ var/overlay_state = "[initial(clothing_parent.post_init_icon_state) || initial(clothing_parent.icon_state)][down_overlay_state_suffix]"
undeployed_overlay = mutable_appearance(initial(clothing_parent.worn_icon), overlay_state, -SUIT_LAYER)
RegisterSignal(parent, COMSIG_ITEM_GET_WORN_OVERLAYS, PROC_REF(on_checked_overlays))
clothing_parent.update_slot_icon()
@@ -137,7 +137,7 @@
currently_deployed = TRUE
on_deployed?.Invoke(deployable)
if (parent_icon_state_suffix)
- parent_gear.icon_state = "[initial(parent_gear.icon_state)][parent_icon_state_suffix]"
+ parent_gear.icon_state = "[initial(parent_gear.post_init_icon_state) || initial(parent_gear.icon_state)][parent_icon_state_suffix]"
parent_gear.worn_icon_state = parent_gear.icon_state
parent_gear.update_slot_icon()
wearer.update_mob_action_buttons()
@@ -201,7 +201,7 @@
if(destroy_on_removal)
QDEL_NULL(deployable)
if(parent_icon_state_suffix)
- parent_gear.icon_state = "[initial(parent_gear.icon_state)]"
+ parent_gear.icon_state = "[initial(parent_gear.post_init_icon_state) || initial(parent_gear.icon_state)]"
parent_gear.worn_icon_state = parent_gear.icon_state
parent_gear.update_slot_icon()
parent_gear.update_item_action_buttons()
diff --git a/code/datums/components/toggle_suit.dm b/code/datums/components/toggle_suit.dm
index 022fc37c07a..1f6afe053e0 100644
--- a/code/datums/components/toggle_suit.dm
+++ b/code/datums/components/toggle_suit.dm
@@ -18,7 +18,7 @@
atom_parent.flags_1 |= HAS_CONTEXTUAL_SCREENTIPS_1
src.toggle_noun = toggle_noun
- src.base_icon_state = atom_parent.base_icon_state || atom_parent.icon_state
+ src.base_icon_state = atom_parent.base_icon_state || atom_parent.post_init_icon_state || atom_parent.icon_state
/datum/component/toggle_icon/RegisterWithParent()
RegisterSignal(parent, COMSIG_CLICK_ALT, PROC_REF(on_click_alt))
diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm
index 1c7fd0523b0..fa9440e8c1c 100644
--- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm
+++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm
@@ -274,7 +274,7 @@
json_config = 'code/datums/greyscale/json_configs/vape.json'
/datum/greyscale_config/vape/worn
- name = "Worn Vape"
+ name = "Vape (Worn)"
icon_file = 'icons/mob/clothing/mask.dmi'
json_config = 'code/datums/greyscale/json_configs/vape_worn.json'
@@ -315,12 +315,12 @@
json_config = 'code/datums/greyscale/json_configs/tape_piece_spikes.json'
/datum/greyscale_config/tape_piece/worn
- name = "Worn Tape Piece"
+ name = "Tape Piece (Worn)"
icon_file = 'icons/obj/tapes.dmi'
json_config = 'code/datums/greyscale/json_configs/tape_piece_worn.json'
/datum/greyscale_config/tape_piece/worn/spikes
- name = "Worn Spiked Tape Piece"
+ name = "Spiked Tape Piece (Worn)"
icon_file = 'icons/obj/tapes.dmi'
json_config = 'code/datums/greyscale/json_configs/tape_piece_spikes_worn.json'
@@ -347,7 +347,7 @@
json_config = 'code/datums/greyscale/json_configs/simple_flower.json'
/datum/greyscale_config/flower_simple_worn
- name = "Flower Worn"
+ name = "Flower (Worn)"
icon_file = 'icons/mob/clothing/head/hydroponics.dmi'
json_config = 'code/datums/greyscale/json_configs/simple_flower_worn.json'
diff --git a/code/datums/greyscale/json_configs/wrap_paper.json b/code/datums/greyscale/json_configs/wrap_paper.json
index c7ea889bc22..b3e9774848c 100644
--- a/code/datums/greyscale/json_configs/wrap_paper.json
+++ b/code/datums/greyscale/json_configs/wrap_paper.json
@@ -1,5 +1,5 @@
{
- "": [
+ "wrap_paper": [
{
"type": "icon_state",
"icon_state": "wrap_paper_base",
diff --git a/code/datums/quirks/positive_quirks/bilingual.dm b/code/datums/quirks/positive_quirks/bilingual.dm
index b5fc8a75f37..bfc6db677a4 100644
--- a/code/datums/quirks/positive_quirks/bilingual.dm
+++ b/code/datums/quirks/positive_quirks/bilingual.dm
@@ -6,7 +6,7 @@
gain_text = span_notice("Some of the words of the people around you certainly aren't common. Good thing you studied for this.")
lose_text = span_notice("You seem to have forgotten your second language.")
medical_record_text = "Patient speaks multiple languages."
- mail_goodies = list(/obj/item/taperecorder, /obj/item/clothing/head/frenchberet, /obj/item/clothing/mask/fakemoustache/italian)
+ mail_goodies = list(/obj/item/taperecorder, /obj/item/clothing/head/beret/frenchberet, /obj/item/clothing/mask/fakemoustache/italian)
/datum/quirk_constant_data/bilingual
associated_typepath = /datum/quirk/bilingual
diff --git a/code/game/atom/atom_appearance.dm b/code/game/atom/atom_appearance.dm
index d3e0a64d69c..b9753d219cf 100644
--- a/code/game/atom/atom_appearance.dm
+++ b/code/game/atom/atom_appearance.dm
@@ -1,6 +1,9 @@
/atom
///overlays managed by [update_overlays][/atom/proc/update_overlays] to prevent removing overlays that weren't added by the same proc. Single items are stored on their own, not in a list.
var/list/managed_overlays
+ /// The icon state that will be switched to during initialization.
+ /// Mostly intended for things that have a special map icon.
+ var/post_init_icon_state
/**
* Updates the appearence of the icon
diff --git a/code/game/atom/atoms_initializing_EXPENSIVE.dm b/code/game/atom/atoms_initializing_EXPENSIVE.dm
index b73504fb137..7b0965beabb 100644
--- a/code/game/atom/atoms_initializing_EXPENSIVE.dm
+++ b/code/game/atom/atoms_initializing_EXPENSIVE.dm
@@ -132,6 +132,9 @@
if (light_system == COMPLEX_LIGHT && light_power && light_range)
update_light()
+ if(post_init_icon_state)
+ icon_state = post_init_icon_state
+
SETUP_SMOOTHING()
if(uses_integrity)
diff --git a/code/game/machinery/big_manipulator.dm b/code/game/machinery/big_manipulator.dm
index 1e4054c876f..318d7046c54 100644
--- a/code/game/machinery/big_manipulator.dm
+++ b/code/game/machinery/big_manipulator.dm
@@ -27,8 +27,9 @@
/obj/machinery/big_manipulator
name = "Big Manipulator"
desc = "Operates different objects. Truly, a groundbreaking innovation..."
- icon = 'icons/obj/machines/big_manipulator_parts/big_manipulator_core.dmi'
- icon_state = "core"
+ icon = 'icons/map_icons/objects.dmi'
+ icon_state = "/obj/machinery/big_manipulator"
+ post_init_icon_state = "core"
density = TRUE
circuit = /obj/item/circuitboard/machine/big_manipulator
greyscale_colors = "#d8ce13"
diff --git a/code/game/machinery/computer/atmos_computers/meters.dm b/code/game/machinery/computer/atmos_computers/meters.dm
index 9cfe3072a69..e2316401820 100644
--- a/code/game/machinery/computer/atmos_computers/meters.dm
+++ b/code/game/machinery/computer/atmos_computers/meters.dm
@@ -1,12 +1,13 @@
/obj/machinery/meter/monitored
/// The unique string that represents which atmos chamber to associate with.
var/chamber_id
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/meter/monitored/Initialize(mapload, new_piping_layer)
id_tag = assign_random_name()
if(mapload)
GLOB.map_loaded_sensors[chamber_id] = id_tag
- . = ..()
+ return ..()
/obj/machinery/meter/monitored/layer2
target_layer = 2
diff --git a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm
index 95be7fc6e71..eea2ba1c857 100644
--- a/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/carp_organs.dm
@@ -23,8 +23,9 @@
safe_oxygen_min = 0
safe_oxygen_max = 15
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "lungs"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/lungs/carp"
+ post_init_icon_state = "lungs"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = CARP_COLORS
organ_traits = list(TRAIT_NODROWN)
@@ -42,8 +43,9 @@
say_mod = "gnashes"
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "tongue"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/tongue/carp"
+ post_init_icon_state = "tongue"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = CARP_COLORS
@@ -110,8 +112,9 @@
name = "mutated carp-brain"
desc = "Carp DNA infused into what was once a normal brain."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "brain"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/brain/carp"
+ post_init_icon_state = "brain"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = CARP_COLORS
can_smoothen_out = FALSE
@@ -153,8 +156,9 @@
name = "mutated carp-heart"
desc = "Carp DNA infused into what was once a normal heart."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "heart"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/heart/carp"
+ post_init_icon_state = "heart"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = CARP_COLORS
diff --git a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
index 4b96d3e04fb..7bf126075b4 100644
--- a/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/fish_organs.dm
@@ -163,8 +163,9 @@
/obj/item/organ/tail/fish
name = "fish tail"
desc = "A severed tail from some sort of marine creature... or a fish-infused spaceman. It's smooth, faintly wet and definitely not flopping."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "fish_tail"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/tail/fish"
+ post_init_icon_state = "fish_tail"
greyscale_config = /datum/greyscale_config/fish_tail
greyscale_colors = FISH_ORGAN_COLOR
@@ -382,8 +383,9 @@
/obj/item/organ/stomach/fish
name = "mutated fish-stomach"
desc = "Fish DNA infused into a stomach now permeated by the faint smell of salt and slightly putrefied fish."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "stomach"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/stomach/fish"
+ post_init_icon_state = "stomach"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = FISH_COLORS
@@ -431,8 +433,9 @@
/obj/item/organ/liver/fish
name = "mutated fish-liver"
desc = "Fish DNA infused into a stomach that now uses tetrodotoxin as regenerative material. It also processes alcohol quite well."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "liver"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/liver/fish"
+ post_init_icon_state = "liver"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = FISH_COLORS
diff --git a/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm b/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm
index 97e312a158c..900f566f057 100644
--- a/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/goliath_organs.dm
@@ -16,9 +16,10 @@
name = "goliath eyes"
desc = "goliath DNA infused into what was once some normal eyes."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "eyes"
iris_overlay = null
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/eyes/night_vision/goliath"
+ post_init_icon_state = "eyes"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = GOLIATH_COLORS
@@ -40,8 +41,9 @@
name = "mutated goliath-lungs"
desc = "goliath DNA infused into what was once some normal lungs."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "lungs"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/lungs/lavaland/goliath"
+ post_init_icon_state = "lungs"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = GOLIATH_COLORS
@@ -55,8 +57,9 @@
name = "mutated goliath-brain"
desc = "goliath DNA infused into what was once a normal brain."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "brain"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/brain/goliath"
+ post_init_icon_state = "brain"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = GOLIATH_COLORS
can_smoothen_out = FALSE
@@ -165,8 +168,9 @@
name = "mutated goliath-heart"
desc = "goliath DNA infused into what was once a normal heart."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "heart"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/heart/goliath"
+ post_init_icon_state = "heart"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = GOLIATH_COLORS
diff --git a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm
index 805277b3d9c..f8d47242623 100644
--- a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm
@@ -20,8 +20,9 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
name = "mutated gondola-heart"
desc = "Gondola DNA infused into what was once a normal heart."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "heart"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/heart/gondola"
+ post_init_icon_state = "heart"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = GONDOLA_COLORS
organ_traits = list(TRAIT_PACIFISM)
@@ -53,8 +54,9 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
/obj/item/organ/tongue/gondola
name = "mutated gondola-tongue"
desc = "Gondola DNA infused into what was once a normal tongue."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "tongue"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/tongue/gondola"
+ post_init_icon_state = "tongue"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = GONDOLA_COLORS
organ_traits = list(TRAIT_MUTE)
@@ -76,8 +78,9 @@ Fluoride Stare: After someone says 5 words, blah blah blah...
/obj/item/organ/liver/gondola
name = "mutated gondola-liver"
desc = "Gondola DNA infused into what was once a normal liver."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "liver"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/liver/gondola"
+ post_init_icon_state = "liver"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = GONDOLA_COLORS
diff --git a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
index a39b43643e8..74965cb462b 100644
--- a/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
@@ -19,9 +19,10 @@
eye_color_left = COLOR_BLACK
eye_color_right = COLOR_BLACK
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "eyes"
iris_overlay = null
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/eyes/night_vision/rat"
+ post_init_icon_state = "eyes"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = RAT_COLORS
low_light_cutoff = list(16, 11, 0)
@@ -39,8 +40,9 @@
desc = "Rat DNA infused into what was once a normal stomach."
disgust_metabolism = 3
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "stomach"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/stomach/rat"
+ post_init_icon_state = "stomach"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = RAT_COLORS
hunger_modifier = 10
@@ -54,8 +56,9 @@
/obj/item/organ/heart/rat
name = "mutated rat-heart"
desc = "Rat DNA infused into what was once a normal heart."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "heart"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/heart/rat"
+ post_init_icon_state = "heart"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = RAT_COLORS
@@ -88,10 +91,11 @@
/obj/item/organ/tongue/rat
name = "mutated rat-tongue"
desc = "Rat DNA infused into what was once a normal tongue."
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "tongue"
say_mod = "squeaks"
modifies_speech = TRUE
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/tongue/rat"
+ post_init_icon_state = "tongue"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = RAT_COLORS
liked_foodtypes = DAIRY //mmm, cheese. doesn't especially like anything else
diff --git a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm
index 2c07038fd17..744c2a34c87 100644
--- a/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm
+++ b/code/game/machinery/dna_infuser/organ_sets/roach_organs.dm
@@ -44,8 +44,9 @@
desc = "Roach DNA infused into what was once a normal heart."
maxHealth = 2 * STANDARD_ORGAN_THRESHOLD
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "heart"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/heart/roach"
+ post_init_icon_state = "heart"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = ROACH_COLORS
@@ -161,8 +162,9 @@
metabolism_efficiency = 0.033 // Slightly worse at transferring reagents
hunger_modifier = 3
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "stomach"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/stomach/roach"
+ post_init_icon_state = "stomach"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = ROACH_COLORS
@@ -179,8 +181,9 @@
toxTolerance = 5 // More tolerance for toxins
liver_resistance = 0.25 // But if they manage to get in you're screwed
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "liver"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/liver/roach"
+ post_init_icon_state = "liver"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = ROACH_COLORS
@@ -211,8 +214,9 @@
desc = "Roach DNA infused into what was once a normal appendix. It could get worse?"
maxHealth = 2 * STANDARD_ORGAN_THRESHOLD
- icon = 'icons/obj/medical/organs/infuser_organs.dmi'
- icon_state = "appendix"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/organ/appendix/roach"
+ post_init_icon_state = "appendix"
greyscale_config = /datum/greyscale_config/mutant_organ
greyscale_colors = ROACH_COLORS
diff --git a/code/game/objects/effects/spawners/random/clothing.dm b/code/game/objects/effects/spawners/random/clothing.dm
index 119697c5317..62bb9d4e130 100644
--- a/code/game/objects/effects/spawners/random/clothing.dm
+++ b/code/game/objects/effects/spawners/random/clothing.dm
@@ -216,7 +216,7 @@
/obj/item/clothing/head/costume/deckers,
/obj/item/clothing/head/costume/yuri,
/obj/item/clothing/head/costume/allies,
- /obj/item/clothing/head/frenchberet,
+ /obj/item/clothing/head/beret/frenchberet,
/obj/item/clothing/head/costume/crown,
/obj/item/clothing/head/fedora,
/obj/item/clothing/head/beanie/red,
diff --git a/code/game/objects/items/cigarettes.dm b/code/game/objects/items/cigarettes.dm
index a90a4c8cdc9..3cef0352018 100644
--- a/code/game/objects/items/cigarettes.dm
+++ b/code/game/objects/items/cigarettes.dm
@@ -960,7 +960,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/vape
name = "\improper E-Cigarette"
desc = "A classy and highly sophisticated electronic cigarette, for classy and dignified gentlemen. A warning label reads \"Warning: Do not fill with flammable materials.\""//<<< i'd vape to that.
- icon_state = "vape"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/vape"
+ post_init_icon_state = "vape"
worn_icon_state = "vape_worn"
greyscale_config = /datum/greyscale_config/vape
greyscale_config_worn = /datum/greyscale_config/vape/worn
@@ -1008,7 +1010,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
screw = FALSE
to_chat(user, span_notice("You close the cap on [src]."))
reagents.flags &= ~(OPENCONTAINER)
- icon_state = initial(icon_state)
+ icon_state = initial(post_init_icon_state) || initial(icon_state)
set_greyscale(new_config = initial(greyscale_config))
/obj/item/vape/multitool_act(mob/living/user, obj/item/tool)
@@ -1138,33 +1140,41 @@ CIGARETTE PACKETS ARE IN FANCY.DM
handle_reagents()
/obj/item/vape/red
+ icon_state = "/obj/item/vape/red"
greyscale_colors = "#A02525"
flags_1 = NONE
/obj/item/vape/blue
+ icon_state = "/obj/item/vape/blue"
greyscale_colors = "#294A98"
flags_1 = NONE
/obj/item/vape/purple
+ icon_state = "/obj/item/vape/purple"
greyscale_colors = "#9900CC"
flags_1 = NONE
/obj/item/vape/green
+ icon_state = "/obj/item/vape/green"
greyscale_colors = "#3D9829"
flags_1 = NONE
/obj/item/vape/yellow
+ icon_state = "/obj/item/vape/yellow"
greyscale_colors = "#DAC20E"
flags_1 = NONE
/obj/item/vape/orange
+ icon_state = "/obj/item/vape/orange"
greyscale_colors = "#da930e"
flags_1 = NONE
/obj/item/vape/black
+ icon_state = "/obj/item/vape/black"
greyscale_colors = "#2e2e2e"
flags_1 = NONE
/obj/item/vape/white
+ icon_state = "/obj/item/vape/white"
greyscale_colors = "#DCDCDC"
flags_1 = NONE
diff --git a/code/game/objects/items/dehy_carp.dm b/code/game/objects/items/dehy_carp.dm
index 21cc1922783..6c25f9db9fa 100644
--- a/code/game/objects/items/dehy_carp.dm
+++ b/code/game/objects/items/dehy_carp.dm
@@ -8,6 +8,7 @@
var/mob/owner = null //Carp doesn't attack owner, set when using in hand
var/mobtype = /mob/living/basic/carp //So admins can change what mob spawns via var fuckery
var/swelling = FALSE
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
//Attack self
/obj/item/toy/plush/carpplushie/dehy_carp/attack_self(mob/user)
@@ -75,3 +76,4 @@
/obj/item/toy/plush/carpplushie/dehy_carp/peaceful
mobtype = /mob/living/basic/carp/passive
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
diff --git a/code/game/objects/items/devices/quantum_keycard.dm b/code/game/objects/items/devices/quantum_keycard.dm
index ccaef00cfc6..c815cc41ef1 100644
--- a/code/game/objects/items/devices/quantum_keycard.dm
+++ b/code/game/objects/items/devices/quantum_keycard.dm
@@ -1,8 +1,9 @@
/obj/item/quantum_keycard
name = "quantum keycard"
desc = "A keycard able to link to a quantum pad's particle signature, allowing other quantum pads to travel there instead of their linked pad."
- icon = 'icons/obj/devices/tool.dmi'
- icon_state = "quantum_keycard_gags"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/quantum_keycard"
+ post_init_icon_state = "quantum_keycard_gags"
greyscale_config = /datum/greyscale_config/quantum_keycard
greyscale_colors = COLOR_WHITE
inhand_icon_state = "card-id"
diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm
index d8d51697954..20246e94199 100644
--- a/code/game/objects/items/devices/radio/encryptionkey.dm
+++ b/code/game/objects/items/devices/radio/encryptionkey.dm
@@ -1,11 +1,12 @@
/obj/item/encryptionkey
name = "standard encryption key"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey"
+ post_init_icon_state = "cypherkey_basic"
desc = "An encryption key for a radio headset."
- icon = 'icons/obj/devices/circuitry_n_data.dmi'
- icon_state = "cypherkey_basic"
- icon_preview = 'icons/obj/fluff/previews.dmi'
- icon_state_preview = "cypherkey"
w_class = WEIGHT_CLASS_TINY
+ greyscale_config = /datum/greyscale_config/encryptionkey_basic
+ greyscale_colors = "#820a16#3758c4"
/// What channels does this encryption key grant to the parent headset.
var/list/channels = list()
/// Flags for which "special" radio networks should be accessible
@@ -13,9 +14,6 @@
/// Assoc list of language to how well understood it is. 0 is invalid, 100 is perfect.
var/list/language_data
- greyscale_config = /datum/greyscale_config/encryptionkey_basic
- greyscale_colors = "#820a16#3758c4"
-
/obj/item/encryptionkey/examine(mob/user)
. = ..()
if(!LAZYLEN(channels) && !(special_channels & RADIO_SPECIAL_BINARY) && !LAZYLEN(language_data))
@@ -49,7 +47,9 @@
/obj/item/encryptionkey/syndicate
name = "syndicate encryption key"
- icon_state = "cypherkey_syndicate"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/syndicate"
+ post_init_icon_state = "cypherkey_syndicate"
channels = list(RADIO_CHANNEL_SYNDICATE = 1)
special_channels = RADIO_SPECIAL_SYNDIE
greyscale_config = /datum/greyscale_config/encryptionkey_syndicate
@@ -57,7 +57,9 @@
/obj/item/encryptionkey/binary
name = "binary translator key"
- icon_state = "cypherkey_basic"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/binary"
+ post_init_icon_state = "cypherkey_basic"
special_channels = RADIO_SPECIAL_BINARY
language_data = list(
/datum/language/machine = 100,
@@ -67,153 +69,199 @@
/obj/item/encryptionkey/headset_sec
name = "security radio encryption key"
- icon_state = "cypherkey_security"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_sec"
+ post_init_icon_state = "cypherkey_security"
channels = list(RADIO_CHANNEL_SECURITY = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_security
greyscale_colors = "#820a16#280b1a"
/obj/item/encryptionkey/headset_eng
name = "engineering radio encryption key"
- icon_state = "cypherkey_engineering"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_eng"
+ post_init_icon_state = "cypherkey_engineering"
channels = list(RADIO_CHANNEL_ENGINEERING = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_engineering
greyscale_colors = "#f8d860#dca01b"
/obj/item/encryptionkey/headset_rob
name = "robotics radio encryption key"
- icon_state = "cypherkey_engineering"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_rob"
+ post_init_icon_state = "cypherkey_engineering"
channels = list(RADIO_CHANNEL_SCIENCE = 1, RADIO_CHANNEL_ENGINEERING = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_engineering
greyscale_colors = "#793a80#dca01b"
/obj/item/encryptionkey/headset_med
name = "medical radio encryption key"
- icon_state = "cypherkey_medical"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_med"
+ post_init_icon_state = "cypherkey_medical"
channels = list(RADIO_CHANNEL_MEDICAL = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_medical
greyscale_colors = "#ebebeb#69abd1"
/obj/item/encryptionkey/headset_sci
name = "science radio encryption key"
- icon_state = "cypherkey_research"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_sci"
+ post_init_icon_state = "cypherkey_research"
channels = list(RADIO_CHANNEL_SCIENCE = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_research
greyscale_colors = "#793a80#bc4a9b"
/obj/item/encryptionkey/headset_medsci
name = "medical research radio encryption key"
- icon_state = "cypherkey_medical"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_medsci"
+ post_init_icon_state = "cypherkey_medical"
channels = list(RADIO_CHANNEL_SCIENCE = 1, RADIO_CHANNEL_MEDICAL = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_medical
greyscale_colors = "#ebebeb#9d1de8"
/obj/item/encryptionkey/headset_srvsec
name = "law and order radio encryption key"
- icon_state = "cypherkey_service"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_srvsec"
+ post_init_icon_state = "cypherkey_service"
channels = list(RADIO_CHANNEL_SERVICE = 1, RADIO_CHANNEL_SECURITY = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_service
greyscale_colors = "#820a16#3bca5a"
/obj/item/encryptionkey/headset_srvmed
name = "psychology radio encryption key"
- icon_state = "cypherkey_service"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_srvmed"
+ post_init_icon_state = "cypherkey_service"
channels = list(RADIO_CHANNEL_MEDICAL = 1, RADIO_CHANNEL_SERVICE = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_service
greyscale_colors = "#ebebeb#3bca5a"
/obj/item/encryptionkey/headset_srvent
name = "press radio encryption key"
- icon_state = "cypherkey_service"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_srvent"
+ post_init_icon_state = "cypherkey_service"
channels = list(RADIO_CHANNEL_SERVICE = 1, RADIO_CHANNEL_ENTERTAINMENT = 0)
greyscale_config = /datum/greyscale_config/encryptionkey_service
greyscale_colors = "#83eb8f#3bca5a"
/obj/item/encryptionkey/headset_com
name = "command radio encryption key"
- icon_state = "cypherkey_cube"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_com"
+ post_init_icon_state = "cypherkey_cube"
channels = list(RADIO_CHANNEL_COMMAND = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_cube
greyscale_colors = "#2b2793#67a552"
+/obj/item/encryptionkey/heads
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
+
/obj/item/encryptionkey/heads/captain
name = "\proper the captain's encryption key"
- icon_state = "cypherkey_cube"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/heads/captain"
+ post_init_icon_state = "cypherkey_cube"
channels = list(RADIO_CHANNEL_COMMAND = 1, RADIO_CHANNEL_SECURITY = 1, RADIO_CHANNEL_ENGINEERING = 0, RADIO_CHANNEL_SCIENCE = 0, RADIO_CHANNEL_MEDICAL = 0, RADIO_CHANNEL_SUPPLY = 0, RADIO_CHANNEL_SERVICE = 0)
greyscale_config = /datum/greyscale_config/encryptionkey_cube
greyscale_colors = "#2b2793#dca01b"
/obj/item/encryptionkey/heads/rd
name = "\proper the research director's encryption key"
- icon_state = "cypherkey_research"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/heads/rd"
+ post_init_icon_state = "cypherkey_research"
channels = list(RADIO_CHANNEL_SCIENCE = 1, RADIO_CHANNEL_COMMAND = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_research
greyscale_colors = "#bc4a9b#793a80"
/obj/item/encryptionkey/heads/hos
name = "\proper the head of security's encryption key"
- icon_state = "cypherkey_security"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/heads/hos"
+ post_init_icon_state = "cypherkey_security"
channels = list(RADIO_CHANNEL_SECURITY = 1, RADIO_CHANNEL_COMMAND = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_security
greyscale_colors = "#280b1a#820a16"
/obj/item/encryptionkey/heads/ce
name = "\proper the chief engineer's encryption key"
- icon_state = "cypherkey_engineering"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/heads/ce"
+ post_init_icon_state = "cypherkey_engineering"
channels = list(RADIO_CHANNEL_ENGINEERING = 1, RADIO_CHANNEL_COMMAND = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_engineering
greyscale_colors = "#dca01b#f8d860"
/obj/item/encryptionkey/heads/cmo
name = "\proper the chief medical officer's encryption key"
- icon_state = "cypherkey_medical"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/heads/cmo"
+ post_init_icon_state = "cypherkey_medical"
channels = list(RADIO_CHANNEL_MEDICAL = 1, RADIO_CHANNEL_COMMAND = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_medical
greyscale_colors = "#ebebeb#2b2793"
/obj/item/encryptionkey/heads/hop
name = "\proper the head of personnel's encryption key"
- icon_state = "cypherkey_cube"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/heads/hop"
+ post_init_icon_state = "cypherkey_cube"
channels = list(RADIO_CHANNEL_SERVICE = 1, RADIO_CHANNEL_COMMAND = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_cube
greyscale_colors = "#2b2793#c2c1c9"
/obj/item/encryptionkey/heads/qm
name = "\proper the quartermaster's encryption key"
- icon_state = "cypherkey_cargo"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/heads/qm"
+ post_init_icon_state = "cypherkey_cargo"
channels = list(RADIO_CHANNEL_SUPPLY = 1, RADIO_CHANNEL_COMMAND = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_cargo
greyscale_colors = "#49241a#dca01b"
/obj/item/encryptionkey/headset_cargo
name = "supply radio encryption key"
- icon_state = "cypherkey_cargo"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_cargo"
+ post_init_icon_state = "cypherkey_cargo"
channels = list(RADIO_CHANNEL_SUPPLY = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_cargo
greyscale_colors = "#49241a#7b3f2e"
/obj/item/encryptionkey/headset_mining
name = "mining radio encryption key"
- icon_state = "cypherkey_cargo"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_mining"
+ post_init_icon_state = "cypherkey_cargo"
channels = list(RADIO_CHANNEL_SUPPLY = 1, RADIO_CHANNEL_SCIENCE = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_cargo
greyscale_colors = "#49241a#bc4a9b"
/obj/item/encryptionkey/headset_service
name = "service radio encryption key"
- icon_state = "cypherkey_service"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_service"
+ post_init_icon_state = "cypherkey_service"
channels = list(RADIO_CHANNEL_SERVICE = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_service
greyscale_colors = "#3758c4#3bca5a"
/obj/item/encryptionkey/headset_cent
name = "\improper CentCom radio encryption key"
- icon_state = "cypherkey_centcom"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/headset_cent"
+ post_init_icon_state = "cypherkey_centcom"
special_channels = RADIO_SPECIAL_CENTCOM
channels = list(RADIO_CHANNEL_CENTCOM = 1)
greyscale_config = /datum/greyscale_config/encryptionkey_centcom
greyscale_colors = "#24a157#dca01b"
/obj/item/encryptionkey/ai //ported from NT, this goes 'inside' the AI.
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
channels = list(
RADIO_CHANNEL_COMMAND = 1,
RADIO_CHANNEL_SECURITY = 1,
@@ -228,6 +276,7 @@
/obj/item/encryptionkey/ai_with_binary
name = "ai encryption key"
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
channels = list(
RADIO_CHANNEL_COMMAND = 1,
RADIO_CHANNEL_SECURITY = 1,
@@ -246,7 +295,9 @@
/obj/item/encryptionkey/ai/evil //ported from NT, this goes 'inside' the AI.
name = "syndicate binary encryption key"
- icon_state = "cypherkey_syndicate"
+ icon = 'icons/map_icons/items/encryptionkey.dmi'
+ icon_state = "/obj/item/encryptionkey/ai_with_binary"
+ post_init_icon_state = "cypherkey_syndicate"
channels = list(RADIO_CHANNEL_SYNDICATE = 1)
special_channels = RADIO_SPECIAL_SYNDIE
greyscale_config = /datum/greyscale_config/encryptionkey_syndicate
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index 49392c9b1f7..ab6a3778aef 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -521,8 +521,9 @@
/obj/item/melee/cleric_mace
name = "cleric mace"
desc = "The grandson of the club, yet the grandfather of the baseball bat. Most notably used by holy orders in days past."
- icon = 'icons/obj/weapons/cleric_mace.dmi'
- icon_state = "default"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/melee/cleric_mace"
+ post_init_icon_state = "default"
inhand_icon_state = "default"
worn_icon_state = "default_worn"
icon_angle = -45
diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm
index 843abe98d37..ee3b323eec0 100644
--- a/code/game/objects/items/pet_carrier.dm
+++ b/code/game/objects/items/pet_carrier.dm
@@ -5,9 +5,10 @@
/obj/item/pet_carrier
name = "pet carrier"
desc = "A big white-and-blue pet carrier. Good for carrying meat to the chef cute animals around."
- icon = 'icons/obj/pet_carrier.dmi'
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/pet_carrier"
+ post_init_icon_state = "pet_carrier_open"
base_icon_state = "pet_carrier"
- icon_state = "pet_carrier_open"
inhand_icon_state = "pet_carrier"
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
@@ -224,8 +225,10 @@
/obj/item/pet_carrier/biopod
name = "biopod"
desc = "Alien device used for undescribable purpose. Or carrying pets."
- base_icon_state = "biopod"
+ icon = 'icons/obj/pet_carrier.dmi'
icon_state = "biopod_open"
+ post_init_icon_state = null
+ base_icon_state = "biopod"
inhand_icon_state = "biopod"
greyscale_config = null
greyscale_config_inhand_left = null
@@ -235,9 +238,11 @@
/obj/item/pet_carrier/small
name = "small pet carrier"
desc = "A small pet carrier for miniature sized animals."
+ icon = 'icons/obj/pet_carrier.dmi'
+ icon_state = "small_carrier_open"
+ post_init_icon_state = null
w_class = WEIGHT_CLASS_NORMAL
base_icon_state = "small_carrier"
- icon_state = "small_carrier_open"
inhand_icon_state = "syringe_kit"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
@@ -252,8 +257,8 @@
/obj/item/pet_carrier/small/mouse
name = "small mouse carrier"
desc = "A small pet carrier for miniature sized animals. This looks prepared for a mouse."
- open = FALSE
icon_state = "small_carrier_occupied_unlocked"
+ open = FALSE
/obj/item/pet_carrier/small/mouse/Initialize(mapload)
var/mob/living/basic/mouse/hero_mouse = new /mob/living/basic/mouse(src)
diff --git a/code/game/objects/items/piggy_bank.dm b/code/game/objects/items/piggy_bank.dm
index 0a14347116e..117220a0aac 100644
--- a/code/game/objects/items/piggy_bank.dm
+++ b/code/game/objects/items/piggy_bank.dm
@@ -152,6 +152,9 @@
/obj/item/piggy_bank/museum
name = "Pigston Swinelord VI"
desc = "The museum's mascot piggy bank and favorite embezzler, known to carry donations between shifts without paying taxes. The space IRS hates him."
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/piggy_bank/museum"
+ post_init_icon_state = "piggy_bank"
persistence_id = "museum_piggy"
greyscale_colors = COLOR_PINK
maximum_value = PAYCHECK_COMMAND * 100
@@ -164,6 +167,9 @@
/obj/item/piggy_bank/vault
name = "vault piggy bank"
desc = "A pig-shaped money container made of porkelain, containing the station's emergency funds carried between shifts, oink. Do not throw."
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/piggy_bank/vault"
+ post_init_icon_state = "piggy_bank"
persistence_id = "vault_piggy"
greyscale_colors = COLOR_LIGHT_ORANGE
maximum_value = PAYCHECK_COMMAND * 33
diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
index 05babd8415a..d765951a311 100644
--- a/code/game/objects/items/plushes.dm
+++ b/code/game/objects/items/plushes.dm
@@ -388,7 +388,9 @@
/obj/item/toy/plush/carpplushie
name = "space carp plushie"
desc = "An adorable stuffed toy that resembles a space carp."
- icon_state = "map_plushie_carp"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/toy/plush/carpplushie"
+ post_init_icon_state = "map_plushie_carp"
greyscale_config = /datum/greyscale_config/plush_carp
greyscale_colors = "#cc99ff#000000"
inhand_icon_state = "carp_plushie"
@@ -531,10 +533,16 @@
// Preset lizard plushie that uses the original lizard plush green. (Or close to it)
/obj/item/toy/plush/lizard_plushie/green
desc = "An adorable stuffed toy that resembles a green lizardperson. This one fills you with nostalgia and soul."
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/toy/plush/lizard_plushie/green"
+ post_init_icon_state = "map_plushie_lizard"
greyscale_colors = "#66ff33#000000"
/obj/item/toy/plush/lizard_plushie/greyscale
desc = "An adorable stuffed toy that resembles a lizardperson. This one has been custom made."
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/toy/plush/lizard_plushie/greyscale"
+ post_init_icon_state = "map_plushie_lizard"
greyscale_colors = "#d3d3d3#000000"
flags_1 = IS_PLAYER_COLORABLE_1
@@ -549,12 +557,17 @@
/obj/item/toy/plush/lizard_plushie/space/green
desc = "An adorable stuffed toy that resembles a very determined spacefaring green lizardperson. To infinity and beyond, little guy. This one fills you with nostalgia and soul."
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/toy/plush/lizard_plushie/space/green"
+ post_init_icon_state = "map_plushie_spacelizard"
greyscale_colors = "#66ff33#000000"
/obj/item/toy/plush/snakeplushie
name = "snake plushie"
desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing."
- icon_state = "map_plushie_snake"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/toy/plush/snakeplushie"
+ post_init_icon_state = "map_plushie_snake"
greyscale_config = /datum/greyscale_config/plush_snake
greyscale_colors = "#99ff99#000000"
inhand_icon_state = null
@@ -583,7 +596,9 @@
/obj/item/toy/plush/slimeplushie
name = "slime plushie"
desc = "An adorable stuffed toy that resembles a slime. It is practically just a hacky sack."
- icon_state = "map_plushie_slime"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/toy/plush/slimeplushie"
+ post_init_icon_state = "map_plushie_slime"
greyscale_config = /datum/greyscale_config/plush_slime
greyscale_colors = "#aaaaff#000000"
inhand_icon_state = null
diff --git a/code/game/objects/items/stacks/tape.dm b/code/game/objects/items/stacks/tape.dm
index d32ab025b6c..d06b2250ed2 100644
--- a/code/game/objects/items/stacks/tape.dm
+++ b/code/game/objects/items/stacks/tape.dm
@@ -2,8 +2,9 @@
name = "sticky tape"
singular_name = "sticky tape"
desc = "Used for sticking to things for sticking said things to people."
- icon = 'icons/obj/tapes.dmi'
- icon_state = "tape"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/stack/sticky_tape"
+ post_init_icon_state = "tape"
var/prefix = "sticky"
w_class = WEIGHT_CLASS_TINY
full_w_class = WEIGHT_CLASS_TINY
@@ -99,9 +100,11 @@
/obj/item/stack/sticky_tape/pointy
name = "pointy tape"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/stack/sticky_tape/pointy"
+ post_init_icon_state = "tape_spikes"
singular_name = "pointy tape"
desc = "Used for sticking to things for sticking said things inside people."
- icon_state = "tape_spikes"
prefix = "pointy"
conferred_embed = /datum/embedding/pointy_tape
merge_type = /obj/item/stack/sticky_tape/pointy
diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm
index 54fe0aac410..76194010707 100644
--- a/code/game/objects/items/stacks/wrap.dm
+++ b/code/game/objects/items/stacks/wrap.dm
@@ -63,6 +63,9 @@
//preset wrapping paper meant to fill the original color configuration
/obj/item/stack/wrapping_paper/xmas
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/stack/wrapping_paper/xmas"
+ post_init_icon_state = "wrap_paper"
greyscale_colors = "#00FF00#FF0000"
/obj/item/stack/wrapping_paper/use(used, transfer, check = TRUE)
diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm
index cb6411e7e8c..143bd63cfd0 100644
--- a/code/game/objects/items/tools/screwdriver.dm
+++ b/code/game/objects/items/tools/screwdriver.dm
@@ -66,6 +66,7 @@
desc = "An ultrasonic screwdriver."
icon = 'icons/obj/antags/abductor.dmi'
icon_state = "screwdriver_a"
+ post_init_icon_state = null
inhand_icon_state = "screwdriver_nuke"
custom_materials = list(/datum/material/iron=HALF_SHEET_MATERIAL_AMOUNT*5, /datum/material/silver=SHEET_MATERIAL_AMOUNT*1.25, /datum/material/plasma =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium =SHEET_MATERIAL_AMOUNT, /datum/material/diamond =SHEET_MATERIAL_AMOUNT)
usesound = 'sound/items/pshoom/pshoom.ogg'
@@ -80,6 +81,7 @@
/obj/item/screwdriver/power
name = "hand drill"
desc = "A simple powered hand drill."
+ icon = 'icons/obj/tools.dmi'
icon_state = "drill"
inside_belt_icon_state = null
inhand_icon_state = "drill"
diff --git a/code/game/objects/structures/beds_chairs/sofa.dm b/code/game/objects/structures/beds_chairs/sofa.dm
index 36b95e9515e..986bbcd99a0 100644
--- a/code/game/objects/structures/beds_chairs/sofa.dm
+++ b/code/game/objects/structures/beds_chairs/sofa.dm
@@ -73,25 +73,31 @@ COLORED_SOFA(/obj/structure/chair/sofa, maroon, SOFA_MAROON)
/obj/structure/chair/sofa/bench
name = "bench"
desc = "Perfectly designed to be comfortable to sit on, and hellish to sleep on."
- icon_state = "bench_middle"
+ icon = 'icons/map_icons/objects.dmi'
+ icon_state = "/obj/structure/chair/sofa/bench"
+ post_init_icon_state = "bench_middle"
greyscale_config = /datum/greyscale_config/bench_middle
greyscale_colors = "#af7d28"
has_armrest = FALSE
/obj/structure/chair/sofa/bench/left
- icon_state = "bench_left"
+ icon_state = "/obj/structure/chair/sofa/bench/left"
+ post_init_icon_state = "bench_left"
greyscale_config = /datum/greyscale_config/bench_left
/obj/structure/chair/sofa/bench/right
- icon_state = "bench_right"
+ icon_state = "/obj/structure/chair/sofa/bench/right"
+ post_init_icon_state = "bench_right"
greyscale_config = /datum/greyscale_config/bench_right
/obj/structure/chair/sofa/bench/corner
- icon_state = "bench_corner"
+ icon_state = "/obj/structure/chair/sofa/bench/corner"
+ post_init_icon_state = "bench_corner"
greyscale_config = /datum/greyscale_config/bench_corner
/obj/structure/chair/sofa/bench/solo
- icon_state = "bench_solo"
+ icon_state = "/obj/structure/chair/sofa/bench/solo"
+ post_init_icon_state = "bench_solo"
greyscale_config = /datum/greyscale_config/bench_solo
diff --git a/code/game/objects/structures/maintenance.dm b/code/game/objects/structures/maintenance.dm
index 4a4a30c1a0a..19a7815c1b4 100644
--- a/code/game/objects/structures/maintenance.dm
+++ b/code/game/objects/structures/maintenance.dm
@@ -231,6 +231,7 @@ at the cost of risking a vicious bite.**/
/obj/item/clothing/under/pants/slacks/altar
name = "strange pants"
desc = "A pair of pants. They do not look or feel natural, and smell like fresh blood."
+ icon_state = "/obj/item/clothing/under/pants/slacks/altar"
greyscale_colors = "#ffffff#ffffff#ffffff"
flags_1 = NONE //If IS_PLAYER_COLORABLE gets added color-changing support (i.e. spraycans), these won't end up getting it too. Plus, it already has its own recolor.
diff --git a/code/modules/asset_cache/assets/crafting.dm b/code/modules/asset_cache/assets/crafting.dm
index a196736fcfe..36c3c9f105a 100644
--- a/code/modules/asset_cache/assets/crafting.dm
+++ b/code/modules/asset_cache/assets/crafting.dm
@@ -36,8 +36,13 @@
icon_file = style.icon
icon_state = style.icon_state
- icon_file ||= initial(preview_item.icon_preview) || initial(preview_item.icon)
- icon_state ||= initial(preview_item.icon_state_preview) || initial(preview_item.icon_state)
+ if(preview_item.greyscale_config)
+ var/datum/greyscale_config/greyscale_config = preview_item::greyscale_config
+ icon_file ||= preview_item::icon_preview || greyscale_config::icon_file
+ icon_state ||= preview_item::icon_state_preview || preview_item::post_init_icon_state || preview_item::icon_state
+ else
+ icon_file ||= preview_item::icon_preview || preview_item::icon
+ icon_state ||= preview_item::icon_state_preview || preview_item::icon_state
if(PERFORM_ALL_TESTS(focus_only/bad_cooking_crafting_icons))
if(!icon_exists_or_scream(icon_file, icon_state))
diff --git a/code/modules/asset_cache/assets/research_designs.dm b/code/modules/asset_cache/assets/research_designs.dm
index dffef470344..3f28fcdd67b 100644
--- a/code/modules/asset_cache/assets/research_designs.dm
+++ b/code/modules/asset_cache/assets/research_designs.dm
@@ -12,8 +12,8 @@
var/datum/icon_transformer/transform = null
if(initial(path.research_icon) && initial(path.research_icon_state)) //If the design has an icon replacement skip the rest
- icon_file = initial(path.research_icon)
- icon_state = initial(path.research_icon_state)
+ icon_file = path::research_icon
+ icon_state = path::research_icon_state
if (PERFORM_ALL_TESTS(focus_only/invalid_research_designs))
if(!icon_exists(icon_file, icon_state))
stack_trace("design [path] with icon '[icon_file]' missing state '[icon_state]'")
@@ -37,15 +37,15 @@
item = machine
// GAGS icon short-circuit the rest of the checks
- if (initial(item.greyscale_config) && initial(item.greyscale_colors))
- insert_icon(initial(path.id), gags_to_universal_icon(item))
+ if (item::greyscale_config && item::greyscale_colors)
+ insert_icon(path::id, gags_to_universal_icon(item))
continue
else
- icon_file = initial(item.icon)
+ icon_file = item::icon
- icon_state = initial(item.icon_state)
- if(initial(item.color))
- transform = color_transform(initial(item.color))
+ icon_state = item::icon_state
+ if(item::color)
+ transform = color_transform(item::color)
if (PERFORM_ALL_TESTS(focus_only/invalid_research_designs))
if(!icon_exists(icon_file, icon_state))
stack_trace("design [path] with icon '[icon_file]' missing state '[icon_state]'")
diff --git a/code/modules/asset_cache/spritesheet/batched/universal_icon.dm b/code/modules/asset_cache/spritesheet/batched/universal_icon.dm
index 08c37646459..3f06001900b 100644
--- a/code/modules/asset_cache/spritesheet/batched/universal_icon.dm
+++ b/code/modules/asset_cache/spritesheet/batched/universal_icon.dm
@@ -210,7 +210,7 @@
CRASH("gags_to_universal_icon() received an invalid path of \"[path]\"!")
var/datum/greyscale_config/config = initial(path.greyscale_config)
var/colors = initial(path.greyscale_colors)
- var/datum/universal_icon/entry = SSgreyscale.GetColoredIconByTypeUniversalIcon(config, colors, initial(path.icon_state))
+ var/datum/universal_icon/entry = SSgreyscale.GetColoredIconByTypeUniversalIcon(config, colors, path::post_init_icon_state || path::icon_state)
return entry
/// Gets the relevant universal icon for an atom, when displayed in TGUI. (see: icon_state_preview)
diff --git a/code/modules/atmospherics/machinery/components/tank.dm b/code/modules/atmospherics/machinery/components/tank.dm
index 272fff1ddb8..c82cf1e9a15 100644
--- a/code/modules/atmospherics/machinery/components/tank.dm
+++ b/code/modules/atmospherics/machinery/components/tank.dm
@@ -1,13 +1,14 @@
#define TANK_PLATING_SHEETS 12
/obj/machinery/atmospherics/components/tank
- icon = 'icons/obj/pipes_n_cables/stationary_canisters.dmi'
- icon_state = "canister-0"
- base_icon_state = "canister"
-
name = "pressure tank"
desc = "A large vessel containing pressurized gas."
+ icon = 'icons/map_icons/objects.dmi'
+ icon_state = "/obj/machinery/atmospherics/components/tank"
+ post_init_icon_state = "canister-0"
+ base_icon_state = "canister"
+
max_integrity = 800
integrity_failure = 0.2
density = TRUE
@@ -421,6 +422,7 @@
/obj/machinery/atmospherics/components/tank/air
name = "pressure tank (Air)"
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/air/layer1
piping_layer = 1
@@ -441,63 +443,83 @@
/obj/machinery/atmospherics/components/tank/carbon_dioxide
gas_type = /datum/gas/carbon_dioxide
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/plasma
gas_type = /datum/gas/plasma
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/nitrogen
gas_type = /datum/gas/nitrogen
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/oxygen
gas_type = /datum/gas/oxygen
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/nitrous
gas_type = /datum/gas/nitrous_oxide
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/bz
gas_type = /datum/gas/bz
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/freon
gas_type = /datum/gas/freon
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/halon
gas_type = /datum/gas/halon
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/healium
gas_type = /datum/gas/healium
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/hydrogen
gas_type = /datum/gas/hydrogen
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/hypernoblium
gas_type = /datum/gas/hypernoblium
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/miasma
gas_type = /datum/gas/miasma
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/nitrium
gas_type = /datum/gas/nitrium
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/pluoxium
gas_type = /datum/gas/pluoxium
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/proto_nitrate
gas_type = /datum/gas/proto_nitrate
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/tritium
gas_type = /datum/gas/tritium
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/water_vapor
gas_type = /datum/gas/water_vapor
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/zauker
gas_type = /datum/gas/zauker
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/helium
gas_type = /datum/gas/helium
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/tank/antinoblium
gas_type = /datum/gas/antinoblium
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
///////////////////////////////////////////////////////////////////
// Tank Frame Structure
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
index df4bfd21af8..77d7d0a66f1 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
@@ -1,15 +1,16 @@
#define THERMOMACHINE_POWER_CONVERSION 0.01
/obj/machinery/atmospherics/components/unary/thermomachine
- icon = 'icons/obj/machines/atmospherics/thermomachine.dmi'
- icon_state = "thermo_base"
+ name = "Temperature control unit"
+ desc = "Heats or cools gas in connected pipes."
+
+ icon = 'icons/map_icons/objects.dmi'
+ icon_state = "/obj/machinery/atmospherics/components/unary/thermomachine"
+ post_init_icon_state = "thermo_base"
plane = GAME_PLANE
interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT
- name = "Temperature control unit"
- desc = "Heats or cools gas in connected pipes."
-
density = TRUE
max_integrity = 300
armor_type = /datum/armor/unary_thermomachine
@@ -126,9 +127,7 @@
/obj/machinery/atmospherics/components/unary/thermomachine/update_overlays()
. = ..()
- if(!initial(icon))
- return
- var/mutable_appearance/thermo_overlay = new(initial(icon))
+ var/mutable_appearance/thermo_overlay = new(icon)
var/image/pipe = get_pipe_image(thermo_overlay, "pipe", dir, pipe_color, piping_layer)
pipe.appearance_flags |= RESET_COLOR|KEEP_APART
. += pipe
@@ -334,6 +333,7 @@
return
/obj/machinery/atmospherics/components/unary/thermomachine/freezer
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer1
piping_layer = 1
@@ -348,16 +348,19 @@
piping_layer = 5
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on
+ icon_state = "/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on"
+ post_init_icon_state = "thermo_1"
+ flags_1 = /obj/machinery/atmospherics/components/unary/thermomachine::flags_1 // we want this one to generate a preview
on = TRUE
- icon_state = "thermo_base_1"
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/Initialize(mapload)
. = ..()
if(target_temperature == initial(target_temperature))
target_temperature = min_temperature
+
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/coldroom
name = "Cold room temperature control unit"
- icon_state = "thermo_base_1"
+ icon_state = "/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/coldroom"
greyscale_colors = COLOR_CYAN
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/coldroom/Initialize(mapload)
@@ -365,6 +368,7 @@
target_temperature = COLD_ROOM_TEMP
/obj/machinery/atmospherics/components/unary/thermomachine/heater
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/atmospherics/components/unary/thermomachine/heater/layer1
piping_layer = 1
@@ -379,7 +383,8 @@
piping_layer = 5
/obj/machinery/atmospherics/components/unary/thermomachine/heater/on
+ icon_state = "/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on" // same icon as the freezer
+ post_init_icon_state = "thermo_1"
on = TRUE
- icon_state = "thermo_base_1"
#undef THERMOMACHINE_POWER_CONVERSION
diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm
index cee96ae0ee7..d74841072e2 100644
--- a/code/modules/atmospherics/machinery/other/meter.dm
+++ b/code/modules/atmospherics/machinery/other/meter.dm
@@ -1,8 +1,9 @@
/obj/machinery/meter
name = "gas flow meter"
desc = "It measures something."
- icon = 'icons/obj/pipes_n_cables/meter.dmi'
- icon_state = "meter"
+ icon = 'icons/map_icons/objects.dmi'
+ icon_state = "/obj/machinery/meter"
+ post_init_icon_state = "meter"
layer = HIGH_PIPE_LAYER
power_channel = AREA_USAGE_ENVIRON
idle_power_usage = BASE_MACHINE_IDLE_CONSUMPTION * 0.05
@@ -198,12 +199,15 @@
// TURF METER - REPORTS A TILE'S AIR CONTENTS
// why are you yelling?
/obj/machinery/meter/turf
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/meter/turf/reattach_to_layer()
target = loc
/obj/machinery/meter/layer2
target_layer = 2
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/machinery/meter/layer4
target_layer = 4
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index 684e5e1e5c4..e1b9db1c78d 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -6,8 +6,9 @@
/obj/machinery/portable_atmospherics/canister
name = "canister"
desc = "A canister for the storage of gas."
- icon = 'icons/obj/pipes_n_cables/canisters.dmi'
- icon_state = "#mapme"
+ icon = 'icons/map_icons/objects.dmi'
+ icon_state = "/obj/machinery/portable_atmospherics/canister"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister
greyscale_colors = "#6b6b80"
density = TRUE
@@ -115,6 +116,8 @@
/obj/machinery/portable_atmospherics/canister/air
name = "Air canister"
desc = "Pre-mixed air."
+ icon_state = "/obj/machinery/portable_atmospherics/canister/air"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister
greyscale_colors = "#c6c0b5"
@@ -122,18 +125,24 @@
name = "Antinoblium canister"
gas_type = /datum/gas/antinoblium
filled = 1
+ icon_state = "/obj/machinery/portable_atmospherics/canister/antinoblium"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#333333#fefb30"
/obj/machinery/portable_atmospherics/canister/bz
name = "\improper BZ canister"
gas_type = /datum/gas/bz
+ icon_state = "/obj/machinery/portable_atmospherics/canister/bz"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#9b5d7f#d0d2a0"
/obj/machinery/portable_atmospherics/canister/carbon_dioxide
name = "Carbon dioxide canister"
gas_type = /datum/gas/carbon_dioxide
+ icon_state = "/obj/machinery/portable_atmospherics/canister/carbon_dioxide"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#4e4c48#eaeaea"
@@ -141,6 +150,8 @@
name = "Freon canister"
gas_type = /datum/gas/freon
filled = 1
+ icon_state = "/obj/machinery/portable_atmospherics/canister/freon"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#6696ee#fefb30"
@@ -148,6 +159,8 @@
name = "Halon canister"
gas_type = /datum/gas/halon
filled = 1
+ icon_state = "/obj/machinery/portable_atmospherics/canister/halon"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#9b5d7f#368bff"
@@ -155,6 +168,8 @@
name = "Healium canister"
gas_type = /datum/gas/healium
filled = 1
+ icon_state = "/obj/machinery/portable_atmospherics/canister/healium"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#009823#ff0e00"
@@ -162,6 +177,8 @@
name = "Helium canister"
gas_type = /datum/gas/helium
filled = 1
+ icon_state = "/obj/machinery/portable_atmospherics/canister/helium"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#9b5d7f#368bff"
@@ -169,6 +186,8 @@
name = "Hydrogen canister"
gas_type = /datum/gas/hydrogen
filled = 1
+ icon_state = "/obj/machinery/portable_atmospherics/canister/hydrogen"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#eaeaea#be3455"
@@ -176,42 +195,56 @@
name = "Miasma canister"
gas_type = /datum/gas/miasma
filled = 1
+ icon_state = "/obj/machinery/portable_atmospherics/canister/miasma"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#009823#f7d5d3"
/obj/machinery/portable_atmospherics/canister/nitrogen
name = "Nitrogen canister"
gas_type = /datum/gas/nitrogen
+ icon_state = "/obj/machinery/portable_atmospherics/canister/nitrogen"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#e9ff5c#f4fce8"
/obj/machinery/portable_atmospherics/canister/nitrous_oxide
name = "Nitrous oxide canister"
gas_type = /datum/gas/nitrous_oxide
+ icon_state = "/obj/machinery/portable_atmospherics/canister/nitrous_oxide"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#c63e3b#f7d5d3"
/obj/machinery/portable_atmospherics/canister/nitrium
name = "Nitrium canister"
gas_type = /datum/gas/nitrium
+ icon_state = "/obj/machinery/portable_atmospherics/canister/nitrium"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister
greyscale_colors = "#7b4732"
/obj/machinery/portable_atmospherics/canister/nob
name = "Hyper-noblium canister"
gas_type = /datum/gas/hypernoblium
+ icon_state = "/obj/machinery/portable_atmospherics/canister/nob"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#6399fc#b2b2b2"
/obj/machinery/portable_atmospherics/canister/oxygen
name = "Oxygen canister"
gas_type = /datum/gas/oxygen
+ icon_state = "/obj/machinery/portable_atmospherics/canister/oxygen"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/stripe
greyscale_colors = "#2786e5#e8fefe"
/obj/machinery/portable_atmospherics/canister/pluoxium
name = "Pluoxium canister"
gas_type = /datum/gas/pluoxium
+ icon_state = "/obj/machinery/portable_atmospherics/canister/pluoxium"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister
greyscale_colors = "#2786e5"
@@ -219,18 +252,24 @@
name = "Proto Nitrate canister"
gas_type = /datum/gas/proto_nitrate
filled = 1
+ icon_state = "/obj/machinery/portable_atmospherics/canister/proto_nitrate"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#008200#33cc33"
/obj/machinery/portable_atmospherics/canister/plasma
name = "Plasma canister"
gas_type = /datum/gas/plasma
+ icon_state = "/obj/machinery/portable_atmospherics/canister/plasma"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/hazard
greyscale_colors = "#f62800#000000"
/obj/machinery/portable_atmospherics/canister/tritium
name = "Tritium canister"
gas_type = /datum/gas/tritium
+ icon_state = "/obj/machinery/portable_atmospherics/canister/tritium"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/hazard
greyscale_colors = "#3fcd40#000000"
@@ -238,6 +277,8 @@
name = "Water vapor canister"
gas_type = /datum/gas/water_vapor
filled = 1
+ icon_state = "/obj/machinery/portable_atmospherics/canister/water_vapor"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#4c4e4d#f7d5d3"
@@ -245,6 +286,8 @@
name = "Zauker canister"
gas_type = /datum/gas/zauker
filled = 1
+ icon_state = "/obj/machinery/portable_atmospherics/canister/zauker"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#009a00#006600"
@@ -266,6 +309,8 @@
/obj/machinery/portable_atmospherics/canister/anesthetic_mix
name = "Anesthetic mix"
desc = "A mixture of N2O and Oxygen"
+ icon_state = "/obj/machinery/portable_atmospherics/canister/anesthetic_mix"
+ post_init_icon_state = ""
greyscale_config = /datum/greyscale_config/canister/double_stripe
greyscale_colors = "#9fba6c#3d4680"
@@ -629,7 +674,7 @@
var/datum/greyscale_modify_menu/menu = new(
src, usr, list("[initial_config]"), CALLBACK(src, PROC_REF(recolor)),
- starting_icon_state = initial(icon_state),
+ starting_icon_state = initial(post_init_icon_state) || initial(icon_state),
starting_config = initial_config,
starting_colors = initial(greyscale_colors)
)
diff --git a/code/modules/bitrunning/objects/gimmick_disks/dungeon_disk.dm b/code/modules/bitrunning/objects/gimmick_disks/dungeon_disk.dm
index 1a90072c884..9f595d5774f 100644
--- a/code/modules/bitrunning/objects/gimmick_disks/dungeon_disk.dm
+++ b/code/modules/bitrunning/objects/gimmick_disks/dungeon_disk.dm
@@ -122,6 +122,7 @@
/obj/item/clothing/mask/facescarf/rogue
name = "cloth of DOOM"
+ icon_state = "/obj/item/clothing/mask/facescarf/rogue"
greyscale_colors = "#292929"
/obj/item/clothing/glasses/eyepatch
diff --git a/code/modules/capture_the_flag/ctf_equipment.dm b/code/modules/capture_the_flag/ctf_equipment.dm
index c6ae2d005e7..6360f763678 100644
--- a/code/modules/capture_the_flag/ctf_equipment.dm
+++ b/code/modules/capture_the_flag/ctf_equipment.dm
@@ -190,12 +190,13 @@
/obj/item/clothing/suit/armor/vest/ctf
name = "white shielded vest"
desc = "Standard issue vest for playing capture the flag."
- icon = 'icons/mob/clothing/suits/ctf.dmi'
worn_icon = 'icons/mob/clothing/suits/ctf.dmi'
- icon_state = "standard"
// Adding TRAIT_NODROP is done when the CTF spawner equips people
armor_type = /datum/armor/none
allowed = null
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/armor/vest/ctf"
+ post_init_icon_state = "standard"
greyscale_config = /datum/greyscale_config/ctf_standard
greyscale_config_worn = /datum/greyscale_config/ctf_standard/worn
greyscale_colors = "#ffffff"
@@ -227,7 +228,9 @@
/obj/item/clothing/suit/armor/vest/ctf/light
name = "light white shielded vest"
desc = "Lightweight vest for playing capture the flag."
- icon_state = "light"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/armor/vest/ctf/light"
+ post_init_icon_state = "light"
greyscale_config = /datum/greyscale_config/ctf_light
greyscale_config_worn = /datum/greyscale_config/ctf_light/worn
slowdown = -0.25
@@ -484,6 +487,7 @@
// Regular
/obj/item/clothing/suit/armor/vest/ctf/red
name = "red shielded vest"
+ icon_state = "/obj/item/clothing/suit/armor/vest/ctf/red"
inhand_icon_state = null
team_shield_icon = "shield-red"
greyscale_colors = COLOR_VIVID_RED
@@ -491,6 +495,7 @@
// Light
/obj/item/clothing/suit/armor/vest/ctf/light/red
name = "light red shielded vest"
+ icon_state = "/obj/item/clothing/suit/armor/vest/ctf/light/red"
inhand_icon_state = null
team_shield_icon = "shield-red"
greyscale_colors = COLOR_VIVID_RED
@@ -500,6 +505,7 @@
// Regular
/obj/item/clothing/suit/armor/vest/ctf/blue
name = "blue shielded vest"
+ icon_state = "/obj/item/clothing/suit/armor/vest/ctf/blue"
inhand_icon_state = null
team_shield_icon = "shield-old"
greyscale_colors = COLOR_DARK_CYAN
@@ -507,6 +513,7 @@
// Light
/obj/item/clothing/suit/armor/vest/ctf/light/blue
name = "light blue shielded vest"
+ icon_state = "/obj/item/clothing/suit/armor/vest/ctf/light/blue"
inhand_icon_state = null
team_shield_icon = "shield-old"
greyscale_colors = COLOR_DARK_CYAN
@@ -516,6 +523,7 @@
// Regular
/obj/item/clothing/suit/armor/vest/ctf/green
name = "green shielded vest"
+ icon_state = "/obj/item/clothing/suit/armor/vest/ctf/green"
inhand_icon_state = null
team_shield_icon = "shield-green"
greyscale_colors = COLOR_LIME
@@ -523,6 +531,7 @@
// Light
/obj/item/clothing/suit/armor/vest/ctf/light/green
name = "light green shielded vest"
+ icon_state = "/obj/item/clothing/suit/armor/vest/ctf/light/green"
inhand_icon_state = null
team_shield_icon = "shield-green"
greyscale_colors = COLOR_LIME
@@ -532,6 +541,7 @@
// Regular
/obj/item/clothing/suit/armor/vest/ctf/yellow
name = "yellow shielded vest"
+ icon_state = "/obj/item/clothing/suit/armor/vest/ctf/yellow"
inhand_icon_state = null
team_shield_icon = "shield-yellow"
greyscale_colors = COLOR_VIVID_YELLOW
@@ -539,6 +549,7 @@
// Light
/obj/item/clothing/suit/armor/vest/ctf/light/yellow
name = "light yellow shielded vest"
+ icon_state = "/obj/item/clothing/suit/armor/vest/ctf/light/yellow"
inhand_icon_state = null
team_shield_icon = "shield-yellow"
greyscale_colors = COLOR_VIVID_YELLOW
diff --git a/code/modules/capture_the_flag/medieval_sim/medisim_game.dm b/code/modules/capture_the_flag/medieval_sim/medisim_game.dm
index 118184698a3..66ed55f71e2 100644
--- a/code/modules/capture_the_flag/medieval_sim/medisim_game.dm
+++ b/code/modules/capture_the_flag/medieval_sim/medisim_game.dm
@@ -62,8 +62,9 @@
/obj/item/ctf_flag/blue/medisim
name = "\improper Bluesworth Hold Fair Maiden"
desc = "Protect your maiden, and capture theirs!"
- icon = 'icons/obj/toys/plushes.dmi'
- icon_state = "map_plushie_slime"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/ctf_flag/blue/medisim"
+ post_init_icon_state = "map_plushie_slime"
greyscale_config = /datum/greyscale_config/plush_slime
greyscale_colors = "#3399ff#000000"
force = 0
diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm
index eeba66d0938..325af2c9522 100644
--- a/code/modules/cargo/packs/costumes_toys.dm
+++ b/code/modules/cargo/packs/costumes_toys.dm
@@ -159,7 +159,7 @@
/obj/item/clothing/shoes/sneakers/black,
/obj/item/clothing/gloves/color/white,
/obj/item/clothing/mask/gas/mime,
- /obj/item/clothing/head/frenchberet,
+ /obj/item/clothing/head/beret/frenchberet,
/obj/item/clothing/suit/toggle/suspenders,
/obj/item/reagent_containers/cup/glass/bottle/bottleofnothing,
/obj/item/storage/backpack/mime,
diff --git a/code/modules/clothing/chameleon/_chameleon_action.dm b/code/modules/clothing/chameleon/_chameleon_action.dm
index 448ebcc906e..d0fdf826991 100644
--- a/code/modules/clothing/chameleon/_chameleon_action.dm
+++ b/code/modules/clothing/chameleon/_chameleon_action.dm
@@ -93,9 +93,9 @@
chameleon_typecache |= typecacheof(type_to_add)
for(var/obj/item/item_type as anything in chameleon_typecache)
- if(chameleon_blacklist[item_type] || (initial(item_type.item_flags) & ABSTRACT) || !initial(item_type.icon_state))
+ if(chameleon_blacklist[item_type] || (item_type::item_flags & ABSTRACT) || !item_type::icon_state)
continue
- var/chameleon_item_name = "[initial(item_type.name)] ([initial(item_type.icon_state)])"
+ var/chameleon_item_name = "[item_type::name] ([item_type::post_init_icon_state || item_type::icon_state])"
chameleon_list[chameleon_item_name] = item_type
@@ -125,53 +125,53 @@
PROTECTED_PROC(TRUE) // Call update_look, not this!
var/atom/atom_target = target
- atom_target.name = initial(picked_item.name)
- atom_target.desc = initial(picked_item.desc)
- atom_target.icon_state = initial(picked_item.icon_state)
+ atom_target.name = picked_item::name
+ atom_target.desc = picked_item::desc
+ atom_target.icon_state = picked_item::post_init_icon_state || picked_item::icon_state
if(isitem(atom_target))
var/obj/item/item_target = target
- item_target.worn_icon = initial(picked_item.worn_icon)
- item_target.lefthand_file = initial(picked_item.lefthand_file)
- item_target.righthand_file = initial(picked_item.righthand_file)
+ item_target.worn_icon = picked_item::worn_icon
+ item_target.lefthand_file = picked_item::lefthand_file
+ item_target.righthand_file = picked_item::righthand_file
- item_target.worn_icon_state = initial(picked_item.worn_icon_state)
- item_target.inhand_icon_state = initial(picked_item.inhand_icon_state)
+ item_target.worn_icon_state = picked_item::worn_icon_state
+ item_target.inhand_icon_state = picked_item::inhand_icon_state
- if(initial(picked_item.greyscale_colors))
- if(initial(picked_item.greyscale_config_worn))
+ if(picked_item::greyscale_colors)
+ if(picked_item.greyscale_config_worn)
item_target.worn_icon = SSgreyscale.GetColoredIconByType(
- initial(picked_item.greyscale_config_worn),
- initial(picked_item.greyscale_colors),
+ picked_item::greyscale_config_worn,
+ picked_item::greyscale_colors,
)
- if(initial(picked_item.greyscale_config_inhand_left))
+ if(picked_item::greyscale_config_inhand_left)
item_target.lefthand_file = SSgreyscale.GetColoredIconByType(
- initial(picked_item.greyscale_config_inhand_left),
- initial(picked_item.greyscale_colors),
+ picked_item::greyscale_config_inhand_left,
+ picked_item::greyscale_colors,
)
- if(initial(picked_item.greyscale_config_inhand_right))
+ if(picked_item::greyscale_config_inhand_right)
item_target.righthand_file = SSgreyscale.GetColoredIconByType(
- initial(picked_item.greyscale_config_inhand_right),
- initial(picked_item.greyscale_colors),
+ picked_item::greyscale_config_inhand_right,
+ picked_item::greyscale_colors,
)
- item_target.flags_inv = initial(picked_item.flags_inv)
- item_target.hair_mask = initial(picked_item.hair_mask)
- item_target.transparent_protection = initial(picked_item.transparent_protection)
+ item_target.flags_inv = picked_item::flags_inv
+ item_target.hair_mask = picked_item::hair_mask
+ item_target.transparent_protection = picked_item::transparent_protection
if(isclothing(item_target) && ispath(picked_item, /obj/item/clothing))
var/obj/item/clothing/clothing_target = item_target
var/obj/item/clothing/picked_clothing = picked_item
- clothing_target.flags_cover = initial(picked_clothing.flags_cover)
+ clothing_target.flags_cover = picked_clothing::flags_cover
- if(initial(picked_item.greyscale_config) && initial(picked_item.greyscale_colors))
+ if((picked_item::greyscale_config) && picked_item::greyscale_colors)
atom_target.icon = SSgreyscale.GetColoredIconByType(
- initial(picked_item.greyscale_config),
- initial(picked_item.greyscale_colors),
+ picked_item::greyscale_config,
+ picked_item::greyscale_colors,
)
else
- atom_target.icon = initial(picked_item.icon)
+ atom_target.icon = picked_item::icon
/datum/action/item_action/chameleon/change/do_effect(trigger_flags)
select_look(owner)
diff --git a/code/modules/clothing/chameleon/generic_chameleon_clothing.dm b/code/modules/clothing/chameleon/generic_chameleon_clothing.dm
index b2aea379212..e42347474c7 100644
--- a/code/modules/clothing/chameleon/generic_chameleon_clothing.dm
+++ b/code/modules/clothing/chameleon/generic_chameleon_clothing.dm
@@ -18,12 +18,15 @@ do { \
/obj/item/clothing/under/chameleon
name = "black jumpsuit"
desc = "It's a plain jumpsuit. It has a small dial on the wrist."
- icon_state = "jumpsuit"
- greyscale_colors = "#3f3f3f"
+ icon = 'icons/map_icons/clothing/under/color.dmi'
+ icon_state = "/obj/item/clothing/under/color"
+ post_init_icon_state = "jumpsuit"
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
greyscale_config = /datum/greyscale_config/jumpsuit
greyscale_config_worn = /datum/greyscale_config/jumpsuit/worn
greyscale_config_inhand_left = /datum/greyscale_config/jumpsuit/inhand_left
greyscale_config_inhand_right = /datum/greyscale_config/jumpsuit/inhand_right
+ greyscale_colors = "#3f3f3f"
sensor_mode = SENSOR_OFF //Hey who's this guy on the Syndicate Shuttle??
random_sensor = FALSE
resistance_flags = NONE
@@ -225,14 +228,16 @@ do { \
/obj/item/clothing/shoes/chameleon
name = "black shoes"
desc = "A pair of black shoes."
- icon_state = "sneakers"
+ icon = 'icons/map_icons/clothing/shoes.dmi'
+ icon_state = "/obj/item/clothing/shoes/chameleon"
+ post_init_icon_state = "sneakers"
inhand_icon_state = "sneakers_back"
body_parts_covered = FEET|LEGS
- greyscale_colors = "#545454#ffffff"
greyscale_config = /datum/greyscale_config/sneakers
greyscale_config_worn = /datum/greyscale_config/sneakers/worn
greyscale_config_inhand_left = /datum/greyscale_config/sneakers/inhand_left
greyscale_config_inhand_right = /datum/greyscale_config/sneakers/inhand_right
+ greyscale_colors = "#545454#ffffff"
resistance_flags = NONE
armor_type = /datum/armor/shoes_chameleon
actions_types = list(/datum/action/item_action/chameleon/change/shoes)
@@ -243,12 +248,14 @@ do { \
create_storage(storage_type = /datum/storage/pockets/shoes)
/obj/item/clothing/shoes/chameleon/broken
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/clothing/shoes/chameleon/broken/Initialize(mapload)
. = ..()
BREAK_CHAMELEON_ACTION(src)
/obj/item/clothing/shoes/chameleon/noslip
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
clothing_traits = list(TRAIT_NO_SLIP_WATER)
can_be_bloody = FALSE
@@ -269,6 +276,7 @@ do { \
ADD_TRAIT(src, TRAIT_CONTRABAND_BLOCKER, INNATE_TRAIT)
/obj/item/storage/backpack/chameleon/broken
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/storage/backpack/chameleon/broken/Initialize(mapload)
. = ..()
@@ -308,8 +316,10 @@ do { \
name = "tablet"
actions_types = list(/datum/action/item_action/chameleon/change/tablet)
action_slots = ALL
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/modular_computer/pda/chameleon/broken
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/modular_computer/pda/chameleon/broken/Initialize(mapload)
. = ..()
diff --git a/code/modules/clothing/head/beanie.dm b/code/modules/clothing/head/beanie.dm
index ccb59996416..32167a86081 100644
--- a/code/modules/clothing/head/beanie.dm
+++ b/code/modules/clothing/head/beanie.dm
@@ -6,46 +6,50 @@
/obj/item/clothing/head/beanie
name = "beanie"
desc = "A stylish beanie. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their heads."
- icon = 'icons/obj/clothing/head/beanie.dmi'
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
worn_icon = 'icons/mob/clothing/head/beanie.dmi'
- icon_state = "beanie"
- icon_preview = 'icons/obj/fluff/previews.dmi'
- icon_state_preview = "beanie_cloth"
+ icon_state = "/obj/item/clothing/head/beanie"
+ post_init_icon_state = "beanie"
custom_price = PAYCHECK_CREW * 1.2
- greyscale_colors = "#EEEEEE#EEEEEE"
greyscale_config = /datum/greyscale_config/beanie
greyscale_config_worn = /datum/greyscale_config/beanie/worn
+ greyscale_colors = "#EEEEEE#EEEEEE"
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/head/beanie/black
name = "black beanie"
+ icon_state = "/obj/item/clothing/head/beanie/black"
greyscale_colors = "#4A4A4B#4A4A4B"
/obj/item/clothing/head/beanie/red
name = "red beanie"
+ icon_state = "/obj/item/clothing/head/beanie/red"
greyscale_colors = "#D91414#D91414"
/obj/item/clothing/head/beanie/darkblue
name = "dark blue beanie"
+ icon_state = "/obj/item/clothing/head/beanie/darkblue"
greyscale_colors = "#1E85BC#1E85BC"
/obj/item/clothing/head/beanie/yellow
name = "yellow beanie"
+ icon_state = "/obj/item/clothing/head/beanie/yellow"
greyscale_colors = "#E0C14F#E0C14F"
/obj/item/clothing/head/beanie/orange
name = "orange beanie"
+ icon_state = "/obj/item/clothing/head/beanie/orange"
greyscale_colors = "#C67A4B#C67A4B"
/obj/item/clothing/head/beanie/christmas
name = "christmas beanie"
+ icon_state = "/obj/item/clothing/head/beanie/christmas"
greyscale_colors = "#038000#960000"
/obj/item/clothing/head/beanie/durathread
name = "durathread beanie"
desc = "A beanie made from durathread, its resilient fibres provide some protection to the wearer."
- icon_preview = 'icons/obj/fluff/previews.dmi'
- icon_state_preview = "beanie_durathread"
+ icon_state = "/obj/item/clothing/head/beanie/durathread"
greyscale_colors = "#8291A1#8291A1"
armor_type = /datum/armor/beanie_durathread
diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm
index cd4c211d723..ef9385f40ef 100644
--- a/code/modules/clothing/head/collectable.dm
+++ b/code/modules/clothing/head/collectable.dm
@@ -67,12 +67,15 @@
/obj/item/clothing/head/collectable/beret
name = "collectable beret"
desc = "A collectable red beret. It smells faintly of garlic."
- icon_state = "beret"
+ icon = 'icons/map_icons/clothing/head/beret.dmi'
+ icon_state = "/obj/item/clothing/head/beret"
+ post_init_icon_state = "beret"
greyscale_config = /datum/greyscale_config/beret
greyscale_config_worn = /datum/greyscale_config/beret/worn
greyscale_colors = "#972A2A"
dog_fashion = /datum/dog_fashion/head/beret
hair_mask = /datum/hair_mask/standard_hat_middle
+ flags_1 = NO_NEW_GAGS_PREVIEW_1
/obj/item/clothing/head/collectable/welding
name = "collectable welding helmet"
@@ -95,11 +98,14 @@
/obj/item/clothing/head/collectable/flatcap
name = "collectable flat cap"
desc = "A collectible farmer's flat cap!"
- icon_state = "beret_flat"
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/flatcap"
+ post_init_icon_state = "beret_flat"
greyscale_config = /datum/greyscale_config/beret
greyscale_config_worn = /datum/greyscale_config/beret/worn
greyscale_colors = "#8F7654"
inhand_icon_state = null
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/clothing/head/collectable/pirate
name = "collectable pirate hat"
diff --git a/code/modules/clothing/head/costume.dm b/code/modules/clothing/head/costume.dm
index c7e1777fc9c..4c6f507f22a 100644
--- a/code/modules/clothing/head/costume.dm
+++ b/code/modules/clothing/head/costume.dm
@@ -134,18 +134,22 @@
/obj/item/clothing/head/costume/fancy
name = "fancy hat"
- icon_state = "fancy_hat"
- greyscale_colors = "#E3C937#782A81"
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/costume/fancy"
+ post_init_icon_state = "fancy_hat"
greyscale_config = /datum/greyscale_config/fancy_hat
greyscale_config_worn = /datum/greyscale_config/fancy_hat/worn
+ greyscale_colors = "#E3C937#782A81"
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/head/costume/football_helmet
name = "football helmet"
- icon_state = "football_helmet"
- greyscale_colors = "#D74722"
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/costume/football_helmet"
+ post_init_icon_state = "football_helmet"
greyscale_config = /datum/greyscale_config/football_helmet
greyscale_config_worn = /datum/greyscale_config/football_helmet/worn
+ greyscale_colors = "#D74722"
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/head/costume/tv_head
diff --git a/code/modules/clothing/head/fedora.dm b/code/modules/clothing/head/fedora.dm
index 7ff7fc0f7bc..468464a4678 100644
--- a/code/modules/clothing/head/fedora.dm
+++ b/code/modules/clothing/head/fedora.dm
@@ -47,9 +47,11 @@
inhand_icon_state = null
/obj/item/clothing/head/fedora/greyscale
- icon_state = "fedora_greyscale"
inhand_icon_state = null
- greyscale_colors = "#F0DAB4#794D2E"
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/fedora/greyscale"
+ post_init_icon_state = "fedora_greyscale"
greyscale_config = /datum/greyscale_config/fedora
greyscale_config_worn = /datum/greyscale_config/fedora/worn
+ greyscale_colors = "#F0DAB4#794D2E"
flags_1 = IS_PLAYER_COLORABLE_1
diff --git a/code/modules/clothing/head/frenchberet.dm b/code/modules/clothing/head/frenchberet.dm
index 8343eee6e1d..90c2e830094 100644
--- a/code/modules/clothing/head/frenchberet.dm
+++ b/code/modules/clothing/head/frenchberet.dm
@@ -1,23 +1,19 @@
-/obj/item/clothing/head/frenchberet
+/obj/item/clothing/head/beret/frenchberet
name = "french beret"
desc = "A quality beret, infused with the aroma of chain-smoking, wine-swilling Parisians. You feel less inclined to engage in military conflict, for some reason."
- icon_state = "beret"
- greyscale_config = /datum/greyscale_config/beret
- greyscale_config_worn = /datum/greyscale_config/beret/worn
- greyscale_colors = "#972A2A"
- hair_mask = /datum/hair_mask/standard_hat_middle
+ flags_1 = NO_NEW_GAGS_PREVIEW_1
-/obj/item/clothing/head/frenchberet/Initialize(mapload)
+/obj/item/clothing/head/beret/frenchberet/Initialize(mapload)
. = ..()
AddComponent(/datum/component/speechmod, replacements = strings("french_replacement.json", "french"), end_string = list(" Honh honh honh!"," Honh!"," Zut Alors!"), end_string_chance = 3, slots = ITEM_SLOT_HEAD)
-/obj/item/clothing/head/frenchberet/equipped(mob/M, slot)
+/obj/item/clothing/head/beret/frenchberet/equipped(mob/user, slot, initial)
. = ..()
if (slot & ITEM_SLOT_HEAD)
- ADD_TRAIT(M, TRAIT_GARLIC_BREATH, type)
+ ADD_TRAIT(user, TRAIT_GARLIC_BREATH, type)
else
- REMOVE_TRAIT(M, TRAIT_GARLIC_BREATH, type)
+ REMOVE_TRAIT(user, TRAIT_GARLIC_BREATH, type)
-/obj/item/clothing/head/frenchberet/dropped(mob/M)
+/obj/item/clothing/head/beret/frenchberet/dropped(mob/user, silent)
. = ..()
- REMOVE_TRAIT(M, TRAIT_GARLIC_BREATH, type)
+ REMOVE_TRAIT(user, TRAIT_GARLIC_BREATH, type)
diff --git a/code/modules/clothing/head/hat.dm b/code/modules/clothing/head/hat.dm
index c66fd47e555..6a6153897f3 100644
--- a/code/modules/clothing/head/hat.dm
+++ b/code/modules/clothing/head/hat.dm
@@ -98,9 +98,9 @@
/obj/item/clothing/head/flatcap
name = "flat cap"
desc = "A working man's cap."
- icon_state = "beret_flat"
- icon_preview = 'icons/obj/clothing/head/beret.dmi'
- icon_state_preview = "beret_flat"
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/flatcap"
+ post_init_icon_state = "beret_flat"
greyscale_config = /datum/greyscale_config/beret
greyscale_config_worn = /datum/greyscale_config/beret/worn
greyscale_colors = "#8F7654"
@@ -200,19 +200,23 @@
/obj/item/clothing/head/costume/santa/gags
name = "santa hat"
desc = "On the first day of christmas my employer gave to me!"
- icon_state = "santa_hat"
- greyscale_colors = "#cc0000#f8f8f8"
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/costume/santa/gags"
+ post_init_icon_state = "santa_hat"
greyscale_config = /datum/greyscale_config/santa_hat
greyscale_config_worn = /datum/greyscale_config/santa_hat/worn
+ greyscale_colors = "#cc0000#f8f8f8"
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/head/costume/jester
name = "jester hat"
desc = "A hat with bells, to add some merriness to the suit."
- icon_state = "jester_map"
- greyscale_colors = "#00ff00#ff0000"
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/costume/jester"
+ post_init_icon_state = "jester_map"
greyscale_config = /datum/greyscale_config/jester_hat
greyscale_config_worn = /datum/greyscale_config/jester_hat/worn
+ greyscale_colors = "#00ff00#ff0000"
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/head/costume/jesteralt
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 0a769fa0ca2..a772f4c474b 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -124,7 +124,9 @@
/obj/item/clothing/head/caphat/beret
name = "captain's beret"
desc = "For the Captains known for their sense of fashion."
- icon_state = "beret_badge"
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/caphat/beret"
+ post_init_icon_state = "beret_badge"
greyscale_config = /datum/greyscale_config/beret_badge
greyscale_config_worn = /datum/greyscale_config/beret_badge/worn
greyscale_colors = "#0070B7#FFCE5B"
@@ -383,10 +385,10 @@
/obj/item/clothing/head/beret
name = "beret"
desc = "A beret, a mime's favorite headwear."
- icon_state = "beret"
- icon_preview = 'icons/obj/clothing/head/beret.dmi'
- icon_state_preview = "beret"
dog_fashion = /datum/dog_fashion/head/beret
+ icon = 'icons/map_icons/clothing/head/beret.dmi'
+ icon_state = "/obj/item/clothing/head/beret"
+ post_init_icon_state = "beret"
greyscale_config = /datum/greyscale_config/beret
greyscale_config_worn = /datum/greyscale_config/beret/worn
greyscale_colors = "#972A2A"
@@ -443,7 +445,9 @@
/obj/item/clothing/head/hats/hos/beret
name = "head of security's beret"
desc = "A robust beret for the Head of Security, for looking stylish while not sacrificing protection."
- icon_state = "beret_badge"
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/hats/hos/beret"
+ post_init_icon_state = "beret_badge"
greyscale_config = /datum/greyscale_config/beret_badge
greyscale_config_worn = /datum/greyscale_config/beret_badge/worn
greyscale_colors = "#39393f#f0cc8f"
@@ -452,6 +456,7 @@
/obj/item/clothing/head/hats/hos/beret/navyhos
name = "head of security's formal beret"
desc = "A special beret with the Head of Security's insignia emblazoned on it. A symbol of excellence, a badge of courage, a mark of distinction."
+ icon_state = "/obj/item/clothing/head/hats/hos/beret/navyhos"
greyscale_colors = "#638799#f0cc8f"
/obj/item/clothing/head/hats/hos/beret/syndicate
@@ -558,7 +563,8 @@
/obj/item/clothing/head/beret/sec
name = "security beret"
desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficient protection."
- icon_state = "beret_badge"
+ icon_state = "/obj/item/clothing/head/beret/sec"
+ post_init_icon_state = "beret_badge"
greyscale_config = /datum/greyscale_config/beret_badge
greyscale_config_worn = /datum/greyscale_config/beret_badge/worn
greyscale_colors = "#a52f29#F2F2F2"
@@ -580,23 +586,27 @@
/obj/item/clothing/head/beret/sec/navywarden
name = "warden's beret"
desc = "A special beret with the Warden's insignia emblazoned on it. For wardens with class."
+ icon_state = "/obj/item/clothing/head/beret/sec/navywarden"
greyscale_colors = "#638799#ebebeb"
strip_delay = 60
/obj/item/clothing/head/beret/sec/navyofficer
desc = "A special beret with the security insignia emblazoned on it. For officers with class."
+ icon_state = "/obj/item/clothing/head/beret/sec/navyofficer"
greyscale_colors = "#638799#a52f29"
//Science
/obj/item/clothing/head/beret/science
name = "science beret"
desc = "A science-themed beret for our hardworking scientists."
+ icon_state = "/obj/item/clothing/head/beret/science"
greyscale_colors = "#8D008F"
flags_1 = NONE
/obj/item/clothing/head/beret/science/rd
desc = "A purple badge with the insignia of the Research Director attached. For the paper-shuffler in you!"
- icon_state = "beret_badge"
+ icon_state = "/obj/item/clothing/head/beret/science/rd"
+ post_init_icon_state = "beret_badge"
greyscale_config = /datum/greyscale_config/beret_badge
greyscale_config_worn = /datum/greyscale_config/beret_badge/worn
greyscale_colors = "#7e1980#c9cbcb"
@@ -605,17 +615,20 @@
/obj/item/clothing/head/beret/medical
name = "medical beret"
desc = "A medical-flavored beret for the doctor in you!"
+ icon_state = "/obj/item/clothing/head/beret/medical"
greyscale_colors = COLOR_WHITE
flags_1 = NONE
/obj/item/clothing/head/beret/medical/paramedic
name = "paramedic beret"
desc = "For finding corpses in style!"
+ icon_state = "/obj/item/clothing/head/beret/medical/paramedic"
greyscale_colors = "#16313D"
/obj/item/clothing/head/beret/medical/cmo
name = "chief medical officer beret"
desc = "A beret in a distinct surgical turquoise!"
+ icon_state = "/obj/item/clothing/head/beret/medical/cmo"
greyscale_colors = "#5EB8B8"
/obj/item/clothing/head/utility/surgerycap
@@ -749,6 +762,7 @@
/obj/item/clothing/head/beret/engi
name = "engineering beret"
desc = "Might not protect you from radiation, but definitely will protect you from looking unfashionable!"
+ icon_state = "/obj/item/clothing/head/beret/engi"
greyscale_colors = "#FFBC30"
flags_1 = NONE
@@ -756,6 +770,7 @@
/obj/item/clothing/head/beret/cargo
name = "cargo beret"
desc = "No need to compensate when you can wear this beret!"
+ icon_state = "/obj/item/clothing/head/beret/cargo"
greyscale_colors = "#b7723d"
flags_1 = NONE
@@ -768,9 +783,8 @@
/obj/item/clothing/head/beret/durathread
name = "durathread beret"
desc = "A beret made from durathread, its resilient fibers provide some protection to the wearer."
- icon_state = "beret_badge"
- icon_preview = 'icons/obj/fluff/previews.dmi'
- icon_state_preview = "beret_durathread"
+ icon_state = "/obj/item/clothing/head/beret/durathread"
+ post_init_icon_state = "beret_badge"
greyscale_config = /datum/greyscale_config/beret_badge
greyscale_config_worn = /datum/greyscale_config/beret_badge/worn
greyscale_colors = "#C5D4F3#ECF1F8"
@@ -798,7 +812,8 @@
/obj/item/clothing/head/beret/centcom_formal
name = "\improper CentCom Formal Beret"
desc = "Sometimes, a compromise between fashion and defense needs to be made. Thanks to Nanotrasen's most recent nano-fabric durability enhancements, this time, it's not the case."
- icon_state = "beret_badge"
+ icon_state = "/obj/item/clothing/head/beret/centcom_formal"
+ post_init_icon_state = "beret_badge"
greyscale_config = /datum/greyscale_config/beret_badge
greyscale_config_worn = /datum/greyscale_config/beret_badge/worn
greyscale_colors = "#46b946#f2c42e"
@@ -826,7 +841,8 @@
/obj/item/clothing/head/beret/militia
name = "\improper Militia General's Beret"
desc = "A rallying cry for the inhabitants of the Spinward Sector, the heroes that wear this keep the horrors of the galaxy at bay. Call them, and they'll be there in a minute!"
- icon_state = "beret_badge"
+ icon_state = "/obj/item/clothing/head/beret/militia"
+ post_init_icon_state = "beret_badge"
greyscale_config = /datum/greyscale_config/beret_badge
greyscale_config_worn = /datum/greyscale_config/beret_badge/worn
greyscale_colors = "#43523d#a2abb0"
diff --git a/code/modules/clothing/head/sombrero.dm b/code/modules/clothing/head/sombrero.dm
index b207d2ae757..7536043b402 100644
--- a/code/modules/clothing/head/sombrero.dm
+++ b/code/modules/clothing/head/sombrero.dm
@@ -1,31 +1,39 @@
/obj/item/clothing/head/costume/sombrero
name = "sombrero"
+ desc = "You can practically taste the fiesta."
icon = 'icons/obj/clothing/head/sombrero.dmi'
icon_state = "sombrero"
inhand_icon_state = "sombrero"
- desc = "You can practically taste the fiesta."
flags_inv = HIDEHAIR
dog_fashion = /datum/dog_fashion/head/sombrero
+/obj/item/clothing/head/costume/sombrero/green
+ name = "green sombrero"
+ desc = "As elegant as a dancing cactus."
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/costume/sombrero/green"
+ post_init_icon_state = "sombrero"
+ flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
+ dog_fashion = null
greyscale_config = /datum/greyscale_config/sombrero
greyscale_config_worn = /datum/greyscale_config/sombrero/worn
greyscale_config_inhand_left = /datum/greyscale_config/sombrero/lefthand
greyscale_config_inhand_right = /datum/greyscale_config/sombrero/righthand
-
-/obj/item/clothing/head/costume/sombrero/green
- name = "green sombrero"
- desc = "As elegant as a dancing cactus."
- flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
- dog_fashion = null
greyscale_colors = "#13d968#ffffff"
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/head/costume/sombrero/shamebrero
name = "shamebrero"
- icon_state = "shamebrero"
desc = "Once it's on, it never comes off."
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/costume/sombrero/shamebrero"
+ post_init_icon_state = "shamebrero"
dog_fashion = null
+ greyscale_config = /datum/greyscale_config/sombrero
+ greyscale_config_worn = /datum/greyscale_config/sombrero/worn
+ greyscale_config_inhand_left = /datum/greyscale_config/sombrero/lefthand
+ greyscale_config_inhand_right = /datum/greyscale_config/sombrero/righthand
greyscale_colors = "#d565d3#f8db18"
flags_1 = IS_PLAYER_COLORABLE_1
diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm
index 9443730df49..5d5e2b87070 100644
--- a/code/modules/clothing/masks/_masks.dm
+++ b/code/modules/clothing/masks/_masks.dm
@@ -59,7 +59,7 @@
/obj/item/clothing/mask/update_icon_state()
. = ..()
- icon_state = "[base_icon_state || initial(icon_state)][up ? "_up" : ""]"
+ icon_state = "[base_icon_state || initial(post_init_icon_state) || initial(icon_state)][up ? "_up" : ""]"
/**
* Proc called in lungs.dm to act if wearing a mask with filters, used to reduce the filters durability, return a changed gas mixture depending on the filter status
diff --git a/code/modules/clothing/masks/bandana.dm b/code/modules/clothing/masks/bandana.dm
index c43c49a3995..304baa4a878 100644
--- a/code/modules/clothing/masks/bandana.dm
+++ b/code/modules/clothing/masks/bandana.dm
@@ -1,4 +1,10 @@
/obj/item/clothing/mask/bandana
+ name = "bandana"
+ desc = "A fine bandana with nanotech lining."
+ icon = 'icons/map_icons/clothing/mask.dmi'
+ icon_state = "/obj/item/clothing/mask/bandana"
+ post_init_icon_state = "bandana"
+ inhand_icon_state = "greyscale_bandana"
w_class = WEIGHT_CLASS_TINY
flags_cover = MASKCOVERSMOUTH
flags_inv = HIDEFACE|HIDEFACIALHAIR|HIDESNOUT
@@ -9,11 +15,7 @@
species_exception = list(/datum/species/golem)
dying_key = DYE_REGISTRY_BANDANA
flags_1 = IS_PLAYER_COLORABLE_1
- name = "bandana"
- desc = "A fine bandana with nanotech lining."
- icon_state = "bandana"
- icon_state_preview = "bandana_cloth"
- inhand_icon_state = "greyscale_bandana"
+
greyscale_config = /datum/greyscale_config/bandana
greyscale_config_worn = /datum/greyscale_config/bandana/worn
greyscale_config_inhand_left = /datum/greyscale_config/bandana/inhands_left
@@ -81,36 +83,42 @@
/obj/item/clothing/mask/bandana/red
name = "red bandana"
desc = "A fine red bandana with nanotech lining."
+ icon_state = "/obj/item/clothing/mask/bandana/red"
greyscale_colors = "#A02525"
flags_1 = NONE
/obj/item/clothing/mask/bandana/blue
name = "blue bandana"
desc = "A fine blue bandana with nanotech lining."
+ icon_state = "/obj/item/clothing/mask/bandana/blue"
greyscale_colors = "#294A98"
flags_1 = NONE
/obj/item/clothing/mask/bandana/purple
name = "purple bandana"
desc = "A fine purple bandana with nanotech lining."
+ icon_state = "/obj/item/clothing/mask/bandana/purple"
greyscale_colors = "#9900CC"
flags_1 = NONE
/obj/item/clothing/mask/bandana/green
name = "green bandana"
desc = "A fine green bandana with nanotech lining."
+ icon_state = "/obj/item/clothing/mask/bandana/green"
greyscale_colors = "#3D9829"
flags_1 = NONE
/obj/item/clothing/mask/bandana/gold
name = "gold bandana"
desc = "A fine gold bandana with nanotech lining."
+ icon_state = "/obj/item/clothing/mask/bandana/gold"
greyscale_colors = "#DAC20E"
flags_1 = NONE
/obj/item/clothing/mask/bandana/orange
name = "orange bandana"
desc = "A fine orange bandana with nanotech lining."
+ icon_state = "/obj/item/clothing/mask/bandana/orange"
greyscale_colors = "#da930e"
flags_1 = NONE
@@ -118,27 +126,29 @@
name = "black bandana"
desc = "A fine black bandana with nanotech lining."
greyscale_colors = "#2e2e2e"
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1 // Same color as the basetype
flags_1 = NONE
/obj/item/clothing/mask/bandana/white
name = "white bandana"
desc = "A fine white bandana with nanotech lining."
+ icon_state = "/obj/item/clothing/mask/bandana/white"
greyscale_colors = "#DCDCDC"
flags_1 = NONE
- icon_state_preview = "bandana_cloth"
/obj/item/clothing/mask/bandana/durathread
name = "durathread bandana"
desc = "A bandana made from durathread, you wish it would provide some protection to its wearer, but it's far too thin..."
+ icon_state = "/obj/item/clothing/mask/bandana/durathread"
greyscale_colors = "#5c6d80"
flags_1 = NONE
- icon_preview = 'icons/obj/fluff/previews.dmi'
- icon_state_preview = "bandana_durathread"
/obj/item/clothing/mask/bandana/striped
name = "striped bandana"
desc = "A fine bandana with nanotech lining and a stripe across."
- icon_state = "bandstriped"
+ icon = 'icons/map_icons/clothing/mask.dmi'
+ icon_state = "/obj/item/clothing/mask/bandana/striped"
+ post_init_icon_state = "bandstriped"
greyscale_config = /datum/greyscale_config/bandana/striped
greyscale_config_worn = /datum/greyscale_config/bandana/striped/worn
greyscale_config_inhand_left = /datum/greyscale_config/bandana/striped/inhands_left
@@ -149,49 +159,57 @@
/obj/item/clothing/mask/bandana/striped/black
name = "striped bandana"
desc = "A fine black and white bandana with nanotech lining and a stripe across."
- greyscale_colors = "#2e2e2e#C6C6C6"
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1 // same exact icon/color as the base type
flags_1 = NONE
/obj/item/clothing/mask/bandana/striped/security
name = "striped security bandana"
desc = "A fine bandana with nanotech lining, a stripe across and security colors."
+ icon_state = "/obj/item/clothing/mask/bandana/striped/security"
greyscale_colors = "#A02525#2e2e2e"
flags_1 = NONE
/obj/item/clothing/mask/bandana/striped/science
name = "striped science bandana"
desc = "A fine bandana with nanotech lining, a stripe across and science colors."
+ icon_state = "/obj/item/clothing/mask/bandana/striped/science"
greyscale_colors = "#DCDCDC#8019a0"
flags_1 = NONE
/obj/item/clothing/mask/bandana/striped/engineering
name = "striped engineering bandana"
desc = "A fine bandana with nanotech lining, a stripe across and engineering colors."
+ icon_state = "/obj/item/clothing/mask/bandana/striped/engineering"
greyscale_colors = "#dab50e#ec7404"
flags_1 = NONE
/obj/item/clothing/mask/bandana/striped/medical
name = "striped medical bandana"
desc = "A fine bandana with nanotech lining, a stripe across and medical colors."
+ icon_state = "/obj/item/clothing/mask/bandana/striped/medical"
greyscale_colors = "#DCDCDC#5995BA"
flags_1 = NONE
/obj/item/clothing/mask/bandana/striped/cargo
name = "striped cargo bandana"
desc = "A fine bandana with nanotech lining, a stripe across and cargo colors."
+ icon_state = "/obj/item/clothing/mask/bandana/striped/cargo"
greyscale_colors = "#967032#5F350B"
flags_1 = NONE
/obj/item/clothing/mask/bandana/striped/botany
name = "striped botany bandana"
desc = "A fine bandana with nanotech lining, a stripe across and botany colors."
+ icon_state = "/obj/item/clothing/mask/bandana/striped/botany"
greyscale_colors = "#3D9829#294A98"
flags_1 = NONE
/obj/item/clothing/mask/bandana/skull
name = "skull bandana"
desc = "A fine bandana with nanotech lining and a skull emblem."
- icon_state = "bandskull"
+ icon = 'icons/map_icons/clothing/mask.dmi'
+ icon_state = "/obj/item/clothing/mask/bandana/skull"
+ post_init_icon_state = "bandskull"
greyscale_config = /datum/greyscale_config/bandana/skull
greyscale_config_worn = /datum/greyscale_config/bandana/skull/worn
greyscale_config_inhand_left = /datum/greyscale_config/bandana/skull/inhands_left
@@ -201,6 +219,7 @@
/obj/item/clothing/mask/bandana/skull/black
desc = "A fine black bandana with nanotech lining and a skull emblem."
+ icon_state = "/obj/item/clothing/mask/bandana/skull/black"
greyscale_colors = "#2e2e2e#C6C6C6"
flags_1 = NONE
@@ -208,7 +227,6 @@
name = "facescarf"
desc = "Cover your face like in the cowboy movies. It also has breathtube so you can wear it everywhere!"
actions_types = list(/datum/action/item_action/adjust)
- icon_state = "facescarf"
inhand_icon_state = "greyscale_facescarf"
alternate_worn_layer = BACK_LAYER
clothing_flags = BLOCK_GAS_SMOKE_EFFECT|MASKINTERNALS
@@ -220,6 +238,9 @@
visor_flags_cover = MASKCOVERSMOUTH
custom_price = PAYCHECK_CREW
greyscale_colors = "#eeeeee"
+ icon = 'icons/map_icons/clothing/mask.dmi'
+ icon_state = "/obj/item/clothing/mask/facescarf"
+ post_init_icon_state = "facescarf"
greyscale_config = /datum/greyscale_config/facescarf
greyscale_config_worn = /datum/greyscale_config/facescarf/worn
greyscale_config_inhand_left = /datum/greyscale_config/facescarf/inhands_left
diff --git a/code/modules/clothing/masks/costume.dm b/code/modules/clothing/masks/costume.dm
index a275fbdaf50..41e4e48dd6b 100644
--- a/code/modules/clothing/masks/costume.dm
+++ b/code/modules/clothing/masks/costume.dm
@@ -36,13 +36,15 @@
/obj/item/clothing/mask/kitsune
name = "kitsune mask"
desc = "Porcelain mask made in the style of the Sol-3 region. It is painted to look like a kitsune."
- icon_state = "kitsune"
inhand_icon_state = null
w_class = WEIGHT_CLASS_SMALL
adjusted_flags = ITEM_SLOT_HEAD
flags_inv = HIDEFACE|HIDEFACIALHAIR
custom_price = PAYCHECK_CREW
greyscale_colors = "#EEEEEE#AA0000"
+ icon = 'icons/map_icons/clothing/mask.dmi'
+ icon_state = "/obj/item/clothing/mask/kitsune"
+ post_init_icon_state = "kitsune"
greyscale_config = /datum/greyscale_config/kitsune
greyscale_config_worn = /datum/greyscale_config/kitsune/worn
flags_1 = IS_PLAYER_COLORABLE_1
@@ -62,12 +64,14 @@
/obj/item/clothing/mask/rebellion
name = "rebellion mask"
desc = "Mask that is usually used during rebellions by insurgents. It covers the entire face and makes you unrecognizable."
- icon_state = "rebellion_mask"
inhand_icon_state = null
w_class = WEIGHT_CLASS_SMALL
flags_inv = HIDEFACE|HIDEFACIALHAIR|HIDESNOUT
custom_price = PAYCHECK_CREW
greyscale_colors = COLOR_VERY_LIGHT_GRAY
+ icon = 'icons/map_icons/clothing/mask.dmi'
+ icon_state = "/obj/item/clothing/mask/rebellion"
+ post_init_icon_state = "rebellion_mask"
greyscale_config = /datum/greyscale_config/rebellion_mask
greyscale_config_worn = /datum/greyscale_config/rebellion_mask/worn
flags_1 = IS_PLAYER_COLORABLE_1
diff --git a/code/modules/clothing/masks/muzzle.dm b/code/modules/clothing/masks/muzzle.dm
index b9b2460167c..82bb1dd348f 100644
--- a/code/modules/clothing/masks/muzzle.dm
+++ b/code/modules/clothing/masks/muzzle.dm
@@ -41,13 +41,15 @@
/obj/item/clothing/mask/muzzle/tape
name = "tape piece"
desc = "A piece of tape that can be put over someone's mouth."
- icon_state = "tape_piece"
worn_icon_state = "tape_piece_worn"
inhand_icon_state = null
w_class = WEIGHT_CLASS_TINY
clothing_flags = INEDIBLE_CLOTHING
equip_delay_other = 40
strip_delay = 40
+ icon = 'icons/map_icons/clothing/mask.dmi'
+ icon_state = "/obj/item/clothing/mask/muzzle/tape"
+ post_init_icon_state = "tape_piece"
greyscale_config = /datum/greyscale_config/tape_piece
greyscale_config_worn = /datum/greyscale_config/tape_piece/worn
greyscale_colors = "#B2B2B2"
@@ -92,12 +94,14 @@
/obj/item/clothing/mask/muzzle/tape/super
name = "super tape piece"
desc = "A piece of tape that can be put over someone's mouth. This one has extra strength."
+ icon_state = "/obj/item/clothing/mask/muzzle/tape/super"
greyscale_colors = "#4D4D4D"
strip_delay = 80
/obj/item/clothing/mask/muzzle/tape/surgical
name = "surgical tape piece"
desc = "A piece of tape that can be put over someone's mouth. As long as you apply this to your patient, you won't hear their screams of pain!"
+ icon_state = "/obj/item/clothing/mask/muzzle/tape/surgical"
greyscale_colors = "#70BAE7"
equip_delay_other = 30
strip_delay = 30
@@ -105,8 +109,10 @@
/obj/item/clothing/mask/muzzle/tape/pointy
name = "pointy tape piece"
desc = "A piece of tape that can be put over someone's mouth. Looks like it will hurt if this is ripped off."
- icon_state = "tape_piece_spikes"
worn_icon_state = "tape_piece_spikes_worn"
+ icon = 'icons/map_icons/clothing/mask.dmi'
+ icon_state = "/obj/item/clothing/mask/muzzle/tape/pointy"
+ post_init_icon_state = "tape_piece_spikes"
greyscale_config = /datum/greyscale_config/tape_piece/spikes
greyscale_config_worn = /datum/greyscale_config/tape_piece/worn/spikes
greyscale_colors = "#E64539#AD2F45"
@@ -116,6 +122,7 @@
/obj/item/clothing/mask/muzzle/tape/pointy/super
name = "super pointy tape piece"
desc = "A piece of tape that can be put over someone's mouth. This thing could rip your face into a thousand pieces if ripped off."
+ icon_state = "/obj/item/clothing/mask/muzzle/tape/pointy/super"
greyscale_colors = "#8C0A00#300008"
strip_delay = 60
stripping_damage = 20
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index b77f94f53de..25b17bbf0c4 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -26,11 +26,12 @@
/obj/item/clothing/neck/bowtie
name = "bow tie"
desc = "A small neosilk bowtie."
- icon = 'icons/obj/clothing/neck.dmi'
- icon_state = "bowtie_greyscale"
inhand_icon_state = "" //no inhands
w_class = WEIGHT_CLASS_SMALL
custom_price = PAYCHECK_CREW
+ icon = 'icons/map_icons/clothing/neck.dmi'
+ icon_state = "/obj/item/clothing/neck/bowtie"
+ post_init_icon_state = "bowtie_greyscale"
greyscale_config = /datum/greyscale_config/ties
greyscale_config_worn = /datum/greyscale_config/ties/worn
greyscale_colors = "#151516ff"
@@ -39,7 +40,9 @@
/obj/item/clothing/neck/bowtie/rainbow
name = "rainbow bow tie"
desc = "An extremely large neosilk rainbow-colored bowtie."
+ icon = 'icons/obj/clothing/neck.dmi'
icon_state = "bowtie_rainbow"
+ post_init_icon_state = null
greyscale_config = null
greyscale_config_worn = null
greyscale_colors = null
@@ -47,12 +50,13 @@
/obj/item/clothing/neck/tie
name = "slick tie"
desc = "A neosilk tie."
- icon = 'icons/obj/clothing/neck.dmi'
- icon_state = "tie_greyscale_tied"
inhand_icon_state = "" //no inhands
alternate_worn_layer = LOW_NECK_LAYER // So that it renders below suit jackets, MODsuits, etc
w_class = WEIGHT_CLASS_SMALL
custom_price = PAYCHECK_CREW
+ icon = 'icons/map_icons/clothing/neck.dmi'
+ icon_state = "/obj/item/clothing/neck/tie"
+ post_init_icon_state = "tie_greyscale_tied"
greyscale_config = /datum/greyscale_config/ties
greyscale_config_worn = /datum/greyscale_config/ties/worn
greyscale_colors = "#4d4e4e"
@@ -154,37 +158,45 @@
/obj/item/clothing/neck/tie/blue
name = "blue tie"
- icon_state = "tie_greyscale_untied"
+ icon_state = "/obj/item/clothing/neck/tie/blue"
+ post_init_icon_state = "tie_greyscale_untied"
greyscale_colors = "#5275b6ff"
/obj/item/clothing/neck/tie/red
name = "red tie"
- icon_state = "tie_greyscale_untied"
+ icon_state = "/obj/item/clothing/neck/tie/red"
+ post_init_icon_state = "tie_greyscale_untied"
greyscale_colors = "#c23838ff"
/obj/item/clothing/neck/tie/red/tied
is_tied = TRUE
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/clothing/neck/tie/red/hitman
desc = "This is a $47,000 custom-tailored Référence Du Tueur À Gages tie. The clot is from neosilkworms raised at a tie microfarm in Cookwell, from a secret pattern passed down by monk tailors since the twenty-first century!"
- icon_state = "tie_greyscale_untied"
tie_timer = 1 SECONDS // You're a professional.
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/clothing/neck/tie/red/hitman/tied
is_tied = TRUE
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/clothing/neck/tie/black
name = "black tie"
- icon_state = "tie_greyscale_untied"
+ icon_state = "/obj/item/clothing/neck/tie/black"
+ post_init_icon_state = "tie_greyscale_untied"
greyscale_colors = "#151516ff"
/obj/item/clothing/neck/tie/black/tied
is_tied = TRUE
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/clothing/neck/tie/horrible
name = "horrible tie"
desc = "A neosilk tie. This one is disgusting."
+ icon = 'icons/obj/clothing/neck.dmi'
icon_state = "horribletie"
+ post_init_icon_state = null
clip_on = TRUE
greyscale_config = null
greyscale_config_worn = null
@@ -192,7 +204,9 @@
/obj/item/clothing/neck/tie/disco
name = "horrific necktie"
+ icon = 'icons/obj/clothing/neck.dmi'
icon_state = "eldritch_tie"
+ post_init_icon_state = null
desc = "The necktie is adorned with a garish pattern. It's disturbingly vivid. Somehow you feel as if it would be wrong to ever take it off. It's your friend now. You will betray it if you change it for some boring scarf."
clip_on = TRUE
greyscale_config = null
@@ -202,7 +216,9 @@
/obj/item/clothing/neck/tie/detective
name = "loose tie"
desc = "A loosely tied necktie, a perfect accessory for the over-worked detective."
+ icon = 'icons/obj/clothing/neck.dmi'
icon_state = "detective"
+ post_init_icon_state = null
clip_on = TRUE
greyscale_config = null
greyscale_config_worn = null
@@ -349,10 +365,10 @@
/obj/item/clothing/neck/scarf
name = "scarf"
- icon_state = "scarf"
- icon_preview = 'icons/obj/fluff/previews.dmi'
- icon_state_preview = "scarf_cloth"
desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks."
+ icon = 'icons/map_icons/clothing/neck.dmi'
+ icon_state = "/obj/item/clothing/neck/scarf"
+ post_init_icon_state = "scarf"
w_class = WEIGHT_CLASS_TINY
custom_price = PAYCHECK_CREW
greyscale_colors = "#EEEEEE#EEEEEE"
@@ -362,81 +378,98 @@
/obj/item/clothing/neck/scarf/black
name = "black scarf"
+ icon_state = "/obj/item/clothing/neck/scarf/black"
greyscale_colors = "#4A4A4B#4A4A4B"
/obj/item/clothing/neck/scarf/pink
name = "pink scarf"
+ icon_state = "/obj/item/clothing/neck/scarf/pink"
greyscale_colors = "#F699CD#F699CD"
/obj/item/clothing/neck/scarf/red
name = "red scarf"
+ icon_state = "/obj/item/clothing/neck/scarf/red"
greyscale_colors = "#D91414#D91414"
/obj/item/clothing/neck/scarf/green
name = "green scarf"
+ icon_state = "/obj/item/clothing/neck/scarf/green"
greyscale_colors = "#5C9E54#5C9E54"
/obj/item/clothing/neck/scarf/darkblue
name = "dark blue scarf"
+ icon_state = "/obj/item/clothing/neck/scarf/darkblue"
greyscale_colors = "#1E85BC#1E85BC"
/obj/item/clothing/neck/scarf/purple
name = "purple scarf"
+ icon_state = "/obj/item/clothing/neck/scarf/purple"
greyscale_colors = "#9557C5#9557C5"
/obj/item/clothing/neck/scarf/yellow
name = "yellow scarf"
+ icon_state = "/obj/item/clothing/neck/scarf/yellow"
greyscale_colors = "#E0C14F#E0C14F"
/obj/item/clothing/neck/scarf/orange
name = "orange scarf"
+ icon_state = "/obj/item/clothing/neck/scarf/orange"
greyscale_colors = "#C67A4B#C67A4B"
/obj/item/clothing/neck/scarf/cyan
name = "cyan scarf"
+ icon_state = "/obj/item/clothing/neck/scarf/cyan"
greyscale_colors = "#54A3CE#54A3CE"
/obj/item/clothing/neck/scarf/zebra
name = "zebra scarf"
+ icon_state = "/obj/item/clothing/neck/scarf/zebra"
greyscale_colors = "#333333#EEEEEE"
/obj/item/clothing/neck/scarf/christmas
name = "christmas scarf"
+ icon_state = "/obj/item/clothing/neck/scarf/christmas"
greyscale_colors = "#038000#960000"
/obj/item/clothing/neck/large_scarf
name = "large scarf"
- icon_state = "large_scarf"
- icon_preview = 'icons/obj/fluff/previews.dmi'
- icon_state_preview = "scarf_large"
+ icon = 'icons/map_icons/clothing/neck.dmi'
+ icon_state = "/obj/item/clothing/neck/large_scarf"
+ post_init_icon_state = "large_scarf"
w_class = WEIGHT_CLASS_TINY
custom_price = PAYCHECK_CREW
- greyscale_colors = "#C6C6C6#EEEEEE"
greyscale_config = /datum/greyscale_config/scarf
greyscale_config_worn = /datum/greyscale_config/scarf/worn
+ greyscale_colors = "#C6C6C6#EEEEEE"
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/neck/large_scarf/red
name = "large red scarf"
+ icon_state = "/obj/item/clothing/neck/large_scarf/red"
greyscale_colors = "#8A2908#A06D66"
/obj/item/clothing/neck/large_scarf/green
name = "large green scarf"
+ icon_state = "/obj/item/clothing/neck/large_scarf/green"
greyscale_colors = "#525629#888674"
/obj/item/clothing/neck/large_scarf/blue
name = "large blue scarf"
+ icon_state = "/obj/item/clothing/neck/large_scarf/blue"
greyscale_colors = "#20396C#6F7F91"
/obj/item/clothing/neck/large_scarf/syndie
name = "suspicious looking striped scarf"
desc = "Ready to operate."
+ icon_state = "/obj/item/clothing/neck/large_scarf/syndie"
greyscale_colors = "#B40000#545350"
armor_type = /datum/armor/large_scarf_syndie
/obj/item/clothing/neck/infinity_scarf
name = "infinity scarf"
- icon_state = "infinity_scarf"
+ icon = 'icons/map_icons/clothing/neck.dmi'
+ icon_state = "/obj/item/clothing/neck/infinity_scarf"
+ post_init_icon_state = "infinity_scarf"
w_class = WEIGHT_CLASS_TINY
custom_price = PAYCHECK_CREW
greyscale_colors = COLOR_VERY_LIGHT_GRAY
diff --git a/code/modules/clothing/shoes/costume.dm b/code/modules/clothing/shoes/costume.dm
index 9df11874d86..c836af89a9d 100644
--- a/code/modules/clothing/shoes/costume.dm
+++ b/code/modules/clothing/shoes/costume.dm
@@ -70,11 +70,13 @@
/obj/item/clothing/shoes/glow
name = "glow shoes"
desc = "t3h c00L3st sh03z j00'LL 3v3r f1nd."
- icon_state = "glow_shoes"
+ icon = 'icons/map_icons/clothing/shoes.dmi'
+ icon_state = "/obj/item/clothing/shoes/glow"
+ post_init_icon_state = "glow_shoes"
inhand_icon_state = null
- greyscale_colors = "#4A3A40#8EEEEE"
greyscale_config = /datum/greyscale_config/glow_shoes
greyscale_config_worn = /datum/greyscale_config/glow_shoes/worn
+ greyscale_colors = "#4A3A40#8EEEEE"
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/shoes/glow/Initialize(mapload)
@@ -100,11 +102,13 @@
/obj/item/clothing/shoes/jester_shoes
name = "jester shoes"
desc = "Shoes that jingle with every step!!"
- icon_state = "jester_map"
+ icon = 'icons/map_icons/clothing/shoes.dmi'
+ icon_state = "/obj/item/clothing/shoes/jester_shoes"
+ post_init_icon_state = "jester_map"
inhand_icon_state = null
- greyscale_colors = "#00ff00#ff0000"
greyscale_config = /datum/greyscale_config/jester_shoes
greyscale_config_worn = /datum/greyscale_config/jester_shoes/worn
+ greyscale_colors = "#00ff00#ff0000"
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/shoes/jester_shoes/Initialize(mapload)
diff --git a/code/modules/clothing/shoes/sneakers.dm b/code/modules/clothing/shoes/sneakers.dm
index 3011caa4487..a431544298a 100644
--- a/code/modules/clothing/shoes/sneakers.dm
+++ b/code/modules/clothing/shoes/sneakers.dm
@@ -1,14 +1,16 @@
/obj/item/clothing/shoes/sneakers
dying_key = DYE_REGISTRY_SNEAKERS
- icon_state = "sneakers"
+ icon = 'icons/map_icons/clothing/shoes.dmi'
+ icon_state = "/obj/item/clothing/shoes/sneakers"
+ post_init_icon_state = "sneakers"
inhand_icon_state = "sneakers_back"
lefthand_file = 'icons/mob/inhands/clothing/shoes_lefthand.dmi'
righthand_file = 'icons/mob/inhands/clothing/shoes_righthand.dmi'
- greyscale_colors = "#2d2d33#ffffff"
greyscale_config = /datum/greyscale_config/sneakers
greyscale_config_worn = /datum/greyscale_config/sneakers/worn
greyscale_config_inhand_left = /datum/greyscale_config/sneakers/inhand_left
greyscale_config_inhand_right = /datum/greyscale_config/sneakers/inhand_right
+ greyscale_colors = "#2d2d33#ffffff"
supports_variations_flags = CLOTHING_DIGITIGRADE_MASK
flags_1 = IS_PLAYER_COLORABLE_1
interaction_flags_mouse_drop = NEED_HANDS
@@ -20,6 +22,9 @@
/obj/item/clothing/shoes/sneakers/generate_digitigrade_icons(icon/base_icon, greyscale_colors)
return icon(SSgreyscale.GetColoredIconByType(/datum/greyscale_config/digitigrade, greyscale_colors), "sneakers_worn")
+/obj/item/clothing/shoes/sneakers/random
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1 // same icon/color as base type
+
/obj/item/clothing/shoes/sneakers/random/Initialize(mapload)
. = ..()
greyscale_colors = "#" + random_color() + "#" + random_color()
@@ -28,6 +33,7 @@
/obj/item/clothing/shoes/sneakers/black
name = "black shoes"
desc = "A pair of black shoes."
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1 // same icon/color as base type
custom_price = PAYCHECK_CREW
cold_protection = FEET
@@ -38,10 +44,12 @@
/obj/item/clothing/shoes/sneakers/brown
name = "brown shoes"
desc = "A pair of brown shoes."
+ icon_state = "/obj/item/clothing/shoes/sneakers/brown"
greyscale_colors = "#472c21#ffffff"
/obj/item/clothing/shoes/sneakers/blue
name = "blue shoes"
+ icon_state = "/obj/item/clothing/shoes/sneakers/blue"
greyscale_colors = "#4f88df#ffffff"
armor_type = /datum/armor/sneakers_blue
@@ -50,26 +58,29 @@
/obj/item/clothing/shoes/sneakers/green
name = "green shoes"
+ icon_state = "/obj/item/clothing/shoes/sneakers/green"
greyscale_colors = "#3bca5a#ffffff"
/obj/item/clothing/shoes/sneakers/yellow
name = "yellow shoes"
+ icon_state = "/obj/item/clothing/shoes/sneakers/yellow"
greyscale_colors = "#deb63d#ffffff"
/obj/item/clothing/shoes/sneakers/purple
name = "purple shoes"
+ icon_state = "/obj/item/clothing/shoes/sneakers/purple"
greyscale_colors = "#7e1980#ffffff"
/obj/item/clothing/shoes/sneakers/red
name = "red shoes"
desc = "Stylish red shoes."
+ icon_state = "/obj/item/clothing/shoes/sneakers/red"
greyscale_colors = "#a52f29#ffffff"
/obj/item/clothing/shoes/sneakers/white
name = "white shoes"
+ icon_state = "/obj/item/clothing/shoes/sneakers/white"
greyscale_colors = "#ffffff#ffffff"
- icon_preview = 'icons/obj/fluff/previews.dmi'
- icon_state_preview = "shoes_cloth"
armor_type = /datum/armor/sneakers_white
/datum/armor/sneakers_white
@@ -78,7 +89,9 @@
/obj/item/clothing/shoes/sneakers/rainbow
name = "rainbow shoes"
desc = "Very gay shoes."
+ icon = 'icons/obj/clothing/shoes.dmi'
icon_state = "rain_bow"
+ post_init_icon_state = null
inhand_icon_state = "rainbow_sneakers"
greyscale_colors = null
@@ -90,13 +103,14 @@
/obj/item/clothing/shoes/sneakers/orange
name = "orange shoes"
- icon_preview = 'icons/obj/fluff/previews.dmi'
- icon_state_preview = "prisonshoes"
- greyscale_colors = "#d15b1b#ffffff"
+ icon = 'icons/map_icons/clothing/shoes.dmi'
+ icon_state = "/obj/item/clothing/shoes/sneakers/orange"
+ post_init_icon_state = "sneakers"
greyscale_config = /datum/greyscale_config/sneakers_orange
greyscale_config_worn = /datum/greyscale_config/sneakers_orange/worn
greyscale_config_inhand_left = /datum/greyscale_config/sneakers_orange/inhand_left
greyscale_config_inhand_right = /datum/greyscale_config/sneakers_orange/inhand_right
+ greyscale_colors = "#d15b1b#ffffff"
flags_1 = NONE
var/obj/item/restraints/handcuffs/attached_cuffs
@@ -127,7 +141,7 @@
if(attached_cuffs)
icon_state = inhand_icon_state = "sneakers_chained"
else
- icon_state = initial(icon_state)
+ icon_state = initial(post_init_icon_state) || initial(icon_state)
inhand_icon_state = initial(inhand_icon_state)
update_greyscale()
@@ -170,14 +184,18 @@
/obj/item/clothing/shoes/sneakers/mime
name = "mime shoes"
+ icon_state = "/obj/item/clothing/shoes/sneakers/mime"
greyscale_colors = "#ffffff#ffffff"
/obj/item/clothing/shoes/sneakers/marisa
desc = "A pair of magic black shoes."
name = "magic shoes"
- greyscale_colors = "#2d2d33#ffffff"
+ icon = 'icons/map_icons/clothing/shoes.dmi'
+ icon_state = "/obj/item/clothing/shoes/sneakers/marisa"
+ post_init_icon_state = "sneakers"
greyscale_config = /datum/greyscale_config/sneakers_marisa
greyscale_config_worn = /datum/greyscale_config/sneakers_marisa/worn
+ greyscale_colors = "#2d2d33#ffffff"
strip_delay = 5
equip_delay_other = 50
fastening_type = SHOES_SLIPON
@@ -186,4 +204,5 @@
/obj/item/clothing/shoes/sneakers/cyborg
name = "cyborg boots"
desc = "Shoes for a cyborg costume."
+ icon_state = "/obj/item/clothing/shoes/sneakers/cyborg"
greyscale_colors = "#4e4e4e#4e4e4e"
diff --git a/code/modules/clothing/shoes/wheelys.dm b/code/modules/clothing/shoes/wheelys.dm
index da4acfb3b81..63c72ad71ff 100644
--- a/code/modules/clothing/shoes/wheelys.dm
+++ b/code/modules/clothing/shoes/wheelys.dm
@@ -1,14 +1,16 @@
/obj/item/clothing/shoes/wheelys
name = "Wheely-Heels"
desc = "Uses patented retractable wheel technology. Never sacrifice speed for style - not that this provides much of either." //Thanks Fel
- icon_state = "sneakers"
+ icon = 'icons/map_icons/clothing/shoes.dmi'
+ worn_icon = 'icons/mob/large-worn-icons/64x64/feet.dmi'
+ icon_state = "/obj/item/clothing/shoes/wheelys"
+ post_init_icon_state = "sneakers"
worn_icon_state = "wheelys"
inhand_icon_state = "sneakers_back"
- greyscale_colors = "#545454#ffffff"
greyscale_config = /datum/greyscale_config/sneakers_wheelys
greyscale_config_inhand_left = /datum/greyscale_config/sneakers/inhand_left
greyscale_config_inhand_right = /datum/greyscale_config/sneakers/inhand_right
- worn_icon = 'icons/mob/large-worn-icons/64x64/feet.dmi'
+ greyscale_colors = "#545454#ffffff"
worn_x_dimension = 64
worn_y_dimension = 64
clothing_flags = parent_type::clothing_flags | LARGE_WORN_ICON
@@ -61,7 +63,9 @@
/obj/item/clothing/shoes/wheelys/rollerskates
name = "roller skates"
desc = "An EightO brand pair of roller skates. The wheels are retractable, though're quite bulky to walk in."
+ icon = 'icons/obj/clothing/shoes.dmi'
icon_state = "rollerskates"
+ post_init_icon_state = null
inhand_icon_state = null
greyscale_colors = null
greyscale_config = null
@@ -74,7 +78,9 @@
/obj/item/clothing/shoes/wheelys/skishoes
name = "ski shoes"
desc = "A pair of shoes equipped with foldable skis! Very handy to move in snowy environments unimpeded."
+ icon = 'icons/obj/clothing/shoes.dmi'
icon_state = "skishoes"
+ post_init_icon_state = null
inhand_icon_state = null
greyscale_colors = null
greyscale_config = null
diff --git a/code/modules/clothing/spacesuits/specialops.dm b/code/modules/clothing/spacesuits/specialops.dm
index db2170dfe1b..066a80cddd5 100644
--- a/code/modules/clothing/spacesuits/specialops.dm
+++ b/code/modules/clothing/spacesuits/specialops.dm
@@ -1,9 +1,11 @@
/obj/item/clothing/head/helmet/space/beret
name = "CentCom officer's beret"
desc = "An armored beret commonly used by special operations officers. Uses advanced force field technology to protect the head from space."
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/helmet/space/beret"
+ post_init_icon_state = "beret_badge"
greyscale_config = /datum/greyscale_config/beret_badge
greyscale_config_worn = /datum/greyscale_config/beret_badge/worn
- icon_state = "beret_badge"
inhand_icon_state = null
greyscale_colors = "#397F3F#FFCE5B"
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT
diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm
index caea796808b..a85a0f78603 100644
--- a/code/modules/clothing/suits/costume.dm
+++ b/code/modules/clothing/suits/costume.dm
@@ -606,7 +606,9 @@
/obj/item/clothing/suit/costume/hawaiian
name = "hawaiian overshirt"
desc = "A cool shirt for chilling on the beach."
- icon_state = "hawaiian_shirt"
+ icon = 'icons/map_icons/clothing/suit/costume.dmi'
+ icon_state = "/obj/item/clothing/suit/costume/hawaiian"
+ post_init_icon_state = "hawaiian_shirt"
inhand_icon_state = null
greyscale_config = /datum/greyscale_config/hawaiian_shirt
greyscale_config_worn = /datum/greyscale_config/hawaiian_shirt/worn
@@ -621,7 +623,9 @@
/obj/item/clothing/suit/costume/football_armor
name = "football protective gear"
desc = "Given to members of the football team!"
- icon_state = "football_armor"
+ icon = 'icons/map_icons/clothing/suit/costume.dmi'
+ icon_state = "/obj/item/clothing/suit/costume/football_armor"
+ post_init_icon_state = "football_armor"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
greyscale_config = /datum/greyscale_config/football_armor
greyscale_config_worn = /datum/greyscale_config/football_armor/worn
diff --git a/code/modules/clothing/suits/ethereal.dm b/code/modules/clothing/suits/ethereal.dm
index 031d5ac4c3c..680bc001c08 100644
--- a/code/modules/clothing/suits/ethereal.dm
+++ b/code/modules/clothing/suits/ethereal.dm
@@ -1,9 +1,10 @@
/obj/item/clothing/suit/hooded/ethereal_raincoat
name = "ethereal raincoat"
desc = " A raincoat commonly worn by travelers or tourists not too fond of Sprout's rainy weather."
- icon = 'icons/obj/clothing/suits/ethereal.dmi'
- icon_state = "eth_raincoat"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
worn_icon = 'icons/mob/clothing/suits/ethereal.dmi'
+ icon_state = "/obj/item/clothing/suit/hooded/ethereal_raincoat"
+ post_init_icon_state = "eth_raincoat"
greyscale_config = /datum/greyscale_config/eth_raincoat
greyscale_config_worn = /datum/greyscale_config/eth_raincoat/worn
greyscale_colors = "#4e7cc7"
@@ -28,6 +29,7 @@
/obj/item/clothing/suit/hooded/ethereal_raincoat/trailwarden
name = "trailwarden oilcoat"
desc = "A masterfully handcrafted oilslick coat, supposedly makes for excellent camouflage among Sprout's vegetation. You can hear a faint electrical buzz emanating from the luminescent pattern."
+ icon_state = "/obj/item/clothing/suit/hooded/ethereal_raincoat/trailwarden"
greyscale_colors = "#32a87d"
hoodtype = /obj/item/clothing/head/hooded/ethereal_rainhood/trailwarden
diff --git a/code/modules/clothing/suits/jacket.dm b/code/modules/clothing/suits/jacket.dm
index 15dad0e32e6..ddd05bf5ab6 100644
--- a/code/modules/clothing/suits/jacket.dm
+++ b/code/modules/clothing/suits/jacket.dm
@@ -37,7 +37,9 @@
/obj/item/clothing/suit/toggle/jacket/sweater
name = "sweater jacket"
desc = "A sweater jacket."
- icon_state = "sweater"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/toggle/jacket/sweater"
+ post_init_icon_state = "sweater"
greyscale_config = /datum/greyscale_config/sweater
greyscale_config_worn = /datum/greyscale_config/sweater/worn
greyscale_colors = "#414344"
@@ -46,7 +48,9 @@
/obj/item/clothing/suit/toggle/jacket/trenchcoat
name = "trenchcoat"
desc = "A multi-purpose trenchcoat."
- icon_state = "trenchcoat"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/toggle/jacket/trenchcoat"
+ post_init_icon_state = "trenchcoat"
greyscale_config = /datum/greyscale_config/trenchcoat
greyscale_config_worn = /datum/greyscale_config/trenchcoat/worn
greyscale_colors = "#414344"
@@ -57,7 +61,9 @@
/obj/item/clothing/suit/jacket/blazer
name = "blazer jacket"
desc = "A blazer jacket."
- icon_state = "blazer"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/jacket/blazer"
+ post_init_icon_state = "blazer"
greyscale_config = /datum/greyscale_config/blazer
greyscale_config_worn = /datum/greyscale_config/blazer/worn
greyscale_colors = "#414344"
@@ -66,7 +72,9 @@
/obj/item/clothing/suit/jacket/oversized
name = "oversized jacket"
desc = "An oversized jacket."
- icon_state = "jacket_oversized"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/jacket/oversized"
+ post_init_icon_state = "jacket_oversized"
greyscale_config = /datum/greyscale_config/jacket_oversized
greyscale_config_worn = /datum/greyscale_config/jacket_oversized/worn
greyscale_colors = "#414344"
@@ -75,7 +83,9 @@
/obj/item/clothing/suit/jacket/fancy
name = "fancy fur coat"
desc = "Rated 10 out of 10 in Cosmo for best coat brand."
- icon_state = "fancy_coat"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/jacket/fancy"
+ post_init_icon_state = "fancy_coat"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
cold_protection = CHEST|GROIN|LEGS|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 7cdde7ac96c..00cf2936416 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -44,7 +44,9 @@
/obj/item/clothing/suit/apron/overalls
name = "coveralls"
desc = "A set of overalls, good for protecting thinner clothes from the elements."
- icon_state = "overalls"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/apron/overalls"
+ post_init_icon_state = "overalls"
inhand_icon_state = ""
body_parts_covered = CHEST|GROIN|LEGS
species_exception = list(/datum/species/golem)
@@ -264,7 +266,9 @@
/obj/item/clothing/suit/toggle/lawyer/greyscale
name = "formal suit jacket"
- icon_state = "jacket_lawyer"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/toggle/lawyer/greyscale"
+ post_init_icon_state = "jacket_lawyer"
inhand_icon_state = ""
greyscale_config = /datum/greyscale_config/jacket_lawyer
greyscale_config_worn = /datum/greyscale_config/jacket_lawyer/worn
@@ -275,8 +279,9 @@
/obj/item/clothing/suit/toggle/suspenders
name = "suspenders"
desc = "They suspend the illusion of the mime's play."
- icon = 'icons/obj/clothing/belts.dmi'
- icon_state = "suspenders"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/toggle/suspenders"
+ post_init_icon_state = "suspenders"
worn_icon = 'icons/mob/clothing/suits/utility.dmi'
worn_icon_state = "suspenders"
blood_overlay_type = "armor" //it's the less thing that I can put here
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index 171a072cd70..3b2d6a0882f 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -72,7 +72,9 @@
/obj/item/clothing/suit/toggle/labcoat/genetics
name = "geneticist labcoat"
desc = "A suit that protects against minor chemical spills. Has a blue stripe on the shoulder."
- icon_state = "labcoat_job"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/toggle/labcoat/genetics"
+ post_init_icon_state = "labcoat_job"
greyscale_config = /datum/greyscale_config/labcoat
greyscale_config_worn = /datum/greyscale_config/labcoat/worn
greyscale_colors = "#EEEEEE#4A77A1#4A77A1#7095C2"
@@ -84,7 +86,9 @@
/obj/item/clothing/suit/toggle/labcoat/chemist
name = "chemist labcoat"
desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder."
- icon_state = "labcoat_job"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/toggle/labcoat/chemist"
+ post_init_icon_state = "labcoat_job"
greyscale_config = /datum/greyscale_config/labcoat
greyscale_config_worn = /datum/greyscale_config/labcoat/worn
greyscale_colors = "#EEEEEE#F17420#F17420#EB6F2C"
@@ -96,7 +100,9 @@
/obj/item/clothing/suit/toggle/labcoat/virologist
name = "virologist labcoat"
desc = "A suit that protects against minor chemical spills. Has a green stripe on the shoulder."
- icon_state = "labcoat_job"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/toggle/labcoat/virologist"
+ post_init_icon_state = "labcoat_job"
greyscale_config = /datum/greyscale_config/labcoat
greyscale_config_worn = /datum/greyscale_config/labcoat/worn
greyscale_colors = "#EEEEEE#198019#198019#40992E"
@@ -108,7 +114,9 @@
/obj/item/clothing/suit/toggle/labcoat/coroner
name = "coroner labcoat"
desc = "A suit that protects against minor chemical spills. Has a black stripe on the shoulder."
- icon_state = "labcoat_job"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/toggle/labcoat/coroner"
+ post_init_icon_state = "labcoat_job"
greyscale_config = /datum/greyscale_config/labcoat
greyscale_config_worn = /datum/greyscale_config/labcoat/worn
greyscale_colors = "#EEEEEE#2D2D33#2D2D33#39393F"
@@ -126,7 +134,9 @@
/obj/item/clothing/suit/toggle/labcoat/science
name = "scientist labcoat"
desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder."
- icon_state = "labcoat_job"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/toggle/labcoat/science"
+ post_init_icon_state = "labcoat_job"
greyscale_config = /datum/greyscale_config/labcoat
greyscale_config_worn = /datum/greyscale_config/labcoat/worn
greyscale_colors = "#EEEEEE#7E1980#7E1980#B347A1"
@@ -138,7 +148,9 @@
/obj/item/clothing/suit/toggle/labcoat/roboticist
name = "roboticist labcoat"
desc = "More like an eccentric coat than a labcoat. Helps pass off bloodstains as part of the aesthetic. Comes with red shoulder pads."
- icon_state = "labcoat_job"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/toggle/labcoat/roboticist"
+ post_init_icon_state = "labcoat_job"
greyscale_config = /datum/greyscale_config/labcoat
greyscale_config_worn = /datum/greyscale_config/labcoat/worn
greyscale_colors = "#EEEEEE#88242D#88242D#39393F"
@@ -146,7 +158,9 @@
/obj/item/clothing/suit/toggle/labcoat/interdyne
name = "interdyne labcoat"
desc = "More like an eccentric coat than a labcoat. Helps pass off bloodstains as part of the aesthetic. Comes with red shoulder pads."
- icon_state = "labcoat_job"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/toggle/labcoat/interdyne"
+ post_init_icon_state = "labcoat_job"
greyscale_config = /datum/greyscale_config/labcoat
greyscale_config_worn = /datum/greyscale_config/labcoat/worn
greyscale_colors = "#EEEEEE#88242D#88242D#39393F"
diff --git a/code/modules/clothing/suits/moth.dm b/code/modules/clothing/suits/moth.dm
index b9c8ab64fa6..5a95a3945e0 100644
--- a/code/modules/clothing/suits/moth.dm
+++ b/code/modules/clothing/suits/moth.dm
@@ -1,7 +1,9 @@
/obj/item/clothing/suit/mothcoat
name = "mothic flightsuit"
desc = "This peculiar utility harness is a common sight among the moth fleet's crews due to its ability to fasten the wings to the body without impacting mobility inside cramped ship interiors. It looks somewhat crude yet it's surprisingly comfortable."
- icon_state = "mothcoat"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/mothcoat"
+ post_init_icon_state = "mothcoat"
greyscale_config = /datum/greyscale_config/mothcoat
greyscale_config_worn = /datum/greyscale_config/mothcoat/worn
greyscale_colors = "#eaeaea"
@@ -12,6 +14,7 @@
/obj/item/clothing/suit/mothcoat/original
desc = "An old-school flightsuit from the moth fleet. A perfect token of mothic survivalistic and adaptable attitude, yet a bitter reminder that with the loss of their home planet and institution of the fleet, their beloved wings remain as a burden to bear, condemned to never fly again."
+ icon_state = "/obj/item/clothing/suit/mothcoat/original"
greyscale_colors = "#dfa409"
/obj/item/clothing/suit/mothcoat/original/Initialize(mapload)
@@ -22,7 +25,9 @@
/obj/item/clothing/suit/mothcoat/winter
name = "mothic mantella"
desc = "A thick garment that keeps warm and protects those precious wings from harsh weather, also commonly used during festivities. Feels much heavier than it looks."
- icon_state = "mothcoat_winter"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/mothcoat/winter"
+ post_init_icon_state = "mothcoat_winter"
greyscale_config = /datum/greyscale_config/mothcoat_winter
greyscale_config_worn = /datum/greyscale_config/mothcoat_winter/worn
greyscale_colors = "#557979#795e55"
diff --git a/code/modules/clothing/suits/shirt.dm b/code/modules/clothing/suits/shirt.dm
index 9b8ce90693b..11e7451a840 100644
--- a/code/modules/clothing/suits/shirt.dm
+++ b/code/modules/clothing/suits/shirt.dm
@@ -1,8 +1,10 @@
/obj/item/clothing/suit/costume/wellworn_shirt
name = "well-worn shirt"
desc = "A worn out, curiously comfortable t-shirt. You wouldn't go so far as to say it feels like being hugged when you wear it, but it's pretty close. Good for sleeping in."
- icon_state = "wellworn_shirt"
inhand_icon_state = null
+ icon = 'icons/map_icons/clothing/suit/costume.dmi'
+ icon_state = "/obj/item/clothing/suit/costume/wellworn_shirt"
+ post_init_icon_state = "wellworn_shirt"
greyscale_config = /datum/greyscale_config/wellworn_shirt
greyscale_config_worn = /datum/greyscale_config/wellworn_shirt/worn
greyscale_colors = COLOR_WHITE
@@ -24,70 +26,78 @@
/obj/item/clothing/suit/costume/wellworn_shirt/skub
name = "pro-skub shirt"
desc = "A worn out, curiously comfortable t-shirt proclaiming your pro-skub stance. Fuck those anti-skubbies."
- icon_state = "wellworn_shirt_pro_skub"
greyscale_colors = "#FFFF4D"
+ icon_state = "/obj/item/clothing/suit/costume/wellworn_shirt/skub"
+ post_init_icon_state = "wellworn_shirt_pro_skub"
greyscale_config = /datum/greyscale_config/wellworn_shirt_skub
greyscale_config_worn = /datum/greyscale_config/wellworn_shirt_skub/worn
/obj/item/clothing/suit/costume/wellworn_shirt/skub/anti
name = "anti-skub shirt"
desc = "A worn out, curiously comfortable t-shirt proclaiming your anti-skub stance. Fuck those pro-skubbies."
- icon_state = "wellworn_shirt_anti_skub"
+ icon_state = "/obj/item/clothing/suit/costume/wellworn_shirt/skub/anti"
+ post_init_icon_state = "wellworn_shirt_anti_skub"
/obj/item/clothing/suit/costume/wellworn_shirt/graphic
name = "well-worn graphic shirt"
desc = "A worn out, curiously comfortable t-shirt with a character from Phanic the Weasel on the front. It adds some charm points to itself and the wearer, and reminds you of when the series was still good; way back in 2500."
- icon_state = "wellworn_shirt_gamer"
greyscale_colors = "#FFFFFF#46B45B"
+ icon_state = "/obj/item/clothing/suit/costume/wellworn_shirt/graphic"
+ post_init_icon_state = "wellworn_shirt_gamer"
greyscale_config = /datum/greyscale_config/wellworn_shirt_graphic
greyscale_config_worn = /datum/greyscale_config/wellworn_shirt_graphic/worn
/obj/item/clothing/suit/costume/wellworn_shirt/graphic/ian
name = "well-worn ian shirt"
desc = "A worn out, curiously comfortable t-shirt with a picture of Ian the Corgi. You wouldn't go so far as to say it feels like being hugged when you wear it, but it's pretty close. Good for sleeping in."
- icon_state = "wellworn_shirt_ian"
+ icon_state = "/obj/item/clothing/suit/costume/wellworn_shirt/graphic/ian"
+ post_init_icon_state = "wellworn_shirt_ian"
greyscale_colors = "#FFFFFF#E1B26C"
/obj/item/clothing/suit/costume/wellworn_shirt/wornout
name = "worn-out shirt"
desc = "A pretty grubby, yet still comfortable t-shirt. You've been sleeping in this one for a bit too long."
- icon_state = "wornout_shirt"
+ icon_state = "/obj/item/clothing/suit/costume/wellworn_shirt/wornout"
+ post_init_icon_state = "wornout_shirt"
/obj/item/clothing/suit/costume/wellworn_shirt/wornout/graphic
name = "worn-out graphic shirt"
desc = "A pretty grubby, yet still comfortable t-shirt with a character from Phanic the Weasel on the front. The slightly raggedy nature recalls that one horrid title where they made him a vampire. You should get cheevos for sleeping in it this many days straight."
- icon_state = "wornout_shirt_gamer"
greyscale_colors = "#FFFFFF#46B45B"
+ icon_state = "/obj/item/clothing/suit/costume/wellworn_shirt/wornout/graphic"
+ post_init_icon_state = "wornout_shirt_gamer"
greyscale_config = /datum/greyscale_config/wornout_shirt_graphic
greyscale_config_worn = /datum/greyscale_config/wornout_shirt_graphic/worn
/obj/item/clothing/suit/costume/wellworn_shirt/wornout/graphic/ian
name = "worn-out ian shirt"
desc = "A pretty grubby, yet still comfortable t-shirt with a picture of Ian the Corgi. It's gone past 'a bit worn' to 'well-loved;' excellent for use as pajamas."
- icon_state = "wornout_shirt_ian"
+ icon_state = "/obj/item/clothing/suit/costume/wellworn_shirt/wornout/graphic/ian"
+ post_init_icon_state = "wornout_shirt_ian"
greyscale_colors = "#FFFFFF#E1B26C"
/obj/item/clothing/suit/costume/wellworn_shirt/messy
name = "messy worn-out shirt"
desc = "This worn-out, somehow comfortable t-shirt has reached a more thorough understanding of grime; maybe the fact that it's still gone unwashed could function as a sort of camo?"
- icon_state = "messyworn_shirt"
+ icon_state = "/obj/item/clothing/suit/costume/wellworn_shirt/messy"
+ post_init_icon_state = "messyworn_shirt"
/obj/item/clothing/suit/costume/wellworn_shirt/messy/graphic
name = "messy graphic shirt"
desc = "This worn-out, somehow comfortable t-shirt has reached a more thorough understanding of grime. Normies will never understand that this is a collector's item, and your sense of fashion absolutely mogs theirs. Phanic Phorever."
- icon_state = "messyworn_shirt_gamer"
- greyscale_colors = "#FFFFFF#46B45B"
+ icon_state = "/obj/item/clothing/suit/costume/wellworn_shirt/messy/graphic"
+ post_init_icon_state = "messyworn_shirt_gamer"
greyscale_config = /datum/greyscale_config/messyworn_shirt_graphic
greyscale_config_worn = /datum/greyscale_config/messyworn_shirt_graphic/worn
+ greyscale_colors = "#FFFFFF#46B45B"
/obj/item/clothing/suit/costume/wellworn_shirt/messy/graphic/ian
name = "messy ian shirt"
desc = "This worn-out, somehow comfortable t-shirt has reached a more thorough understanding of grime. You get the feeling like you understand how it's like to be a stray dog, yet Ian's face still comforts you."
- icon_state = "messyworn_shirt_ian"
+ icon_state = "/obj/item/clothing/suit/costume/wellworn_shirt/messy/graphic/ian"
+ post_init_icon_state = "messyworn_shirt_ian"
greyscale_colors = "#FFFFFF#E1B26C"
/obj/item/clothing/suit/costume/wellworn_shirt/messy/graphic/gamer
name = "gamer shirt"
desc = "A baggy, extremely well-used shirt with vintage game character Phanic the Weasel far-too-boldly displayed on the chest. Your mind cannot hope to withstand the assault of remembering the Phanic Phanart you've seen; let alone the stench of this top."
- icon_state = "messyworn_shirt_gamer"
- greyscale_colors = "#FFFFFF#46B45B"
diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm
index e97bfd1e42a..fb9320297e4 100644
--- a/code/modules/clothing/suits/wintercoats.dm
+++ b/code/modules/clothing/suits/wintercoats.dm
@@ -50,7 +50,7 @@
/obj/item/clothing/suit/hooded/wintercoat/click_alt(mob/user)
zipped = !zipped
playsound(src, 'sound/items/zip/zip_up.ogg', 30, TRUE, -3)
- worn_icon_state = "[initial(icon_state)][zipped ? "_t" : ""]"
+ worn_icon_state = "[initial(post_init_icon_state) || initial(icon_state)][zipped ? "_t" : ""]"
balloon_alert(user, "[zipped ? "" : "un"]zipped")
if(ishuman(loc))
@@ -656,10 +656,13 @@
/obj/item/clothing/suit/hooded/wintercoat/custom
name = "tailored winter coat"
desc = "A heavy jacket made from 'synthetic' animal furs, with custom colors."
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/hooded/wintercoat/custom"
+ post_init_icon_state = "coatwinter"
hood_down_overlay_suffix = ""
- greyscale_colors = "#ffffff#ffffff#808080#808080#808080#808080"
greyscale_config = /datum/greyscale_config/winter_coats
greyscale_config_worn = /datum/greyscale_config/winter_coats/worn
+ greyscale_colors = "#ffffff#ffffff#808080#808080#808080#808080"
hoodtype = /obj/item/clothing/head/hooded/winterhood/custom
flags_1 = IS_PLAYER_COLORABLE_1
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index 1f5af3f3ec7..591d59d0f0a 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -70,10 +70,12 @@
/obj/item/clothing/head/wizard/marisa
name = "witch hat"
desc = "Strange-looking hat-wear. Makes you want to cast fireballs."
- icon_state = "witch_hat"
- greyscale_colors = "#343640#e0cab8#e0cab8"
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/wizard/marisa"
+ post_init_icon_state = "witch_hat"
greyscale_config = /datum/greyscale_config/witch_hat
greyscale_config_worn = /datum/greyscale_config/witch_hat/worn
+ greyscale_colors = "#343640#e0cab8#e0cab8"
flags_1 = IS_PLAYER_COLORABLE_1
dog_fashion = null
@@ -198,6 +200,7 @@
/obj/item/clothing/head/wizard/marisa/fake
name = "witch hat"
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
armor_type = /datum/armor/none
resistance_flags = FLAMMABLE
fishing_modifier = -2
diff --git a/code/modules/clothing/under/accessories/vests.dm b/code/modules/clothing/under/accessories/vests.dm
index 83bbc789bdd..d3b5c5642f0 100644
--- a/code/modules/clothing/under/accessories/vests.dm
+++ b/code/modules/clothing/under/accessories/vests.dm
@@ -2,7 +2,9 @@
/obj/item/clothing/accessory/waistcoat
name = "waistcoat"
desc = "For some classy, murderous fun."
- icon_state = "waistcoat"
+ icon = 'icons/map_icons/clothing/accessory.dmi'
+ icon_state = "/obj/item/clothing/accessory/waistcoat"
+ post_init_icon_state = "waistcoat"
inhand_icon_state = "wcoat"
lefthand_file = 'icons/mob/inhands/clothing/suits_lefthand.dmi'
righthand_file = 'icons/mob/inhands/clothing/suits_righthand.dmi'
diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm
index af64ca4e999..9c1fe797ba5 100644
--- a/code/modules/clothing/under/color.dm
+++ b/code/modules/clothing/under/color.dm
@@ -1,24 +1,26 @@
/obj/item/clothing/under/color
name = "jumpsuit"
desc = "A standard issue colored jumpsuit. Variety is the spice of life!"
+ icon = 'icons/map_icons/clothing/under/color.dmi'
+ icon_state = "/obj/item/clothing/under/color"
+ post_init_icon_state = "jumpsuit"
+ inhand_icon_state = "jumpsuit"
+ worn_icon_state = "jumpsuit"
+ worn_icon = 'icons/mob/clothing/under/color.dmi'
dying_key = DYE_REGISTRY_UNDER
greyscale_colors = "#3f3f3f"
greyscale_config = /datum/greyscale_config/jumpsuit
greyscale_config_worn = /datum/greyscale_config/jumpsuit/worn
greyscale_config_inhand_left = /datum/greyscale_config/jumpsuit/inhand_left
greyscale_config_inhand_right = /datum/greyscale_config/jumpsuit/inhand_right
- icon = 'icons/obj/clothing/under/color.dmi'
- icon_state = "jumpsuit"
- inhand_icon_state = "jumpsuit"
- worn_icon_state = "jumpsuit"
- worn_icon = 'icons/mob/clothing/under/color.dmi'
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/under/color/jumpskirt
+ icon_state = "/obj/item/clothing/under/color/jumpskirt"
+ post_init_icon_state = "jumpskirt"
body_parts_covered = CHEST|GROIN|ARMS
dying_key = DYE_REGISTRY_JUMPSKIRT
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY
- icon_state = "jumpskirt"
supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON
/// Returns a random, acceptable jumpsuit typepath
@@ -33,7 +35,9 @@
)
/obj/item/clothing/under/color/random
+ icon = 'icons/obj/clothing/under/color.dmi'
icon_state = "random_jumpsuit"
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/clothing/under/color/random/Initialize(mapload)
..()
@@ -54,7 +58,9 @@
)
/obj/item/clothing/under/color/jumpskirt/random
+ icon = 'icons/obj/clothing/under/color.dmi'
icon_state = "random_jumpsuit" //Skirt variant needed
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/clothing/under/color/jumpskirt/random/Initialize(mapload)
..()
@@ -69,9 +75,11 @@
/obj/item/clothing/under/color/black
name = "black jumpsuit"
resistance_flags = NONE
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/clothing/under/color/jumpskirt/black
name = "black jumpskirt"
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
/obj/item/clothing/under/color/black/ghost
item_flags = DROPDEL
@@ -83,17 +91,21 @@
/obj/item/clothing/under/color/grey
name = "grey jumpsuit"
desc = "A tasteful grey jumpsuit that reminds you of the good old days."
+ icon_state = "/obj/item/clothing/under/color/grey"
greyscale_colors = "#b3b3b3"
/obj/item/clothing/under/color/jumpskirt/grey
name = "grey jumpskirt"
desc = "A tasteful grey jumpskirt that reminds you of the good old days."
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/grey"
greyscale_colors = "#b3b3b3"
/obj/item/clothing/under/color/grey/ancient
name = "ancient jumpsuit"
desc = "A terribly ragged and frayed grey jumpsuit. It looks like it hasn't been washed in over a decade."
+ icon = 'icons/obj/clothing/under/color.dmi'
icon_state = "grey_ancient"
+ post_init_icon_state = null
inhand_icon_state = "gy_suit"
greyscale_config = null
greyscale_config_inhand_left = null
@@ -103,122 +115,152 @@
/obj/item/clothing/under/color/blue
name = "blue jumpsuit"
+ icon_state = "/obj/item/clothing/under/color/blue"
greyscale_colors = "#52aecc"
/obj/item/clothing/under/color/jumpskirt/blue
name = "blue jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/blue"
greyscale_colors = "#52aecc"
/obj/item/clothing/under/color/green
name = "green jumpsuit"
+ icon_state = "/obj/item/clothing/under/color/green"
greyscale_colors = "#9ed63a"
/obj/item/clothing/under/color/jumpskirt/green
name = "green jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/green"
greyscale_colors = "#9ed63a"
/obj/item/clothing/under/color/orange
name = "orange jumpsuit"
desc = "Don't wear this near paranoid security officers."
+ icon_state = "/obj/item/clothing/under/color/orange"
greyscale_colors = "#ff8c19"
/obj/item/clothing/under/color/jumpskirt/orange
name = "orange jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/orange"
greyscale_colors = "#ff8c19"
/obj/item/clothing/under/color/pink
name = "pink jumpsuit"
desc = "Just looking at this makes you feel fabulous."
+ icon_state = "/obj/item/clothing/under/color/pink"
greyscale_colors = "#ffa69b"
/obj/item/clothing/under/color/jumpskirt/pink
name = "pink jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/pink"
greyscale_colors = "#ffa69b"
/obj/item/clothing/under/color/red
name = "red jumpsuit"
+ icon_state = "/obj/item/clothing/under/color/red"
greyscale_colors = "#eb0c07"
/obj/item/clothing/under/color/jumpskirt/red
name = "red jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/red"
greyscale_colors = "#eb0c07"
/obj/item/clothing/under/color/white
name = "white jumpsuit"
+ icon_state = "/obj/item/clothing/under/color/white"
greyscale_colors = "#ffffff"
/obj/item/clothing/under/color/jumpskirt/white
name = "white jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/white"
greyscale_colors = "#ffffff"
/obj/item/clothing/under/color/yellow
name = "yellow jumpsuit"
+ icon_state = "/obj/item/clothing/under/color/yellow"
greyscale_colors = "#ffe14d"
/obj/item/clothing/under/color/jumpskirt/yellow
name = "yellow jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/yellow"
greyscale_colors = "#ffe14d"
/obj/item/clothing/under/color/darkblue
name = "dark blue jumpsuit"
+ icon_state = "/obj/item/clothing/under/color/darkblue"
greyscale_colors = "#3285ba"
/obj/item/clothing/under/color/jumpskirt/darkblue
name = "dark blue jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/darkblue"
greyscale_colors = "#3285ba"
/obj/item/clothing/under/color/teal
name = "teal jumpsuit"
+ icon_state = "/obj/item/clothing/under/color/teal"
greyscale_colors = "#77f3b7"
/obj/item/clothing/under/color/jumpskirt/teal
name = "teal jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/teal"
greyscale_colors = "#77f3b7"
/obj/item/clothing/under/color/lightpurple
name = "light purple jumpsuit"
+ icon_state = "/obj/item/clothing/under/color/lightpurple"
greyscale_colors = "#9f70cc"
/obj/item/clothing/under/color/jumpskirt/lightpurple
name = "light purple jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/lightpurple"
greyscale_colors = "#9f70cc"
/obj/item/clothing/under/color/darkgreen
name = "dark green jumpsuit"
+ icon_state = "/obj/item/clothing/under/color/darkgreen"
greyscale_colors = "#6fbc22"
/obj/item/clothing/under/color/jumpskirt/darkgreen
name = "dark green jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/darkgreen"
greyscale_colors = "#6fbc22"
/obj/item/clothing/under/color/lightbrown
name = "light brown jumpsuit"
+ icon_state = "/obj/item/clothing/under/color/lightbrown"
greyscale_colors = "#c59431"
/obj/item/clothing/under/color/jumpskirt/lightbrown
name = "light brown jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/lightbrown"
greyscale_colors = "#c59431"
/obj/item/clothing/under/color/brown
name = "brown jumpsuit"
+ icon_state = "/obj/item/clothing/under/color/brown"
greyscale_colors = "#a17229"
/obj/item/clothing/under/color/jumpskirt/brown
name = "brown jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/brown"
greyscale_colors = "#a17229"
/obj/item/clothing/under/color/maroon
name = "maroon jumpsuit"
+ icon_state = "/obj/item/clothing/under/color/maroon"
greyscale_colors = "#cc295f"
/obj/item/clothing/under/color/jumpskirt/maroon
name = "maroon jumpskirt"
+ icon_state = "/obj/item/clothing/under/color/jumpskirt/maroon"
greyscale_colors = "#cc295f"
/obj/item/clothing/under/color/rainbow
name = "rainbow jumpsuit"
desc = "A multi-colored jumpsuit!"
+ icon = 'icons/obj/clothing/under/color.dmi'
icon_state = "rainbow"
+ post_init_icon_state = null
inhand_icon_state = "rainbow"
greyscale_config = null
greyscale_config_inhand_left = null
@@ -233,7 +275,9 @@
/obj/item/clothing/under/color/jumpskirt/rainbow
name = "rainbow jumpskirt"
desc = "A multi-colored jumpskirt!"
+ icon = 'icons/obj/clothing/under/color.dmi'
icon_state = "rainbow_skirt"
+ post_init_icon_state = null
inhand_icon_state = "rainbow"
greyscale_config = null
greyscale_config_inhand_left = null
diff --git a/code/modules/clothing/under/costume.dm b/code/modules/clothing/under/costume.dm
index 39734352fda..adc7cb1a30a 100644
--- a/code/modules/clothing/under/costume.dm
+++ b/code/modules/clothing/under/costume.dm
@@ -311,19 +311,24 @@
/obj/item/clothing/under/costume/buttondown/slacks
name = "button-down shirt with slacks"
desc = "A fancy button-down shirt with slacks."
- icon_state = "buttondown_slacks"
+ icon = 'icons/map_icons/clothing/under/costume.dmi'
+ icon_state = "/obj/item/clothing/under/costume/buttondown/slacks"
+ post_init_icon_state = "buttondown_slacks"
greyscale_config = /datum/greyscale_config/buttondown_slacks
greyscale_config_worn = /datum/greyscale_config/buttondown_slacks/worn
greyscale_colors = "#EEEEEE#EE8E2E#222227#D8D39C"
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/under/costume/buttondown/slacks/service //preset one to be a formal white shirt and black pants
+ icon_state = "/obj/item/clothing/under/costume/buttondown/slacks/service"
greyscale_colors = "#EEEEEE#CBDBFC#17171B#222227"
/obj/item/clothing/under/costume/buttondown/shorts
name = "button-down shirt with shorts"
desc = "A fancy button-down shirt with shorts."
- icon_state = "buttondown_shorts"
+ icon = 'icons/map_icons/clothing/under/costume.dmi'
+ icon_state = "/obj/item/clothing/under/costume/buttondown/shorts"
+ post_init_icon_state = "buttondown_shorts"
greyscale_config = /datum/greyscale_config/buttondown_shorts
greyscale_config_worn = /datum/greyscale_config/buttondown_shorts/worn
greyscale_colors = "#EEEEEE#EE8E2E#222227#D8D39C"
@@ -332,7 +337,9 @@
/obj/item/clothing/under/costume/buttondown/skirt
name = "button-down shirt with skirt"
desc = "A fancy button-down shirt with skirt."
- icon_state = "buttondown_skirt"
+ icon = 'icons/map_icons/clothing/under/costume.dmi'
+ icon_state = "/obj/item/clothing/under/costume/buttondown/skirt"
+ post_init_icon_state = "buttondown_skirt"
greyscale_config = /datum/greyscale_config/buttondown_skirt
greyscale_config_worn = /datum/greyscale_config/buttondown_skirt/worn
greyscale_colors = "#EEEEEE#EE8E2E#222227#D8D39C"
@@ -342,6 +349,7 @@
supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON
/obj/item/clothing/under/costume/buttondown/skirt/service //preset one to be a formal white shirt and black skirt
+ icon_state = "/obj/item/clothing/under/costume/buttondown/skirt/service"
greyscale_colors = "#EEEEEE#CBDBFC#17171B#222227"
/obj/item/clothing/under/costume/jackbros
@@ -359,7 +367,9 @@
/obj/item/clothing/under/costume/football_suit
name = "football uniform"
- icon_state = "football_suit"
+ icon = 'icons/map_icons/clothing/under/costume.dmi'
+ icon_state = "/obj/item/clothing/under/costume/football_suit"
+ post_init_icon_state = "football_suit"
can_adjust = FALSE
greyscale_config = /datum/greyscale_config/football_suit
greyscale_config_worn = /datum/greyscale_config/football_suit/worn
@@ -419,7 +429,9 @@
/obj/item/clothing/under/costume/gi
name = "martial gi"
desc = "Assistant, nukie, whatever. You can beat anyone; it's called hard work!"
- icon_state = "martial_arts_gi"
+ icon = 'icons/map_icons/clothing/under/costume.dmi'
+ icon_state = "/obj/item/clothing/under/costume/gi"
+ post_init_icon_state = "martial_arts_gi"
greyscale_config = /datum/greyscale_config/gi
greyscale_config_worn = /datum/greyscale_config/gi/worn
greyscale_colors = "#f1eeee#000000"
@@ -436,7 +448,8 @@
/obj/item/clothing/under/costume/gi/goku
name = "sacred gi"
desc = "Created by a man who touched the hearts and lives of many."
- icon_state = "martial_arts_gi_goku"
+ icon_state = "/obj/item/clothing/under/costume/gi/goku"
+ post_init_icon_state = "martial_arts_gi_goku"
greyscale_colors = "#f89925#3e6dd7"
/obj/item/clothing/under/costume/traditional
diff --git a/code/modules/clothing/under/ethereal.dm b/code/modules/clothing/under/ethereal.dm
index 0028ae3ac1b..25a47323a30 100644
--- a/code/modules/clothing/under/ethereal.dm
+++ b/code/modules/clothing/under/ethereal.dm
@@ -1,9 +1,10 @@
/obj/item/clothing/under/ethereal_tunic
name = "ethereal tunic"
desc = "A simple sleeveless tunic worn over an undersuit, it glows in the dark!"
- icon_state = "eth_tunic"
- icon = 'icons/obj/clothing/under/ethereal.dmi'
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
worn_icon = 'icons/mob/clothing/under/ethereal.dmi'
+ icon_state = "/obj/item/clothing/under/ethereal_tunic"
+ post_init_icon_state = "eth_tunic"
greyscale_colors = "#4e7cc7"
greyscale_config = /datum/greyscale_config/eth_tunic
greyscale_config_worn = /datum/greyscale_config/eth_tunic/worn
@@ -26,6 +27,7 @@
/obj/item/clothing/under/ethereal_tunic/trailwarden
name = "trailwarden tunic"
desc = "Farmers and pilgrims would commonly find their clothes permanently stained from years of wading through the mud and bioluminescent flora of Sprout, eventually it became customary to dye clothes to replicate this effect purposefully."
+ icon_state = "/obj/item/clothing/under/ethereal_tunic/trailwarden"
greyscale_colors = "#32a87d"
/obj/item/clothing/under/ethereal_tunic/trailwarden/equipped(mob/living/user, slot)
diff --git a/code/modules/clothing/under/jobs/civilian/civilian.dm b/code/modules/clothing/under/jobs/civilian/civilian.dm
index 35eb2db3029..d906bc3d879 100644
--- a/code/modules/clothing/under/jobs/civilian/civilian.dm
+++ b/code/modules/clothing/under/jobs/civilian/civilian.dm
@@ -180,9 +180,10 @@
/obj/item/clothing/under/rank/civilian/lawyer/bluesuit
name = "blue buttondown suit"
- icon = 'icons/obj/clothing/under/shorts_pants_shirts.dmi'
worn_icon = 'icons/mob/clothing/under/shorts_pants_shirts.dmi'
- icon_state = "buttondown_slacks"
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/rank/civilian/lawyer/bluesuit"
+ post_init_icon_state = "buttondown_slacks"
greyscale_config = /datum/greyscale_config/buttondown_slacks
greyscale_config_worn = /datum/greyscale_config/buttondown_slacks/worn
greyscale_colors = "#EEEEEE#CBDBFC#17171B#2B65A8"
@@ -191,7 +192,9 @@
/obj/item/clothing/under/rank/civilian/lawyer/bluesuit/skirt
name = "blue buttondown suitskirt"
- icon_state = "buttondown_skirt"
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/rank/civilian/lawyer/bluesuit/skirt"
+ post_init_icon_state = "buttondown_skirt"
greyscale_config = /datum/greyscale_config/buttondown_skirt
greyscale_config_worn = /datum/greyscale_config/buttondown_skirt/worn
body_parts_covered = CHEST|GROIN|ARMS
diff --git a/code/modules/clothing/under/jobs/civilian/clown_mime.dm b/code/modules/clothing/under/jobs/civilian/clown_mime.dm
index 55f0da88918..bb0c33e7e2f 100644
--- a/code/modules/clothing/under/jobs/civilian/clown_mime.dm
+++ b/code/modules/clothing/under/jobs/civilian/clown_mime.dm
@@ -77,10 +77,12 @@
/obj/item/clothing/under/rank/civilian/clown/jester
name = "jester suit"
desc = "A jolly dress, well suited to entertain your master, nuncle."
- icon_state = "jester_map"
- greyscale_colors = "#00ff00#ff0000"
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/rank/civilian/clown/jester"
+ post_init_icon_state = "jester_map"
greyscale_config = /datum/greyscale_config/jester_suit
greyscale_config_worn = /datum/greyscale_config/jester_suit/worn
+ greyscale_colors = "#00ff00#ff0000"
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/under/rank/civilian/clown/jesteralt
diff --git a/code/modules/clothing/under/jobs/civilian/curator.dm b/code/modules/clothing/under/jobs/civilian/curator.dm
index 44be99b8951..a4cc66f2d2e 100644
--- a/code/modules/clothing/under/jobs/civilian/curator.dm
+++ b/code/modules/clothing/under/jobs/civilian/curator.dm
@@ -35,13 +35,16 @@
/obj/item/clothing/under/rank/civilian/curator/nasa
name = "\improper NASA jumpsuit"
desc = "It has a NASA logo on it and is made of space-proofed materials."
- icon_state = "jumpsuit"
+ icon = 'icons/map_icons/clothing/under/color.dmi'
+ icon_state = "/obj/item/clothing/under/color"
+ post_init_icon_state = "jumpsuit"
inhand_icon_state = "jumpsuit"
- greyscale_colors = "#3f3f3f"
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
greyscale_config = /datum/greyscale_config/jumpsuit
greyscale_config_worn = /datum/greyscale_config/jumpsuit/worn
greyscale_config_inhand_left = /datum/greyscale_config/jumpsuit/inhand_left
greyscale_config_inhand_right = /datum/greyscale_config/jumpsuit/inhand_right
+ greyscale_colors = "#3f3f3f"
w_class = WEIGHT_CLASS_BULKY
armor_type = /datum/armor/clothing_under/curator_nasa
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
diff --git a/code/modules/clothing/under/jobs/rnd.dm b/code/modules/clothing/under/jobs/rnd.dm
index dc5937e4e02..bb65ef5801f 100644
--- a/code/modules/clothing/under/jobs/rnd.dm
+++ b/code/modules/clothing/under/jobs/rnd.dm
@@ -36,9 +36,10 @@
/obj/item/clothing/under/rank/rnd/research_director/alt
name = "research director's tan suit"
desc = "Maybe you'll engineer your own half-man, half-pig creature some day. Its fabric provides minor protection from biological contaminants."
- icon = 'icons/obj/clothing/under/shorts_pants_shirts.dmi'
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
worn_icon = 'icons/mob/clothing/under/shorts_pants_shirts.dmi'
- icon_state = "buttondown_slacks"
+ icon_state = "/obj/item/clothing/under/rank/rnd/research_director/alt"
+ post_init_icon_state = "buttondown_slacks"
greyscale_config = /datum/greyscale_config/buttondown_slacks
greyscale_config_worn = /datum/greyscale_config/buttondown_slacks/worn
greyscale_colors = "#ffeeb6#c2d3da#402912#615233"
@@ -47,7 +48,9 @@
/obj/item/clothing/under/rank/rnd/research_director/alt/skirt
name = "research director's tan suitskirt"
- icon_state = "buttondown_skirt"
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/rank/rnd/research_director/alt/skirt"
+ post_init_icon_state = "buttondown_skirt"
greyscale_config = /datum/greyscale_config/buttondown_skirt
greyscale_config_worn = /datum/greyscale_config/buttondown_skirt/worn
body_parts_covered = CHEST|GROIN|ARMS
diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm
index 83b7847855e..f93ca808fbb 100644
--- a/code/modules/clothing/under/jobs/security.dm
+++ b/code/modules/clothing/under/jobs/security.dm
@@ -230,15 +230,15 @@
/obj/item/clothing/under/rank/prisoner
name = "prison jumpsuit"
desc = "Standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position."
- icon_state = "jumpsuit"
- icon_preview = 'icons/obj/fluff/previews.dmi'
- icon_state_preview = "prisonsuit"
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/rank/prisoner"
+ post_init_icon_state = "jumpsuit"
inhand_icon_state = "jumpsuit"
- greyscale_colors = "#ff8300"
greyscale_config = /datum/greyscale_config/jumpsuit/prison
greyscale_config_worn = /datum/greyscale_config/jumpsuit/prison/worn
greyscale_config_inhand_left = /datum/greyscale_config/jumpsuit/prison/inhand_left
greyscale_config_inhand_right = /datum/greyscale_config/jumpsuit/prison/inhand_right
+ greyscale_colors = "#ff8300"
has_sensor = LOCKED_SENSORS
sensor_mode = SENSOR_COORDS
random_sensor = FALSE
@@ -251,14 +251,14 @@
/obj/item/clothing/under/rank/prisoner/skirt
name = "prison jumpskirt"
desc = "Standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position."
- icon_state = "jumpskirt"
- icon_preview = 'icons/obj/fluff/previews.dmi'
- icon_state_preview = "prisonskirt"
- greyscale_colors = "#ff8300"
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/rank/prisoner/skirt"
+ post_init_icon_state = "jumpskirt"
greyscale_config = /datum/greyscale_config/jumpsuit/prison
greyscale_config_worn = /datum/greyscale_config/jumpsuit/prison/worn
greyscale_config_inhand_left = /datum/greyscale_config/jumpsuit/prison/inhand_left
greyscale_config_inhand_right = /datum/greyscale_config/jumpsuit/prison/inhand_right
+ greyscale_colors = "#ff8300"
body_parts_covered = CHEST|GROIN|ARMS
dying_key = DYE_REGISTRY_JUMPSKIRT
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY
diff --git a/code/modules/clothing/under/pants.dm b/code/modules/clothing/under/pants.dm
index a582f7ccb92..90f05d8f2ea 100644
--- a/code/modules/clothing/under/pants.dm
+++ b/code/modules/clothing/under/pants.dm
@@ -11,7 +11,9 @@
/obj/item/clothing/under/pants/slacks
name = "slacks"
desc = "A pair of comfy slacks."
- icon_state = "slacks"
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/pants/slacks"
+ post_init_icon_state = "slacks"
greyscale_config = /datum/greyscale_config/slacks
greyscale_config_worn = /datum/greyscale_config/slacks/worn
greyscale_colors = "#575757#3E3E3E#75634F"
@@ -20,7 +22,9 @@
/obj/item/clothing/under/pants/jeans
name = "jeans"
desc = "A nondescript pair of tough jeans."
- icon_state = "jeans"
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/pants/jeans"
+ post_init_icon_state = "jeans"
greyscale_config = /datum/greyscale_config/jeans
greyscale_config_worn = /datum/greyscale_config/jeans/worn
greyscale_colors = "#787878#723E0E#4D7EAC"
diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm
index 289c59ae3d1..eb06c86fbe4 100644
--- a/code/modules/clothing/under/shorts.dm
+++ b/code/modules/clothing/under/shorts.dm
@@ -1,7 +1,9 @@
/obj/item/clothing/under/shorts
name = "shorts"
desc = "A pair of comfy shorts."
- icon_state = "shorts"
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/shorts"
+ post_init_icon_state = "shorts"
greyscale_config = /datum/greyscale_config/shorts
greyscale_config_worn = /datum/greyscale_config/shorts/worn
greyscale_colors = "#575757#3E3E3E#75634F"
@@ -16,7 +18,9 @@
/obj/item/clothing/under/shorts/jeanshorts
name = "jean shorts"
desc = "A nondescript pair of tough jean shorts."
- icon_state = "jeanshorts"
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/shorts/jeanshorts"
+ post_init_icon_state = "jeanshorts"
greyscale_config = /datum/greyscale_config/jeanshorts
greyscale_config_worn = /datum/greyscale_config/jeanshorts/worn
greyscale_colors = "#787878#723E0E#4D7EAC"
@@ -24,29 +28,35 @@
/obj/item/clothing/under/shorts/red
name = "athletic shorts"
desc = "95% Polyester, 5% Spandex!"
+ icon_state = "/obj/item/clothing/under/shorts/red"
greyscale_colors = "#E43F3F#A81818#A81818"
/obj/item/clothing/under/shorts/green
name = "athletic shorts"
desc = "95% Polyester, 5% Spandex!"
+ icon_state = "/obj/item/clothing/under/shorts/green"
greyscale_colors = "#68E43F#3CA818#3CA818"
/obj/item/clothing/under/shorts/blue
name = "athletic shorts"
desc = "95% Polyester, 5% Spandex!"
+ icon_state = "/obj/item/clothing/under/shorts/blue"
greyscale_colors = "#3F68E4#183CA8#183CA8"
/obj/item/clothing/under/shorts/black
name = "athletic shorts"
desc = "95% Polyester, 5% Spandex!"
+ icon_state = "/obj/item/clothing/under/shorts/black"
greyscale_colors = "#606060#353535#353535"
/obj/item/clothing/under/shorts/grey
name = "athletic shorts"
desc = "95% Polyester, 5% Spandex!"
+ icon_state = "/obj/item/clothing/under/shorts/grey"
greyscale_colors = "#EFEFEF#B2B2B2#B2B2B2"
/obj/item/clothing/under/shorts/purple
name = "athletic shorts"
desc = "95% Polyester, 5% Spandex!"
+ icon_state = "/obj/item/clothing/under/shorts/purple"
greyscale_colors = "#B847FF#8F36C6#8F36C6"
diff --git a/code/modules/clothing/under/skirt_dress.dm b/code/modules/clothing/under/skirt_dress.dm
index 0ea09301dba..68503be3255 100644
--- a/code/modules/clothing/under/skirt_dress.dm
+++ b/code/modules/clothing/under/skirt_dress.dm
@@ -14,9 +14,11 @@
/obj/item/clothing/under/dress/striped
name = "striped dress"
desc = "Fashion in space."
- icon_state = "stripeddress"
inhand_icon_state = null
female_sprite_flags = FEMALE_UNIFORM_FULL
+ icon = 'icons/map_icons/clothing/under/dress.dmi'
+ icon_state = "/obj/item/clothing/under/dress/striped"
+ post_init_icon_state = "stripeddress"
greyscale_config = /datum/greyscale_config/striped_dress
greyscale_config_worn = /datum/greyscale_config/striped_dress/worn
flags_1 = IS_PLAYER_COLORABLE_1
@@ -25,8 +27,10 @@
/obj/item/clothing/under/dress/sailor
name = "sailor dress"
desc = "Formal wear for a leading lady."
- icon_state = "sailor_dress"
alternate_worn_layer = UNDER_SUIT_LAYER
+ icon = 'icons/map_icons/clothing/under/dress.dmi'
+ icon_state = "/obj/item/clothing/under/dress/sailor"
+ post_init_icon_state = "sailor_dress"
greyscale_config = /datum/greyscale_config/sailor_dress
greyscale_config_worn = /datum/greyscale_config/sailor_dress/worn
greyscale_colors = "#0000ff#cc0000#eaeaea"
@@ -49,9 +53,11 @@
/obj/item/clothing/under/dress/eveninggown
name = "evening gown"
desc = "Fancy dress for space bar singers."
- icon_state = "evening_gown"
alternate_worn_layer = UNDER_SUIT_LAYER
inhand_icon_state = null
+ icon = 'icons/map_icons/clothing/under/dress.dmi'
+ icon_state = "/obj/item/clothing/under/dress/eveninggown"
+ post_init_icon_state = "evening_gown"
greyscale_config = /datum/greyscale_config/evening_dress
greyscale_config_worn = /datum/greyscale_config/evening_dress/worn
flags_1 = IS_PLAYER_COLORABLE_1
@@ -64,7 +70,9 @@
/obj/item/clothing/under/dress/skirt
name = "cardigan skirt"
desc = "A nice skirt with a cute cardigan, very fancy!"
- icon_state = "cardiganskirt"
+ icon = 'icons/map_icons/clothing/under/dress.dmi'
+ icon_state = "/obj/item/clothing/under/dress/skirt"
+ post_init_icon_state = "cardiganskirt"
greyscale_config = /datum/greyscale_config/cardiganskirt
greyscale_config_worn = /datum/greyscale_config/cardiganskirt/worn
greyscale_colors = "#bf504d#545454"
@@ -74,7 +82,8 @@
/obj/item/clothing/under/dress/skirt/plaid
name = "plaid skirt"
desc = "A preppy plaid skirt with a white blouse."
- icon_state = "plaidskirt"
+ icon_state = "/obj/item/clothing/under/dress/skirt/plaid"
+ post_init_icon_state = "plaidskirt"
can_adjust = TRUE
alt_covers_chest = TRUE
custom_price = PAYCHECK_CREW
@@ -86,9 +95,11 @@
/obj/item/clothing/under/dress/skirt/turtleskirt
name = "turtleneck skirt"
desc = "A casual turtleneck skirt."
- icon_state = "turtleskirt"
custom_price = PAYCHECK_CREW
greyscale_colors = "#cc0000#5f5f5f"
+ icon = 'icons/map_icons/clothing/under/dress.dmi'
+ icon_state = "/obj/item/clothing/under/dress/skirt/turtleskirt"
+ post_init_icon_state = "turtleskirt"
greyscale_config = /datum/greyscale_config/turtleskirt
greyscale_config_worn = /datum/greyscale_config/turtleskirt/worn
flags_1 = IS_PLAYER_COLORABLE_1
@@ -96,10 +107,12 @@
/obj/item/clothing/under/dress/tango
name = "tango dress"
desc = "Filled with Latin fire."
- icon_state = "tango"
alternate_worn_layer = UNDER_SUIT_LAYER
custom_price = PAYCHECK_CREW
greyscale_colors = "#ff0000#1c1c1c"
+ icon = 'icons/map_icons/clothing/under/dress.dmi'
+ icon_state = "/obj/item/clothing/under/dress/tango"
+ post_init_icon_state = "tango"
greyscale_config = /datum/greyscale_config/tango
greyscale_config_worn = /datum/greyscale_config/tango/worn
flags_1 = IS_PLAYER_COLORABLE_1
@@ -107,9 +120,11 @@
/obj/item/clothing/under/dress/sundress
name = "sundress"
desc = "Makes you want to frolic in a field of daisies."
- icon_state = "sundress"
custom_price = PAYCHECK_CREW
greyscale_colors = "#FFE60F#9194A5#1F243C"
+ icon = 'icons/map_icons/clothing/under/dress.dmi'
+ icon_state = "/obj/item/clothing/under/dress/sundress"
+ post_init_icon_state = "sundress"
greyscale_config = /datum/greyscale_config/sundress
greyscale_config_worn = /datum/greyscale_config/sundress/worn
flags_1 = IS_PLAYER_COLORABLE_1
diff --git a/code/modules/clothing/under/trek.dm b/code/modules/clothing/under/trek.dm
index de72342f941..501a6505dc8 100644
--- a/code/modules/clothing/under/trek.dm
+++ b/code/modules/clothing/under/trek.dm
@@ -11,8 +11,10 @@
/obj/item/clothing/under/trek/command
name = "command uniform"
desc = "An outdated uniform worn by command officers."
- icon_state = "trek_tos_com" //Shirt has gold wrist-bands
inhand_icon_state = "y_suit"
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/trek/command"
+ post_init_icon_state = "trek_tos_com"
greyscale_config = /datum/greyscale_config/trek
greyscale_config_worn = /datum/greyscale_config/trek/worn
greyscale_colors = "#fab342"
@@ -20,7 +22,9 @@
/obj/item/clothing/under/trek/engsec
name = "engsec uniform"
desc = "An outdated uniform worn by engineering/security officers."
- icon_state = "trek_tos_sec" //Tucked-in shirt
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/trek/engsec"
+ post_init_icon_state = "trek_tos_sec"
inhand_icon_state = "r_suit"
greyscale_config = /datum/greyscale_config/trek
greyscale_config_worn = /datum/greyscale_config/trek/worn
@@ -29,7 +33,9 @@
/obj/item/clothing/under/trek/medsci
name = "medsci uniform"
desc = "An outdated worn by medical/science officers."
- icon_state = "trek_tos"
+ icon = 'icons/map_icons/clothing/under/_under.dmi'
+ icon_state = "/obj/item/clothing/under/trek/medsci"
+ post_init_icon_state = "trek_tos"
inhand_icon_state = "b_suit"
greyscale_config = /datum/greyscale_config/trek
greyscale_config_worn = /datum/greyscale_config/trek/worn
@@ -39,40 +45,49 @@
* The Next Generation
*/
/obj/item/clothing/under/trek/command/next
- icon_state = "trek_next" //Technically TNG had Command wearing red, but bc gold is closer to command roles for SS13 we're taking some liberties
+ icon_state = "/obj/item/clothing/under/trek/command/next"
+ post_init_icon_state = "trek_next" //Technically TNG had Command wearing red, but bc gold is closer to command roles for SS13 we're taking some liberties
/obj/item/clothing/under/trek/engsec/next
- icon_state = "trek_next"
+ icon_state = "/obj/item/clothing/under/trek/engsec/next"
+ post_init_icon_state = "trek_next"
/obj/item/clothing/under/trek/medsci/next
- icon_state = "trek_next"
+ icon_state = "/obj/item/clothing/under/trek/medsci/next"
+ post_init_icon_state = "trek_next"
/*
* Voyager
*/
/obj/item/clothing/under/trek/command/voy
- icon_state = "trek_voy" //Same point applies as TNG
+ icon_state = "/obj/item/clothing/under/trek/command/voy"
+ post_init_icon_state = "trek_voy" //Same point applies as TNG
/obj/item/clothing/under/trek/engsec/voy
- icon_state = "trek_voy"
+ icon_state = "/obj/item/clothing/under/trek/engsec/voy"
+ post_init_icon_state = "trek_voy"
/obj/item/clothing/under/trek/medsci/voy
- icon_state = "trek_voy"
+ icon_state = "/obj/item/clothing/under/trek/medsci/voy"
+ post_init_icon_state = "trek_voy"
/*
* Enterprise
*/
/obj/item/clothing/under/trek/command/ent
- icon_state = "trek_ent"
+ icon_state = "/obj/item/clothing/under/trek/command/ent"
+ post_init_icon_state = "trek_ent"
//Greyscale sprite note, the base of it can't be greyscaled lest I make a whole new .json, but the color bands are greyscale at least.
inhand_icon_state = "bl_suit"
/obj/item/clothing/under/trek/engsec/ent
- icon_state = "trek_ent"
+ icon_state = "/obj/item/clothing/under/trek/engsec/ent"
+ post_init_icon_state = "trek_ent"
inhand_icon_state = "bl_suit"
/obj/item/clothing/under/trek/medsci/ent
- icon_state = "trek_ent"
+ icon_state = "/obj/item/clothing/under/trek/medsci/ent"
+ post_init_icon_state = "trek_ent"
inhand_icon_state = "bl_suit"
//Q
diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm
index 7d142c0a5a8..40a84d9c8ff 100644
--- a/code/modules/hydroponics/grown/flowers.dm
+++ b/code/modules/hydroponics/grown/flowers.dm
@@ -124,9 +124,6 @@
desc = "A beautiful light pink flower."
icon_state = "fraxinella"
distill_reagent = /datum/reagent/ash
- greyscale_config = null
- greyscale_config_worn = null
- greyscale_colors = null
// Harebell
/obj/item/seeds/harebell
diff --git a/code/modules/hydroponics/grown/rainbow_bunch.dm b/code/modules/hydroponics/grown/rainbow_bunch.dm
index c3d21347bf9..655184c874f 100644
--- a/code/modules/hydroponics/grown/rainbow_bunch.dm
+++ b/code/modules/hydroponics/grown/rainbow_bunch.dm
@@ -23,7 +23,6 @@
seed = /obj/item/seeds/rainbow_bunch
name = "rainbow flower"
desc = "A beautiful flower capable of being used for most dyeing processes."
- icon_state = "map_flower"
slot_flags = ITEM_SLOT_HEAD
alternate_worn_layer = ABOVE_BODY_FRONT_HEAD_LAYER
force = 0
@@ -34,6 +33,9 @@
attack_verb_continuous = list("pompfs")
attack_verb_simple = list("pompf")
greyscale_colors = COLOR_BLACK //only here for unit testing. overriden in initialize()
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/food/grown/rainbow_flower"
+ post_init_icon_state = "map_flower"
greyscale_config = /datum/greyscale_config/flower_simple
greyscale_config_worn = /datum/greyscale_config/flower_simple_worn
diff --git a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm
index 2b5aa6b306b..100477494b8 100644
--- a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm
+++ b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm
@@ -578,8 +578,9 @@
/obj/item/nullrod/carp
name = "carp-sie plushie"
desc = "An adorable stuffed toy that resembles the god of all carp. The teeth look pretty sharp. Activate it to receive the blessing of Carp-Sie."
- icon = 'icons/obj/toys/plushes.dmi'
- icon_state = "map_plushie_carp"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/nullrod/carp"
+ post_init_icon_state = "map_plushie_carp"
greyscale_config = /datum/greyscale_config/plush_carp
greyscale_colors = "#cc99ff#000000"
inhand_icon_state = "carp_plushie"
diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm
index e96e1db81ca..50c48509dec 100644
--- a/code/modules/jobs/job_types/mime.dm
+++ b/code/modules/jobs/job_types/mime.dm
@@ -56,7 +56,7 @@
belt = /obj/item/modular_computer/pda/mime
ears = /obj/item/radio/headset/headset_srv
gloves = /obj/item/clothing/gloves/color/white
- head = /obj/item/clothing/head/frenchberet
+ head = /obj/item/clothing/head/beret/frenchberet
mask = /obj/item/clothing/mask/gas/mime
shoes = /obj/item/clothing/shoes/laceup
diff --git a/code/modules/loadout/categories/pocket.dm b/code/modules/loadout/categories/pocket.dm
index 8b6b65ed0a6..8e195d38671 100644
--- a/code/modules/loadout/categories/pocket.dm
+++ b/code/modules/loadout/categories/pocket.dm
@@ -55,14 +55,10 @@
/datum/loadout_item/pocket_items/plush/carp
name = "Plush (Carp)"
- ui_icon = 'icons/obj/fluff/previews.dmi'
- ui_icon_state = "plushie_carp"
item_path = /obj/item/toy/plush/carpplushie
/datum/loadout_item/pocket_items/plush/lizard_greyscale
name = "Plush (Lizard, Colorable)"
- ui_icon = 'icons/obj/fluff/previews.dmi'
- ui_icon_state = "plushie_lizard"
item_path = /obj/item/toy/plush/lizard_plushie/greyscale
/datum/loadout_item/pocket_items/plush/lizard_random
@@ -98,8 +94,6 @@
/datum/loadout_item/pocket_items/plush/snake
name = "Plush (Snake)"
- ui_icon = 'icons/obj/fluff/previews.dmi'
- ui_icon_state = "plushie_snake"
item_path = /obj/item/toy/plush/snakeplushie
/datum/loadout_item/pocket_items/plush/horse
diff --git a/code/modules/mapfluff/ruins/spaceruin_code/caravanambush.dm b/code/modules/mapfluff/ruins/spaceruin_code/caravanambush.dm
index c531ae75e0d..cb99c2c8710 100644
--- a/code/modules/mapfluff/ruins/spaceruin_code/caravanambush.dm
+++ b/code/modules/mapfluff/ruins/spaceruin_code/caravanambush.dm
@@ -8,6 +8,7 @@
toolspeed = 0.3
/obj/item/screwdriver/caravan
+ icon = 'icons/obj/tools.dmi'
icon_state = "screwdriver_caravan"
desc = "A prototype of a new screwdriver design, allegedly the red color scheme makes it go faster."
name = "experimental screwdriver"
@@ -15,6 +16,7 @@
random_color = FALSE
/obj/item/wirecutters/caravan
+ icon = 'icons/obj/tools.dmi'
icon_state = "cutters_caravan"
desc = "A prototype of a new wirecutter design, allegedly the red color scheme makes it go faster."
name = "experimental wirecutters"
diff --git a/code/modules/mining/lavaland/mining_loot/megafauna/bubblegum.dm b/code/modules/mining/lavaland/mining_loot/megafauna/bubblegum.dm
index 28ef2ec0a62..ada46f3d1cd 100644
--- a/code/modules/mining/lavaland/mining_loot/megafauna/bubblegum.dm
+++ b/code/modules/mining/lavaland/mining_loot/megafauna/bubblegum.dm
@@ -27,7 +27,9 @@
/obj/item/clothing/suit/hooded/hostile_environment
name = "H.E.C.K. suit"
desc = "Hostile Environment Cross-Kinetic Suit: A suit designed to withstand the wide variety of hazards from Lavaland. It wasn't enough for its last owner."
- icon_state = "hostile_env"
+ icon = 'icons/map_icons/clothing/suit/_suit.dmi'
+ icon_state = "/obj/item/clothing/suit/hooded/hostile_environment"
+ post_init_icon_state = "hostile_env"
hoodtype = /obj/item/clothing/head/hooded/hostile_environment
armor_type = /datum/armor/hooded_hostile_environment
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
@@ -73,9 +75,10 @@
/obj/item/clothing/head/hooded/hostile_environment
name = "H.E.C.K. helmet"
desc = "Hostile Environment Cross-Kinetic Helmet: A helmet designed to withstand the wide variety of hazards from Lavaland. It wasn't enough for its last owner."
- icon = 'icons/obj/clothing/head/helmet.dmi'
+ icon = 'icons/map_icons/clothing/head/_head.dmi'
+ icon_state = "/obj/item/clothing/head/hooded/hostile_environment"
+ post_init_icon_state = "hostile_env"
worn_icon = 'icons/mob/clothing/head/helmet.dmi'
- icon_state = "hostile_env"
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/hooded_hostile_environment
cold_protection = HEAD
diff --git a/code/modules/mob/living/basic/farm_animals/pony.dm b/code/modules/mob/living/basic/farm_animals/pony.dm
index d1b5142b62c..a9a7fc8fb5a 100644
--- a/code/modules/mob/living/basic/farm_animals/pony.dm
+++ b/code/modules/mob/living/basic/farm_animals/pony.dm
@@ -67,7 +67,7 @@
ai_controller.replace_planning_subtrees(list(
/datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee,
/datum/ai_planning_subtree/flee_target,
- /datum/ai_planning_subtree/random_speech/pony/tamed
+ /datum/ai_planning_subtree/random_speech/pony/tamed,
))
if(unique_tamer)
@@ -131,7 +131,7 @@
/datum/ai_planning_subtree/flee_target,
/datum/ai_planning_subtree/target_retaliate,
/datum/ai_planning_subtree/basic_melee_attack_subtree,
- /datum/ai_planning_subtree/random_speech/pony
+ /datum/ai_planning_subtree/random_speech/pony,
)
// A stronger horse is required for our strongest cowboys.
diff --git a/code/modules/mob/living/basic/lavaland/gutlunchers/gutlunchers.dm b/code/modules/mob/living/basic/lavaland/gutlunchers/gutlunchers.dm
index da1122b259b..87df7e847b5 100644
--- a/code/modules/mob/living/basic/lavaland/gutlunchers/gutlunchers.dm
+++ b/code/modules/mob/living/basic/lavaland/gutlunchers/gutlunchers.dm
@@ -8,9 +8,9 @@
desc = "A scavenger that eats raw ores, often found alongside ash walkers. Produces a thick, nutritious milk."
icon = 'icons/mob/simple/lavaland/lavaland_monsters.dmi'
icon_state = "gutlunch"
- combat_mode = FALSE
icon_living = "gutlunch"
icon_dead = "gutlunch"
+ combat_mode = FALSE
mob_biotypes = MOB_ORGANIC|MOB_BUG|MOB_MINING
basic_mob_flags = DEL_ON_DEATH
speak_emote = list("warbles", "quavers")
diff --git a/code/modules/mob/living/basic/space_fauna/carp/carp.dm b/code/modules/mob/living/basic/space_fauna/carp/carp.dm
index 7d50a58ae48..1bfb0071fa3 100644
--- a/code/modules/mob/living/basic/space_fauna/carp/carp.dm
+++ b/code/modules/mob/living/basic/space_fauna/carp/carp.dm
@@ -61,7 +61,7 @@
/datum/pet_command/idle,
/datum/pet_command/free,
/datum/pet_command/follow,
- /datum/pet_command/attack
+ /datum/pet_command/attack,
)
/// Carp want to eat raw meat
var/static/list/desired_food = list(/obj/item/food/meat/slab, /obj/item/food/meat/rawcutlet)
@@ -179,7 +179,7 @@
* Holographic carp from the holodeck
*/
/mob/living/basic/carp/holographic
- icon_state = "holocarp"
+ icon_state = "base_friend"
icon_living = "holocarp"
gold_core_spawnable = NO_SPAWN
greyscale_config = NONE
@@ -221,10 +221,10 @@
faction = list(FACTION_NEUTRAL)
maxHealth = 200
health = 200
+ icon_state = "magicarp"
icon_dead = "magicarp_dead"
icon_gib = "magicarp_gib"
icon_living = "magicarp"
- icon_state = "magicarp"
greyscale_config = NONE
/// Boosted chance for Cayenne to be silver
@@ -295,7 +295,6 @@
/mob/living/basic/carp/passive
name = "false carp"
desc = "A close relative of the space carp which is entirely toothless and feeds by stealing its cousin's leftovers."
-
icon_state = "base_friend"
icon_living = "base_friend"
icon_dead = "base_friend_dead"
diff --git a/code/modules/mob/living/basic/space_fauna/statue/mannequin.dm b/code/modules/mob/living/basic/space_fauna/statue/mannequin.dm
index 2084b413014..0842a516cf0 100644
--- a/code/modules/mob/living/basic/space_fauna/statue/mannequin.dm
+++ b/code/modules/mob/living/basic/space_fauna/statue/mannequin.dm
@@ -25,9 +25,9 @@
/mob/living/basic/statue/mannequin/update_overlays()
. = ..()
if(held_item)
- . += mutable_appearance(initial(held_item.righthand_file), initial(held_item.inhand_icon_state))
+ . += mutable_appearance(held_item::righthand_file, held_item::inhand_icon_state)
if(hat)
- . += mutable_appearance(initial(hat.worn_icon), initial(hat.worn_icon_state) || initial(hat.icon_state))
+ . += mutable_appearance(hat::worn_icon, hat::worn_icon_state || hat::post_init_icon_state || hat::icon_state)
/datum/ai_controller/basic_controller/stares_at_people
blackboard = list(
diff --git a/code/modules/mob_spawn/ghost_roles/space_roles.dm b/code/modules/mob_spawn/ghost_roles/space_roles.dm
index 1c41188eab9..0799de4c2b0 100644
--- a/code/modules/mob_spawn/ghost_roles/space_roles.dm
+++ b/code/modules/mob_spawn/ghost_roles/space_roles.dm
@@ -229,4 +229,4 @@
name = "Director"
id_trim = /datum/id_trim/away/director
uniform = /obj/item/clothing/under/suit/red
- head = /obj/item/clothing/head/frenchberet
+ head = /obj/item/clothing/head/beret/frenchberet
diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm
index 657b6838394..004373669f2 100644
--- a/code/modules/mod/mod_core.dm
+++ b/code/modules/mod/mod_core.dm
@@ -513,8 +513,9 @@
/obj/item/mod/core/soul
name = "MOD soul shard core"
desc = "A soul shard haphazardly jammed into a hand-crafted MOD core frame."
- icon_state = "mod-core-soul"
- icon_state_preview = "mod-core-soul-preview"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/mod/core/soul"
+ post_init_icon_state = "mod-core-soul"
var/base_desc
var/theme = THEME_CULT
greyscale_config = /datum/greyscale_config/mod_core_soul
@@ -673,4 +674,5 @@
timeout = 10 SECONDS
/obj/item/mod/core/soul/wizard
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
theme = THEME_WIZARD
diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm
index a5409705546..a12935ca2b8 100644
--- a/code/modules/modular_computers/computers/item/computer.dm
+++ b/code/modules/modular_computers/computers/item/computer.dm
@@ -121,6 +121,9 @@
*/
var/datum/component/shell/shell
+ /// This is where our overlays reside
+ var/overlays_icon = 'icons/obj/machines/computer.dmi'
+
/datum/armor/item_modular_computer
bullet = 20
laser = 20
@@ -443,15 +446,11 @@
/obj/item/modular_computer/update_overlays()
. = ..()
- var/init_icon = initial(icon)
- if(!init_icon)
- return
-
if(enabled)
- . += active_program ? mutable_appearance(init_icon, active_program.program_open_overlay) : mutable_appearance(init_icon, icon_state_menu)
+ . += active_program ? mutable_appearance(overlays_icon, active_program.program_open_overlay) : mutable_appearance(overlays_icon, icon_state_menu)
if(atom_integrity <= integrity_failure * max_integrity)
- . += mutable_appearance(init_icon, "bsod")
- . += mutable_appearance(init_icon, "broken")
+ . += mutable_appearance(overlays_icon, "bsod")
+ . += mutable_appearance(overlays_icon, "broken")
/obj/item/modular_computer/Exited(atom/movable/gone, direction)
if(internal_cell == gone)
diff --git a/code/modules/modular_computers/computers/item/pda.dm b/code/modules/modular_computers/computers/item/pda.dm
index e93bff5e373..5766cf3b842 100644
--- a/code/modules/modular_computers/computers/item/pda.dm
+++ b/code/modules/modular_computers/computers/item/pda.dm
@@ -1,7 +1,8 @@
/obj/item/modular_computer/pda
name = "pda"
- icon = 'icons/obj/devices/modular_pda.dmi'
- icon_state = "pda"
+ icon = 'icons/map_icons/items/pda.dmi'
+ icon_state = "/obj/item/modular_computer/pda"
+ post_init_icon_state = "pda"
worn_icon_state = "nothing"
base_icon_state = "tablet"
greyscale_config = /datum/greyscale_config/tablet
@@ -11,6 +12,8 @@
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
inhand_icon_state = "electronic"
+ overlays_icon = 'icons/obj/devices/modular_pda.dmi'
+
steel_sheet_cost = 2
custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass=SMALL_MATERIAL_AMOUNT, /datum/material/plastic=SMALL_MATERIAL_AMOUNT)
interaction_flags_atom = parent_type::interaction_flags_atom | INTERACT_ATOM_ALLOW_USER_LOCATION | INTERACT_ATOM_IGNORE_MOBILITY
@@ -74,11 +77,11 @@
/obj/item/modular_computer/pda/update_overlays()
. = ..()
if(computer_id_slot)
- . += mutable_appearance(initial(icon), "id_overlay")
+ . += mutable_appearance(overlays_icon, "id_overlay")
if(light_on)
- . += mutable_appearance(initial(icon), "light_overlay")
+ . += mutable_appearance(overlays_icon, "light_overlay")
if(inserted_pai)
- . += mutable_appearance(initial(icon), "pai_inserted")
+ . += mutable_appearance(overlays_icon, "pai_inserted")
/obj/item/modular_computer/pda/interact(mob/user)
. = ..()
@@ -261,6 +264,7 @@
*/
/obj/item/modular_computer/pda/nukeops
name = "nuclear pda"
+ icon_state = "/obj/item/modular_computer/pda/nukeops"
device_theme = PDA_THEME_SYNDICATE
comp_light_luminosity = 6.3 //matching a flashlight
light_color = COLOR_RED
@@ -280,8 +284,9 @@
/obj/item/modular_computer/pda/syndicate_contract_uplink
name = "contractor tablet"
- device_theme = PDA_THEME_SYNDICATE
+ icon_state = "/obj/item/modular_computer/pda/syndicate_contract_uplink"
icon_state_menu = "contractor-assign"
+ device_theme = PDA_THEME_SYNDICATE
comp_light_luminosity = 6.3
has_pda_programs = FALSE
greyscale_config = /datum/greyscale_config/tablet/stripe_double
@@ -299,7 +304,9 @@
*/
/obj/item/modular_computer/pda/silicon
name = "modular interface"
+ icon = 'icons/obj/devices/modular_pda.dmi'
icon_state = "tablet-silicon"
+ post_init_icon_state = null
base_icon_state = "tablet-silicon"
greyscale_config = null
greyscale_colors = null
diff --git a/code/modules/modular_computers/computers/item/role_tablet_presets.dm b/code/modules/modular_computers/computers/item/role_tablet_presets.dm
index 7c021c72cf4..17eebde4cd4 100644
--- a/code/modules/modular_computers/computers/item/role_tablet_presets.dm
+++ b/code/modules/modular_computers/computers/item/role_tablet_presets.dm
@@ -3,6 +3,7 @@
*/
/obj/item/modular_computer/pda/heads
+ icon_state = "/obj/item/modular_computer/pda/heads"
greyscale_config = /datum/greyscale_config/tablet/head
greyscale_colors = "#67A364#a92323"
max_capacity = parent_type::max_capacity * 2
@@ -21,6 +22,7 @@
/obj/item/modular_computer/pda/heads/captain
name = "captain PDA"
+ icon_state = "/obj/item/modular_computer/pda/heads/captain"
greyscale_config = /datum/greyscale_config/tablet/captain
greyscale_colors = "#2C7CB2#FF0000#FFFFFF#FFD55B"
inserted_item = /obj/item/pen/fountain/captain
@@ -37,6 +39,7 @@
/obj/item/modular_computer/pda/heads/hop
name = "head of personnel PDA"
+ icon_state = "/obj/item/modular_computer/pda/heads/hop"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#374f7e#a52f29#a52f29"
starting_programs = list(
@@ -46,6 +49,7 @@
/obj/item/modular_computer/pda/heads/hos
name = "head of security PDA"
+ icon_state = "/obj/item/modular_computer/pda/heads/hos"
greyscale_config = /datum/greyscale_config/tablet/head
greyscale_colors = "#EA3232#0000CC"
inserted_item = /obj/item/pen/red/security
@@ -55,6 +59,7 @@
/obj/item/modular_computer/pda/heads/ce
name = "chief engineer PDA"
+ icon_state = "/obj/item/modular_computer/pda/heads/ce"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#D99A2E#69DBF3#FAFAFA"
starting_programs = list(
@@ -65,6 +70,7 @@
/obj/item/modular_computer/pda/heads/cmo
name = "chief medical officer PDA"
+ icon_state = "/obj/item/modular_computer/pda/heads/cmo"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#FAFAFA#000099#3F96CC"
starting_programs = list(
@@ -74,6 +80,7 @@
/obj/item/modular_computer/pda/heads/rd
name = "research director PDA"
+ icon_state = "/obj/item/modular_computer/pda/heads/rd"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#FAFAFA#000099#B347BC"
inserted_item = /obj/item/pen/fountain
@@ -85,6 +92,7 @@
/obj/item/modular_computer/pda/heads/quartermaster
name = "quartermaster PDA"
+ icon_state = "/obj/item/modular_computer/pda/heads/quartermaster"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick/head
greyscale_colors = "#c4b787#18191e#8b4c31"
inserted_item = /obj/item/pen/survival
@@ -118,6 +126,7 @@
/obj/item/modular_computer/pda/warden
name = "warden PDA"
+ icon_state = "/obj/item/modular_computer/pda/warden"
greyscale_config = /datum/greyscale_config/tablet/stripe_double
greyscale_colors = "#EA3232#0000CC#363636"
inserted_item = /obj/item/pen/red/security
@@ -132,6 +141,7 @@
/obj/item/modular_computer/pda/engineering
name = "engineering PDA"
+ icon_state = "/obj/item/modular_computer/pda/engineering"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#D99A2E#69DBF3#E3DF3D"
starting_programs = list(
@@ -142,6 +152,7 @@
/obj/item/modular_computer/pda/atmos
name = "atmospherics PDA"
+ icon_state = "/obj/item/modular_computer/pda/atmos"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#EEDC43#00E5DA#727272"
starting_programs = list(
@@ -156,6 +167,7 @@
/obj/item/modular_computer/pda/science
name = "scientist PDA"
+ icon_state = "/obj/item/modular_computer/pda/science"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#000099#B347BC"
starting_programs = list(
@@ -167,6 +179,7 @@
/obj/item/modular_computer/pda/roboticist
name = "roboticist PDA"
+ icon_state = "/obj/item/modular_computer/pda/roboticist"
greyscale_config = /datum/greyscale_config/tablet/stripe_double
greyscale_colors = "#484848#0099CC#D94927"
starting_programs = list(
@@ -177,6 +190,7 @@
/obj/item/modular_computer/pda/geneticist
name = "geneticist PDA"
+ icon_state = "/obj/item/modular_computer/pda/geneticist"
greyscale_config = /datum/greyscale_config/tablet/stripe_double
greyscale_colors = "#FAFAFA#000099#0097CA"
starting_programs = list(
@@ -189,6 +203,7 @@
/obj/item/modular_computer/pda/medical
name = "medical PDA"
+ icon_state = "/obj/item/modular_computer/pda/medical"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#000099#3F96CC"
starting_programs = list(
@@ -198,6 +213,7 @@
/obj/item/modular_computer/pda/medical/paramedic
name = "paramedic PDA"
+ icon_state = "/obj/item/modular_computer/pda/medical/paramedic"
greyscale_config = /datum/greyscale_config/tablet/stripe_double
greyscale_colors = "#28334D#000099#3F96CC"
starting_programs = list(
@@ -207,11 +223,13 @@
/obj/item/modular_computer/pda/chemist
name = "chemist PDA"
+ icon_state = "/obj/item/modular_computer/pda/chemist"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#355FAC#EA6400"
/obj/item/modular_computer/pda/coroner
name = "coroner PDA"
+ icon_state = "/obj/item/modular_computer/pda/coroner"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#FAFAFA#000099#1f2026"
starting_programs = list(
@@ -224,6 +242,7 @@
/obj/item/modular_computer/pda/cargo
name = "cargo technician PDA"
+ icon_state = "/obj/item/modular_computer/pda/cargo"
greyscale_colors = "#8b4c31#2c2e32"
stored_paper = 20
starting_programs = list(
@@ -235,6 +254,7 @@
/obj/item/modular_computer/pda/shaftminer
name = "shaft miner PDA"
+ icon_state = "/obj/item/modular_computer/pda/shaftminer"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#927444#8b4c31#4c202d"
starting_programs = list(
@@ -243,6 +263,7 @@
/obj/item/modular_computer/pda/bitrunner
name = "bit runner PDA"
+ icon_state = "/obj/item/modular_computer/pda/bitrunner"
greyscale_colors = "#D6B328#6BC906"
starting_programs = list(
/datum/computer_file/program/arcade,
@@ -255,6 +276,7 @@
/obj/item/modular_computer/pda/janitor
name = "janitor PDA"
+ icon_state = "/obj/item/modular_computer/pda/janitor"
greyscale_colors = "#933ea8#235AB2"
starting_programs = list(
/datum/computer_file/program/skill_tracker,
@@ -263,6 +285,7 @@
/obj/item/modular_computer/pda/chaplain
name = "chaplain PDA"
+ icon_state = "/obj/item/modular_computer/pda/chaplain"
greyscale_config = /datum/greyscale_config/tablet/chaplain
greyscale_colors = "#333333#D11818"
@@ -281,22 +304,27 @@
/obj/item/modular_computer/pda/botanist
name = "botanist PDA"
+ icon_state = "/obj/item/modular_computer/pda/botanist"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#50E193#E26F41#71A7CA"
/obj/item/modular_computer/pda/cook
name = "cook PDA"
+ icon_state = "/obj/item/modular_computer/pda/botanist"
greyscale_colors = "#FAFAFA#A92323"
/obj/item/modular_computer/pda/bar
name = "bartender PDA"
+ icon_state = "/obj/item/modular_computer/pda/bar"
greyscale_colors = "#333333#C7C7C7"
inserted_item = /obj/item/pen/fountain
/obj/item/modular_computer/pda/clown
name = "clown PDA"
- inserted_disk = /obj/item/computer_disk/virus/clown
+ icon = 'icons/obj/devices/modular_pda.dmi'
icon_state = "pda-clown"
+ post_init_icon_state = null
+ inserted_disk = /obj/item/computer_disk/virus/clown
greyscale_config = null
greyscale_colors = null
inserted_item = /obj/item/toy/crayon/rainbow
@@ -339,6 +367,7 @@
/obj/item/modular_computer/pda/mime
name = "mime PDA"
inserted_disk = /obj/item/computer_disk/virus/mime
+ icon_state = "/obj/item/modular_computer/pda/mime"
greyscale_config = /datum/greyscale_config/tablet/mime
greyscale_colors = "#FAFAFA#EA3232"
inserted_item = /obj/item/toy/crayon/mime
@@ -355,9 +384,11 @@
/obj/item/modular_computer/pda/curator
name = "curator PDA"
desc = "A small experimental microcomputer."
+ icon = 'icons/obj/devices/modular_pda.dmi'
+ icon_state = "pda-library"
+ post_init_icon_state = null
greyscale_config = null
greyscale_colors = null
- icon_state = "pda-library"
inserted_item = /obj/item/pen/fountain
long_ranged = TRUE
starting_programs = list(
@@ -372,6 +403,7 @@
/obj/item/modular_computer/pda/psychologist
name = "psychologist PDA"
+ icon_state = "/obj/item/modular_computer/pda/psychologist"
greyscale_config = /datum/greyscale_config/tablet/stripe_thick
greyscale_colors = "#333333#000099#3F96CC"
starting_programs = list(
@@ -384,6 +416,7 @@
*/
/obj/item/modular_computer/pda/assistant
name = "assistant PDA"
+ flags_1 = parent_type::flags_1 | NO_NEW_GAGS_PREVIEW_1
starting_programs = list(
/datum/computer_file/program/bounty_board,
)
@@ -407,7 +440,9 @@
/obj/item/modular_computer/pda/human_ai
name = "modular interface"
+ icon = 'icons/obj/devices/modular_pda.dmi'
icon_state = "pda-silicon-human"
+ post_init_icon_state = null
base_icon_state = "pda-silicon-human"
greyscale_config = null
greyscale_colors = null
@@ -451,7 +486,9 @@
/obj/item/modular_computer/pda/clear
name = "clear PDA"
+ icon = 'icons/obj/devices/modular_pda.dmi'
icon_state = "pda-clear"
+ post_init_icon_state = null
greyscale_config = null
greyscale_colors = null
long_ranged = TRUE
diff --git a/code/modules/religion/sparring/ceremonial_gear.dm b/code/modules/religion/sparring/ceremonial_gear.dm
index 727c8dd8edb..612b97f8042 100644
--- a/code/modules/religion/sparring/ceremonial_gear.dm
+++ b/code/modules/religion/sparring/ceremonial_gear.dm
@@ -2,9 +2,10 @@
/obj/item/ceremonial_blade
name = "ceremonial blade"
desc = "A blade created to spar with. It seems weak, but if you spar with it...?"
- icon_state = "default"
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/ceremonial_blade"
+ post_init_icon_state = "default"
inhand_icon_state = "default"
- icon = 'icons/obj/weapons/ritual_weapon.dmi'
icon_angle = -45
//does the exact thing we want so heck why not
diff --git a/code/modules/transport/tram/tram_structures.dm b/code/modules/transport/tram/tram_structures.dm
index a9ba78d9898..a73e478cc2e 100644
--- a/code/modules/transport/tram/tram_structures.dm
+++ b/code/modules/transport/tram/tram_structures.dm
@@ -608,22 +608,27 @@
/obj/structure/chair/sofa/bench/tram
name = "bench"
desc = "Perfectly designed to be comfortable to sit on, and hellish to sleep on."
- icon_state = "bench_middle"
+ icon_state = "/obj/structure/chair/sofa/bench/tram"
+ post_init_icon_state = "bench_middle"
greyscale_config = /datum/greyscale_config/bench_middle
greyscale_colors = COLOR_TRAM_BLUE
/obj/structure/chair/sofa/bench/tram/left
- icon_state = "bench_left"
+ icon_state = "/obj/structure/chair/sofa/bench/tram/left"
+ post_init_icon_state = "bench_left"
greyscale_config = /datum/greyscale_config/bench_left
/obj/structure/chair/sofa/bench/tram/right
- icon_state = "bench_right"
+ icon_state = "/obj/structure/chair/sofa/bench/tram/right"
+ post_init_icon_state = "bench_right"
greyscale_config = /datum/greyscale_config/bench_right
/obj/structure/chair/sofa/bench/tram/corner
- icon_state = "bench_corner"
+ icon_state = "/obj/structure/chair/sofa/bench/tram/corner"
+ post_init_icon_state = "bench_corner"
greyscale_config = /datum/greyscale_config/bench_corner
/obj/structure/chair/sofa/bench/tram/solo
- icon_state = "bench_solo"
+ icon_state = "/obj/structure/chair/sofa/bench/tram/solo"
+ post_init_icon_state = "bench_solo"
greyscale_config = /datum/greyscale_config/bench_solo
diff --git a/code/modules/unit_tests/drink_icons.dm b/code/modules/unit_tests/drink_icons.dm
index efa1e39f9d1..87d8c304955 100644
--- a/code/modules/unit_tests/drink_icons.dm
+++ b/code/modules/unit_tests/drink_icons.dm
@@ -63,8 +63,15 @@
/datum/unit_test/drink_icons/Run()
for(var/obj/item/reagent_containers/cup/glass/glass_subtypes as anything in subtypesof(/obj/item/reagent_containers/cup))
- var/glass_icon = initial(glass_subtypes.icon)
- var/glass_icon_state = initial(glass_subtypes.icon_state)
+ var/glass_icon
+ var/glass_icon_state
+ if(glass_subtypes::greyscale_config)
+ var/datum/greyscale_config/greyscale_config = glass_subtypes::greyscale_config
+ glass_icon = greyscale_config::icon_file
+ glass_icon_state = glass_subtypes::post_init_icon_state
+ else
+ glass_icon = glass_subtypes::icon
+ glass_icon_state = glass_subtypes::icon_state
if(!glass_icon_state)
continue
if(!glass_icon)
diff --git a/code/modules/unit_tests/greyscale_config.dm b/code/modules/unit_tests/greyscale_config.dm
index 9c0484eff7d..edd6df20c5a 100644
--- a/code/modules/unit_tests/greyscale_config.dm
+++ b/code/modules/unit_tests/greyscale_config.dm
@@ -5,7 +5,7 @@
for(var/obj/item/item_path as anything in subtypesof(/obj/item))
if(isnull(initial(item_path.greyscale_colors)))
continue //All configs depend on greyscale_colors being defined.
- var/held_icon_state = initial(item_path.inhand_icon_state) || initial(item_path.icon_state)
+ var/held_icon_state = initial(item_path.inhand_icon_state) || initial(item_path.post_init_icon_state)
var/datum/greyscale_config/lefthand = SSgreyscale.configurations["[initial(item_path.greyscale_config_inhand_left)]"]
if(lefthand && !lefthand.icon_states[held_icon_state])
@@ -16,7 +16,7 @@
TEST_FAIL("[righthand.DebugName()] is missing a sprite for the held righthand for [item_path]. Expected icon state: '[held_icon_state]'")
var/datum/greyscale_config/worn = SSgreyscale.configurations["[initial(item_path.greyscale_config_worn)]"]
- var/worn_icon_state = initial(item_path.worn_icon_state) || initial(item_path.icon_state)
+ var/worn_icon_state = initial(item_path.worn_icon_state) || initial(item_path.post_init_icon_state)
if(worn && !worn.icon_states[worn_icon_state])
TEST_FAIL("[worn.DebugName()] is missing a sprite for the worn overlay for [item_path]. Expected icon state: '[worn_icon_state]'")
diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicateinfiltrator.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicateinfiltrator.png
index 4c9212509d2..e35ea7f091c 100644
Binary files a/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicateinfiltrator.png and b/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicateinfiltrator.png differ
diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicatesleeperagent.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicatesleeperagent.png
index 4c9212509d2..e35ea7f091c 100644
Binary files a/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicatesleeperagent.png and b/code/modules/unit_tests/screenshots/screenshot_antag_icons_syndicatesleeperagent.png differ
diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_traitor.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_traitor.png
index 4c9212509d2..e35ea7f091c 100644
Binary files a/code/modules/unit_tests/screenshots/screenshot_antag_icons_traitor.png and b/code/modules/unit_tests/screenshots/screenshot_antag_icons_traitor.png differ
diff --git a/code/modules/unit_tests/worn_icons.dm b/code/modules/unit_tests/worn_icons.dm
index 5b308d9a4ff..38acff5efd9 100644
--- a/code/modules/unit_tests/worn_icons.dm
+++ b/code/modules/unit_tests/worn_icons.dm
@@ -48,6 +48,8 @@
match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'")
if(worn_icon) //easiest to check since we override everything. this automatically includes downstream support.
+ if(isnull(worn_icon_state)) // no worn sprite for this item.
+ continue
if(!(icon_state in icon_states(worn_icon, 1)))
TEST_FAIL("[item_path] using invalid [worn_icon_state ? "worn_icon_state" : "icon_state"], \"[icon_state]\" in worn_icon override file, '[worn_icon]'[match_message]")
continue
diff --git a/code/modules/vehicles/pimpin_ride.dm b/code/modules/vehicles/pimpin_ride.dm
index 16ff261b1c3..88582410dcd 100644
--- a/code/modules/vehicles/pimpin_ride.dm
+++ b/code/modules/vehicles/pimpin_ride.dm
@@ -192,6 +192,9 @@
/obj/item/janicart_upgrade/buffer
name = "floor buffer upgrade"
desc = "An upgrade for mobile janicarts which adds a floor buffer functionality."
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/janicart_upgrade/buffer"
+ post_init_icon_state = "janicart_upgrade"
greyscale_colors = "#ffffff#6aa3ff#a2a2a2#d1d15f"
/obj/item/janicart_upgrade/buffer/install(obj/vehicle/ridden/janicart/installee)
@@ -203,6 +206,9 @@
/obj/item/janicart_upgrade/vacuum
name = "vacuum upgrade"
desc = "An upgrade for mobile janicarts which adds a vacuum functionality."
+ icon = 'icons/map_icons/items/_item.dmi'
+ icon_state = "/obj/item/janicart_upgrade/vacuum"
+ post_init_icon_state = "janicart_upgrade"
greyscale_colors = "#ffffff#ffea6a#a2a2a2#d1d15f"
/obj/item/janicart_upgrade/vacuum/install(obj/vehicle/ridden/janicart/installee)
diff --git a/config/config.txt b/config/config.txt
index eb4f5bc8dec..80460f18dce 100644
--- a/config/config.txt
+++ b/config/config.txt
@@ -645,3 +645,7 @@ TGUI_MAX_CHUNK_COUNT 32
## Uncomment and replace with the URL where users can verify their byond accounts
#FORUM_LINK_URI
+
+## While this is uncommented, server initialization will include some asset generation usually useful for development.
+## It increases initialization time significantly so you'll want to disable this in live environments.
+GENERATE_ASSETS_IN_INIT
diff --git a/icons/map_icons/clothing/_clothing.dmi b/icons/map_icons/clothing/_clothing.dmi
new file mode 100644
index 00000000000..6c781a70ad1
Binary files /dev/null and b/icons/map_icons/clothing/_clothing.dmi differ
diff --git a/icons/map_icons/clothing/accessory.dmi b/icons/map_icons/clothing/accessory.dmi
new file mode 100644
index 00000000000..1f048116d9a
Binary files /dev/null and b/icons/map_icons/clothing/accessory.dmi differ
diff --git a/icons/map_icons/clothing/head/_head.dmi b/icons/map_icons/clothing/head/_head.dmi
new file mode 100644
index 00000000000..7de809ebd80
Binary files /dev/null and b/icons/map_icons/clothing/head/_head.dmi differ
diff --git a/icons/map_icons/clothing/head/beret.dmi b/icons/map_icons/clothing/head/beret.dmi
new file mode 100644
index 00000000000..9fb1cf8fa9e
Binary files /dev/null and b/icons/map_icons/clothing/head/beret.dmi differ
diff --git a/icons/map_icons/clothing/mask.dmi b/icons/map_icons/clothing/mask.dmi
new file mode 100644
index 00000000000..17965d2a7e6
Binary files /dev/null and b/icons/map_icons/clothing/mask.dmi differ
diff --git a/icons/map_icons/clothing/neck.dmi b/icons/map_icons/clothing/neck.dmi
new file mode 100644
index 00000000000..10a1bd2ddfe
Binary files /dev/null and b/icons/map_icons/clothing/neck.dmi differ
diff --git a/icons/map_icons/clothing/shoes.dmi b/icons/map_icons/clothing/shoes.dmi
new file mode 100644
index 00000000000..b73fd466d3f
Binary files /dev/null and b/icons/map_icons/clothing/shoes.dmi differ
diff --git a/icons/map_icons/clothing/suit/_suit.dmi b/icons/map_icons/clothing/suit/_suit.dmi
new file mode 100644
index 00000000000..43b0400ab55
Binary files /dev/null and b/icons/map_icons/clothing/suit/_suit.dmi differ
diff --git a/icons/map_icons/clothing/suit/costume.dmi b/icons/map_icons/clothing/suit/costume.dmi
new file mode 100644
index 00000000000..7dbba8d3e16
Binary files /dev/null and b/icons/map_icons/clothing/suit/costume.dmi differ
diff --git a/icons/map_icons/clothing/under/_under.dmi b/icons/map_icons/clothing/under/_under.dmi
new file mode 100644
index 00000000000..107bde6feda
Binary files /dev/null and b/icons/map_icons/clothing/under/_under.dmi differ
diff --git a/icons/map_icons/clothing/under/color.dmi b/icons/map_icons/clothing/under/color.dmi
new file mode 100644
index 00000000000..c091de182d6
Binary files /dev/null and b/icons/map_icons/clothing/under/color.dmi differ
diff --git a/icons/map_icons/clothing/under/costume.dmi b/icons/map_icons/clothing/under/costume.dmi
new file mode 100644
index 00000000000..4cc1261c71d
Binary files /dev/null and b/icons/map_icons/clothing/under/costume.dmi differ
diff --git a/icons/map_icons/clothing/under/dress.dmi b/icons/map_icons/clothing/under/dress.dmi
new file mode 100644
index 00000000000..6e6a9883a12
Binary files /dev/null and b/icons/map_icons/clothing/under/dress.dmi differ
diff --git a/icons/map_icons/items/_item.dmi b/icons/map_icons/items/_item.dmi
new file mode 100644
index 00000000000..000aa654750
Binary files /dev/null and b/icons/map_icons/items/_item.dmi differ
diff --git a/icons/map_icons/items/encryptionkey.dmi b/icons/map_icons/items/encryptionkey.dmi
new file mode 100644
index 00000000000..c44fac3a26e
Binary files /dev/null and b/icons/map_icons/items/encryptionkey.dmi differ
diff --git a/icons/map_icons/items/pda.dmi b/icons/map_icons/items/pda.dmi
new file mode 100644
index 00000000000..6ba874d57fb
Binary files /dev/null and b/icons/map_icons/items/pda.dmi differ
diff --git a/icons/map_icons/mobs.dmi b/icons/map_icons/mobs.dmi
new file mode 100644
index 00000000000..6c781a70ad1
Binary files /dev/null and b/icons/map_icons/mobs.dmi differ
diff --git a/icons/map_icons/objects.dmi b/icons/map_icons/objects.dmi
new file mode 100644
index 00000000000..8fc20d26983
Binary files /dev/null and b/icons/map_icons/objects.dmi differ
diff --git a/icons/map_icons/turfs.dmi b/icons/map_icons/turfs.dmi
new file mode 100644
index 00000000000..6c781a70ad1
Binary files /dev/null and b/icons/map_icons/turfs.dmi differ
diff --git a/icons/map_icons/unsorted.dmi b/icons/map_icons/unsorted.dmi
new file mode 100644
index 00000000000..6c781a70ad1
Binary files /dev/null and b/icons/map_icons/unsorted.dmi differ
diff --git a/icons/obj/clothing/modsuit/mod_construction.dmi b/icons/obj/clothing/modsuit/mod_construction.dmi
index b2b5c1f5ceb..054fafdc12e 100644
Binary files a/icons/obj/clothing/modsuit/mod_construction.dmi and b/icons/obj/clothing/modsuit/mod_construction.dmi differ
diff --git a/icons/obj/fluff/previews.dmi b/icons/obj/fluff/previews.dmi
index d2ad34b0054..4e4e380bc3f 100644
Binary files a/icons/obj/fluff/previews.dmi and b/icons/obj/fluff/previews.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 6c53dc34a6f..b597d6999d6 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -673,6 +673,7 @@
#include "code\controllers\subsystem\explosions.dm"
#include "code\controllers\subsystem\fluids.dm"
#include "code\controllers\subsystem\garbage.dm"
+#include "code\controllers\subsystem\greyscale_previews.dm"
#include "code\controllers\subsystem\icon_smooth.dm"
#include "code\controllers\subsystem\init_profiler.dm"
#include "code\controllers\subsystem\input.dm"
diff --git a/tools/UpdatePaths/Scripts/90940_frenchberet.txt b/tools/UpdatePaths/Scripts/90940_frenchberet.txt
new file mode 100644
index 00000000000..f484fa0719b
--- /dev/null
+++ b/tools/UpdatePaths/Scripts/90940_frenchberet.txt
@@ -0,0 +1 @@
+/obj/item/clothing/head/frenchberet : /obj/item/clothing/head/beret/frenchberet{@OLD}
\ No newline at end of file