diff --git a/code/datums/greyscale/config_types/greyscale_configs.dm b/code/datums/greyscale/config_types/greyscale_configs.dm index 5b2453ac7fd..c51780467e5 100644 --- a/code/datums/greyscale/config_types/greyscale_configs.dm +++ b/code/datums/greyscale/config_types/greyscale_configs.dm @@ -455,6 +455,25 @@ icon_file = 'icons/mob/clothing/suits/moth.dmi' json_config = 'code/datums/greyscale/json_configs/moth_coat_winter_worn.json' +/datum/greyscale_config/eth_raincoat + name = "Ethereal Raincoat" + icon_file = 'icons/obj/clothing/suits/ethereal.dmi' + json_config = 'code/datums/greyscale/json_configs/eth_raincoat.json' + +/datum/greyscale_config/eth_raincoat_worn + name = "Worn Ethereal Raincoat" + icon_file = 'icons/mob/clothing/suits/ethereal.dmi' + json_config = 'code/datums/greyscale/json_configs/eth_raincoat_worn.json' + +/datum/greyscale_config/eth_tunic + name = "Ethereal Tunic" + icon_file = 'icons/obj/clothing/under/ethereal.dmi' + json_config = 'code/datums/greyscale/json_configs/eth_tunic.json' + +/datum/greyscale_config/eth_tunic_worn + name = "Worn Ethereal Tunic" + icon_file = 'icons/mob/clothing/under/ethereal.dmi' + json_config = 'code/datums/greyscale/json_configs/eth_tunic_worn.json' /datum/greyscale_config/bandana name = "Bandana" diff --git a/code/datums/greyscale/json_configs/eth_raincoat.json b/code/datums/greyscale/json_configs/eth_raincoat.json new file mode 100644 index 00000000000..b57f371b460 --- /dev/null +++ b/code/datums/greyscale/json_configs/eth_raincoat.json @@ -0,0 +1,28 @@ +{ + "eth_raincoat": [ + { + "type": "icon_state", + "icon_state": "eth_raincoat", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "eth_raincoat_glow", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "eth_raincoat_t": [ + { + "type": "icon_state", + "icon_state": "eth_raincoat", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "eth_raincoat_glow", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/greyscale/json_configs/eth_raincoat_worn.json b/code/datums/greyscale/json_configs/eth_raincoat_worn.json new file mode 100644 index 00000000000..7be0a52b5e7 --- /dev/null +++ b/code/datums/greyscale/json_configs/eth_raincoat_worn.json @@ -0,0 +1,28 @@ +{ + "eth_raincoat": [ + { + "type": "icon_state", + "icon_state": "eth_raincoat_worn", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "eth_raincoat_glow_worn", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ], + "eth_raincoat_t": [ + { + "type": "icon_state", + "icon_state": "eth_raincoat_worn_t", + "blend_mode": "overlay" + }, + { + "type": "icon_state", + "icon_state": "eth_raincoat_glow_worn_t", + "blend_mode": "overlay", + "color_ids": [ 1 ] + } + ] +} diff --git a/code/datums/greyscale/json_configs/eth_tunic.json b/code/datums/greyscale/json_configs/eth_tunic.json new file mode 100644 index 00000000000..5ef2f9771d6 --- /dev/null +++ b/code/datums/greyscale/json_configs/eth_tunic.json @@ -0,0 +1,15 @@ +{ + "eth_tunic": [ + { + "type": "icon_state", + "icon_state": "eth_tunic_base", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "eth_tunic_details", + "blend_mode": "overlay" + } + ] +} diff --git a/code/datums/greyscale/json_configs/eth_tunic_worn.json b/code/datums/greyscale/json_configs/eth_tunic_worn.json new file mode 100644 index 00000000000..aaa144f0d6c --- /dev/null +++ b/code/datums/greyscale/json_configs/eth_tunic_worn.json @@ -0,0 +1,15 @@ +{ + "eth_tunic": [ + { + "type": "icon_state", + "icon_state": "eth_tunic_base_worn", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "eth_tunic_details_worn", + "blend_mode": "overlay" + } + ] +} diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index af1cddff783..28f0fba964e 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -210,6 +210,17 @@ name = "emergency response team clown backpack" desc = "A spacious backpack with lots of pockets, worn by Clowns of an Emergency Response Team." icon_state = "ert_clown" + +/obj/item/storage/backpack/saddlepack + name = "saddlepack" + desc = "A backpack designed to be saddled on a mount or carried on your back, and switch between the two on the fly. It's quite spacious, at the cost of making you feel like a literal pack mule." + worn_icon = 'icons/mob/clothing/back/ethereal.dmi' + icon_state = "saddlepack" + +/obj/item/storage/backpack/saddlepack/Initialize(mapload) + . = ..() + atom_storage.max_total_storage = 26 + /* * Satchel Types */ diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index fa2a3c55ad6..c61eea962b5 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -1648,7 +1648,7 @@ /obj/item/storage/box/hero/mothpioneer name = "Mothic Fleet Pioneer - 2100's." - desc = "Some claim that the fleet engineers are directly responsible for most modern advancement in spacefaring design. Although the exact details of their past contributions are somewhat fuzzy, their ingenuity remains unmatched and unquestioned to this day." + desc = "Some claim that the fleet engineers are directly responsible for most modern advancements in spacefaring designs. Although the exact details of their past contributions are somewhat fuzzy, their ingenuity remains unmatched and unquestioned to this day." /obj/item/storage/box/hero/mothpioneer/PopulateContents() new /obj/item/clothing/suit/mothcoat/original(src) @@ -1660,6 +1660,15 @@ new /obj/item/stack/sheet/iron/fifty(src) new /obj/item/stack/sheet/glass/fifty(src) +/obj/item/storage/box/hero/etherealwarden + name = "Ethereal Trailwarden - 2450's." + desc = "Many fantastical stories are told of valiant trail wardens, even by offworlders who, thanks to their guidance, avoided an untimely demise while traveling the sometimes treacherous roads of Sprout. In truth their job entails far more walking and fixing roads than slaying dragons, but it is no less important and well respected: keeping the roads and trails safe and well maintained is for many settlements a matter of survival." + +/obj/item/storage/box/hero/etherealwarden/PopulateContents() + new /obj/item/clothing/suit/hooded/ethereal_raincoat/trailwarden(src) + new /obj/item/clothing/under/ethereal_tunic/trailwarden(src) + new /obj/item/storage/backpack/saddlepack(src) + /obj/item/storage/box/holy/clock name = "Forgotten kit" diff --git a/code/modules/clothing/suits/ethereal.dm b/code/modules/clothing/suits/ethereal.dm new file mode 100644 index 00000000000..aec24976c9b --- /dev/null +++ b/code/modules/clothing/suits/ethereal.dm @@ -0,0 +1,47 @@ +/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" + worn_icon = 'icons/mob/clothing/suits/ethereal.dmi' + greyscale_config = /datum/greyscale_config/eth_raincoat + greyscale_config_worn = /datum/greyscale_config/eth_raincoat_worn + greyscale_colors = "#4e7cc7" + flags_1 = IS_PLAYER_COLORABLE_1 + body_parts_covered = CHEST|GROIN|ARMS + hoodtype = /obj/item/clothing/head/hooded/ethereal_rainhood + +/obj/item/clothing/suit/hooded/ethereal_raincoat/Initialize(mapload) + . = ..() + update_icon(UPDATE_OVERLAYS) + +/obj/item/clothing/suit/hooded/ethereal_raincoat/worn_overlays(mutable_appearance/standing, isinhands, icon_file) + . = ..() + if(!isinhands) + . += emissive_appearance('icons/mob/clothing/suits/ethereal.dmi', "eth_raincoat_glow_worn", alpha = src.alpha) + +/obj/item/clothing/suit/hooded/ethereal_raincoat/update_overlays() + . = ..() + . += emissive_appearance('icons/obj/clothing/suits/ethereal.dmi', "eth_raincoat_glow", alpha = src.alpha) + +/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." + greyscale_colors = "#32a87d" + +/obj/item/clothing/suit/hooded/ethereal_raincoat/trailwarden/equipped(mob/living/user, slot) + . = ..() + if(isethereal(user) && slot == ITEM_SLOT_OCLOTHING) + var/mob/living/carbon/human/ethereal = user + to_chat(ethereal, span_notice("[src] gently quivers for a moment as you put it on.")) + set_greyscale(ethereal.dna.species.fixed_mut_color) + ethereal.update_worn_oversuit() + +/obj/item/clothing/head/hooded/ethereal_rainhood + name = "ethereal rainhood" + desc = "Protects against space rain." + icon = 'icons/obj/clothing/head/ethereal.dmi' + icon_state = "eth_rainhood" + worn_icon = 'icons/mob/clothing/head/ethereal.dmi' + body_parts_covered = HEAD + flags_inv = HIDEHAIR|HIDEEARS|HIDEFACIALHAIR diff --git a/code/modules/clothing/under/ethereal.dm b/code/modules/clothing/under/ethereal.dm new file mode 100644 index 00000000000..c4c43802aa9 --- /dev/null +++ b/code/modules/clothing/under/ethereal.dm @@ -0,0 +1,36 @@ +/obj/item/clothing/under/ethereal_tunic + name = "ethereal tunic" + desc = "A simple sleeveless tunic worn over an undersuit, it glows in the dark!" + icon = 'icons/obj/clothing/under/ethereal.dmi' + icon_state = "eth_tunic" + worn_icon = 'icons/mob/clothing/under/ethereal.dmi' + greyscale_colors = "#4e7cc7" + greyscale_config = /datum/greyscale_config/eth_tunic + greyscale_config_worn = /datum/greyscale_config/eth_tunic_worn + flags_1 = IS_PLAYER_COLORABLE_1 + +/obj/item/clothing/under/ethereal_tunic/Initialize(mapload) + . = ..() + update_icon(UPDATE_OVERLAYS) + +/obj/item/clothing/under/ethereal_tunic/worn_overlays(mutable_appearance/standing, isinhands, icon_file) + . = ..() + if(!isinhands) + . += emissive_appearance('icons/mob/clothing/under/ethereal.dmi', "eth_tunic_emissive_worn", alpha = src.alpha) + +/obj/item/clothing/under/ethereal_tunic/update_overlays() + . = ..() + . += emissive_appearance('icons/obj/clothing/under/ethereal.dmi', "eth_tunic_emissive", alpha = src.alpha) + +/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." + greyscale_colors = "#32a87d" + +/obj/item/clothing/under/ethereal_tunic/trailwarden/equipped(mob/living/user, slot) + . = ..() + if(isethereal(user) && slot == ITEM_SLOT_ICLOTHING) + var/mob/living/carbon/human/ethereal = user + to_chat(ethereal, span_notice("[src] gently quivers for a moment as you put it on.")) + set_greyscale(ethereal.dna.species.fixed_mut_color) + ethereal.update_worn_undersuit() diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 39f325d55ab..3ee20652c5c 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -135,6 +135,9 @@ /obj/item/clothing/suit/mothcoat/winter = 3, /obj/item/clothing/head/mothcap = 3, + /obj/item/clothing/suit/hooded/ethereal_raincoat = 3, + /obj/item/clothing/under/ethereal_tunic = 3, + /obj/item/clothing/suit/costume/ianshirt = 1, /obj/item/clothing/head/irs = 20, /obj/item/clothing/head/tmc = 20, diff --git a/icons/mob/clothing/back/ethereal.dmi b/icons/mob/clothing/back/ethereal.dmi new file mode 100644 index 00000000000..10e5882673b Binary files /dev/null and b/icons/mob/clothing/back/ethereal.dmi differ diff --git a/icons/mob/clothing/head/ethereal.dmi b/icons/mob/clothing/head/ethereal.dmi new file mode 100644 index 00000000000..2d8352a8dcc Binary files /dev/null and b/icons/mob/clothing/head/ethereal.dmi differ diff --git a/icons/mob/clothing/suits/ethereal.dmi b/icons/mob/clothing/suits/ethereal.dmi new file mode 100644 index 00000000000..d8cd79ec9f6 Binary files /dev/null and b/icons/mob/clothing/suits/ethereal.dmi differ diff --git a/icons/mob/clothing/under/ethereal.dmi b/icons/mob/clothing/under/ethereal.dmi new file mode 100644 index 00000000000..f9bddd0d651 Binary files /dev/null and b/icons/mob/clothing/under/ethereal.dmi differ diff --git a/icons/obj/clothing/head/ethereal.dmi b/icons/obj/clothing/head/ethereal.dmi new file mode 100644 index 00000000000..67708d80362 Binary files /dev/null and b/icons/obj/clothing/head/ethereal.dmi differ diff --git a/icons/obj/clothing/suits/ethereal.dmi b/icons/obj/clothing/suits/ethereal.dmi new file mode 100644 index 00000000000..25133e37055 Binary files /dev/null and b/icons/obj/clothing/suits/ethereal.dmi differ diff --git a/icons/obj/clothing/under/ethereal.dmi b/icons/obj/clothing/under/ethereal.dmi new file mode 100644 index 00000000000..18d330473a5 Binary files /dev/null and b/icons/obj/clothing/under/ethereal.dmi differ diff --git a/icons/obj/storage/storage.dmi b/icons/obj/storage/storage.dmi index bd8c180d2d4..34a3e41d7f5 100644 Binary files a/icons/obj/storage/storage.dmi and b/icons/obj/storage/storage.dmi differ diff --git a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm index 18bdd5f7c4d..70a593c5c86 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm @@ -149,6 +149,10 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su name = "Leather Coat" item_path = /obj/item/clothing/suit/jacket/leather/overcoat +/datum/loadout_item/suit/ethereal_raincoat + name = "Ethereal Raincoat" + item_path = /obj/item/clothing/suit/hooded/ethereal_raincoat + /* * LETTERMAN */ diff --git a/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm b/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm index e4e39ee62de..b024a64b0ad 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm @@ -613,6 +613,10 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/ name = "Leaf" item_path = /obj/item/clothing/under/misc/gear_harness/adam +/datum/loadout_item/under/miscellaneous/ethereal_tunic + name = "Ethereal Tunic" + item_path = /obj/item/clothing/under/ethereal_tunic + /* * FORMAL UNDERSUITS diff --git a/tgstation.dme b/tgstation.dme index 1fc85e77ea8..0344c9f59d0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2853,6 +2853,7 @@ #include "code\modules\clothing\suits\chaplainsuits.dm" #include "code\modules\clothing\suits\cloaks.dm" #include "code\modules\clothing\suits\costume.dm" +#include "code\modules\clothing\suits\ethereal.dm" #include "code\modules\clothing\suits\ghostsheet.dm" #include "code\modules\clothing\suits\jacket.dm" #include "code\modules\clothing\suits\jobs.dm" @@ -2871,6 +2872,7 @@ #include "code\modules\clothing\under\accessories.dm" #include "code\modules\clothing\under\color.dm" #include "code\modules\clothing\under\costume.dm" +#include "code\modules\clothing\under\ethereal.dm" #include "code\modules\clothing\under\miscellaneous.dm" #include "code\modules\clothing\under\pants.dm" #include "code\modules\clothing\under\shorts.dm"