From 004bb806d3b717e8ef6a416e82f84036445ae719 Mon Sep 17 00:00:00 2001 From: Kaostico Date: Mon, 23 Sep 2024 15:42:35 -0300 Subject: [PATCH] Added multiple needed clothes for Hearthkin and fixed some things --- code/__DEFINES/mobs.dm | 4 + .../advanced_reskin/code/advanced_reskin.dm | 7 - .../code/clothing_vendor.dm | 27 ++-- .../loadout_categories/categories/glasses.dm | 8 ++ .../loadout_categories/categories/heads.dm | 8 ++ .../loadout_categories/categories/masks.dm | 4 + .../GAGS/greyscale_configs_face.dm | 22 +++ .../GAGS/greyscale_configs_head.dm | 22 +++ .../GAGS/greyscale_configs_neck.dm | 14 ++ .../GAGS/greyscale_configs_suit.dm | 12 ++ .../modular_cosmetics/GAGS/icons/mob/face.dmi | Bin 0 -> 435 bytes .../modular_cosmetics/GAGS/icons/mob/head.dmi | Bin 2013 -> 1062 bytes .../modular_cosmetics/GAGS/icons/mob/neck.dmi | Bin 6990 -> 8206 bytes .../modular_cosmetics/GAGS/icons/mob/suit.dmi | Bin 0 -> 385 bytes .../modular_cosmetics/GAGS/icons/obj/face.dmi | Bin 0 -> 362 bytes .../modular_cosmetics/GAGS/icons/obj/head.dmi | Bin 2302 -> 1204 bytes .../modular_cosmetics/GAGS/icons/obj/neck.dmi | Bin 1307 -> 1373 bytes .../modular_cosmetics/GAGS/icons/obj/suit.dmi | Bin 0 -> 277 bytes .../GAGS/json_configs/face/gaiter.json | 18 +++ .../GAGS/json_configs/face/gaiter_worn.json | 18 +++ .../GAGS/json_configs/head/hood.json | 16 +++ .../GAGS/json_configs/head/hood_worn.json | 16 +++ .../GAGS/json_configs/neck/mantle.json | 10 ++ .../GAGS/json_configs/neck/mantle_worn.json | 10 ++ .../GAGS/json_configs/suit/apron.json | 10 ++ .../GAGS/json_configs/suit/apron_worn.json | 10 ++ .../modular_cosmetics/code/face/glasses.dm | 24 ++++ .../modular_cosmetics/code/face/masks.dm | 41 ++++++ .../modular_cosmetics/code/head/hair_tie.dm | 133 ++++++++++++++++++ .../modular_cosmetics/code/head/head.dm | 26 ++++ .../modular_cosmetics/code/neck/neck.dm | 11 ++ .../modular_cosmetics/code/suits/misc.dm | 12 ++ .../icons/mob/face/glasses.dmi | Bin 0 -> 482 bytes .../icons/mob/head/costume.dmi | Bin 0 -> 484 bytes .../icons/mob/head/hair_ties.dmi | Bin 0 -> 230 bytes .../icons/obj/face/glasses.dmi | Bin 0 -> 1676 bytes .../icons/obj/head/costume.dmi | Bin 0 -> 380 bytes .../icons/obj/head/hair_ties.dmi | Bin 0 -> 520 bytes .../modular_crafting/code/sheet_types.dm | 2 + .../primitive_demihuman.dm | 4 +- tgstation.dme | 7 + tgui/packages/tgui-say/styles/colors.scss | 4 +- 42 files changed, 473 insertions(+), 27 deletions(-) create mode 100644 modular_doppler/modular_cosmetics/GAGS/greyscale_configs_face.dm create mode 100644 modular_doppler/modular_cosmetics/GAGS/greyscale_configs_head.dm create mode 100644 modular_doppler/modular_cosmetics/GAGS/icons/mob/face.dmi create mode 100644 modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi create mode 100644 modular_doppler/modular_cosmetics/GAGS/icons/obj/face.dmi create mode 100644 modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi create mode 100644 modular_doppler/modular_cosmetics/GAGS/json_configs/face/gaiter.json create mode 100644 modular_doppler/modular_cosmetics/GAGS/json_configs/face/gaiter_worn.json create mode 100644 modular_doppler/modular_cosmetics/GAGS/json_configs/head/hood.json create mode 100644 modular_doppler/modular_cosmetics/GAGS/json_configs/head/hood_worn.json create mode 100644 modular_doppler/modular_cosmetics/GAGS/json_configs/neck/mantle.json create mode 100644 modular_doppler/modular_cosmetics/GAGS/json_configs/neck/mantle_worn.json create mode 100644 modular_doppler/modular_cosmetics/GAGS/json_configs/suit/apron.json create mode 100644 modular_doppler/modular_cosmetics/GAGS/json_configs/suit/apron_worn.json create mode 100644 modular_doppler/modular_cosmetics/code/face/glasses.dm create mode 100644 modular_doppler/modular_cosmetics/code/face/masks.dm create mode 100644 modular_doppler/modular_cosmetics/code/head/hair_tie.dm create mode 100644 modular_doppler/modular_cosmetics/code/head/head.dm create mode 100644 modular_doppler/modular_cosmetics/code/suits/misc.dm create mode 100644 modular_doppler/modular_cosmetics/icons/mob/face/glasses.dmi create mode 100644 modular_doppler/modular_cosmetics/icons/mob/head/costume.dmi create mode 100644 modular_doppler/modular_cosmetics/icons/mob/head/hair_ties.dmi create mode 100644 modular_doppler/modular_cosmetics/icons/obj/face/glasses.dmi create mode 100644 modular_doppler/modular_cosmetics/icons/obj/head/costume.dmi create mode 100644 modular_doppler/modular_cosmetics/icons/obj/head/hair_ties.dmi diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 3a4e34463a27e..247a7a964c183 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -710,6 +710,10 @@ GLOBAL_LIST_INIT(human_heights_to_offsets, list( #define FRONT_MUTATIONS_LAYER 29 /// Damage indicators (cuts and burns) #define DAMAGE_LAYER 28 +/// DOPPLER SHIFT ADDITION BEGIN +/// Just below clothing layer +#define UNDER_UNIFORM_LAYER 27.5 +/// DOPPLER SHIFT ADDITION END /// Jumpsuit clothing layer #define UNIFORM_LAYER 27 /// DOPPLER SHIFT ADDITION BEGIN diff --git a/modular_doppler/advanced_reskin/code/advanced_reskin.dm b/modular_doppler/advanced_reskin/code/advanced_reskin.dm index 6b461839c85f6..7eba3fad8331d 100644 --- a/modular_doppler/advanced_reskin/code/advanced_reskin.dm +++ b/modular_doppler/advanced_reskin/code/advanced_reskin.dm @@ -10,13 +10,6 @@ /// Is the obj a glasses icon with swappable item states? var/is_swappable = FALSE - // /// if the item are glasses, this variable stores the item. - // var/obj/item/clothing/glasses/reskinned_glasses - - // if(istype(src, /obj/item/clothing/glasses)) // TODO - Remove this mess about glasses, it shouldn't be necessary anymore. - // reskinned_glasses = src - // if(reskinned_glasses.can_switch_eye) - // is_swappable = TRUE var/list/items = list() diff --git a/modular_doppler/hearthkin/primitive_catgirls/code/clothing_vendor.dm b/modular_doppler/hearthkin/primitive_catgirls/code/clothing_vendor.dm index 9ac3a81dfed89..483c77acc9bad 100644 --- a/modular_doppler/hearthkin/primitive_catgirls/code/clothing_vendor.dm +++ b/modular_doppler/hearthkin/primitive_catgirls/code/clothing_vendor.dm @@ -3,11 +3,11 @@ desc = "It's a big wardrobe filled up with all sorts of clothing." icon = 'icons/obj/storage/closet.dmi' icon_state = "cabinet" - use_power = FALSE - shut_up = TRUE vend_reply = null + onstation = FALSE // we don't ever want these to be targetable by the brand intelligence event. + all_products_free = TRUE // we don't want them to charge anything either. it's a wardrobe. products = list( /obj/item/clothing/under/dress/skirt/primitive_catgirl_body_wraps = 15, @@ -19,19 +19,19 @@ /obj/item/clothing/gloves/fingerless/primitive_catgirl_armwraps = 15, /obj/item/clothing/shoes/winterboots/ice_boots/primitive_catgirl_boots = 15, /obj/item/clothing/gloves/fingerless/primitive_catgirl_gauntlets = 10, - // /obj/item/clothing/mask/neck_gaiter/primitive_catgirl_gaiter = 10, - // /obj/item/clothing/suit/apron/chef/colorable_apron/primitive_catgirl_leather = 10, - // /obj/item/clothing/head/standalone_hood/primitive_catgirl_colors = 10, + /obj/item/clothing/mask/neck_gaiter/primitive_catgirl_gaiter = 10, + /obj/item/clothing/suit/apron/chef/colorable_apron/primitive_catgirl_leather = 10, + /obj/item/clothing/head/standalone_hood/primitive_catgirl_colors = 10, /obj/item/clothing/neck/scarf/primitive_catgirl_scarf = 5, - // /obj/item/clothing/neck/face_scarf = 5, + /obj/item/clothing/neck/face_scarf = 5, /obj/item/clothing/neck/large_scarf/primitive_catgirl_off_white = 5, /obj/item/clothing/neck/infinity_scarf/primitive_catgirl_blue = 5, - // /obj/item/clothing/neck/mantle/recolorable/primitive_catgirl_off_white = 5, + /obj/item/clothing/neck/mantle/recolorable/primitive_catgirl_off_white = 5, /obj/item/clothing/neck/ranger_poncho/ = 5, /obj/item/clothing/neck/wide_cape = 5, /obj/item/clothing/neck/robe_cape = 5, /obj/item/clothing/neck/long_cape = 5, - // /obj/item/clothing/glasses/eyepatch/wrap = 5, + /obj/item/clothing/glasses/eyepatch/wrap = 5, /obj/item/clothing/head/primitive_catgirl_ferroniere = 5, /obj/item/clothing/head/pelt/snow_tiger = 5, /obj/item/clothing/head/pelt = 5, @@ -40,15 +40,10 @@ /obj/item/clothing/head/pelt/wolf = 5, /obj/item/clothing/head/pelt/wolf/black = 5, /obj/item/clothing/head/pelt/wolf/white = 5, - // /obj/item/clothing/head/costume/nova/papakha = 5, - // /obj/item/clothing/head/costume/nova/papakha/white = 5, - // /obj/item/clothing/head/hair_tie = 5, + /obj/item/clothing/head/costume/papakha = 5, + /obj/item/clothing/head/costume/papakha/white = 5, + /obj/item/clothing/head/hair_tie = 5, ) -/obj/machinery/vending/primitive_catgirl_clothing_vendor/Initialize(mapload) - . = ..() - - onstation = FALSE - /obj/machinery/vending/primitive_catgirl_clothing_vendor/speak(message) return diff --git a/modular_doppler/loadout_categories/categories/glasses.dm b/modular_doppler/loadout_categories/categories/glasses.dm index c483d0df6c483..ca4fe95fac706 100644 --- a/modular_doppler/loadout_categories/categories/glasses.dm +++ b/modular_doppler/loadout_categories/categories/glasses.dm @@ -5,3 +5,11 @@ /datum/loadout_item/glasses/welding name = "Welding Goggles" item_path = /obj/item/clothing/glasses/welding + +/datum/loadout_item/glasses/white_eyepatch + name = "White Eyepatch" + item_path = /obj/item/clothing/glasses/eyepatch/white + +/datum/loadout_item/glasses/eyewrap + name = "Eyepatch Wrap" + item_path = /obj/item/clothing/glasses/eyepatch/wrap diff --git a/modular_doppler/loadout_categories/categories/heads.dm b/modular_doppler/loadout_categories/categories/heads.dm index 5b082245ad7c1..1e9e548c57d48 100644 --- a/modular_doppler/loadout_categories/categories/heads.dm +++ b/modular_doppler/loadout_categories/categories/heads.dm @@ -61,3 +61,11 @@ /datum/loadout_item/head/colonial_cap name = "Colonial Cap" item_path = /obj/item/clothing/head/hats/colonial + +/datum/loadout_item/head/wrussian + name = "Black Papakha" + item_path = /obj/item/clothing/head/costume/papakha + +/datum/loadout_item/head/wrussianw + name = "White Papakha" + item_path = /obj/item/clothing/head/costume/papakha/white diff --git a/modular_doppler/loadout_categories/categories/masks.dm b/modular_doppler/loadout_categories/categories/masks.dm index ebfeb0ac16af1..69bb5782afe70 100644 --- a/modular_doppler/loadout_categories/categories/masks.dm +++ b/modular_doppler/loadout_categories/categories/masks.dm @@ -63,3 +63,7 @@ /datum/loadout_item/mask/frontier name = "Frontier Gas Mask" item_path = /obj/item/clothing/mask/gas/atmos/frontier_colonist + +/datum/loadout_item/mask/frontier + name = "Neck Gaiter" + item_path = /obj/item/clothing/mask/neck_gaiter diff --git a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_face.dm b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_face.dm new file mode 100644 index 0000000000000..95d8b25f5c2ce --- /dev/null +++ b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_face.dm @@ -0,0 +1,22 @@ +/* \ / \/ \/ \/ / , + \ \ \/ \/ \/ \ \/ \/ / + .\ \/ \/ \/ \/ \/ / / / + *hedgehog noise* ) ' / / \/ \/ \/ \/ \/ \ \/ \ + This dm contains \ .' ) \/ \/ \/ \/ \/ \/ \ / \ + all face grayscales \ / o ) \/ \/ \/ \/ \/ \/ \// / + o'_ ',__ .' ,.,.,.,.,.,.,.,'- ' + // \\ // \\ + '' '' '' '' +*/ + +// GAITER + +/datum/greyscale_config/neck_gaiter + name = "Neck Gaiter" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/face.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/face/gaiter.json' + +/datum/greyscale_config/neck_gaiter/worn + name = "Neck Gaiter (Worn)" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/face.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/face/gaiter_worn.json' diff --git a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_head.dm b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_head.dm new file mode 100644 index 0000000000000..1152207b6afb6 --- /dev/null +++ b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_head.dm @@ -0,0 +1,22 @@ +/* \ / \/ \/ \/ / , + \ \ \/ \/ \/ \ \/ \/ / + .\ \/ \/ \/ \/ \/ / / / + *hedgehog noise* ) ' / / \/ \/ \/ \/ \/ \ \/ \ + This dm contains \ .' ) \/ \/ \/ \/ \/ \/ \ / \ + all head grayscales \ / o ) \/ \/ \/ \/ \/ \/ \// / + o'_ ',__ .' ,.,.,.,.,.,.,.,'- ' + // \\ // \\ + '' '' '' '' +*/ + +// Standalone Hood + +/datum/greyscale_config/standalone_hood + name = "Hood" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/head.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/head/hood.json' + +/datum/greyscale_config/standalone_hood/worn + name = "Hood (Worn)" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/head.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/head/hood_worn.json' diff --git a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_neck.dm b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_neck.dm index 73798620e9fd6..a6951f385605e 100644 --- a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_neck.dm +++ b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_neck.dm @@ -147,3 +147,17 @@ /datum/greyscale_config/collar/spike/worn name = "Spiked Collar (Worn)" json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/collar/spike_worn.json' + +/////////// +//MANTLES// +/////////// + +/datum/greyscale_config/mantle + name = "Mantle" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/neck.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/neck/mantle.json' + +/datum/greyscale_config/mantle/worn + name = "Mantle (Worn)" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/neck.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/neck/mantle_worn.json' diff --git a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_suit.dm b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_suit.dm index 2d64c61ad7235..ee3ae3ed47251 100644 --- a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_suit.dm +++ b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_suit.dm @@ -62,3 +62,15 @@ name = "'dagger' designer mantle (worn)" icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/shirt.dmi' json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/suit/dagger_mantle_worn.json' + +// Apron + +/datum/greyscale_config/apron + name = "Apron" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/suit/apron.json' + +/datum/greyscale_config/apron/worn + name = "Apron (Worn)" + icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi' + json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/suit/apron_worn.json' diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/mob/face.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/mob/face.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0901ff540cca94f14864f83335cc058154083c20 GIT binary patch literal 435 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 diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/mob/neck.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/mob/neck.dmi index 1d551c3ee91a4eaaf18127f73101db87148710c4..30be9c23f5b3d4eeda285b19645ca6a65e5008e8 100644 GIT binary patch literal 8206 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 diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c56b9a3a11925099fc746be5efbe2085204079a1 GIT binary patch literal 385 zcmV-{0e=38P)x zF$F@y&;+JNp$af8&45}56VO@!Rmw05umTNqMjJF4C`^J1Fg8KxCI^_(BnZ_BH{>>i zdJf|=)k5gn2B-k@TnJru0H&lCg~BEP(*hTWg;1q9ZDE@Qp_fg7sh9?#r@>S(Ohcg< f;NFG@1ML9->MJRG$bq}300000NkvXXu0mjfkk6Jh literal 0 HcmV?d00001 diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/obj/face.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/obj/face.dmi new file mode 100644 index 0000000000000000000000000000000000000000..38e877ae9c9c24e7c709da6fd58612d2561aa0e9 GIT binary patch literal 362 zcmV-w0hRuVP)V=-0C=2J zR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5 zDLpZ>B(*3$KPgLzi!&v&s2C_{$i&0u^O5-<;MRZj zAk(WHBXu>kdf&$?wV@ww=qHBVPdNF4w=srlK5{ZHK9^(&sqhnG8jzkAJT9zm2pg+d z@YoBdl$im!F}0fQQ=(WyW?=7HYW4@Q%S#4SiTK4<$`8J{-a4WahVMI)Z~y=R07*qo IM6N<$f{=xizyJUM literal 0 HcmV?d00001 diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/obj/head.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/obj/head.dmi index 1f8cee72c9da6ff00f2ad2af9a7c2d372ac681ff..d63f9475baf24e2de47b7b81abcf16f1767285fa 100644 GIT binary patch delta 1196 zcmV;d1XKI|5wr=A7=Hu<0001fO@Al=000$GOjJbx{{W?_w#&`Y?(Xh%af067-d|jB zTR4N&00001bW%=J06^y0W&i*H;d)e9bVOxyV{&P5bZKvH004NLrIS4l!Y~Yl=jId< z?1;aW1+_vQ;0lqOxQ!uAP!dsbdm=iq&=fX5>3jB*WiR=$I)Bv{UY=|AKp)6ie&GAn zniT`7sFT=jS)q|S9Y+x&L`>zPL63343PnC7y>(t5QdS%t%(sng=}@sl#S8n0I0et%&=NUWo@i(PoF}+Wp=@Kwe&n2T5YUUiEkp;+zAh`1V?C&oCzO@&yS1 z-ZbUac(oYkH{+n7prD|jprG&8)4}~4O}ke;-VlQW!7us%gCD7(Ah9dM1HHc?@mc^g zG7Jg|3V-^ywD_{*{DFOrS*etxBggOlKVhiU;K-#??c#=Sx~a;0NAwd*L*|=qs=5Xp z(XZJr4KZ`S6tN+QR>~{~MGXBmx3D1^eW0Ya%_Vfd+Fdw-+db;EsI=a4WEMb^!RENvC=(#P<; z?^Hk;Lyaf%D5ULq^T@|9iUsf*UzRBNV!Q04t33Up2wMVc~IQ59E^{r{Ac6AXCdETTz(VZ zQU0^>V4U&HIjbkWqx@&%L6)C>ITx6T?gC%&WnXX8Qk^K`1*h6CSG z{h8J_^h|il8j_{;XBHIc7Glu zs@tw43C?^+`OnUSM9&3z)PnCQ|5S_Q!Glf_zN7qS@Ssza?L5HzN7qS@ZcRO zYJ5le&)~s3Qq=g4@}J3r?i6*tqb2-j@Zefe{(G1QDgXUvJop>Mh4&me5!fLB0000< KMNUMnLSTZ?u3oDE literal 2302 zcmb_eX*3&H8%~f~+aR>)XwXtJsGH=h}dIkX@#O%ZKsMb zrBoBOFST{5i5h#0jy0_%5#m$xo$udw&iCW{aqn~9`@HYH&vWlN_q?eN_LmQfDTo08 zfWy{S2*-Ua-5&&zL;G_E%J=v_jKm;aBM|<#P~kT)5jVm@0RU{#FUq- zPk03NHC%FoD{Ul}5Wi1pXGJF-jUUjl{@BrsatrWjzrn9SJW&FIM$6@{sO2gyY^ug7 z&6C761I*Ds%!o01*a-j#f3`-LA+bfv#in7`EMz*E zDPpOu6{R)m4w?vZO^QrmgjP!SU-wnGLRN7g6W~L$8OSM6M2>^wBW*ob8w7$ZDFw1I zOMr-`MzW(nCohgh;{zs)P=j3Sk5!ZOtrhJ2QZXa8`K5bxQYl;PHQ-_Bsf%V70y4<| z246<*q_4)shV2eatTdurwkF4HV8fuav+qX>YmcI3@n4o3;GVJHc+lrw_}HeV=m->C zxn?#!E<@VerGxwz9+T@Kw8T*{O{7kdO?R8=;X_{RTW_<@&iP~msJ-}{+u3d{mxY<` zgO_#hL7;e%#@Tf4f+DC3w#V)%|M*?iL_2vvBE^Imw7R41M?c3?{y90m&hpXa8>I9O zinhxRt;od4V->yXz$<>IW1Cv6cUZ9UTY^6{!@Pi~IN3rCqi6!B1bKd|OBYz4CUE!P zi+9=hEhS*2elTrLu8Yq3_8ono!f8zJV)!9C;+Yug(p_6}OZ4_5Xr8lqQa1^HQUoSlTB-sR`~O1Eit7yiopO4}aAZ!m+C|;m zq&(TaXA`|Gl7y&E-$p;0DL@9_;&@KCud_FEiW0Di-i+f)V|1%i!zxAUHh?)B_eQ}j zwVCqJu(%ift4KVe5hV&!0Ez!EG7GL7ytDYi;h`d>o~jFq!FmZG_WB?mzNxlM=eob& ztUAAPA0k>KsdQ(}bU2X*wpRdV%4UjIFF$yk;vk@zF+W&R!W$RTL#C9iwetEi2VY%6 zXaSG*dJXbJBe8hw#`xTpiE_Q@Y8RPNxdvuTvT*U6I%KyvtBSh-aS$;9L+Ae;`JMNq zWIX7^C1r)OwWX$CLlw1PCM7r7)8~1Bh_wA<s9Q-sdo)& zY66c6(Ond;Ye0(qjr(xj8Toc-A#^o2*msKxk-+VcyJp z)8(-JNo1&>wa7^Al~6Y6xu$w`>YzAyYL&xT+qQ%{c-fwwH8@#n-bODLCh7oZ8m}%y zMd4j}vmPoWrSM83r-DftivP(we&`;DpyO@k>d)<6m;I_+R_$PXSs2Q6+mpP1HnRGs zT}I91d|e2q;SbTlY=F4HT@reZ!o8xopwKg;uNO}if7}FND!qRSK0&?S-2f z+O=ZYZroC~h_ScDUbU}1*q({KrfA0i!`?ja$=sN2O$~fKQ0v1Ccl}L%O>XRJqT#(z znu(XqpAYN^XtwfZ@yLZB`Op*NtX49B;MU^4AGrIK(GX-pof2#iR+iRm>D*{M5EpSPVh;h1PlP8~c z?g@t=G%ygp*Kq%&y~pejcnSmlO~vqxlrA2!+=5DZwn| z9UL@%2X}9Fp}MMbd<&r6dAc%;cQoNEJGXnc$^8gCrA^QjxwqQS?6)a|kXo;K_E|%eM!Gq)}nzcs|DCA4(}5;IuQn?aiB|&3Z*%?;~8=o&Hqizr7za5w!rP z-D!z>(-TIx7k+~T)b6zL!R`vy(%wh#uOttc5L-{to-g2I6M0`LU0Gfy^K`uJ@rK|r zC`FNBX(@iL!L*3He841v3=2%Ji5xKSm@PqbZ2rcQa2+3;*CrKOWx!g=o1p}-E_C9a zk>wd`?)x%d{}Rq^d)ZM>cdDF`GRh!Vj=-aYJ0tj`>|hmGi!vXBd#TjG+1_C{S<;-U z-;(Cfg0O)}&*WLZ$_D|p`Lhc9M#GN3=Z)1|eDkMTi6%U6ras!4q8e`|M3*5X2EYW z3@8UC#XAg7wp(p9yk1~3FAfXH6hMD`!+QdY&yZzIC&9J-h6Z45VUMUX_a^=eS;S4+ diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/obj/neck.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/obj/neck.dmi index a0dc5e514ecd9aac0eb37e411e07667e24a9f8b5..37b59a2f8cb2c813fbdad42fa70a013cd4ac0550 100644 GIT binary patch delta 1358 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 Xi4@WipLF*d&?E*=S3j3^P6Use in hand to pick a new hairstyle.") + . += span_notice("Alt-click [src] to fling it.") + +/obj/item/clothing/head/hair_tie/mob_can_equip(mob/living/carbon/human/user, slot, disable_warning, bypass_equip_delay_self, ignore_equipped, indirect_action) + if(user.hairstyle == "Bald") //could create a list of the bald hairstyles to check + return FALSE + return ..() + +/obj/item/clothing/head/hair_tie/attack_self(mob/user) + var/hair_id = tgui_input_list(user, "How does your hair look when it's up?", "Pick!", SSaccessories.hairstyles_list) + if(!hair_id || hair_id == "Bald") + balloon_alert(user, "error!") + return + balloon_alert(user, "[hair_id]") + picked_hairstyle = hair_id + +/obj/item/clothing/head/hair_tie/equipped(mob/living/carbon/human/user, slot) + . = ..() + if(!ishuman(user) || !(slot_flags & slot)) + return + if(!picked_hairstyle) + return + user.visible_message( + span_notice("[user.name] ties up [user.p_their()] hair."), + span_notice("You tie up your hair!"), + ) + actual_hairstyle = user.hairstyle + user.set_hairstyle(picked_hairstyle, update = TRUE) + +/obj/item/clothing/head/hair_tie/dropped(mob/living/carbon/human/user) + . = ..() + if(!ishuman(user)) + return + if(!picked_hairstyle || !actual_hairstyle) + return + user.visible_message( + span_notice("[user.name] takes [src] out of [user.p_their()] hair."), + span_notice("You let down your hair!"), + ) + user.set_hairstyle(actual_hairstyle, update = TRUE) + actual_hairstyle = null + +/obj/item/clothing/head/hair_tie/click_alt(mob/living/user) + if(!(user.get_slot_by_item(src) == ITEM_SLOT_HANDS)) + balloon_alert(user, "hold in-hand!") + return CLICK_ACTION_BLOCKING + user.visible_message( + span_danger("[user.name] puts [src] around [user.p_their()] fingers, beginning to flick it!"), + span_notice("You try to flick [src]!"), + ) + flick_hair_tie(user) + return CLICK_ACTION_SUCCESS + +///This proc flicks the hair tie out of the player's hand, tripping the target hit for 1 second +/obj/item/clothing/head/hair_tie/proc/flick_hair_tie(mob/living/user) + if(!do_after(user, fire_speed, src)) + return + //build the projectile + var/obj/projectile/bullet/hair_tie/proj = new projectile_to_fire (drop_location()) + //clone some vars + proj.name = name + proj.icon_state = icon_state + //add projectile_drop + proj.AddElement(/datum/element/projectile_drop, type) + //aim and fire + proj.firer = user + proj.fired_from = user + proj.fire((dir2angle(user.dir) + rand(-projectile_aim_radius, projectile_aim_radius))) + playsound(src, 'sound/weapons/effects/batreflect.ogg', 25, TRUE) + //get rid of what we just launched to let projectile_drop spawn a new one + qdel(src) + +/obj/projectile/bullet/hair_tie + icon = 'modular_doppler/modular_cosmetics/icons/obj/head/hair_ties.dmi' + icon_state = "hairtie" + hitsound = 'sound/weapons/genhit.ogg' + damage = 0 //its just about the knockdown + sharpness = NONE + shrapnel_type = NONE //no embedding pls + impact_effect_type = null + ricochet_chance = 0 + range = 7 + knockdown = 1 SECONDS + +/datum/design/plastic_hair_tie + name = "Plastic Hair Tie" + id = "plastic_hair_tie" + build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE | COLONY_FABRICATOR + materials = list( + /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/clothing/head/hair_tie/plastic_beads + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE, + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE diff --git a/modular_doppler/modular_cosmetics/code/head/head.dm b/modular_doppler/modular_cosmetics/code/head/head.dm new file mode 100644 index 0000000000000..87a3c4c174a3d --- /dev/null +++ b/modular_doppler/modular_cosmetics/code/head/head.dm @@ -0,0 +1,26 @@ +/obj/item/clothing/head/standalone_hood + name = "hood" + desc = "A hood with a bit of support around the neck so it actually stays in place, for all those times you want a hood without the coat." + icon = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/head.dmi' + worn_icon = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/head.dmi' + icon_state = "hood" + body_parts_covered = HEAD + cold_protection = HEAD + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT + flags_inv = HIDEEARS|HIDEHAIR + flags_1 = IS_PLAYER_COLORABLE_1 + greyscale_colors = "#4e4a43#F1F1F1" + greyscale_config = /datum/greyscale_config/standalone_hood + greyscale_config_worn = /datum/greyscale_config/standalone_hood/worn + +/obj/item/clothing/head/costume/papakha + name = "papakha" + desc = "A big wooly clump of fur designed to go on your head." + icon = 'modular_doppler/modular_cosmetics/icons/obj/head/costume.dmi' + worn_icon = 'modular_doppler/modular_cosmetics/icons/mob/head/costume.dmi' + icon_state = "papakha" + cold_protection = HEAD + min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT + +/obj/item/clothing/head/costume/papakha/white + icon_state = "papakha_white" diff --git a/modular_doppler/modular_cosmetics/code/neck/neck.dm b/modular_doppler/modular_cosmetics/code/neck/neck.dm index 157a632a5df87..ffcc05153700f 100644 --- a/modular_doppler/modular_cosmetics/code/neck/neck.dm +++ b/modular_doppler/modular_cosmetics/code/neck/neck.dm @@ -80,3 +80,14 @@ greyscale_config_worn = /datum/greyscale_config/maid_neck_cover/worn greyscale_colors = "#7b9ab5#edf9ff" flags_1 = IS_PLAYER_COLORABLE_1 + +/obj/item/clothing/neck/mantle/recolorable + name = "mantle" + desc = "A simple drape over the shoulders." + icon = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/neck.dmi' + worn_icon = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/neck.dmi' + icon_state = "mantle" + greyscale_colors = "#ffffff" + greyscale_config = /datum/greyscale_config/mantle + greyscale_config_worn = /datum/greyscale_config/mantle/worn + flags_1 = IS_PLAYER_COLORABLE_1 diff --git a/modular_doppler/modular_cosmetics/code/suits/misc.dm b/modular_doppler/modular_cosmetics/code/suits/misc.dm new file mode 100644 index 0000000000000..ecfb8d0af9df5 --- /dev/null +++ b/modular_doppler/modular_cosmetics/code/suits/misc.dm @@ -0,0 +1,12 @@ +/obj/item/clothing/suit/apron/chef/colorable_apron + name = "apron" + desc = "A basic apron." + icon = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/suit.dmi' + worn_icon = 'modular_doppler/modular_cosmetics/GAGS/icons/mob/suit.dmi' + icon_state = "apron" + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + // gets_cropped_on_taurs = FALSE + greyscale_colors = "#ffffff" + greyscale_config = /datum/greyscale_config/apron + greyscale_config_worn = /datum/greyscale_config/apron/worn + flags_1 = IS_PLAYER_COLORABLE_1 diff --git a/modular_doppler/modular_cosmetics/icons/mob/face/glasses.dmi b/modular_doppler/modular_cosmetics/icons/mob/face/glasses.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4417059961a6acc9e6f48bb3bec71d671f4ec5f7 GIT binary patch literal 482 zcmV<80UiE{P)S(gqvhr0k&%&ne0;mRyV=>ubOAEd)n)StapX6L8BAxRwcYVqVk=euQ$5MGU-SzOIHoqMEcFLgTnkPmi5AV z006$rr;pTqp9}=n4(fVN27<&+oS?>osk#*JJKw7fTB8AJ)lV}Gz z{#+dn^JNJ6cnC7@&X@d#V~jds9033Tek`2_+$YhtLcC%K`VA9VFG#_^5*004N^ Y4K`60Irbn{_y7O^07*qoM6N<$g7hWRZvX%Q literal 0 HcmV?d00001 diff --git a/modular_doppler/modular_cosmetics/icons/mob/head/costume.dmi b/modular_doppler/modular_cosmetics/icons/mob/head/costume.dmi new file mode 100644 index 0000000000000000000000000000000000000000..38be6a1596b9031483e854570a5b87718ff8234a GIT binary patch literal 484 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 a`zv3uFFnH=Xk2Ol0000zO(L literal 0 HcmV?d00001 diff --git a/modular_doppler/modular_cosmetics/icons/obj/head/hair_ties.dmi b/modular_doppler/modular_cosmetics/icons/obj/head/hair_ties.dmi new file mode 100644 index 0000000000000000000000000000000000000000..1bda5056a305dada0e46946f740e14d718eab909 GIT binary patch literal 520 zcmV+j0{8uiP)h%3W zKt)VQQ&m%0CoaDtcg9bv#3D|{)4LwJtW-YT-F4#CMy^KTIcB{sRZzrGU)5jxI9Te^ zAfraEyHdyFyg}WzKG0*`>h%4NjFYIMv+nHk1H=3(00001bW%=J06^y0W&i*He|l6{ zbVOxyV{&P5bZKvH004NLQ&w5Ybf!0002jNkl2r!LqJq-nRXZ0%OUg zupEbjoyyA>qoOFv5Ao7GdeL9a8(Hj7Jaz!^VjG@8@Ph7t)y8n^C60H z0LUFc5`g9Rz@z>2feD12RVD~w(Mc7YMgBXu48nZCOIM?!uy_NH76{X1ePd++0000< KMNUMnLSTXywC&3P literal 0 HcmV?d00001 diff --git a/modular_doppler/modular_crafting/code/sheet_types.dm b/modular_doppler/modular_crafting/code/sheet_types.dm index 2298df03d11cb..7b90ade1d156a 100644 --- a/modular_doppler/modular_crafting/code/sheet_types.dm +++ b/modular_doppler/modular_crafting/code/sheet_types.dm @@ -60,6 +60,7 @@ GLOBAL_LIST_INIT(doppler_rod_recipes, list( GLOBAL_LIST_INIT(doppler_wood_recipes, list( new/datum/stack_recipe("water basin", /obj/structure/reagent_water_basin, 5, time = 2 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_TOOLS), new/datum/stack_recipe("forging work bench", /obj/structure/reagent_crafting_bench, 5, time = 2 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_TOOLS), + new/datum/stack_recipe("sauna oven", /obj/structure/sauna_oven, 30, time = 1.5 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_ENTERTAINMENT), new/datum/stack_recipe("large wooden mortar", /obj/structure/large_mortar, 10, time = 3 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_TOOLS), new/datum/stack_recipe("wooden cutting board", /obj/item/cutting_board, 5, time = 2 SECONDS, category = CAT_TOOLS), new/datum/stack_recipe("wooden shelf", /obj/structure/rack/wooden, 2, time = 2 SECONDS, crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_ONE_PER_TURF | CRAFT_ON_SOLID_GROUND, category = CAT_STRUCTURE), @@ -94,6 +95,7 @@ GLOBAL_LIST_INIT(doppler_cardboard_recipes, list( GLOBAL_LIST_INIT(doppler_cloth_recipes, list( new/datum/stack_recipe("towel", /obj/item/towel, 2, category = CAT_CLOTHING), + new/datum/stack_recipe("eyepatch wrap", /obj/item/clothing/glasses/eyepatch/wrap, 2, category = CAT_CLOTHING), new/datum/stack_recipe("eyepatch", /obj/item/clothing/glasses/eyepatch, 2, category = CAT_CLOTHING), new/datum/stack_recipe("xenoarch bag", /obj/item/storage/bag/xenoarch, 4, category = CAT_CONTAINERS), )) diff --git a/modular_doppler/modular_species/species_types/primitive_demihuman/primitive_demihuman.dm b/modular_doppler/modular_species/species_types/primitive_demihuman/primitive_demihuman.dm index cd8d8faf05283..ed9174b1584ce 100644 --- a/modular_doppler/modular_species/species_types/primitive_demihuman/primitive_demihuman.dm +++ b/modular_doppler/modular_species/species_types/primitive_demihuman/primitive_demihuman.dm @@ -4,11 +4,11 @@ /datum/language_holder/primitive_felinid understood_languages = list( /datum/language/primitive_catgirl = list(LANGUAGE_ATOM), - /datum/language/uncommon = list(LANGUAGE_ATOM), + /datum/language/uncommon = list(LANGUAGE_ATOM) ) spoken_languages = list( /datum/language/primitive_catgirl = list(LANGUAGE_ATOM), - /datum/language/uncommon = list(LANGUAGE_ATOM), + /datum/language/uncommon = list(LANGUAGE_ATOM) ) selected_language = /datum/language/primitive_catgirl diff --git a/tgstation.dme b/tgstation.dme index 68e6c9fb15a42..96dc93b1f6497 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6635,9 +6635,13 @@ #include "modular_doppler\modular_cosmetics\code\towels.dm" #include "modular_doppler\modular_cosmetics\code\uniform_overrides.dm" #include "modular_doppler\modular_cosmetics\code\face\basemasks.dm" +#include "modular_doppler\modular_cosmetics\code\face\glasses.dm" +#include "modular_doppler\modular_cosmetics\code\face\masks.dm" #include "modular_doppler\modular_cosmetics\code\hands\rings.dm" #include "modular_doppler\modular_cosmetics\code\hats\doppler_command_hats.dm" +#include "modular_doppler\modular_cosmetics\code\head\hair_tie.dm" #include "modular_doppler\modular_cosmetics\code\head\hats.dm" +#include "modular_doppler\modular_cosmetics\code\head\head.dm" #include "modular_doppler\modular_cosmetics\code\neck\collar.dm" #include "modular_doppler\modular_cosmetics\code\neck\doppler_command_mantles.dm" #include "modular_doppler\modular_cosmetics\code\neck\neck.dm" @@ -6647,10 +6651,13 @@ #include "modular_doppler\modular_cosmetics\code\suits\basesuits.dm" #include "modular_doppler\modular_cosmetics\code\suits\jacket.dm" #include "modular_doppler\modular_cosmetics\code\suits\labcoat.dm" +#include "modular_doppler\modular_cosmetics\code\suits\misc.dm" #include "modular_doppler\modular_cosmetics\code\suits\modsuit.dm" #include "modular_doppler\modular_cosmetics\code\suits\shirts.dm" #include "modular_doppler\modular_cosmetics\code\under\doppler_uniforms.dm" #include "modular_doppler\modular_cosmetics\code\under\miscellania.dm" +#include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_face.dm" +#include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_head.dm" #include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_neck.dm" #include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_sets.dm" #include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_suit.dm" diff --git a/tgui/packages/tgui-say/styles/colors.scss b/tgui/packages/tgui-say/styles/colors.scss index aa53224b732ec..bbc5ab96e3f9e 100644 --- a/tgui/packages/tgui-say/styles/colors.scss +++ b/tgui/packages/tgui-say/styles/colors.scss @@ -26,11 +26,11 @@ $_channel_map: ( 'Supp': #b88646, 'Svc': #6ca729, 'Synd': #8f4a4b, - // NOVA EDIT ADDITION START + // DOPPLER EDIT ADDITION START 'Whis': #7c7fd9, 'LOOC': #ffceb6, 'Do': #59da7e, - // NOVA EDIT ADDITION END + // DOPPLER EDIT ADDITION END ); $channel_keys: map.keys($_channel_map) !default;