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