diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index 661c5fc7abbcd..4b12e8d42287d 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -573,7 +573,7 @@ GLOBAL_LIST_EMPTY(features_by_species) sample_overlay = new overlay_path() organs_to_randomize[overlay_path] = sample_overlay - new_features["[sample_overlay.feature_key]"] = sample_overlay.get_random_appearance().name + new_features["[sample_overlay.feature_key]"] = /datum/sprite_accessory/blank::name // DOPPLER EDIT - no more random features, old code: new_features["[sample_overlay.feature_key]"] = sample_overlay.get_random_appearance().name return new_features diff --git a/code/~doppler_earliest_defines.dm b/code/~doppler_earliest_defines.dm index 4e8042c51c12d..5082774b03ab3 100644 --- a/code/~doppler_earliest_defines.dm +++ b/code/~doppler_earliest_defines.dm @@ -1,26 +1,26 @@ /// Hi! This file is here to work around some order-of-operations issues consistent humans & a couple other things have. /// If our overrides aren't loaded in early enough default TG stuff will end up in the critical [1] slot and break things. /datum/sprite_accessory/lizard_markings/none - icon = 'modular_doppler/customization/icons/fallbacks.dmi' + icon = 'modular_doppler/modular_customization/accessories/code/~overrides/icons/fallbacks.dmi' name = "No Markings" icon_state = "none" /datum/sprite_accessory/snouts/none - icon = 'modular_doppler/customization/icons/fallbacks.dmi' + icon = 'modular_doppler/modular_customization/accessories/code/~overrides/icons/fallbacks.dmi' name = "No Snout" icon_state = "none" /datum/sprite_accessory/frills/none - icon = 'modular_doppler/customization/icons/fallbacks.dmi' + icon = 'modular_doppler/modular_customization/accessories/code/~overrides/icons/fallbacks.dmi' name = "No Frills" icon_state = "none" /datum/sprite_accessory/horns/none - icon = 'modular_doppler/customization/icons/fallbacks.dmi' + icon = 'modular_doppler/modular_customization/accessories/code/~overrides/icons/fallbacks.dmi' name = "No Horns" icon_state = "none" /datum/sprite_accessory/tails/lizard/none - icon = 'modular_doppler/customization/icons/fallbacks.dmi' + icon = 'modular_doppler/modular_customization/accessories/code/~overrides/icons/fallbacks.dmi' name = "No Tail" icon_state = "none" diff --git a/modular_doppler/customization/code/accessory_overrides.dm b/modular_doppler/customization/code/accessory_overrides.dm deleted file mode 100644 index d29dfe667f433..0000000000000 --- a/modular_doppler/customization/code/accessory_overrides.dm +++ /dev/null @@ -1,3 +0,0 @@ -/datum/bodypart_overlay/mutant - /// Annoying annoying annoyed annoyance - this is to avoid a massive headache trying to work around tails - var/feature_key_sprite = null diff --git a/modular_doppler/customization/code/accessory_overrides_lizard.dm b/modular_doppler/customization/code/accessory_overrides_lizard.dm deleted file mode 100644 index 7ded20b493d71..0000000000000 --- a/modular_doppler/customization/code/accessory_overrides_lizard.dm +++ /dev/null @@ -1,418 +0,0 @@ -/datum/species/get_features() - var/list/features = ..() - - features += /datum/preference/choiced/lizard_snout - features += /datum/preference/choiced/lizard_frills - features += /datum/preference/choiced/lizard_horns - features += /datum/preference/choiced/lizard_tail - features += /datum/preference/choiced/lizard_body_markings - - GLOB.features_by_species[type] = features - - return features - - - - - -/// Snout fixing -/obj/item/organ/external/snout - name = "snout" - -/datum/bodypart_overlay/mutant/snout - layers = EXTERNAL_ADJACENT | EXTERNAL_ADJACENT_2 | EXTERNAL_ADJACENT_3 - -/datum/bodypart_overlay/mutant/snout/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) - if(limb == null) - return ..() - if(limb.owner == null) - return ..() - if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT)) - overlay.color = limb.owner.dna.features["snout_color_1"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_2)) - overlay.color = limb.owner.dna.features["snout_color_2"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_3)) - overlay.color = limb.owner.dna.features["snout_color_3"] - return overlay - return ..() - -//core toggle -/datum/preference/toggle/snout - savefile_key = "has_snout" - savefile_identifier = PREFERENCE_CHARACTER - category = PREFERENCE_CATEGORY_SECONDARY_FEATURES - priority = PREFERENCE_PRIORITY_DEFAULT - -/datum/preference/toggle/snout/apply_to_human(mob/living/carbon/human/target, value) - if(value == FALSE) - target.dna.features["snout"] = /datum/sprite_accessory/snouts/none::name - -/datum/preference/toggle/snout/create_default_value() - return FALSE - -/datum/species/regenerate_organs(mob/living/carbon/target, datum/species/old_species, replace_current = TRUE, list/excluded_zones, visual_only = FALSE) - . = ..() - if(target.dna.features["snout"]) - if(target.dna.features["snout"] != /datum/sprite_accessory/snouts/none::name && target.dna.features["snout"] != /datum/sprite_accessory/blank::name) - var/obj/item/organ/replacement = SSwardrobe.provide_type(/obj/item/organ/external/snout) - replacement.Insert(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) - return . - var/obj/item/organ/old_part = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_SNOUT) - if(old_part) - old_part.Remove(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) - old_part.moveToNullspace() - -//sprite selection -/datum/preference/choiced/lizard_snout - category = PREFERENCE_CATEGORY_CLOTHING - -/datum/preference/choiced/lizard_snout/is_accessible(datum/preferences/preferences) - . = ..() - var/has_snout = preferences.read_preference(/datum/preference/toggle/snout) - if(has_snout == TRUE) - return TRUE - return FALSE - -/datum/preference/choiced/lizard_snout/create_default_value() - return /datum/sprite_accessory/snouts/none::name - - - - - -/// Horns fixing -/obj/item/organ/external/horns - name = "horns" - -/datum/bodypart_overlay/mutant/horns - layers = EXTERNAL_ADJACENT | EXTERNAL_ADJACENT_2 | EXTERNAL_ADJACENT_3 - -/datum/bodypart_overlay/mutant/horns/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) - if(limb == null) - return ..() - if(limb.owner == null) - return ..() - if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT)) - overlay.color = limb.owner.dna.features["horns_color_1"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_2)) - overlay.color = limb.owner.dna.features["horns_color_2"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_3)) - overlay.color = limb.owner.dna.features["horns_color_3"] - return overlay - return ..() - -//core toggle -/datum/preference/toggle/horns - savefile_key = "has_horns" - savefile_identifier = PREFERENCE_CHARACTER - category = PREFERENCE_CATEGORY_SECONDARY_FEATURES - priority = PREFERENCE_PRIORITY_DEFAULT - -/datum/preference/toggle/horns/apply_to_human(mob/living/carbon/human/target, value) - if(value == FALSE) - target.dna.features["horns"] = /datum/sprite_accessory/horns/none::name - -/datum/preference/toggle/horns/create_default_value() - return FALSE - -/datum/species/regenerate_organs(mob/living/carbon/target, datum/species/old_species, replace_current = TRUE, list/excluded_zones, visual_only = FALSE) - . = ..() - if(target.dna.features["horns"]) - if(target.dna.features["horns"] != /datum/sprite_accessory/horns/none::name && target.dna.features["horns"] != /datum/sprite_accessory/blank::name) - var/obj/item/organ/replacement = SSwardrobe.provide_type(/obj/item/organ/external/horns) - replacement.Insert(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) - return . - var/obj/item/organ/old_part = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_HORNS) - if(old_part) - old_part.Remove(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) - old_part.moveToNullspace() - -//sprite selection -/datum/preference/choiced/lizard_horns - category = PREFERENCE_CATEGORY_CLOTHING - -/datum/preference/choiced/lizard_horns/is_accessible(datum/preferences/preferences) - . = ..() - var/has_horns = preferences.read_preference(/datum/preference/toggle/horns) - if(has_horns == TRUE) - return TRUE - return FALSE - -/datum/preference/choiced/lizard_horns/create_default_value() - return /datum/sprite_accessory/horns/none::name - - - - - -/// Frills fixing -/obj/item/organ/external/frills - name = "frills" - -/datum/bodypart_overlay/mutant/frills - layers = EXTERNAL_ADJACENT | EXTERNAL_ADJACENT_2 | EXTERNAL_ADJACENT_3 - -/datum/bodypart_overlay/mutant/frills/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) - if(limb == null) - return ..() - if(limb.owner == null) - return ..() - if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT)) - overlay.color = limb.owner.dna.features["frills_color_1"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_2)) - overlay.color = limb.owner.dna.features["frills_color_2"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_3)) - overlay.color = limb.owner.dna.features["frills_color_3"] - return overlay - return ..() - -//core toggle -/datum/preference/toggle/frills - savefile_key = "has_frills" - savefile_identifier = PREFERENCE_CHARACTER - category = PREFERENCE_CATEGORY_SECONDARY_FEATURES - priority = PREFERENCE_PRIORITY_DEFAULT - -/datum/preference/toggle/frills/apply_to_human(mob/living/carbon/human/target, value) - if(value == FALSE) - target.dna.features["frills"] = /datum/sprite_accessory/frills/none::name - -/datum/preference/toggle/frills/create_default_value() - return FALSE - -/datum/species/regenerate_organs(mob/living/carbon/target, datum/species/old_species, replace_current = TRUE, list/excluded_zones, visual_only = FALSE) - . = ..() - if(target.dna.features["frills"]) - if(target.dna.features["frills"] != /datum/sprite_accessory/frills/none::name && target.dna.features["frills"] != /datum/sprite_accessory/blank::name) - var/obj/item/organ/replacement = SSwardrobe.provide_type(/obj/item/organ/external/frills) - replacement.Insert(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) - return . - var/obj/item/organ/old_part = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_FRILLS) - if(old_part) - old_part.Remove(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) - old_part.moveToNullspace() - -//sprite selection -/datum/preference/choiced/lizard_frills - category = PREFERENCE_CATEGORY_CLOTHING - -/datum/preference/choiced/lizard_frills/is_accessible(datum/preferences/preferences) - . = ..() - var/has_frills = preferences.read_preference(/datum/preference/toggle/frills) - if(has_frills == TRUE) - return TRUE - return FALSE - -/datum/preference/choiced/lizard_frills/create_default_value() - return /datum/sprite_accessory/frills/none::name - - - - - -/// Tails fixing -/obj/item/organ/external/tail/lizard - name = "tail" - -/datum/bodypart_overlay/mutant/tail/lizard - layers = EXTERNAL_FRONT | EXTERNAL_FRONT_2 | EXTERNAL_FRONT_3 | EXTERNAL_BEHIND | EXTERNAL_BEHIND_2 | EXTERNAL_BEHIND_3 - feature_key_sprite = "tail" - -/datum/bodypart_overlay/mutant/tail/lizard/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) - if(limb == null) - return ..() - if(limb.owner == null) - return ..() - if(draw_layer == bitflag_to_layer(EXTERNAL_FRONT)) - overlay.color = limb.owner.dna.features["tail_color_1"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_BEHIND)) - overlay.color = limb.owner.dna.features["tail_color_1"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_FRONT_2)) - overlay.color = limb.owner.dna.features["tail_color_2"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_BEHIND_2)) - overlay.color = limb.owner.dna.features["tail_color_2"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_FRONT_3)) - overlay.color = limb.owner.dna.features["tail_color_3"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_BEHIND_3)) - overlay.color = limb.owner.dna.features["tail_color_3"] - return overlay - return ..() - -//core toggle -/datum/preference/toggle/tail - savefile_key = "has_tail" - savefile_identifier = PREFERENCE_CHARACTER - category = PREFERENCE_CATEGORY_SECONDARY_FEATURES - priority = PREFERENCE_PRIORITY_DEFAULT - -/datum/preference/toggle/tail/apply_to_human(mob/living/carbon/human/target, value) - if(value == FALSE) - target.dna.features["tail_lizard"] = /datum/sprite_accessory/tails/lizard/none::name - -/datum/preference/toggle/tail/create_default_value() - return FALSE - -/datum/species/regenerate_organs(mob/living/carbon/target, datum/species/old_species, replace_current = TRUE, list/excluded_zones, visual_only = FALSE) - . = ..() - if(target == null) - return - if(target.dna.features["tail_lizard"]) - if(target.dna.features["tail_lizard"] != /datum/sprite_accessory/tails/lizard/none::name && target.dna.features["tail_lizard"] != /datum/sprite_accessory/blank::name) - var/obj/item/organ/replacement = SSwardrobe.provide_type(/obj/item/organ/external/tail/lizard) - replacement.Insert(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) - return . - var/obj/item/organ/external/tail/lizard/old_part = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) - if(istype(old_part)) - old_part.Remove(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) - old_part.moveToNullspace() - -//sprite selection -/datum/preference/choiced/lizard_tail - category = PREFERENCE_CATEGORY_CLOTHING - relevant_external_organ = null - should_generate_icons = TRUE - main_feature_name = "Tail" - -/datum/preference/choiced/lizard_tail/is_accessible(datum/preferences/preferences) - . = ..() - var/has_tail = preferences.read_preference(/datum/preference/toggle/tail) - if(has_tail == TRUE) - return TRUE - return FALSE - -/datum/preference/choiced/lizard_tail/create_default_value() - return /datum/sprite_accessory/tails/lizard/none::name - -/datum/preference/choiced/lizard_tail/icon_for(value) - var/datum/sprite_accessory/sprite_accessory = SSaccessories.tails_list_lizard[value] - - var/icon/final_icon = icon('icons/mob/human/species/lizard/bodyparts.dmi', "lizard_chest_m", NORTH) - - if (sprite_accessory.icon_state != "none") - var/icon/markings_icon_1 = icon(sprite_accessory.icon, "m_tail_[sprite_accessory.icon_state]_BEHIND", NORTH) - markings_icon_1.Blend(COLOR_RED, ICON_MULTIPLY) - var/icon/markings_icon_2 = icon(sprite_accessory.icon, "m_tail_[sprite_accessory.icon_state]_BEHIND_2", NORTH) - markings_icon_2.Blend(COLOR_VIBRANT_LIME, ICON_MULTIPLY) - var/icon/markings_icon_3 = icon(sprite_accessory.icon, "m_tail_[sprite_accessory.icon_state]_BEHIND_3", NORTH) - markings_icon_3.Blend(COLOR_BLUE, ICON_MULTIPLY) - final_icon.Blend(markings_icon_1, ICON_OVERLAY) - final_icon.Blend(markings_icon_2, ICON_OVERLAY) - final_icon.Blend(markings_icon_3, ICON_OVERLAY) - // front breaker - var/icon/markings_icon_1_f = icon(sprite_accessory.icon, "m_tail_[sprite_accessory.icon_state]_FRONT", NORTH) - markings_icon_1_f.Blend(COLOR_RED, ICON_MULTIPLY) - var/icon/markings_icon_2_f = icon(sprite_accessory.icon, "m_tail_[sprite_accessory.icon_state]_FRONT_2", NORTH) - markings_icon_2_f.Blend(COLOR_VIBRANT_LIME, ICON_MULTIPLY) - var/icon/markings_icon_3_f = icon(sprite_accessory.icon, "m_tail_[sprite_accessory.icon_state]_FRONT_3", NORTH) - markings_icon_3_f.Blend(COLOR_BLUE, ICON_MULTIPLY) - final_icon.Blend(markings_icon_1_f, ICON_OVERLAY) - final_icon.Blend(markings_icon_2_f, ICON_OVERLAY) - final_icon.Blend(markings_icon_3_f, ICON_OVERLAY) - - //final_icon.Crop(4, 12, 28, 32) - //final_icon.Scale(32, 26) - //final_icon.Crop(-2, 1, 29, 32) - - return final_icon - - - - - -/// Standard bodymark fixing -/datum/bodypart_overlay/simple/body_marking/lizard - layers = EXTERNAL_ADJACENT | EXTERNAL_ADJACENT_2 | EXTERNAL_ADJACENT_3 - -/datum/bodypart_overlay/simple/body_marking/lizard/get_image(layer, obj/item/bodypart/limb) - if(limb == null) - return ..() - if(limb.owner == null) - return ..() - var/gender_string = (use_gender && limb.is_dimorphic) ? (limb.gender == MALE ? MALE : FEMALE + "_") : "" //we only got male and female sprites - if(layer == bitflag_to_layer(EXTERNAL_ADJACENT_2)) - return image(icon, gender_string + icon_state + "_" + limb.body_zone + "_2", layer = layer) - if(layer == bitflag_to_layer(EXTERNAL_ADJACENT_3)) - return image(icon, gender_string + icon_state + "_" + limb.body_zone + "_3", layer = layer) - return image(icon, gender_string + icon_state + "_" + limb.body_zone, layer = layer) - -/datum/bodypart_overlay/simple/body_marking/lizard/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) - if(limb == null) - return ..() - if(limb.owner == null) - return ..() - if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT)) - overlay.color = limb.owner.dna.features["body_markings_color_1"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_2)) - overlay.color = limb.owner.dna.features["body_markings_color_2"] - return overlay - else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_3)) - overlay.color = limb.owner.dna.features["body_markings_color_3"] - return overlay - return ..() - -/datum/preference/choiced/lizard_body_markings/create_default_value() - return /datum/sprite_accessory/lizard_markings/none::name - -//toggle prefs -/datum/preference/toggle/markings - savefile_key = "has_markings" - savefile_identifier = PREFERENCE_CHARACTER - category = PREFERENCE_CATEGORY_SECONDARY_FEATURES - priority = PREFERENCE_PRIORITY_DEFAULT - -/datum/preference/toggle/markings/apply_to_human(mob/living/carbon/human/target, value) - if(value == FALSE) - target.dna.features["lizard_markings"] = /datum/sprite_accessory/lizard_markings/none::name - -/datum/preference/toggle/markings/create_default_value() - return FALSE - -//toggle pref integration -/datum/preference/choiced/lizard_body_markings - category = PREFERENCE_CATEGORY_CLOTHING - -/datum/preference/choiced/lizard_body_markings/is_accessible(datum/preferences/preferences) - . = ..() - var/has_markings = preferences.read_preference(/datum/preference/toggle/markings) - if(has_markings == TRUE) - return TRUE - return FALSE - -//manually adding them now -/datum/species/add_body_markings(mob/living/carbon/human/hooman) - . = ..() - if(hooman.dna.features["lizard_markings"] && hooman.dna.features["lizard_markings"] != /datum/sprite_accessory/lizard_markings/none::name && hooman.dna.features["snout"] != /datum/sprite_accessory/blank::name) //loop through possible species markings - var/datum/bodypart_overlay/simple/body_marking/markings = new /datum/bodypart_overlay/simple/body_marking/lizard() // made to die... mostly because we cant use initial on lists but its convenient and organized - var/accessory_name = hooman.dna.features[markings.dna_feature_key] //get the accessory name from dna - var/datum/sprite_accessory/moth_markings/accessory = markings.get_accessory(accessory_name) //get the actual datum - - if(isnull(accessory)) - CRASH("Value: [accessory_name] did not have a corresponding sprite accessory!") - - for(var/obj/item/bodypart/part as anything in markings.applies_to) //check through our limbs - var/obj/item/bodypart/people_part = hooman.get_bodypart(initial(part.body_zone)) // and see if we have a compatible marking for that limb - - if(!people_part) - continue - - var/datum/bodypart_overlay/simple/body_marking/overlay = new /datum/bodypart_overlay/simple/body_marking/lizard() - - // Tell the overlay what it should look like - overlay.icon = accessory.icon - overlay.icon_state = accessory.icon_state - overlay.use_gender = accessory.gender_specific - overlay.draw_color = accessory.color_src ? hooman.dna.features["mcolor"] : null - - people_part.add_bodypart_overlay(overlay) diff --git a/modular_doppler/customization/code/accessory_overrides_moth.dm b/modular_doppler/customization/code/accessory_overrides_moth.dm deleted file mode 100644 index b71ab3f2e69f4..0000000000000 --- a/modular_doppler/customization/code/accessory_overrides_moth.dm +++ /dev/null @@ -1,81 +0,0 @@ -/// Moth bodymark fixing -/datum/bodypart_overlay/simple/body_marking/moth/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) - if(limb == null) - return ..() - if(limb.owner == null) - return ..() - var/color_intended = COLOR_WHITE - - var/tcol_1 = limb.owner.dna.features["moth_markings_color_1"] - var/tcol_2 = limb.owner.dna.features["moth_markings_color_2"] - var/tcol_3 = limb.owner.dna.features["moth_markings_color_3"] - if(tcol_1 && tcol_2 && tcol_3) - //this is beyond ugly but it works - var/r1 = hex2num(copytext(tcol_1, 2, 4)) / 255.0 - var/g1 = hex2num(copytext(tcol_1, 4, 6)) / 255.0 - var/b1 = hex2num(copytext(tcol_1, 6, 8)) / 255.0 - var/r2 = hex2num(copytext(tcol_2, 2, 4)) / 255.0 - var/g2 = hex2num(copytext(tcol_2, 4, 6)) / 255.0 - var/b2 = hex2num(copytext(tcol_2, 6, 8)) / 255.0 - var/r3 = hex2num(copytext(tcol_3, 2, 4)) / 255.0 - var/g3 = hex2num(copytext(tcol_3, 4, 6)) / 255.0 - var/b3 = hex2num(copytext(tcol_3, 6, 8)) / 255.0 - color_intended = list(r1,g1,b1, r2,g2,b2, r3,g3,b3) - overlay.color = color_intended - return overlay - - - -/// Moth wings recolorening -/datum/bodypart_overlay/mutant/wings/moth/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) - if(limb == null) - return ..() - if(limb.owner == null) - return ..() - var/color_intended = COLOR_WHITE - - var/tcol_1 = limb.owner.dna.features["moth_wings_color_1"] - var/tcol_2 = limb.owner.dna.features["moth_wings_color_2"] - var/tcol_3 = limb.owner.dna.features["moth_wings_color_3"] - if(tcol_1 && tcol_2 && tcol_3) - //this is beyond ugly but it works - var/r1 = hex2num(copytext(tcol_1, 2, 4)) / 255.0 - var/g1 = hex2num(copytext(tcol_1, 4, 6)) / 255.0 - var/b1 = hex2num(copytext(tcol_1, 6, 8)) / 255.0 - var/r2 = hex2num(copytext(tcol_2, 2, 4)) / 255.0 - var/g2 = hex2num(copytext(tcol_2, 4, 6)) / 255.0 - var/b2 = hex2num(copytext(tcol_2, 6, 8)) / 255.0 - var/r3 = hex2num(copytext(tcol_3, 2, 4)) / 255.0 - var/g3 = hex2num(copytext(tcol_3, 4, 6)) / 255.0 - var/b3 = hex2num(copytext(tcol_3, 6, 8)) / 255.0 - color_intended = list(r1,g1,b1, r2,g2,b2, r3,g3,b3) - overlay.color = color_intended - return overlay - - - -/// Moth antennae recolorening -/datum/bodypart_overlay/mutant/antennae/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) - if(limb == null) - return ..() - if(limb.owner == null) - return ..() - var/color_intended = COLOR_WHITE - - var/tcol_1 = limb.owner.dna.features["moth_antennae_color_1"] - var/tcol_2 = limb.owner.dna.features["moth_antennae_color_2"] - var/tcol_3 = limb.owner.dna.features["moth_antennae_color_3"] - if(tcol_1 && tcol_2 && tcol_3) - //this is beyond ugly but it works - var/r1 = hex2num(copytext(tcol_1, 2, 4)) / 255.0 - var/g1 = hex2num(copytext(tcol_1, 4, 6)) / 255.0 - var/b1 = hex2num(copytext(tcol_1, 6, 8)) / 255.0 - var/r2 = hex2num(copytext(tcol_2, 2, 4)) / 255.0 - var/g2 = hex2num(copytext(tcol_2, 4, 6)) / 255.0 - var/b2 = hex2num(copytext(tcol_2, 6, 8)) / 255.0 - var/r3 = hex2num(copytext(tcol_3, 2, 4)) / 255.0 - var/g3 = hex2num(copytext(tcol_3, 4, 6)) / 255.0 - var/b3 = hex2num(copytext(tcol_3, 6, 8)) / 255.0 - color_intended = list(r1,g1,b1, r2,g2,b2, r3,g3,b3) - overlay.color = color_intended - return overlay diff --git a/modular_doppler/customization/code/custom_accessories.dm b/modular_doppler/customization/code/custom_accessories.dm deleted file mode 100644 index 0fc28fc9c3b36..0000000000000 --- a/modular_doppler/customization/code/custom_accessories.dm +++ /dev/null @@ -1 +0,0 @@ -// This is where our bespoke fluff, IPC antennae, etc accessories should go. diff --git a/modular_doppler/customization/code/dropdowns_to_icons.dm b/modular_doppler/customization/code/dropdowns_to_icons.dm deleted file mode 100644 index a553e496c9df0..0000000000000 --- a/modular_doppler/customization/code/dropdowns_to_icons.dm +++ /dev/null @@ -1 +0,0 @@ -//wawa diff --git a/modular_doppler/customization/species/lizards/code/lizard_accessories.dm b/modular_doppler/customization/species/lizards/code/lizard_accessories.dm deleted file mode 100644 index 90a0771ffc063..0000000000000 --- a/modular_doppler/customization/species/lizards/code/lizard_accessories.dm +++ /dev/null @@ -1,16 +0,0 @@ -//snouts -/datum/sprite_accessory/lizard_markings - icon = 'modular_doppler/customization/species/lizards/icons/lizard_markings.dmi' - -/datum/sprite_accessory/snouts - icon = 'modular_doppler/customization/species/lizards/icons/lizard_external.dmi' - -/datum/sprite_accessory/frills - icon = 'modular_doppler/customization/species/lizards/icons/lizard_external.dmi' - -/datum/sprite_accessory/horns - icon = 'modular_doppler/customization/species/lizards/icons/lizard_external.dmi' - -/datum/sprite_accessory/tails/lizard - icon = 'modular_doppler/customization/species/lizards/icons/lizard_tails.dmi' - diff --git a/modular_doppler/customization/species/lizards/code/lizard_species.dm b/modular_doppler/customization/species/lizards/code/lizard_species.dm deleted file mode 100644 index 43c9e98275c6f..0000000000000 --- a/modular_doppler/customization/species/lizards/code/lizard_species.dm +++ /dev/null @@ -1 +0,0 @@ -//TODO: we may be able to remove this file diff --git a/modular_doppler/customization/species/lizards/icons/bodyparts.dmi b/modular_doppler/customization/species/lizards/icons/bodyparts.dmi deleted file mode 100644 index cf74d73796c8c..0000000000000 Binary files a/modular_doppler/customization/species/lizards/icons/bodyparts.dmi and /dev/null differ diff --git a/modular_doppler/customization/species/lizards/icons/lizard_external.dmi b/modular_doppler/customization/species/lizards/icons/lizard_external.dmi deleted file mode 100644 index ca7ad196b2293..0000000000000 Binary files a/modular_doppler/customization/species/lizards/icons/lizard_external.dmi and /dev/null differ diff --git a/modular_doppler/customization/species/scugs/code/slugcat_accessories.dm b/modular_doppler/customization/species/scugs/code/slugcat_accessories.dm deleted file mode 100644 index b95c1d478d172..0000000000000 --- a/modular_doppler/customization/species/scugs/code/slugcat_accessories.dm +++ /dev/null @@ -1,78 +0,0 @@ -//snouts -/datum/sprite_accessory/snouts/slugcat - icon = 'modular_doppler/customization/species/scugs/icons/slugcat_external.dmi' - name = "Slugcat" - icon_state = "scug_standard" - -/datum/sprite_accessory/snouts/slugcat/sharp - name = "Slugcat Sharp" - icon_state = "scug_sharp" - -/datum/sprite_accessory/snouts/slugcat/round - name = "Slugcat Round" - icon_state = "scug_round" - -//frills -/datum/sprite_accessory/frills/slugcat - icon = 'modular_doppler/customization/species/scugs/icons/slugcat_external.dmi' - name = "Slugcat" - icon_state = "scug_aquatic" - -/datum/sprite_accessory/frills/slugcat/sharp - name = "Slugcat Sharp" - icon_state = "scug_sharp" - -/datum/sprite_accessory/frills/slugcat/fluffy - name = "Slugcat Fluffy" - icon_state = "scug_fluffy" - -/datum/sprite_accessory/frills/slugcat/draconic - name = "Slugcat Draconic" - icon_state = "scug_dragon" - -//horns -/datum/sprite_accessory/horns/slugcat - icon = 'modular_doppler/customization/species/scugs/icons/slugcat_external.dmi' - name = "Slugcat" - icon_state = "scug_standard" - -/datum/sprite_accessory/horns/slugcat/tall - name = "Slugcat Tall" - icon_state = "scug_tall" - -/datum/sprite_accessory/horns/slugcat/sharp - name = "Slugcat Sharp" - icon_state = "scug_sharp" - -/datum/sprite_accessory/horns/slugcat/forward - name = "Slugcat Droopy" - icon_state = "scug_forward" - -/datum/sprite_accessory/horns/slugcat/flopped - name = "Slugcat Long Flop" - icon_state = "scug_flopped" - -/datum/sprite_accessory/horns/slugcat/fluffy - name = "Slugcat Fluffy" - icon_state = "scug_fluffy" - -/datum/sprite_accessory/horns/slugcat/short - name = "Slugcat Short" - icon_state = "scug_short" - -//tails -/datum/sprite_accessory/tails/lizard/slugcat - icon = 'modular_doppler/customization/species/scugs/icons/slugcat_tails.dmi' - name = "Slugcat" - icon_state = "scug_std" - -/datum/sprite_accessory/tails/lizard/slugcat/thick - name = "Slugcat Thick" - icon_state = "scug_thick" - -//body markings -/datum/sprite_accessory/lizard_markings/slugcat - icon = 'modular_doppler/customization/species/scugs/icons/slugcat_markings.dmi' - name = "Slugcat Underbelly" - icon_state = "scug_lbelly" - gender_specific = TRUE diff --git a/modular_doppler/customization/species/scugs/icons/slugcat_external.dmi b/modular_doppler/customization/species/scugs/icons/slugcat_external.dmi deleted file mode 100644 index 96fe02b359d76..0000000000000 Binary files a/modular_doppler/customization/species/scugs/icons/slugcat_external.dmi and /dev/null differ diff --git a/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_body_markings.dm b/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_body_markings.dm new file mode 100644 index 0000000000000..b093e9b7927be --- /dev/null +++ b/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_body_markings.dm @@ -0,0 +1,2 @@ +/datum/sprite_accessory/lizard_markings + icon = 'modular_doppler/modular_customization/accessories/icons/lizard/lizard_markings.dmi' diff --git a/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_frills.dm b/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_frills.dm new file mode 100644 index 0000000000000..590c3bf0df484 --- /dev/null +++ b/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_frills.dm @@ -0,0 +1,2 @@ +/datum/sprite_accessory/frills + icon = 'modular_doppler/modular_customization/accessories/icons/lizard/lizard_frills.dmi' diff --git a/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_horns.dm b/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_horns.dm new file mode 100644 index 0000000000000..da5cd89aab622 --- /dev/null +++ b/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_horns.dm @@ -0,0 +1,2 @@ +/datum/sprite_accessory/horns + icon = 'modular_doppler/modular_customization/accessories/icons/lizard/lizard_horns.dmi' diff --git a/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_snout.dm b/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_snout.dm new file mode 100644 index 0000000000000..00ac67399d324 --- /dev/null +++ b/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_snout.dm @@ -0,0 +1,2 @@ +/datum/sprite_accessory/snouts + icon = 'modular_doppler/modular_customization/accessories/icons/lizard/lizard_snout.dmi' diff --git a/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_tail.dm b/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_tail.dm new file mode 100644 index 0000000000000..41a19aa8ef5d0 --- /dev/null +++ b/modular_doppler/modular_customization/accessories/code/lizard_accessories/lizard_tail.dm @@ -0,0 +1,2 @@ +/datum/sprite_accessory/tails/lizard + icon = 'modular_doppler/modular_customization/accessories/icons/lizard/lizard_tail.dmi' diff --git a/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_body_markings.dm b/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_body_markings.dm new file mode 100644 index 0000000000000..eae00dc6aded6 --- /dev/null +++ b/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_body_markings.dm @@ -0,0 +1,5 @@ +/datum/sprite_accessory/lizard_markings/slugcat + icon = 'modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_markings.dmi' + name = "Slugcat Underbelly" + icon_state = "scug_lbelly" + gender_specific = TRUE diff --git a/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_frills.dm b/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_frills.dm new file mode 100644 index 0000000000000..e2ec556318d3a --- /dev/null +++ b/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_frills.dm @@ -0,0 +1,16 @@ +/datum/sprite_accessory/frills/slugcat + icon = 'modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_frills.dmi' + name = "Slugcat" + icon_state = "scug_aquatic" + +/datum/sprite_accessory/frills/slugcat/sharp + name = "Slugcat Sharp" + icon_state = "scug_sharp" + +/datum/sprite_accessory/frills/slugcat/fluffy + name = "Slugcat Fluffy" + icon_state = "scug_fluffy" + +/datum/sprite_accessory/frills/slugcat/draconic + name = "Slugcat Draconic" + icon_state = "scug_dragon" diff --git a/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_horns.dm b/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_horns.dm new file mode 100644 index 0000000000000..6eb862b9482fc --- /dev/null +++ b/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_horns.dm @@ -0,0 +1,28 @@ +/datum/sprite_accessory/horns/slugcat + icon = 'modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_horns.dmi' + name = "Slugcat" + icon_state = "scug_standard" + +/datum/sprite_accessory/horns/slugcat/tall + name = "Slugcat Tall" + icon_state = "scug_tall" + +/datum/sprite_accessory/horns/slugcat/sharp + name = "Slugcat Sharp" + icon_state = "scug_sharp" + +/datum/sprite_accessory/horns/slugcat/forward + name = "Slugcat Droopy" + icon_state = "scug_forward" + +/datum/sprite_accessory/horns/slugcat/flopped + name = "Slugcat Long Flop" + icon_state = "scug_flopped" + +/datum/sprite_accessory/horns/slugcat/fluffy + name = "Slugcat Fluffy" + icon_state = "scug_fluffy" + +/datum/sprite_accessory/horns/slugcat/short + name = "Slugcat Short" + icon_state = "scug_short" diff --git a/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_snout.dm b/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_snout.dm new file mode 100644 index 0000000000000..77a9300697b3c --- /dev/null +++ b/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_snout.dm @@ -0,0 +1,12 @@ +/datum/sprite_accessory/snouts/slugcat + icon = 'modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_snout.dmi' + name = "Slugcat" + icon_state = "scug_standard" + +/datum/sprite_accessory/snouts/slugcat/sharp + name = "Slugcat Sharp" + icon_state = "scug_sharp" + +/datum/sprite_accessory/snouts/slugcat/round + name = "Slugcat Round" + icon_state = "scug_round" diff --git a/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_tail.dm b/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_tail.dm new file mode 100644 index 0000000000000..0f3a6b566bc45 --- /dev/null +++ b/modular_doppler/modular_customization/accessories/code/slugcat_accessories/slugcat_tail.dm @@ -0,0 +1,8 @@ +/datum/sprite_accessory/tails/lizard/slugcat + icon = 'modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_tail.dmi' + name = "Slugcat" + icon_state = "scug_std" + +/datum/sprite_accessory/tails/lizard/slugcat/thick + name = "Slugcat Thick" + icon_state = "scug_thick" diff --git a/modular_doppler/modular_customization/accessories/code/~overrides/code/overrides.dm b/modular_doppler/modular_customization/accessories/code/~overrides/code/overrides.dm new file mode 100644 index 0000000000000..ac35bea49e94f --- /dev/null +++ b/modular_doppler/modular_customization/accessories/code/~overrides/code/overrides.dm @@ -0,0 +1,16 @@ +/datum/species/get_features() + var/list/features = ..() + + features += /datum/preference/choiced/lizard_snout + features += /datum/preference/choiced/lizard_frills + features += /datum/preference/choiced/lizard_horns + features += /datum/preference/choiced/lizard_tail + features += /datum/preference/choiced/lizard_body_markings + + GLOB.features_by_species[type] = features + + return features + +/datum/bodypart_overlay/mutant + /// Annoying annoying annoyed annoyance - this is to avoid a massive headache trying to work around tails + var/feature_key_sprite = null diff --git a/modular_doppler/customization/icons/fallbacks.dmi b/modular_doppler/modular_customization/accessories/code/~overrides/icons/fallbacks.dmi similarity index 100% rename from modular_doppler/customization/icons/fallbacks.dmi rename to modular_doppler/modular_customization/accessories/code/~overrides/icons/fallbacks.dmi diff --git a/modular_doppler/modular_customization/accessories/icons/lizard/lizard_frills.dmi b/modular_doppler/modular_customization/accessories/icons/lizard/lizard_frills.dmi new file mode 100644 index 0000000000000..8ac09aa9f7189 Binary files /dev/null and b/modular_doppler/modular_customization/accessories/icons/lizard/lizard_frills.dmi differ diff --git a/modular_doppler/modular_customization/accessories/icons/lizard/lizard_horns.dmi b/modular_doppler/modular_customization/accessories/icons/lizard/lizard_horns.dmi new file mode 100644 index 0000000000000..d5381a2cb6132 Binary files /dev/null and b/modular_doppler/modular_customization/accessories/icons/lizard/lizard_horns.dmi differ diff --git a/modular_doppler/customization/species/lizards/icons/lizard_markings.dmi b/modular_doppler/modular_customization/accessories/icons/lizard/lizard_markings.dmi similarity index 100% rename from modular_doppler/customization/species/lizards/icons/lizard_markings.dmi rename to modular_doppler/modular_customization/accessories/icons/lizard/lizard_markings.dmi diff --git a/modular_doppler/modular_customization/accessories/icons/lizard/lizard_snout.dmi b/modular_doppler/modular_customization/accessories/icons/lizard/lizard_snout.dmi new file mode 100644 index 0000000000000..5a56352719818 Binary files /dev/null and b/modular_doppler/modular_customization/accessories/icons/lizard/lizard_snout.dmi differ diff --git a/modular_doppler/customization/species/lizards/icons/lizard_tails.dmi b/modular_doppler/modular_customization/accessories/icons/lizard/lizard_tail.dmi similarity index 100% rename from modular_doppler/customization/species/lizards/icons/lizard_tails.dmi rename to modular_doppler/modular_customization/accessories/icons/lizard/lizard_tail.dmi diff --git a/modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_frills.dmi b/modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_frills.dmi new file mode 100644 index 0000000000000..b6a78a6564c90 Binary files /dev/null and b/modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_frills.dmi differ diff --git a/modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_horns.dmi b/modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_horns.dmi new file mode 100644 index 0000000000000..83cf2eeeeeee7 Binary files /dev/null and b/modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_horns.dmi differ diff --git a/modular_doppler/customization/species/scugs/icons/slugcat_markings.dmi b/modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_markings.dmi similarity index 100% rename from modular_doppler/customization/species/scugs/icons/slugcat_markings.dmi rename to modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_markings.dmi diff --git a/modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_snout.dmi b/modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_snout.dmi new file mode 100644 index 0000000000000..131aba4a5a56a Binary files /dev/null and b/modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_snout.dmi differ diff --git a/modular_doppler/customization/species/scugs/icons/slugcat_tails.dmi b/modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_tail.dmi similarity index 100% rename from modular_doppler/customization/species/scugs/icons/slugcat_tails.dmi rename to modular_doppler/modular_customization/accessories/icons/slugcat/slugcat_tail.dmi diff --git a/modular_doppler/customization/code/bodypart_overrides.dm b/modular_doppler/modular_customization/bodypart/bodypart_overrides.dm similarity index 100% rename from modular_doppler/customization/code/bodypart_overrides.dm rename to modular_doppler/modular_customization/bodypart/bodypart_overrides.dm diff --git a/modular_doppler/modular_customization/preferences/body_marking_lizard.dm b/modular_doppler/modular_customization/preferences/body_marking_lizard.dm new file mode 100644 index 0000000000000..bcadc48e0fde7 --- /dev/null +++ b/modular_doppler/modular_customization/preferences/body_marking_lizard.dm @@ -0,0 +1,87 @@ + +/// Standard bodymark fixing +/datum/bodypart_overlay/simple/body_marking/lizard + layers = EXTERNAL_ADJACENT | EXTERNAL_ADJACENT_2 | EXTERNAL_ADJACENT_3 + +/datum/bodypart_overlay/simple/body_marking/lizard/get_image(layer, obj/item/bodypart/limb) + if(limb == null) + return ..() + if(limb.owner == null) + return ..() + var/gender_string = (use_gender && limb.is_dimorphic) ? (limb.gender == MALE ? MALE : FEMALE + "_") : "" //we only got male and female sprites + if(layer == bitflag_to_layer(EXTERNAL_ADJACENT_2)) + return image(icon, gender_string + icon_state + "_" + limb.body_zone + "_2", layer = layer) + if(layer == bitflag_to_layer(EXTERNAL_ADJACENT_3)) + return image(icon, gender_string + icon_state + "_" + limb.body_zone + "_3", layer = layer) + return image(icon, gender_string + icon_state + "_" + limb.body_zone, layer = layer) + +/datum/bodypart_overlay/simple/body_marking/lizard/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) + if(limb == null) + return ..() + if(limb.owner == null) + return ..() + if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT)) + overlay.color = limb.owner.dna.features["body_markings_color_1"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_2)) + overlay.color = limb.owner.dna.features["body_markings_color_2"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_3)) + overlay.color = limb.owner.dna.features["body_markings_color_3"] + return overlay + return ..() + +/datum/preference/choiced/lizard_body_markings/create_default_value() + return /datum/sprite_accessory/lizard_markings/none::name + +//toggle prefs +/datum/preference/toggle/markings + savefile_key = "has_markings" + savefile_identifier = PREFERENCE_CHARACTER + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES + priority = PREFERENCE_PRIORITY_DEFAULT + +/datum/preference/toggle/markings/apply_to_human(mob/living/carbon/human/target, value) + if(value == FALSE) + target.dna.features["lizard_markings"] = /datum/sprite_accessory/lizard_markings/none::name + +/datum/preference/toggle/markings/create_default_value() + return FALSE + +//toggle pref integration +/datum/preference/choiced/lizard_body_markings + category = PREFERENCE_CATEGORY_CLOTHING + +/datum/preference/choiced/lizard_body_markings/is_accessible(datum/preferences/preferences) + . = ..() + var/has_markings = preferences.read_preference(/datum/preference/toggle/markings) + if(has_markings == TRUE) + return TRUE + return FALSE + +//manually adding them now +/datum/species/add_body_markings(mob/living/carbon/human/hooman) + . = ..() + if((hooman.dna.features["lizard_markings"] && hooman.dna.features["lizard_markings"] != /datum/sprite_accessory/lizard_markings/none::name) && (hooman.client?.prefs.read_preference(/datum/preference/toggle/markings))) + var/datum/bodypart_overlay/simple/body_marking/markings = new /datum/bodypart_overlay/simple/body_marking/lizard() // made to die... mostly because we cant use initial on lists but its convenient and organized + var/accessory_name = hooman.dna.features[markings.dna_feature_key] //get the accessory name from dna + var/datum/sprite_accessory/moth_markings/accessory = markings.get_accessory(accessory_name) //get the actual datum + + if(isnull(accessory)) + CRASH("Value: [accessory_name] did not have a corresponding sprite accessory!") + + for(var/obj/item/bodypart/part as anything in markings.applies_to) //check through our limbs + var/obj/item/bodypart/people_part = hooman.get_bodypart(initial(part.body_zone)) // and see if we have a compatible marking for that limb + + if(!people_part) + continue + + var/datum/bodypart_overlay/simple/body_marking/overlay = new /datum/bodypart_overlay/simple/body_marking/lizard() + + // Tell the overlay what it should look like + overlay.icon = accessory.icon + overlay.icon_state = accessory.icon_state + overlay.use_gender = accessory.gender_specific + overlay.draw_color = accessory.color_src ? hooman.dna.features["mcolor"] : null + + people_part.add_bodypart_overlay(overlay) diff --git a/modular_doppler/modular_customization/preferences/body_marking_moth.dm b/modular_doppler/modular_customization/preferences/body_marking_moth.dm new file mode 100644 index 0000000000000..f7194e1b0023c --- /dev/null +++ b/modular_doppler/modular_customization/preferences/body_marking_moth.dm @@ -0,0 +1,25 @@ +/// Moth bodymark fixing +/datum/bodypart_overlay/simple/body_marking/moth/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) + if(limb == null) + return ..() + if(limb.owner == null) + return ..() + var/color_intended = COLOR_WHITE + + var/tcol_1 = limb.owner.dna.features["moth_markings_color_1"] + var/tcol_2 = limb.owner.dna.features["moth_markings_color_2"] + var/tcol_3 = limb.owner.dna.features["moth_markings_color_3"] + if(tcol_1 && tcol_2 && tcol_3) + //this is beyond ugly but it works + var/r1 = hex2num(copytext(tcol_1, 2, 4)) / 255.0 + var/g1 = hex2num(copytext(tcol_1, 4, 6)) / 255.0 + var/b1 = hex2num(copytext(tcol_1, 6, 8)) / 255.0 + var/r2 = hex2num(copytext(tcol_2, 2, 4)) / 255.0 + var/g2 = hex2num(copytext(tcol_2, 4, 6)) / 255.0 + var/b2 = hex2num(copytext(tcol_2, 6, 8)) / 255.0 + var/r3 = hex2num(copytext(tcol_3, 2, 4)) / 255.0 + var/g3 = hex2num(copytext(tcol_3, 4, 6)) / 255.0 + var/b3 = hex2num(copytext(tcol_3, 6, 8)) / 255.0 + color_intended = list(r1,g1,b1, r2,g2,b2, r3,g3,b3) + overlay.color = color_intended + return overlay diff --git a/modular_doppler/modular_customization/preferences/frills.dm b/modular_doppler/modular_customization/preferences/frills.dm new file mode 100644 index 0000000000000..1955ad840eb65 --- /dev/null +++ b/modular_doppler/modular_customization/preferences/frills.dm @@ -0,0 +1,62 @@ +/// Frills fixing +/obj/item/organ/external/frills + name = "frills" + +/datum/bodypart_overlay/mutant/frills + layers = EXTERNAL_ADJACENT | EXTERNAL_ADJACENT_2 | EXTERNAL_ADJACENT_3 + +/datum/bodypart_overlay/mutant/frills/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) + if(limb == null) + return ..() + if(limb.owner == null) + return ..() + if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT)) + overlay.color = limb.owner.dna.features["frills_color_1"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_2)) + overlay.color = limb.owner.dna.features["frills_color_2"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_3)) + overlay.color = limb.owner.dna.features["frills_color_3"] + return overlay + return ..() + +//core toggle +/datum/preference/toggle/frills + savefile_key = "has_frills" + savefile_identifier = PREFERENCE_CHARACTER + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES + priority = PREFERENCE_PRIORITY_DEFAULT + +/datum/preference/toggle/frills/apply_to_human(mob/living/carbon/human/target, value) + if(value == FALSE) + target.dna.features["frills"] = /datum/sprite_accessory/frills/none::name + +/datum/preference/toggle/frills/create_default_value() + return FALSE + +/datum/species/regenerate_organs(mob/living/carbon/target, datum/species/old_species, replace_current = TRUE, list/excluded_zones, visual_only = FALSE) + . = ..() + if(target.dna.features["frills"]) + if(target.dna.features["frills"] != /datum/sprite_accessory/frills/none::name && target.dna.features["frills"] != /datum/sprite_accessory/blank::name) + var/obj/item/organ/replacement = SSwardrobe.provide_type(/obj/item/organ/external/frills) + replacement.Insert(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) + return . + var/obj/item/organ/old_part = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_FRILLS) + if(old_part) + old_part.Remove(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) + old_part.moveToNullspace() + +//sprite selection +/datum/preference/choiced/lizard_frills + category = PREFERENCE_CATEGORY_CLOTHING + +/datum/preference/choiced/lizard_frills/is_accessible(datum/preferences/preferences) + . = ..() + var/has_frills = preferences.read_preference(/datum/preference/toggle/frills) + if(has_frills == TRUE) + return TRUE + return FALSE + +/datum/preference/choiced/lizard_frills/create_default_value() + return /datum/sprite_accessory/frills/none::name diff --git a/modular_doppler/modular_customization/preferences/horns.dm b/modular_doppler/modular_customization/preferences/horns.dm new file mode 100644 index 0000000000000..e47ea8fbc80aa --- /dev/null +++ b/modular_doppler/modular_customization/preferences/horns.dm @@ -0,0 +1,62 @@ +/// Horns fixing +/obj/item/organ/external/horns + name = "horns" + +/datum/bodypart_overlay/mutant/horns + layers = EXTERNAL_ADJACENT | EXTERNAL_ADJACENT_2 | EXTERNAL_ADJACENT_3 + +/datum/bodypart_overlay/mutant/horns/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) + if(limb == null) + return ..() + if(limb.owner == null) + return ..() + if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT)) + overlay.color = limb.owner.dna.features["horns_color_1"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_2)) + overlay.color = limb.owner.dna.features["horns_color_2"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_3)) + overlay.color = limb.owner.dna.features["horns_color_3"] + return overlay + return ..() + +//core toggle +/datum/preference/toggle/horns + savefile_key = "has_horns" + savefile_identifier = PREFERENCE_CHARACTER + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES + priority = PREFERENCE_PRIORITY_DEFAULT + +/datum/preference/toggle/horns/apply_to_human(mob/living/carbon/human/target, value) + if(value == FALSE) + target.dna.features["horns"] = /datum/sprite_accessory/horns/none::name + +/datum/preference/toggle/horns/create_default_value() + return FALSE + +/datum/species/regenerate_organs(mob/living/carbon/target, datum/species/old_species, replace_current = TRUE, list/excluded_zones, visual_only = FALSE) + . = ..() + if(target.dna.features["horns"]) + if(target.dna.features["horns"] != /datum/sprite_accessory/horns/none::name && target.dna.features["horns"] != /datum/sprite_accessory/blank::name) + var/obj/item/organ/replacement = SSwardrobe.provide_type(/obj/item/organ/external/horns) + replacement.Insert(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) + return . + var/obj/item/organ/old_part = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_HORNS) + if(old_part) + old_part.Remove(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) + old_part.moveToNullspace() + +//sprite selection +/datum/preference/choiced/lizard_horns + category = PREFERENCE_CATEGORY_CLOTHING + +/datum/preference/choiced/lizard_horns/is_accessible(datum/preferences/preferences) + . = ..() + var/has_horns = preferences.read_preference(/datum/preference/toggle/horns) + if(has_horns == TRUE) + return TRUE + return FALSE + +/datum/preference/choiced/lizard_horns/create_default_value() + return /datum/sprite_accessory/horns/none::name diff --git a/modular_doppler/modular_customization/preferences/moth_antennae.dm b/modular_doppler/modular_customization/preferences/moth_antennae.dm new file mode 100644 index 0000000000000..ea3e662f3b004 --- /dev/null +++ b/modular_doppler/modular_customization/preferences/moth_antennae.dm @@ -0,0 +1,25 @@ +/// Moth antennae recolorening +/datum/bodypart_overlay/mutant/antennae/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) + if(limb == null) + return ..() + if(limb.owner == null) + return ..() + var/color_intended = COLOR_WHITE + + var/tcol_1 = limb.owner.dna.features["moth_antennae_color_1"] + var/tcol_2 = limb.owner.dna.features["moth_antennae_color_2"] + var/tcol_3 = limb.owner.dna.features["moth_antennae_color_3"] + if(tcol_1 && tcol_2 && tcol_3) + //this is beyond ugly but it works + var/r1 = hex2num(copytext(tcol_1, 2, 4)) / 255.0 + var/g1 = hex2num(copytext(tcol_1, 4, 6)) / 255.0 + var/b1 = hex2num(copytext(tcol_1, 6, 8)) / 255.0 + var/r2 = hex2num(copytext(tcol_2, 2, 4)) / 255.0 + var/g2 = hex2num(copytext(tcol_2, 4, 6)) / 255.0 + var/b2 = hex2num(copytext(tcol_2, 6, 8)) / 255.0 + var/r3 = hex2num(copytext(tcol_3, 2, 4)) / 255.0 + var/g3 = hex2num(copytext(tcol_3, 4, 6)) / 255.0 + var/b3 = hex2num(copytext(tcol_3, 6, 8)) / 255.0 + color_intended = list(r1,g1,b1, r2,g2,b2, r3,g3,b3) + overlay.color = color_intended + return overlay diff --git a/modular_doppler/modular_customization/preferences/moth_wings.dm b/modular_doppler/modular_customization/preferences/moth_wings.dm new file mode 100644 index 0000000000000..4cec1e75bbbf5 --- /dev/null +++ b/modular_doppler/modular_customization/preferences/moth_wings.dm @@ -0,0 +1,25 @@ +/// Moth wings recolorening +/datum/bodypart_overlay/mutant/wings/moth/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) + if(limb == null) + return ..() + if(limb.owner == null) + return ..() + var/color_intended = COLOR_WHITE + + var/tcol_1 = limb.owner.dna.features["moth_wings_color_1"] + var/tcol_2 = limb.owner.dna.features["moth_wings_color_2"] + var/tcol_3 = limb.owner.dna.features["moth_wings_color_3"] + if(tcol_1 && tcol_2 && tcol_3) + //this is beyond ugly but it works + var/r1 = hex2num(copytext(tcol_1, 2, 4)) / 255.0 + var/g1 = hex2num(copytext(tcol_1, 4, 6)) / 255.0 + var/b1 = hex2num(copytext(tcol_1, 6, 8)) / 255.0 + var/r2 = hex2num(copytext(tcol_2, 2, 4)) / 255.0 + var/g2 = hex2num(copytext(tcol_2, 4, 6)) / 255.0 + var/b2 = hex2num(copytext(tcol_2, 6, 8)) / 255.0 + var/r3 = hex2num(copytext(tcol_3, 2, 4)) / 255.0 + var/g3 = hex2num(copytext(tcol_3, 4, 6)) / 255.0 + var/b3 = hex2num(copytext(tcol_3, 6, 8)) / 255.0 + color_intended = list(r1,g1,b1, r2,g2,b2, r3,g3,b3) + overlay.color = color_intended + return overlay diff --git a/modular_doppler/modular_customization/preferences/snout.dm b/modular_doppler/modular_customization/preferences/snout.dm new file mode 100644 index 0000000000000..6576957e51992 --- /dev/null +++ b/modular_doppler/modular_customization/preferences/snout.dm @@ -0,0 +1,62 @@ +/// Snout fixing +/obj/item/organ/external/snout + name = "snout" + +/datum/bodypart_overlay/mutant/snout + layers = EXTERNAL_ADJACENT | EXTERNAL_ADJACENT_2 | EXTERNAL_ADJACENT_3 + +/datum/bodypart_overlay/mutant/snout/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) + if(limb == null) + return ..() + if(limb.owner == null) + return ..() + if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT)) + overlay.color = limb.owner.dna.features["snout_color_1"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_2)) + overlay.color = limb.owner.dna.features["snout_color_2"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_ADJACENT_3)) + overlay.color = limb.owner.dna.features["snout_color_3"] + return overlay + return ..() + +//core toggle +/datum/preference/toggle/snout + savefile_key = "has_snout" + savefile_identifier = PREFERENCE_CHARACTER + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES + priority = PREFERENCE_PRIORITY_DEFAULT + +/datum/preference/toggle/snout/apply_to_human(mob/living/carbon/human/target, value) + if(value == FALSE) + target.dna.features["snout"] = /datum/sprite_accessory/snouts/none::name + +/datum/preference/toggle/snout/create_default_value() + return FALSE + +/datum/species/regenerate_organs(mob/living/carbon/target, datum/species/old_species, replace_current = TRUE, list/excluded_zones, visual_only = FALSE) + . = ..() + if(target.dna.features["snout"]) + if(target.dna.features["snout"] != /datum/sprite_accessory/snouts/none::name && target.dna.features["snout"] != /datum/sprite_accessory/blank::name) + var/obj/item/organ/replacement = SSwardrobe.provide_type(/obj/item/organ/external/snout) + replacement.Insert(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) + return . + var/obj/item/organ/old_part = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_SNOUT) + if(old_part) + old_part.Remove(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) + old_part.moveToNullspace() + +//sprite selection +/datum/preference/choiced/lizard_snout + category = PREFERENCE_CATEGORY_CLOTHING + +/datum/preference/choiced/lizard_snout/is_accessible(datum/preferences/preferences) + . = ..() + var/has_snout = preferences.read_preference(/datum/preference/toggle/snout) + if(has_snout == TRUE) + return TRUE + return FALSE + +/datum/preference/choiced/lizard_snout/create_default_value() + return /datum/sprite_accessory/snouts/none::name diff --git a/modular_doppler/modular_customization/preferences/tail.dm b/modular_doppler/modular_customization/preferences/tail.dm new file mode 100644 index 0000000000000..09d2385a5b935 --- /dev/null +++ b/modular_doppler/modular_customization/preferences/tail.dm @@ -0,0 +1,110 @@ + +/// Tails fixing +/obj/item/organ/external/tail/lizard + name = "tail" + +/datum/bodypart_overlay/mutant/tail/lizard + layers = EXTERNAL_FRONT | EXTERNAL_FRONT_2 | EXTERNAL_FRONT_3 | EXTERNAL_BEHIND | EXTERNAL_BEHIND_2 | EXTERNAL_BEHIND_3 + feature_key_sprite = "tail" + +/datum/bodypart_overlay/mutant/tail/lizard/color_image(image/overlay, draw_layer, obj/item/bodypart/limb) + if(limb == null) + return ..() + if(limb.owner == null) + return ..() + if(draw_layer == bitflag_to_layer(EXTERNAL_FRONT)) + overlay.color = limb.owner.dna.features["tail_color_1"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_BEHIND)) + overlay.color = limb.owner.dna.features["tail_color_1"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_FRONT_2)) + overlay.color = limb.owner.dna.features["tail_color_2"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_BEHIND_2)) + overlay.color = limb.owner.dna.features["tail_color_2"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_FRONT_3)) + overlay.color = limb.owner.dna.features["tail_color_3"] + return overlay + else if(draw_layer == bitflag_to_layer(EXTERNAL_BEHIND_3)) + overlay.color = limb.owner.dna.features["tail_color_3"] + return overlay + return ..() + +//core toggle +/datum/preference/toggle/tail + savefile_key = "has_tail" + savefile_identifier = PREFERENCE_CHARACTER + category = PREFERENCE_CATEGORY_SECONDARY_FEATURES + priority = PREFERENCE_PRIORITY_DEFAULT + +/datum/preference/toggle/tail/apply_to_human(mob/living/carbon/human/target, value) + if(value == FALSE) + target.dna.features["tail_lizard"] = /datum/sprite_accessory/tails/lizard/none::name + +/datum/preference/toggle/tail/create_default_value() + return FALSE + +/datum/species/regenerate_organs(mob/living/carbon/target, datum/species/old_species, replace_current = TRUE, list/excluded_zones, visual_only = FALSE) + . = ..() + if(target == null) + return + if(target.dna.features["tail_lizard"]) + if(target.dna.features["tail_lizard"] != /datum/sprite_accessory/tails/lizard/none::name && target.dna.features["tail_lizard"] != /datum/sprite_accessory/blank::name) + var/obj/item/organ/replacement = SSwardrobe.provide_type(/obj/item/organ/external/tail/lizard) + replacement.Insert(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) + return . + var/obj/item/organ/external/tail/lizard/old_part = target.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL) + if(istype(old_part)) + old_part.Remove(target, special = TRUE, movement_flags = DELETE_IF_REPLACED) + old_part.moveToNullspace() + +//sprite selection +/datum/preference/choiced/lizard_tail + category = PREFERENCE_CATEGORY_CLOTHING + relevant_external_organ = null + should_generate_icons = TRUE + main_feature_name = "Tail" + +/datum/preference/choiced/lizard_tail/is_accessible(datum/preferences/preferences) + . = ..() + var/has_tail = preferences.read_preference(/datum/preference/toggle/tail) + if(has_tail == TRUE) + return TRUE + return FALSE + +/datum/preference/choiced/lizard_tail/create_default_value() + return /datum/sprite_accessory/tails/lizard/none::name + +/datum/preference/choiced/lizard_tail/icon_for(value) + var/datum/sprite_accessory/sprite_accessory = SSaccessories.tails_list_lizard[value] + + var/icon/final_icon = icon('icons/mob/human/species/lizard/bodyparts.dmi', "lizard_chest_m", NORTH) + + if (sprite_accessory.icon_state != "none") + var/icon/markings_icon_1 = icon(sprite_accessory.icon, "m_tail_[sprite_accessory.icon_state]_BEHIND", NORTH) + markings_icon_1.Blend(COLOR_RED, ICON_MULTIPLY) + var/icon/markings_icon_2 = icon(sprite_accessory.icon, "m_tail_[sprite_accessory.icon_state]_BEHIND_2", NORTH) + markings_icon_2.Blend(COLOR_VIBRANT_LIME, ICON_MULTIPLY) + var/icon/markings_icon_3 = icon(sprite_accessory.icon, "m_tail_[sprite_accessory.icon_state]_BEHIND_3", NORTH) + markings_icon_3.Blend(COLOR_BLUE, ICON_MULTIPLY) + final_icon.Blend(markings_icon_1, ICON_OVERLAY) + final_icon.Blend(markings_icon_2, ICON_OVERLAY) + final_icon.Blend(markings_icon_3, ICON_OVERLAY) + // front breaker + var/icon/markings_icon_1_f = icon(sprite_accessory.icon, "m_tail_[sprite_accessory.icon_state]_FRONT", NORTH) + markings_icon_1_f.Blend(COLOR_RED, ICON_MULTIPLY) + var/icon/markings_icon_2_f = icon(sprite_accessory.icon, "m_tail_[sprite_accessory.icon_state]_FRONT_2", NORTH) + markings_icon_2_f.Blend(COLOR_VIBRANT_LIME, ICON_MULTIPLY) + var/icon/markings_icon_3_f = icon(sprite_accessory.icon, "m_tail_[sprite_accessory.icon_state]_FRONT_3", NORTH) + markings_icon_3_f.Blend(COLOR_BLUE, ICON_MULTIPLY) + final_icon.Blend(markings_icon_1_f, ICON_OVERLAY) + final_icon.Blend(markings_icon_2_f, ICON_OVERLAY) + final_icon.Blend(markings_icon_3_f, ICON_OVERLAY) + + //final_icon.Crop(4, 12, 28, 32) + //final_icon.Scale(32, 26) + //final_icon.Crop(-2, 1, 29, 32) + + return final_icon diff --git a/modular_doppler/customization/code/tri_color_prefs.dm b/modular_doppler/modular_customization/tri_color/tri_color_prefs.dm similarity index 100% rename from modular_doppler/customization/code/tri_color_prefs.dm rename to modular_doppler/modular_customization/tri_color/tri_color_prefs.dm diff --git a/modular_doppler/customization/code/tri_color_prefs_bespoke.dm b/modular_doppler/modular_customization/tri_color/tri_color_prefs_bespoke.dm similarity index 100% rename from modular_doppler/customization/code/tri_color_prefs_bespoke.dm rename to modular_doppler/modular_customization/tri_color/tri_color_prefs_bespoke.dm diff --git a/modular_doppler/modular_species/species_types/monkey/monkeys.dm b/modular_doppler/modular_species/species_types/monkey/monkeys.dm new file mode 100644 index 0000000000000..241712e46bd41 --- /dev/null +++ b/modular_doppler/modular_species/species_types/monkey/monkeys.dm @@ -0,0 +1,4 @@ +/datum/species/monkey/randomize_features(mob/living/carbon/human/human_mob) + var/list/features = ..() + features["tail_monkey"] = "Monkey" + return features diff --git a/modular_doppler/hearthkin/primitive_catgirls/code/species.dm b/modular_doppler/modular_species/species_types/primitive_demihuman/primitive_demihuman.dm similarity index 100% rename from modular_doppler/hearthkin/primitive_catgirls/code/species.dm rename to modular_doppler/modular_species/species_types/primitive_demihuman/primitive_demihuman.dm diff --git a/modular_doppler/customization/species/scugs/icons/bodyparts.dmi b/modular_doppler/modular_species/species_types/slugcats/icons/bodyparts.dmi similarity index 100% rename from modular_doppler/customization/species/scugs/icons/bodyparts.dmi rename to modular_doppler/modular_species/species_types/slugcats/icons/bodyparts.dmi diff --git a/modular_doppler/customization/species/scugs/icons/slugcat_eyes.dmi b/modular_doppler/modular_species/species_types/slugcats/icons/slugcat_eyes.dmi similarity index 100% rename from modular_doppler/customization/species/scugs/icons/slugcat_eyes.dmi rename to modular_doppler/modular_species/species_types/slugcats/icons/slugcat_eyes.dmi diff --git a/modular_doppler/customization/species/scugs/code/slugcat_species.dm b/modular_doppler/modular_species/species_types/slugcats/slugcat.dm similarity index 96% rename from modular_doppler/customization/species/scugs/code/slugcat_species.dm rename to modular_doppler/modular_species/species_types/slugcats/slugcat.dm index 18680d4f4babb..83fa6be922d3a 100644 --- a/modular_doppler/customization/species/scugs/code/slugcat_species.dm +++ b/modular_doppler/modular_species/species_types/slugcats/slugcat.dm @@ -29,7 +29,7 @@ payday_modifier = 1.0 changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT inert_mutation = /datum/mutation/human/mute - death_sound = 'modular_doppler/customization/species/scugs/sounds/scugdeath.ogg' + death_sound = 'modular_doppler/modular_species/species_types/slugcats/sounds/scugdeath.ogg' species_language_holder = /datum/language_holder/slugcat digitigrade_customization = DIGITIGRADE_OPTIONAL @@ -45,7 +45,7 @@ /// SOUNDS BREAKER /datum/species/slugcat/get_scream_sound(mob/living/carbon/human/scug) return pick( - 'modular_doppler/customization/species/scugs/sounds/scugscream_1.ogg', + 'modular_doppler/modular_species/species_types/slugcats/sounds/scugscream_1.ogg', ) /datum/species/slugcat/get_cough_sound(mob/living/carbon/human/scug) @@ -85,7 +85,7 @@ return 'sound/voice/human/male_sneeze1.ogg' /datum/species/lizard/get_laugh_sound(mob/living/carbon/human/scug) - return 'modular_doppler/customization/species/scugs/sounds/scuglaugh_1.ogg' + return 'modular_doppler/modular_species/species_types/slugcats/sounds/scuglaugh_1.ogg' /datum/species/lizard/get_sigh_sound(mob/living/carbon/human/scug) if(scug.physique == FEMALE) diff --git a/modular_doppler/customization/species/scugs/code/slugcat_bodyparts.dm b/modular_doppler/modular_species/species_types/slugcats/slugcat_bodyparts.dm similarity index 58% rename from modular_doppler/customization/species/scugs/code/slugcat_bodyparts.dm rename to modular_doppler/modular_species/species_types/slugcats/slugcat_bodyparts.dm index ebcfcf5c86eaf..34d0760a4aa31 100644 --- a/modular_doppler/customization/species/scugs/code/slugcat_bodyparts.dm +++ b/modular_doppler/modular_species/species_types/slugcats/slugcat_bodyparts.dm @@ -1,24 +1,24 @@ /obj/item/bodypart/head/slugcat - icon_greyscale = 'modular_doppler/customization/species/scugs/icons/bodyparts.dmi' + icon_greyscale = 'modular_doppler/modular_species/species_types/slugcats/icons/bodyparts.dmi' limb_id = SPECIES_SLUGCAT is_dimorphic = FALSE - eyes_icon = 'modular_doppler/customization/species/scugs/icons/slugcat_eyes.dmi' + eyes_icon = 'modular_doppler/modular_species/species_types/slugcats/icons/slugcat_eyes.dmi' /obj/item/bodypart/chest/slugcat - icon_greyscale = 'modular_doppler/customization/species/scugs/icons/bodyparts.dmi' + icon_greyscale = 'modular_doppler/modular_species/species_types/slugcats/icons/bodyparts.dmi' limb_id = SPECIES_SLUGCAT is_dimorphic = TRUE /obj/item/bodypart/arm/left/lizard/slugcat - icon_greyscale = 'modular_doppler/customization/species/scugs/icons/bodyparts.dmi' + icon_greyscale = 'modular_doppler/modular_species/species_types/slugcats/icons/bodyparts.dmi' limb_id = SPECIES_SLUGCAT /obj/item/bodypart/arm/right/lizard/slugcat - icon_greyscale = 'modular_doppler/customization/species/scugs/icons/bodyparts.dmi' + icon_greyscale = 'modular_doppler/modular_species/species_types/slugcats/icons/bodyparts.dmi' limb_id = SPECIES_SLUGCAT /obj/item/bodypart/leg/left/digitigrade/slugcat - icon_greyscale = 'modular_doppler/customization/species/scugs/icons/bodyparts.dmi' + icon_greyscale = 'modular_doppler/modular_species/species_types/slugcats/icons/bodyparts.dmi' limb_id = BODYPART_ID_DIGITIGRADE bodyshape = BODYSHAPE_HUMANOID | BODYSHAPE_DIGITIGRADE @@ -28,7 +28,7 @@ limb_id = SPECIES_SLUGCAT /obj/item/bodypart/leg/right/digitigrade/slugcat - icon_greyscale = 'modular_doppler/customization/species/scugs/icons/bodyparts.dmi' + icon_greyscale = 'modular_doppler/modular_species/species_types/slugcats/icons/bodyparts.dmi' limb_id = BODYPART_ID_DIGITIGRADE bodyshape = BODYSHAPE_HUMANOID | BODYSHAPE_DIGITIGRADE diff --git a/modular_doppler/customization/species/scugs/sounds/scugdeath.ogg b/modular_doppler/modular_species/species_types/slugcats/sounds/scugdeath.ogg similarity index 100% rename from modular_doppler/customization/species/scugs/sounds/scugdeath.ogg rename to modular_doppler/modular_species/species_types/slugcats/sounds/scugdeath.ogg diff --git a/modular_doppler/customization/species/scugs/sounds/scuglaugh_1.ogg b/modular_doppler/modular_species/species_types/slugcats/sounds/scuglaugh_1.ogg similarity index 100% rename from modular_doppler/customization/species/scugs/sounds/scuglaugh_1.ogg rename to modular_doppler/modular_species/species_types/slugcats/sounds/scuglaugh_1.ogg diff --git a/modular_doppler/customization/species/scugs/sounds/scugscream_1.ogg b/modular_doppler/modular_species/species_types/slugcats/sounds/scugscream_1.ogg similarity index 100% rename from modular_doppler/customization/species/scugs/sounds/scugscream_1.ogg rename to modular_doppler/modular_species/species_types/slugcats/sounds/scugscream_1.ogg diff --git a/tgstation.dme b/tgstation.dme index c46bc90a16e7e..0738ce9f9d34e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6385,19 +6385,6 @@ #include "modular_doppler\cryosleep\code\jobs.dm" #include "modular_doppler\cryosleep\code\mind.dm" #include "modular_doppler\cryosleep\code\mood.dm" -#include "modular_doppler\customization\code\accessory_overrides.dm" -#include "modular_doppler\customization\code\accessory_overrides_lizard.dm" -#include "modular_doppler\customization\code\accessory_overrides_moth.dm" -#include "modular_doppler\customization\code\bodypart_overrides.dm" -#include "modular_doppler\customization\code\custom_accessories.dm" -#include "modular_doppler\customization\code\dropdowns_to_icons.dm" -#include "modular_doppler\customization\code\tri_color_prefs.dm" -#include "modular_doppler\customization\code\tri_color_prefs_bespoke.dm" -#include "modular_doppler\customization\species\lizards\code\lizard_accessories.dm" -#include "modular_doppler\customization\species\lizards\code\lizard_species.dm" -#include "modular_doppler\customization\species\scugs\code\slugcat_accessories.dm" -#include "modular_doppler\customization\species\scugs\code\slugcat_bodyparts.dm" -#include "modular_doppler\customization\species\scugs\code\slugcat_species.dm" #include "modular_doppler\emotes\code\emotes.dm" #include "modular_doppler\emotes\code\added_emotes\animal_sounds.dm" #include "modular_doppler\emotes\code\added_emotes\human_things.dm" @@ -6416,7 +6403,6 @@ #include "modular_doppler\hearthkin\primitive_catgirls\code\smelling_salts.dm" #include "modular_doppler\hearthkin\primitive_catgirls\code\spawner.dm" #include "modular_doppler\hearthkin\primitive_catgirls\code\special_metals.dm" -#include "modular_doppler\hearthkin\primitive_catgirls\code\species.dm" #include "modular_doppler\hearthkin\primitive_catgirls\code\translator.dm" #include "modular_doppler\hearthkin\primitive_cooking_additions\code\big_mortar.dm" #include "modular_doppler\hearthkin\primitive_cooking_additions\code\cauldron.dm" @@ -6480,6 +6466,28 @@ #include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_neck.dm" #include "modular_doppler\modular_crafting\code\crafting_extended.dm" #include "modular_doppler\modular_crafting\code\sheet_types.dm" +#include "modular_doppler\modular_customization\accessories\code\lizard_accessories\lizard_body_markings.dm" +#include "modular_doppler\modular_customization\accessories\code\lizard_accessories\lizard_frills.dm" +#include "modular_doppler\modular_customization\accessories\code\lizard_accessories\lizard_horns.dm" +#include "modular_doppler\modular_customization\accessories\code\lizard_accessories\lizard_snout.dm" +#include "modular_doppler\modular_customization\accessories\code\lizard_accessories\lizard_tail.dm" +#include "modular_doppler\modular_customization\accessories\code\slugcat_accessories\slugcat_body_markings.dm" +#include "modular_doppler\modular_customization\accessories\code\slugcat_accessories\slugcat_frills.dm" +#include "modular_doppler\modular_customization\accessories\code\slugcat_accessories\slugcat_horns.dm" +#include "modular_doppler\modular_customization\accessories\code\slugcat_accessories\slugcat_snout.dm" +#include "modular_doppler\modular_customization\accessories\code\slugcat_accessories\slugcat_tail.dm" +#include "modular_doppler\modular_customization\accessories\code\~overrides\code\overrides.dm" +#include "modular_doppler\modular_customization\bodypart\bodypart_overrides.dm" +#include "modular_doppler\modular_customization\preferences\body_marking_lizard.dm" +#include "modular_doppler\modular_customization\preferences\body_marking_moth.dm" +#include "modular_doppler\modular_customization\preferences\frills.dm" +#include "modular_doppler\modular_customization\preferences\horns.dm" +#include "modular_doppler\modular_customization\preferences\moth_antennae.dm" +#include "modular_doppler\modular_customization\preferences\moth_wings.dm" +#include "modular_doppler\modular_customization\preferences\snout.dm" +#include "modular_doppler\modular_customization\preferences\tail.dm" +#include "modular_doppler\modular_customization\tri_color\tri_color_prefs.dm" +#include "modular_doppler\modular_customization\tri_color\tri_color_prefs_bespoke.dm" #include "modular_doppler\modular_food_drinks_and_chems\chemistry_reagents.dm" #include "modular_doppler\modular_food_drinks_and_chems\food_and_drinks\alcohol reagents.dm" #include "modular_doppler\modular_food_drinks_and_chems\food_and_drinks\drink_reagents.dm" @@ -6488,6 +6496,10 @@ #include "modular_doppler\modular_items\invisible_gear.dm" #include "modular_doppler\modular_mob_spawn\code\mob_spawn.dm" #include "modular_doppler\modular_sounds\code\sounds.dm" +#include "modular_doppler\modular_species\species_types\monkey\monkeys.dm" +#include "modular_doppler\modular_species\species_types\primitive_demihuman\primitive_demihuman.dm" +#include "modular_doppler\modular_species\species_types\slugcats\slugcat.dm" +#include "modular_doppler\modular_species\species_types\slugcats\slugcat_bodyparts.dm" #include "modular_doppler\modular_traits\code\neutral.dm" #include "modular_doppler\modular_traits\code\organs.dm" #include "modular_doppler\obj_flags_doppler\code\objs.dm"