diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_skrell.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_skrell.png index 4e90a6e43ca..ff9a49671c2 100644 Binary files a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_skrell.png and b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_skrell.png differ diff --git a/modular_nova/master_files/code/modules/client/preferences_savefile.dm b/modular_nova/master_files/code/modules/client/preferences_savefile.dm index 9a0ef4002b7..7c8af584614 100644 --- a/modular_nova/master_files/code/modules/client/preferences_savefile.dm +++ b/modular_nova/master_files/code/modules/client/preferences_savefile.dm @@ -3,7 +3,7 @@ * You can't really use the non-modular version, least you eventually want asinine merge * conflicts and/or potentially disastrous issues to arise, so here's your own. */ -#define MODULAR_SAVEFILE_VERSION_MAX 7 +#define MODULAR_SAVEFILE_VERSION_MAX 8 #define MODULAR_SAVEFILE_UP_TO_DATE -1 @@ -14,6 +14,7 @@ #define VERSION_CHRONOLOGICAL_AGE 5 #define VERSION_TG_LOADOUT 6 #define VERSION_INTERNAL_EXTERNAL_ORGANS 7 +#define VERSION_SKRELL_HAIR_NAME_UPDATE 8 #define INDEX_UNDERWEAR 1 #define INDEX_BRA 2 @@ -266,8 +267,16 @@ save_augments[augment_name] = "/obj/item/organ[augment_path_string_stripped]" load_augments(save_augments) + if(current_version < VERSION_SKRELL_HAIR_NAME_UPDATE) + var/list/mutant_bodyparts = SANITIZE_LIST(save_data["mutant_bodyparts"]) + if("skrell_hair" in mutant_bodyparts) + var/current_skrell_hair = mutant_bodyparts["skrell_hair"][MUTANT_INDEX_NAME] + if(current_skrell_hair == "Male") + write_preference(GLOB.preference_entries[/datum/preference/choiced/mutant_choice/skrell_hair], "Short") + else if(current_skrell_hair == "Female") + write_preference(GLOB.preference_entries[/datum/preference/choiced/mutant_choice/skrell_hair], "Long") /datum/preferences/proc/check_migration() if(!tgui_prefs_migration) @@ -351,3 +360,4 @@ #undef VERSION_CHRONOLOGICAL_AGE #undef VERSION_TG_LOADOUT #undef VERSION_INTERNAL_EXTERNAL_ORGANS +#undef VERSION_SKRELL_HAIR_NAME_UPDATE diff --git a/modular_nova/master_files/icons/mob/clothing/head/skrell_chains.dmi b/modular_nova/master_files/icons/mob/clothing/head/skrell_chains.dmi new file mode 100644 index 00000000000..d444b8daa15 Binary files /dev/null and b/modular_nova/master_files/icons/mob/clothing/head/skrell_chains.dmi differ diff --git a/modular_nova/master_files/icons/mob/sprite_accessory/skrell_hair.dmi b/modular_nova/master_files/icons/mob/sprite_accessory/skrell_hair.dmi index 74b448da79d..e57654b8667 100644 Binary files a/modular_nova/master_files/icons/mob/sprite_accessory/skrell_hair.dmi and b/modular_nova/master_files/icons/mob/sprite_accessory/skrell_hair.dmi differ diff --git a/modular_nova/master_files/icons/obj/clothing/hats.dmi b/modular_nova/master_files/icons/obj/clothing/hats.dmi index 64f133fe5bd..ad9662338df 100644 Binary files a/modular_nova/master_files/icons/obj/clothing/hats.dmi and b/modular_nova/master_files/icons/obj/clothing/hats.dmi differ diff --git a/modular_nova/modules/customization/modules/clothing/head/head.dm b/modular_nova/modules/customization/modules/clothing/head/head.dm index b25d4a4e01d..b94bff72670 100644 --- a/modular_nova/modules/customization/modules/clothing/head/head.dm +++ b/modular_nova/modules/customization/modules/clothing/head/head.dm @@ -255,3 +255,41 @@ greyscale_config_worn = /datum/greyscale_config/sweet_bow/worn greyscale_colors = "#7b9ab5" flags_1 = IS_PLAYER_COLORABLE_1 + +// Skrell chains +/obj/item/clothing/head/skrell_chain + name = "gold skrellian head chain" + desc = "Traditional Skrellian chain" + icon = 'modular_nova/master_files/icons/obj/clothing/hats.dmi' + icon_state = "skrell_chain_gold" + worn_icon = 'modular_nova/master_files/icons/mob/clothing/head/skrell_chains.dmi' + worn_icon_state = "chain_gold" + w_class = WEIGHT_CLASS_TINY + custom_price = PAYCHECK_CREW * 2 + var/list/chain_styles = list( + "Long Diadema" = "long_diadema_gold", + "Short Diadema" = "short_diadema_gold", + "Long Fest" = "long_fest_gold", + "Short Fest" = "short_fest_gold", + "Chain" = "chain_gold", + ) + +/obj/item/clothing/head/skrell_chain/examine(mob/user) + . = ..() + . += span_notice("Use in hand to pick a new style.") + +/obj/item/clothing/head/skrell_chain/attack_self(mob/user) + var/style_name = tgui_input_list(user, "How does chain look when it's up?", "Pick!", chain_styles) + worn_icon_state = chain_styles[style_name] + balloon_alert(user, "style choiced!") + +/obj/item/clothing/head/skrell_chain/silver + name = "silver skrellian head chain" + icon_state = "skrell_chain_silver" + worn_icon_state = "chain_silver" + custom_price = PAYCHECK_CREW + chain_styles = list( + "Long Diadema" = "long_diadema_silver", + "Short Diadema" = "short_diadema_silver", + "Chain" = "chain_silver", + ) diff --git a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm index d56ec101489..f7cc4651a38 100644 --- a/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm +++ b/modular_nova/modules/customization/modules/mob/dead/new_player/sprite_accessories/skrell_hair.dm @@ -8,6 +8,10 @@ organ_type = /obj/item/organ/skrell_hair /datum/sprite_accessory/skrell_hair/is_hidden(mob/living/carbon/human/wearer) + // Exception for MODs + if(istype(wearer.head, /obj/item/clothing/head/mod)) + return FALSE + if((wearer.head?.flags_inv & HIDEHAIR) || (wearer.wear_mask?.flags_inv & HIDEHAIR)) return TRUE @@ -18,9 +22,85 @@ icon_state = "none" /datum/sprite_accessory/skrell_hair/long - name = "Female" + name = "Long" icon_state = "long" /datum/sprite_accessory/skrell_hair/short - name = "Male" + name = "Short" icon_state = "short" + +/datum/sprite_accessory/skrell_hair/very_short + name = "Very short" + icon_state = "veryshort" + +/datum/sprite_accessory/skrell_hair/very_long + name = "Very Long" + icon_state = "verylong" + +/datum/sprite_accessory/skrell_hair/hoop + name = "Hoop" + icon_state = "hoop" + +/datum/sprite_accessory/skrell_hair/backwater + name = "Backwater" + icon_state = "backwater" + +/datum/sprite_accessory/skrell_hair/reef + name = "Reef" + icon_state = "reef" + +/datum/sprite_accessory/skrell_hair/tucked + name = "Tucked" + icon_state = "tucked" + +/datum/sprite_accessory/skrell_hair/straight_tuux + name = "Straight Tuux" + icon_state = "straight_tuux" + +/datum/sprite_accessory/skrell_hair/straight_tuux_long + name = "Straight Tuux Long" + icon_state = "straight_tuux_long" + +/datum/sprite_accessory/skrell_hair/long_tuux + name = "Long Tuux" + icon_state = "long_tuux" + +/datum/sprite_accessory/skrell_hair/short_tuux + name = "Short Tuux" + icon_state = "short_tuux" + +/datum/sprite_accessory/skrell_hair/left_behind + name = "Left Behind" + icon_state = "left_behind" + +/datum/sprite_accessory/skrell_hair/left_behind_long + name = "Left Behind Long" + icon_state = "left_behind_long" + +/datum/sprite_accessory/skrell_hair/right_behind + name = "Right Behind" + icon_state = "right_behind" + +/datum/sprite_accessory/skrell_hair/right_behind_long + name = "Right Behind Long" + icon_state = "right_behind_long" + +/datum/sprite_accessory/skrell_hair/mid_bun + name = "Mid Bun" + icon_state = "mid_bun" + +/datum/sprite_accessory/skrell_hair/long_mid_bun + name = "Long Mid Bun" + icon_state = "long_mid_bun" + +/datum/sprite_accessory/skrell_hair/loose_braid + name = "Loose Braid" + icon_state = "loose_braid" + +/datum/sprite_accessory/skrell_hair/verylong_dmg_r + name = "Very Long Right Damaged" + icon_state = "verylong_dmg_r" + +/datum/sprite_accessory/skrell_hair/verylong_dmg_l + name = "Very Long Left Damaged" + icon_state = "verylong_dmg_l" diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm index a8fa6841838..3700e7b2d26 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/MOD_sprite_accessories/mod_accessory_handler.dm @@ -220,4 +220,25 @@ special_icon.Blend(MOD_texture, ICON_MULTIPLY) return special_icon +// Skrell hair hardlight +/datum/sprite_accessory/skrell_hair + use_custom_mod_icon = TRUE + +/datum/sprite_accessory/skrell_hair/get_custom_mod_icon(mob/living/carbon/human/wearer, mutable_appearance/appearance_to_use = null) + if(wearer?.head && istype(wearer.head, /obj/item/clothing/head/mod)) + var/obj/item/mod/control/modsuit_control = wearer.back + if(!istype(modsuit_control)) + return + var/datum/mod_theme/mod_theme = modsuit_control.theme + + if(!modsuit_control.active || !mod_theme.hardlight) + return + + var/icon/special_icon = appearance_to_use ? icon(appearance_to_use.icon, appearance_to_use.icon_state) : icon(icon, icon_state) + var/icon/MOD_texture = icon(HARDLIGHT_DMI, "[mod_theme.hardlight_theme]") + special_icon.Blend("#fff", ICON_ADD) + special_icon.Blend(MOD_texture, ICON_MULTIPLY) + + return special_icon + #undef HARDLIGHT_DMI diff --git a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm index 972eb265868..d559de06bef 100644 --- a/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm +++ b/modular_nova/modules/customization/modules/mob/living/carbon/human/species/skrell.dm @@ -34,7 +34,7 @@ /datum/species/skrell/get_default_mutant_bodyparts() return list( - "skrell_hair" = list("Male", TRUE), + "skrell_hair" = list("Short", TRUE), ) /datum/species/skrell/get_species_description() @@ -71,7 +71,7 @@ skrell.dna.features["mcolor"] = skrell_color skrell.dna.features["mcolor2"] = skrell_color skrell.dna.features["mcolor3"] = skrell_color - skrell.dna.mutant_bodyparts["skrell_hair"] = list(MUTANT_INDEX_NAME = "Female", MUTANT_INDEX_COLOR_LIST = list(skrell_color, skrell_color, skrell_color)) + skrell.dna.mutant_bodyparts["skrell_hair"] = list(MUTANT_INDEX_NAME = "Long", MUTANT_INDEX_COLOR_LIST = list(skrell_color, skrell_color, skrell_color)) regenerate_organs(skrell, src, visual_only = TRUE) skrell.update_body(TRUE) diff --git a/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm b/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm index 7240a8f16e6..00c079e2ea1 100644 --- a/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm +++ b/modular_nova/modules/customization/modules/surgery/organs/skrell_hair.dm @@ -4,7 +4,7 @@ icon_state = "random_fly_1" mutantpart_key = "skrell_hair" - mutantpart_info = list(MUTANT_INDEX_NAME = "Female", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) + mutantpart_info = list(MUTANT_INDEX_NAME = "Long", MUTANT_INDEX_COLOR_LIST = list("#FFFFFF")) zone = BODY_ZONE_HEAD slot = ORGAN_SLOT_EXTERNAL_SKRELL_HAIR @@ -14,6 +14,8 @@ bodypart_overlay = /datum/bodypart_overlay/mutant/skrell_hair use_mob_sprite_as_obj_sprite = TRUE + organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL + /datum/bodypart_overlay/mutant/skrell_hair feature_key = "skrell_hair" layers = EXTERNAL_FRONT | EXTERNAL_ADJACENT diff --git a/modular_nova/modules/loadouts/loadout_items/loadout_datum_heads.dm b/modular_nova/modules/loadouts/loadout_items/loadout_datum_heads.dm index bb12f2bbed6..637f03081dc 100644 --- a/modular_nova/modules/loadouts/loadout_items/loadout_datum_heads.dm +++ b/modular_nova/modules/loadouts/loadout_items/loadout_datum_heads.dm @@ -286,6 +286,14 @@ name = "Fancy Hairpin" item_path = /obj/item/clothing/head/costume/hairpin +/datum/loadout_item/head/skrell_chain_gold + name = "Gold skrellian head chain" + item_path = /obj/item/clothing/head/skrell_chain + +/datum/loadout_item/head/skrell_chain_silver + name = "Silver skrellian head chain" + item_path = /obj/item/clothing/head/skrell_chain/silver + /* * CHRISTMAS */ diff --git a/modular_nova/modules/modular_vending/code/clothesmate.dm b/modular_nova/modules/modular_vending/code/clothesmate.dm index 2f3e3c1aa17..7d50408f43c 100644 --- a/modular_nova/modules/modular_vending/code/clothesmate.dm +++ b/modular_nova/modules/modular_vending/code/clothesmate.dm @@ -185,6 +185,8 @@ /obj/item/clothing/suit/frenchtrench = 1, /obj/item/clothing/suit/toggle/labcoat/nova/lalunevest = 2, /obj/item/clothing/gloves/lalune_long = 2, + /obj/item/clothing/head/skrell_chain = 3, + /obj/item/clothing/head/skrell_chain/silver = 3, ) contraband_nova = list(