diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm index f8ab474c359..658c1acd35e 100644 --- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm +++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_clothes.dm @@ -743,6 +743,46 @@ name = "H.E.C.K. Helmet (Worn)" icon_file = 'icons/mob/clothing/head/helmet.dmi' +/datum/greyscale_config/hoodie_pullover + name = "Pullover Hoodie" + icon_file = 'icons/obj/clothing/suits/wintercoat.dmi' + json_config = 'code/datums/greyscale/json_configs/pullover.json' + +/datum/greyscale_config/hoodie_pullover/worn + name = "Pullover Hoodie (Worn)" + icon_file = 'icons/mob/clothing/suits/wintercoat.dmi' + json_config = 'code/datums/greyscale/json_configs/pullover_worn.json' + +/datum/greyscale_config/hoodie_pullover_hood + name = "Pullover Hood" + icon_file = 'icons/obj/clothing/head/winterhood.dmi' + json_config = 'code/datums/greyscale/json_configs/pullover_hood.json' + +/datum/greyscale_config/hoodie_pullover_hood/worn + name = "Pullover Hood (Worn)" + icon_file = 'icons/mob/clothing/head/winterhood.dmi' + json_config = 'code/datums/greyscale/json_configs/pullover_hood_worn.json' + +/datum/greyscale_config/hoodie_zipup + name = "Zipup Hoodie" + icon_file = 'icons/obj/clothing/suits/wintercoat.dmi' + json_config = 'code/datums/greyscale/json_configs/zipup.json' + +/datum/greyscale_config/hoodie_zipup/worn + name = "Zipup Hoodie (Worn)" + icon_file = 'icons/mob/clothing/suits/wintercoat.dmi' + json_config = 'code/datums/greyscale/json_configs/zipup_worn.json' + +/datum/greyscale_config/hoodie_zipup_hood + name = "Zipup Hood" + icon_file = 'icons/obj/clothing/head/winterhood.dmi' + json_config = 'code/datums/greyscale/json_configs/zipup_hood.json' + +/datum/greyscale_config/hoodie_zipup_hood/worn + name = "Zipup Hood (Worn)" + icon_file = 'icons/mob/clothing/head/winterhood.dmi' + json_config = 'code/datums/greyscale/json_configs/zipup_hood_worn.json' + // // COSTUMES // (It's better these stay paired together) diff --git a/code/datums/greyscale/json_configs/pullover.json b/code/datums/greyscale/json_configs/pullover.json new file mode 100644 index 00000000000..d03672af5c5 --- /dev/null +++ b/code/datums/greyscale/json_configs/pullover.json @@ -0,0 +1,18 @@ +{ + "pullover": [ + { + "type": "icon_state", + "icon_state": "pullover", + "blend_mode": "overlay", + "color_ids": [1] + } + ], + "pullover_t": [ + { + "type": "icon_state", + "icon_state": "pullover_t", + "blend_mode": "overlay", + "color_ids": [1] + } + ] +} diff --git a/code/datums/greyscale/json_configs/pullover_hood.json b/code/datums/greyscale/json_configs/pullover_hood.json new file mode 100644 index 00000000000..8b3b4acd05a --- /dev/null +++ b/code/datums/greyscale/json_configs/pullover_hood.json @@ -0,0 +1,10 @@ +{ + "hood_pullover": [ + { + "type": "icon_state", + "icon_state": "hood_pullover", + "blend_mode": "overlay", + "color_ids": [1] + } + ] +} diff --git a/code/datums/greyscale/json_configs/pullover_hood_worn.json b/code/datums/greyscale/json_configs/pullover_hood_worn.json new file mode 100644 index 00000000000..8b3b4acd05a --- /dev/null +++ b/code/datums/greyscale/json_configs/pullover_hood_worn.json @@ -0,0 +1,10 @@ +{ + "hood_pullover": [ + { + "type": "icon_state", + "icon_state": "hood_pullover", + "blend_mode": "overlay", + "color_ids": [1] + } + ] +} diff --git a/code/datums/greyscale/json_configs/pullover_worn.json b/code/datums/greyscale/json_configs/pullover_worn.json new file mode 100644 index 00000000000..ff404d2538d --- /dev/null +++ b/code/datums/greyscale/json_configs/pullover_worn.json @@ -0,0 +1,24 @@ +{ + "pullover": [ + { + "type": "icon_state", + "icon_state": "pullover", + "blend_mode": "overlay", + "color_ids": [1] + }, + { + "type": "icon_state", + "icon_state": "pullover_hood", + "blend_mode": "overlay", + "color_ids": [1] + } + ], + "pullover_t": [ + { + "type": "icon_state", + "icon_state": "pullover_t", + "blend_mode": "overlay", + "color_ids": [1] + } + ] +} diff --git a/code/datums/greyscale/json_configs/zipup.json b/code/datums/greyscale/json_configs/zipup.json new file mode 100644 index 00000000000..5d847ee13f5 --- /dev/null +++ b/code/datums/greyscale/json_configs/zipup.json @@ -0,0 +1,18 @@ +{ + "zipup": [ + { + "type": "icon_state", + "icon_state": "zipup", + "blend_mode": "overlay", + "color_ids": [1] + } + ], + "zipup_t": [ + { + "type": "icon_state", + "icon_state": "zipup_t", + "blend_mode": "overlay", + "color_ids": [1] + } + ] +} diff --git a/code/datums/greyscale/json_configs/zipup_hood.json b/code/datums/greyscale/json_configs/zipup_hood.json new file mode 100644 index 00000000000..428b41471ae --- /dev/null +++ b/code/datums/greyscale/json_configs/zipup_hood.json @@ -0,0 +1,10 @@ +{ + "hood_zipup": [ + { + "type": "icon_state", + "icon_state": "hood_zipup", + "blend_mode": "overlay", + "color_ids": [1] + } + ] +} diff --git a/code/datums/greyscale/json_configs/zipup_hood_worn.json b/code/datums/greyscale/json_configs/zipup_hood_worn.json new file mode 100644 index 00000000000..6bb6644f999 --- /dev/null +++ b/code/datums/greyscale/json_configs/zipup_hood_worn.json @@ -0,0 +1,18 @@ +{ + "hood_zipup": [ + { + "type": "icon_state", + "icon_state": "hood_zipup", + "blend_mode": "overlay", + "color_ids": [1] + } + ], + "hood_zipup_t": [ + { + "type": "icon_state", + "icon_state": "hood_zipup_t", + "blend_mode": "overlay", + "color_ids": [1] + } + ] +} diff --git a/code/datums/greyscale/json_configs/zipup_worn.json b/code/datums/greyscale/json_configs/zipup_worn.json new file mode 100644 index 00000000000..cdcf0e2e986 --- /dev/null +++ b/code/datums/greyscale/json_configs/zipup_worn.json @@ -0,0 +1,34 @@ +{ + "zipup": [ + { + "type": "icon_state", + "icon_state": "zipup", + "blend_mode": "overlay", + "color_ids": [1] + } + ], + "zipup_t": [ + { + "type": "icon_state", + "icon_state": "zipup_t", + "blend_mode": "overlay", + "color_ids": [1] + } + ], + "zipup_hood": [ + { + "type": "icon_state", + "icon_state": "zipup_hood", + "blend_mode": "overlay", + "color_ids": [1] + } + ], + "zipup_hood_t": [ + { + "type": "icon_state", + "icon_state": "zipup_hood_t", + "blend_mode": "overlay", + "color_ids": [1] + } + ] +} diff --git a/code/datums/sprite_accessories.dm b/code/datums/sprite_accessories.dm index 02ef3786598..96c300d0eb6 100644 --- a/code/datums/sprite_accessories.dm +++ b/code/datums/sprite_accessories.dm @@ -75,6 +75,10 @@ icon_state = "hide_winterhood" strict_coverage_zones = HAIR_APPENDAGE_TOP | HAIR_APPENDAGE_LEFT | HAIR_APPENDAGE_RIGHT | HAIR_APPENDAGE_REAR | HAIR_APPENDAGE_HANGING_REAR +/datum/hair_mask/hoodie + icon_state = "hide_hoodie" + strict_coverage_zones = HAIR_APPENDAGE_TOP | HAIR_APPENDAGE_LEFT | HAIR_APPENDAGE_RIGHT | HAIR_APPENDAGE_REAR | HAIR_APPENDAGE_HANGING_REAR + ////////////////////// // Hair Definitions // ////////////////////// diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm index 7a9640f5900..84121104e93 100644 --- a/code/modules/clothing/suits/wintercoats.dm +++ b/code/modules/clothing/suits/wintercoats.dm @@ -14,6 +14,8 @@ hood_down_overlay_suffix = "_hood" /// How snug are we? var/zipped = FALSE + /// Whether alt-clicking this coat zips/unzips it + var/can_altclick_zip = TRUE /datum/armor/hooded_wintercoat bio = 10 @@ -43,11 +45,13 @@ /obj/item/clothing/suit/hooded/wintercoat/examine(mob/user) . = ..() - - . += span_notice("Alt-click to [zipped ? "un" : ""]zip.") + if(can_altclick_zip) + . += span_notice("Alt-click to [zipped ? "un" : ""]zip.") /obj/item/clothing/suit/hooded/wintercoat/click_alt(mob/user) + if(!can_altclick_zip) + return CLICK_ACTION_BLOCKING zipped = !zipped playsound(src, 'sound/items/zip/zip_up.ogg', 30, TRUE, -3) worn_icon_state = "[initial(post_init_icon_state) || initial(icon_state)][zipped ? "_t" : ""]" @@ -694,3 +698,96 @@ desc = "A heavy jacket hood made from 'synthetic' animal furs, with custom colors." greyscale_config = /datum/greyscale_config/winter_hoods greyscale_config_worn = /datum/greyscale_config/winter_hoods/worn + flags_1 = NO_NEW_GAGS_PREVIEW_1 + +/obj/item/clothing/suit/hooded/wintercoat/pullover + name = "pullover" + desc = "A colorable pullover hoodie." + icon = 'icons/map_icons/clothing/suit/_suit.dmi' + icon_state = "/obj/item/clothing/suit/hooded/wintercoat/pullover" + post_init_icon_state = "pullover" + greyscale_config = /datum/greyscale_config/hoodie_pullover + greyscale_config_worn = /datum/greyscale_config/hoodie_pullover/worn + greyscale_colors = "#5f5f5f" + hoodtype = /obj/item/clothing/head/hooded/winterhood/pullover + flags_1 = IS_PLAYER_COLORABLE_1 + hood_down_overlay_suffix = "" + hood_up_affix = "_t" + can_altclick_zip = FALSE + +/obj/item/clothing/suit/hooded/wintercoat/pullover/on_hood_up(obj/item/clothing/head/hooded/hood) + return + +/obj/item/clothing/suit/hooded/wintercoat/pullover/on_hood_down(obj/item/clothing/head/hooded/hood) + return + +/obj/item/clothing/head/hooded/winterhood/pullover + name = "pullover hood" + desc = "A colorable pullover hoodie." + icon_state = "hood_pullover" + worn_icon_state = "hood_pullover" + hair_mask = /datum/hair_mask/hoodie + greyscale_config = /datum/greyscale_config/hoodie_pullover_hood + greyscale_config_worn = /datum/greyscale_config/hoodie_pullover_hood/worn + greyscale_colors = "#5f5f5f" + flags_1 = NO_NEW_GAGS_PREVIEW_1 + +/obj/item/clothing/suit/hooded/wintercoat/pullover/set_greyscale(list/colors, new_config, new_worn_config, new_inhand_left, new_inhand_right) + . = ..() + if(!hood) + return + var/list/coat_colors = SSgreyscale.ParseColorString(greyscale_colors) + hood.set_greyscale(coat_colors) + hood.update_slot_icon() + +/obj/item/clothing/suit/hooded/wintercoat/pullover/on_hood_created(obj/item/clothing/head/hooded/hood) + . = ..() + var/list/coat_colors = SSgreyscale.ParseColorString(greyscale_colors) + hood.set_greyscale(coat_colors) + +/obj/item/clothing/suit/hooded/wintercoat/zipup + name = "zipup" + desc = "A colorable zipup hoodie." + icon = 'icons/map_icons/clothing/suit/_suit.dmi' + icon_state = "/obj/item/clothing/suit/hooded/wintercoat/zipup" + post_init_icon_state = "zipup" + greyscale_config = /datum/greyscale_config/hoodie_zipup + greyscale_config_worn = /datum/greyscale_config/hoodie_zipup/worn + greyscale_colors = "#5f5f5f" + hoodtype = /obj/item/clothing/head/hooded/winterhood/zipup + flags_1 = IS_PLAYER_COLORABLE_1 + hood_down_overlay_suffix = "" + hood_up_affix = "_t" + +/obj/item/clothing/suit/hooded/wintercoat/zipup/worn_overlays(mutable_appearance/standing, isinhands, icon_file) + . = ..() + if(isinhands || (hood && hood.loc != src)) + return + + var/suffix = (zipped ? "hood_t" : "hood") + var/state = "[initial(post_init_icon_state) || initial(icon_state)]_[suffix]" + . += mutable_appearance(icon_file, state, -SUIT_LAYER) + +/obj/item/clothing/head/hooded/winterhood/zipup + name = "zipup hood" + desc = "A colorable zipup hoodie." + icon_state = "hood_zipup" + worn_icon_state = "hood_zipup" + hair_mask = /datum/hair_mask/hoodie + greyscale_config = /datum/greyscale_config/hoodie_zipup_hood + greyscale_config_worn = /datum/greyscale_config/hoodie_zipup_hood/worn + greyscale_colors = "#5f5f5f" + flags_1 = NO_NEW_GAGS_PREVIEW_1 + +/obj/item/clothing/suit/hooded/wintercoat/zipup/set_greyscale(list/colors, new_config, new_worn_config, new_inhand_left, new_inhand_right) + . = ..() + if(!hood) + return + var/list/coat_colors = SSgreyscale.ParseColorString(greyscale_colors) + hood.set_greyscale(coat_colors) + hood.update_slot_icon() + +/obj/item/clothing/suit/hooded/wintercoat/zipup/on_hood_created(obj/item/clothing/head/hooded/hood) + . = ..() + var/list/coat_colors = SSgreyscale.ParseColorString(greyscale_colors) + hood.set_greyscale(coat_colors) diff --git a/code/modules/loadout/categories/suits.dm b/code/modules/loadout/categories/suits.dm index 0637671de37..c830aff2a12 100644 --- a/code/modules/loadout/categories/suits.dm +++ b/code/modules/loadout/categories/suits.dm @@ -40,3 +40,11 @@ /datum/job/paramedic = "#28324b", /datum/job/prisoner = "#ff8b00", ) + +/datum/loadout_item/suit/hoodie_pullover + name = "pullover" + item_path = /obj/item/clothing/suit/hooded/wintercoat/pullover + +/datum/loadout_item/suit/hoodie_zipup + name = "zipup" + item_path = /obj/item/clothing/suit/hooded/wintercoat/zipup diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index f5669329cfd..18a673a61c2 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -102,6 +102,8 @@ /obj/item/clothing/suit/jacket/oversized = 4, /obj/item/clothing/suit/jacket/fancy = 4, /obj/item/clothing/suit/toggle/lawyer/greyscale = 4, + /obj/item/clothing/suit/hooded/wintercoat/pullover = 3, + /obj/item/clothing/suit/hooded/wintercoat/zipup = 3, /obj/item/clothing/suit/hooded/wintercoat/custom = 3, /obj/item/clothing/suit/hooded/wintercoat = 3, /obj/item/clothing/under/suit/navy = 3, diff --git a/icons/map_icons/clothing/suit/_suit.dmi b/icons/map_icons/clothing/suit/_suit.dmi index 82feabad49e..cdbb28e990c 100644 Binary files a/icons/map_icons/clothing/suit/_suit.dmi and b/icons/map_icons/clothing/suit/_suit.dmi differ diff --git a/icons/mob/clothing/head/winterhood.dmi b/icons/mob/clothing/head/winterhood.dmi index 3b28fe1c0a5..64ab5132c8e 100644 Binary files a/icons/mob/clothing/head/winterhood.dmi and b/icons/mob/clothing/head/winterhood.dmi differ diff --git a/icons/mob/clothing/suits/wintercoat.dmi b/icons/mob/clothing/suits/wintercoat.dmi index ee3e3046d28..8a0a06fe06e 100644 Binary files a/icons/mob/clothing/suits/wintercoat.dmi and b/icons/mob/clothing/suits/wintercoat.dmi differ diff --git a/icons/mob/human/hair_masks.dmi b/icons/mob/human/hair_masks.dmi index dd54ce1e886..703c791cb2b 100644 Binary files a/icons/mob/human/hair_masks.dmi and b/icons/mob/human/hair_masks.dmi differ diff --git a/icons/obj/clothing/head/winterhood.dmi b/icons/obj/clothing/head/winterhood.dmi index 1ad9f6eca01..35e56fd3c0b 100644 Binary files a/icons/obj/clothing/head/winterhood.dmi and b/icons/obj/clothing/head/winterhood.dmi differ diff --git a/icons/obj/clothing/suits/wintercoat.dmi b/icons/obj/clothing/suits/wintercoat.dmi index 3f8e1bc3835..1e53f07dcfd 100644 Binary files a/icons/obj/clothing/suits/wintercoat.dmi and b/icons/obj/clothing/suits/wintercoat.dmi differ