diff --git a/SQL/migrate/V071__tail_overhaul.sql b/SQL/migrate/V071__tail_overhaul.sql deleted file mode 100644 index ab706bd3ea5..00000000000 --- a/SQL/migrate/V071__tail_overhaul.sql +++ /dev/null @@ -1,7 +0,0 @@ --- --- Implemented in PR #numberhere. --- Adds the ability for players to select their species' tail, instead of each species only having one stock type of tail. --- - -ALTER TABLE `ss13_characters` - ADD COLUMN `tail_style` varchar(12) DEFAULT NULL AFTER `skin_colour` diff --git a/aurorastation.dme b/aurorastation.dme index 71f00f80ff4..4588e0714a2 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1494,7 +1494,6 @@ #include "code\modules\clothing\chameleon.dm" #include "code\modules\clothing\clothing.dm" #include "code\modules\clothing\clothing_accessories.dm" -#include "code\modules\clothing\tail_accessory.dm" #include "code\modules\clothing\ears\antennae.dm" #include "code\modules\clothing\ears\bandanna.dm" #include "code\modules\clothing\ears\bulwark.dm" diff --git a/code/__defines/items_clothing.dm b/code/__defines/items_clothing.dm index f9ef08ca0bf..3002bfb61a3 100644 --- a/code/__defines/items_clothing.dm +++ b/code/__defines/items_clothing.dm @@ -114,7 +114,6 @@ #define slot_shoes_str "slot_shoes" #define slot_wrists_str "slot_wrists" #define slot_gloves_str "slot_gloves" -#define slot_tail_str "slot_tail" //itemstate suffixes. Used for containedsprite worn items #define WORN_LHAND "_lh" @@ -225,4 +224,4 @@ #define SUIT_SENSOR_OFF 0 #define SUIT_SENSOR_BINARY 1 #define SUIT_SENSOR_VITAL 2 -#define SUIT_SENSOR_TRACKING 3 +#define SUIT_SENSOR_TRACKING 3 \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/internal.dm b/code/game/objects/items/weapons/storage/internal.dm index 74b3e236104..50b933e1b8d 100644 --- a/code/game/objects/items/weapons/storage/internal.dm +++ b/code/game/objects/items/weapons/storage/internal.dm @@ -97,48 +97,3 @@ /obj/item/storage/internal/skrell/Initialize() . = ..() name = initial(name) - - -/obj/item/storage/internal/tail - name = "tail storage" - storage_slots = 1 - max_storage_space = 2 - max_w_class = ITEMSIZE_SMALL - use_sound = null - -/obj/item/storage/internal/tail/can_be_inserted(obj/item/clothing/tail_accessory/TA, stop_messages) - if(!istype(TA)) - return FALSE - . = ..() - if(!.) - return - - var/obj/item/organ/external/E = loc - if(!istype(E)) - return FALSE - - var/mob/living/carbon/human/H = E.owner - if(!istype(H)) - return FALSE - - if(!TA.compatible_with_human(H)) - return FALSE - - return TRUE - -// we can generally assume user has all the proper groin stuff here, otherwise the above block of code is busted -/obj/item/storage/internal/tail/handle_item_insertion(obj/item/W, prevent_warning, mob/living/carbon/human/user) - . = ..() - if(.) - user.update_tail_showing() - -/obj/item/storage/internal/tail/remove_from_storage(obj/item/W, atom/new_location) - . = ..() - if(.) - var/obj/item/organ/external/E = loc - if(!istype(E)) - return - var/mob/living/carbon/human/H = E.owner - if(!istype(H)) - return - H.update_tail_showing() diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 3ae3818a286..d2f232388a2 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -539,7 +539,7 @@ return W.add_fingerprint(user) - return handle_item_insertion(W, null, user) + return handle_item_insertion(W) /obj/item/storage/dropped(mob/user as mob) return diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 7e2ebe3752c..dfa4b85eb3f 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -21,7 +21,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O S["skin_red"] >> pref.r_skin S["skin_green"] >> pref.g_skin S["skin_blue"] >> pref.b_skin - S["tail_style_name"] >> pref.tail_style S["hair_style_name"] >> pref.h_style S["facial_style_name"] >> pref.f_style S["grad_style_name"] >> pref.g_style @@ -48,7 +47,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O S["skin_red"] << pref.r_skin S["skin_green"] << pref.g_skin S["skin_blue"] << pref.b_skin - S["tail_style_name"] << pref.tail_style S["hair_style_name"] << pref.h_style S["facial_style_name"] << pref.f_style S["grad_style_name"] << pref.g_style @@ -71,7 +69,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O "grad_colour", "skin_tone" = "s_tone", "skin_colour", - "tail_style", "hair_style" = "h_style", "facial_style" = "f_style", "gradient_style" = "g_style", @@ -98,7 +95,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O "grad_colour", "skin_tone", "skin_colour", - "tail_style", "hair_style", "facial_style", "gradient_style", @@ -120,8 +116,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O "facial_colour" = rgb(pref.r_facial, pref.g_facial, pref.b_facial), "grad_colour" = rgb(pref.r_grad, pref.g_grad, pref.b_grad), "skin_tone" = pref.s_tone, - "skin_colour" = rgb(pref.r_skin, pref.g_skin, pref.b_skin), - "tail_style" = pref.tail_style, + "skin_colour" = rgb(pref.r_skin, pref.g_skin, pref.b_skin) , "hair_style" = pref.h_style, "facial_style" = pref.f_style, "gradient_style"= pref.g_style, @@ -184,8 +179,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O log_debug("DISABILITIES: Caught [e]. Initial value: [before]") pref.disabilities = list() - var/datum/species/mob_species = all_species[pref.species] - pref.r_hair = sanitize_integer(pref.r_hair, 0, 255, initial(pref.r_hair)) pref.g_hair = sanitize_integer(pref.g_hair, 0, 255, initial(pref.g_hair)) pref.b_hair = sanitize_integer(pref.b_hair, 0, 255, initial(pref.b_hair)) @@ -196,7 +189,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.r_skin = sanitize_integer(pref.r_skin, 0, 255, initial(pref.r_skin)) pref.g_skin = sanitize_integer(pref.g_skin, 0, 255, initial(pref.g_skin)) pref.b_skin = sanitize_integer(pref.b_skin, 0, 255, initial(pref.b_skin)) - pref.tail_style = sanitize_inlist(pref.tail_style, mob_species.selectable_tails, mob_species.tail) pref.h_style = sanitize_inlist(pref.h_style, hair_styles_list, initial(pref.h_style)) pref.f_style = sanitize_inlist(pref.f_style, facial_hair_styles_list, initial(pref.f_style)) pref.g_style = sanitize_inlist(pref.g_style, hair_gradient_styles_list, initial(pref.g_style)) @@ -301,13 +293,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O out += "
[pref.equip_preview_mob & EQUIP_PREVIEW_JOB ? "Hide job gear" : "Show job gear"]" out += "" - var/tail_spacing = FALSE - if(length(mob_species.selectable_tails)) - out += "Tail
" - out += "[pref.tail_style ? "Style: [pref.tail_style]" : "Style: None"]
" - tail_spacing = TRUE - - out += "[tail_spacing ? "
" : ""]Hair
" + out += "Hair
" if(has_flag(mob_species, HAS_HAIR_COLOR)) out += "Change Color [HTML_RECT(rgb(pref.r_hair, pref.g_hair, pref.b_hair))] " out += " Style: [pref.h_style]
" @@ -317,7 +303,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O out += "Change Color [HTML_RECT(rgb(pref.r_facial, pref.g_facial, pref.b_facial))] " out += " Style: [pref.f_style]
" - out += "
Gradient
" + out += "Gradient
" if(has_flag(mob_species, HAS_HAIR_COLOR)) out += "Change Color [HTML_RECT(rgb(pref.r_grad, pref.g_grad, pref.b_grad))] " out += " Style: [pref.g_style]
" @@ -410,11 +396,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O else // Species has no hair, or something fucked up. pref.h_style = hair_styles_list["Bald"] - if(length(mob_species.selectable_tails)) - pref.tail_style = pick(mob_species.selectable_tails) - else - pref.tail_style = null - //grab one of the valid facial hair styles for the newly chosen species var/list/valid_facialhairstyles = list() for(var/facialhairstyle in facial_hair_styles_list) @@ -479,14 +460,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.b_grad = GetBluePart(new_grad) return TOPIC_REFRESH_UPDATE_PREVIEW - else if(href_list["tail_style"]) - if(!length(mob_species.selectable_tails)) - return - var/new_tail_style = input(user, "Choose your character's tail style:", "Character Preference", pref.tail_style) as null|anything in mob_species.selectable_tails - if(new_tail_style && CanUseTopic(user)) - pref.tail_style = new_tail_style - return TOPIC_REFRESH_UPDATE_PREVIEW - else if(href_list["hair_style"]) if(mob_species.bald) return diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno/tajara.dm b/code/modules/client/preference_setup/loadout/loadout_xeno/tajara.dm index c34329ef6b4..7692db411f1 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno/tajara.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno/tajara.dm @@ -364,12 +364,6 @@ charm["holy sun rosette"] = /obj/item/clothing/accessory/tajaran/srendarr gear_tweaks += new /datum/gear_tweak/path(charm) -/datum/gear/tail_cloth - display_name = "tail cloth" - path = /obj/item/clothing/tail_accessory/tail_cloth - sort_category = "Xenowear - Tajara" - flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION - /datum/gear/accessory/dpra_party_pin display_name = "democratic peoples republic party pins selection" description = "A selection of DPRA party pins." @@ -401,4 +395,4 @@ var/list/card = list() card["zbrojny badge"] = /obj/item/clothing/accessory/tajaran/zbrojny_badge card["golden sun pin"] = /obj/item/clothing/accessory/tajaran/tanker_pin - gear_tweaks += new /datum/gear_tweak/path(card) + gear_tweaks += new /datum/gear_tweak/path(card) \ No newline at end of file diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 33c242b5d59..ff6ed4e59c5 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -46,7 +46,6 @@ datum/preferences var/pda_choice = OUTFIT_TAB_PDA var/headset_choice = OUTFIT_HEADSET var/primary_radio_slot = "Left Ear" - var/tail_style = null var/h_style = "Bald" //Hair type var/hair_colour = "#000000" //Hair colour hex value, for SQL loading var/r_hair = 0 //Hair color @@ -437,8 +436,6 @@ datum/preferences character.g_eyes = g_eyes character.b_eyes = b_eyes - character.set_tail_style(tail_style) - character.h_style = h_style character.r_hair = r_hair character.g_hair = g_hair diff --git a/code/modules/clothing/tail_accessory.dm b/code/modules/clothing/tail_accessory.dm deleted file mode 100644 index a330425de70..00000000000 --- a/code/modules/clothing/tail_accessory.dm +++ /dev/null @@ -1,29 +0,0 @@ -/obj/item/clothing/tail_accessory - name = "tail accessory" - desc = "If you're seeing this, something went wrong! Please report it on Github." - w_class = ITEMSIZE_SMALL - - var/list/compatible_species_type = list() - var/list/compatible_tail_type = list() - var/list/compatible_animated_tail = list() - -/obj/item/clothing/tail_accessory/proc/compatible_with_human(var/mob/living/carbon/human/H) - if(!is_type_in_list(H.species, compatible_species_type)) - to_chat(H, SPAN_WARNING("\The [src] doesn't fit on your tail!")) - return FALSE - - if(!(H.tail_style in compatible_tail_type)) - to_chat(H, SPAN_WARNING("\The [src] doesn't fit on your tail!")) - return FALSE - - return TRUE - -/obj/item/clothing/tail_accessory/tail_cloth - name = "tail cloth" - desc = "A simple cloth that can be wrapped around the tail." - icon = 'icons/clothing/tail/tajtailcloth.dmi' - icon_state = "tail_cloth" - - compatible_species_type = list(/datum/species/tajaran) - compatible_tail_type = list("Tail") - compatible_animated_tail = list("Tail") diff --git a/code/modules/mob/abstract/new_player/preferences_setup.dm b/code/modules/mob/abstract/new_player/preferences_setup.dm index d3f349e6b75..a889c02b2d9 100644 --- a/code/modules/mob/abstract/new_player/preferences_setup.dm +++ b/code/modules/mob/abstract/new_player/preferences_setup.dm @@ -16,7 +16,6 @@ if(current_species.appearance_flags & HAS_SKIN_COLOR) randomize_skin_color(current_species) - tail_style = length(current_species.selectable_tails) ? pick(current_species.selectable_tails) : null h_style = random_hair_style(gender, species) f_style = random_facial_hair_style(gender, species) randomize_hair_color("hair") diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index efb1f4bb4e5..e38c39b4e0f 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -1,7 +1,4 @@ /mob/living/carbon/human - // Tail Style - var/tail_style = null - //Hair colour and style var/r_hair = 0 var/g_hair = 0 diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 41dd5ff6edd..948c8ad6dbf 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -359,21 +359,3 @@ if(!isnull(species.floating_chat_x_offset)) return species.floating_chat_x_offset return species.icon_x_offset - -/mob/living/carbon/human/proc/set_tail_style(var/new_style) - tail_style = new_style - if(tail_style) - verbs |= /mob/living/carbon/human/proc/open_tail_storage - else - verbs -= /mob/living/carbon/human/proc/open_tail_storage - -/mob/living/carbon/human/proc/get_tail_accessory() - var/obj/item/organ/external/groin/G = organs_by_name[BP_GROIN] - if(!G) - return - if(!G.tail_storage) - return - - if(length(G.tail_storage.contents)) - return G.tail_storage.contents[1] - return null diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 5b4846e6e9c..5260ffbf638 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -119,7 +119,7 @@ /mob/living/carbon/human/set_dir(var/new_dir, ignore_facing_dir = FALSE) . = ..() - if(. && tail_style) + if(. && species.tail) update_tail_showing(1) /mob/living/carbon/human/Move() diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index 02715d82136..a16e563b5ab 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -810,7 +810,7 @@ mob/living/carbon/human/proc/change_monitor() earpain(3, TRUE, 1) else if (T in range(src, 2)) earpain(2, TRUE, 2) - + for (var/mob/living/carbon/human/T in hearers(2, src) - src) if(T.protected_from_sound()) continue @@ -1292,19 +1292,4 @@ mob/living/carbon/human/proc/change_monitor() /mob/living/carbon/human/proc/stop_listening() if (is_listening()) visible_message("[src] stops listening intently.") - intent_listener -= src - -/mob/living/carbon/human/proc/open_tail_storage() - set name = "Tail Accessories" - set desc = "Opens the tail accessory slot." - set category = "Abilities" - - var/obj/item/organ/external/groin/G = organs_by_name[BP_GROIN] - if(!G) - to_chat(usr, SPAN_WARNING("You have no tail!")) - return - if(!G.tail_storage) - to_chat(usr, SPAN_WARNING("Something went wrong with your tail storage, it's missing! (Report this on Github)")) - return - - G.tail_storage.open(usr) + intent_listener -= src \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 9ff76ce6a8a..8026eefe707 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1461,11 +1461,11 @@ bodytemperature = min(bodytemperature + fever, normal_temp) else if(bodytemperature <= normal_temp + 10) //If we're hotter than max due to like, being on fire, don't keep increasing. bodytemperature = normal_temp + min(fever, 10) //We use normal_temp here to maintain a steady temperature, otherwise even a small infection steadily increases bodytemp to max. This way it's easier to diagnose the intensity of an infection based on how bad the fever is. - //Apply side effects for having a fever. Separate from body temp changes. + //Apply side effects for having a fever. Separate from body temp changes. if(fever >= 2) do_fever_effects(fever) - + //Getting the total germ level for all infected organs, affects fever /mob/living/carbon/human/proc/get_infection_germ_level() var/germs diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 8ee2972cc61..bbb05679c3f 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -49,7 +49,6 @@ var/tail // Name of tail state in species effects icon file. var/tail_animation // If set, the icon to obtain tail animation states from. var/tail_hair - var/list/selectable_tails var/race_key = 0 // Used for mob icon cache string. var/icon/icon_template // Used for mob icon generation for non-32x32 species. var/mob_size = MOB_MEDIUM diff --git a/code/modules/mob/living/carbon/human/species/station/skrell/skrell_subspecies.dm b/code/modules/mob/living/carbon/human/species/station/skrell/skrell_subspecies.dm index 8ad818c05b0..3b36abb2eaf 100644 --- a/code/modules/mob/living/carbon/human/species/station/skrell/skrell_subspecies.dm +++ b/code/modules/mob/living/carbon/human/species/station/skrell/skrell_subspecies.dm @@ -12,9 +12,7 @@ brute_mod = 0.9 oxy_mod = 0.9 hydration_loss_factor = 1.1 - tail = "Tail" - tail_animation = 'icons/mob/species/skrell/tail.dmi' - selectable_tails = list("Tail") + tail = "axiori_tail" eyes = "skrell_axiori_eyes_s" sprint_speed_factor = 1.15 // Species default 1.25 diff --git a/code/modules/mob/living/carbon/human/species/station/tajara/tajara.dm b/code/modules/mob/living/carbon/human/species/station/tajara/tajara.dm index b1845869d87..faf3525f5ed 100644 --- a/code/modules/mob/living/carbon/human/species/station/tajara/tajara.dm +++ b/code/modules/mob/living/carbon/human/species/station/tajara/tajara.dm @@ -8,9 +8,8 @@ deform = 'icons/mob/human_races/tajara/r_def_tajaran.dmi' preview_icon = 'icons/mob/human_races/tajara/tajaran_preview.dmi' bandages_icon = 'icons/mob/bandage.dmi' - tail = "Tail" + tail = "tajtail" tail_animation = 'icons/mob/species/tajaran/tail.dmi' - selectable_tails = list("Tail", "Hakh'jar Tail") unarmed_types = list( /datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, diff --git a/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm b/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm index 31cef6d8f3d..d74ec7ab13d 100644 --- a/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm +++ b/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm @@ -8,9 +8,8 @@ deform = 'icons/mob/human_races/unathi/r_def_lizard.dmi' preview_icon = 'icons/mob/human_races/unathi/unathi_preview.dmi' bandages_icon = 'icons/mob/bandage.dmi' - tail = "Tail" + tail = "sogtail" tail_animation = 'icons/mob/species/unathi/tail.dmi' - selectable_tails = list("Tail") unarmed_types = list( /datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index d9e3ded7f8d..05cfdf3ea8e 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -85,46 +85,43 @@ There are several things that need to be remembered: */ // Human Overlays Indexes // -#define MUTATIONS_LAYER 1 -#define DAMAGE_LAYER 2 -#define SURGERY_LAYER 3 -#define UNDERWEAR_LAYER 4 -#define TAIL_SOUTH_LAYER 5 -#define TAIL_SOUTH_ACC_LAYER 6 -#define SHOES_LAYER_ALT 7 -#define UNIFORM_LAYER 8 -#define ID_LAYER 9 -#define SHOES_LAYER 10 -#define GLOVES_LAYER 11 -#define BELT_LAYER 12 -#define WRISTS_LAYER_ALT 13 -#define SUIT_LAYER 14 -#define ID_LAYER_ALT 15 -#define TAIL_NORTH_LAYER 16 -#define TAIL_NORTH_ACC_LAYER 17 -#define GLASSES_LAYER 18 -#define BELT_LAYER_ALT 19 -#define SUIT_STORE_LAYER 20 -#define BACK_LAYER 21 -#define HAIR_LAYER 22 -#define GLASSES_LAYER_ALT 23 -#define L_EAR_LAYER 24 -#define R_EAR_LAYER 25 -#define FACEMASK_LAYER 26 -#define HEAD_LAYER 27 -#define COLLAR_LAYER 28 -#define HANDCUFF_LAYER 29 -#define LEGCUFF_LAYER 30 -#define L_HAND_LAYER 31 -#define R_HAND_LAYER 32 -#define WRISTS_LAYER 33 -#define FIRE_LAYER 34 //If you're on fire -#define TOTAL_LAYERS 34 +#define MUTATIONS_LAYER 1 +#define DAMAGE_LAYER 2 +#define SURGERY_LAYER 3 +#define UNDERWEAR_LAYER 4 +#define TAIL_SOUTH_LAYER 5 +#define SHOES_LAYER_ALT 6 +#define UNIFORM_LAYER 7 +#define ID_LAYER 8 +#define SHOES_LAYER 9 +#define GLOVES_LAYER 10 +#define BELT_LAYER 11 +#define WRISTS_LAYER_ALT 12 +#define SUIT_LAYER 13 +#define ID_LAYER_ALT 14 +#define TAIL_NORTH_LAYER 15 +#define GLASSES_LAYER 16 +#define BELT_LAYER_ALT 17 +#define SUIT_STORE_LAYER 18 +#define BACK_LAYER 19 +#define HAIR_LAYER 20 +#define GLASSES_LAYER_ALT 21 +#define L_EAR_LAYER 22 +#define R_EAR_LAYER 23 +#define FACEMASK_LAYER 24 +#define HEAD_LAYER 25 +#define COLLAR_LAYER 26 +#define HANDCUFF_LAYER 27 +#define LEGCUFF_LAYER 28 +#define L_HAND_LAYER 29 +#define R_HAND_LAYER 30 +#define WRISTS_LAYER 31 +#define FIRE_LAYER 32 //If you're on fire +#define TOTAL_LAYERS 32 ////////////////////////////////// #define GET_BODY_TYPE (cached_bodytype || (cached_bodytype = species.get_bodytype())) #define GET_TAIL_LAYER (dir == NORTH ? TAIL_NORTH_LAYER : TAIL_SOUTH_LAYER) -#define GET_TAIL_ACC_LAYER (dir == NORTH ? TAIL_NORTH_ACC_LAYER : TAIL_SOUTH_ACC_LAYER) /proc/overlay_image(icon,icon_state,color,flags) var/image/ret = image(icon,icon_state) @@ -1285,11 +1282,10 @@ There are several things that need to be remembered: var/tail_layer = GET_TAIL_LAYER - if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL)) + if(species.tail && !(wear_suit && wear_suit.flags_inv & HIDETAIL)) var/icon/tail_s = get_tail_icon() - overlays_raw[tail_layer] = image(tail_s, icon_state = "[tail_style]_s") - animate_tail_reset() - update_tail_accessory(FALSE) + overlays_raw[tail_layer] = image(tail_s, icon_state = "[species.tail]_s") + animate_tail_reset(0) if(update_icons) update_icon() @@ -1306,7 +1302,7 @@ There are several things that need to be remembered: tail_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD) // The following will not work with animated tails. if(species.tail_hair) - var/icon/hair_icon = icon('icons/effects/species.dmi', "[tail_style]_[species.tail_hair]") + var/icon/hair_icon = icon('icons/effects/species.dmi', "[species.tail]_[species.tail_hair]") hair_icon.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD) tail_icon.Blend(hair_icon, ICON_OVERLAY) SSicon_cache.tail_icon_cache[icon_key] = tail_icon @@ -1314,20 +1310,16 @@ There are several things that need to be remembered: return tail_icon /mob/living/carbon/human/proc/set_tail_state(var/mob_state) - if(!tail_style) + if (!species.tail) return var/tail_layer = GET_TAIL_LAYER + var/image/tail_overlay = overlays_raw[tail_layer] - var/obj/item/clothing/tail_accessory/TA = get_tail_accessory() - if(TA && !(tail_style in TA.compatible_animated_tail)) - mob_state = "[tail_style]_static" - if(tail_overlay && species.tail_animation) - if(tail_overlay.icon_state != mob_state) + if (tail_overlay.icon_state != mob_state) tail_overlay.icon_state = mob_state - update_tail_accessory() update_icon() return tail_overlay return null @@ -1335,7 +1327,7 @@ There are several things that need to be remembered: //Not really once, since BYOND can't do that. //Update this if the ability to flick() images or make looping animation start at the first frame is ever added. /mob/living/carbon/human/proc/animate_tail_once() - var/mob_state = "[tail_style]_once" + var/mob_state = "[species.tail]_once" var/tail_layer = GET_TAIL_LAYER @@ -1350,42 +1342,23 @@ There are several things that need to be remembered: /mob/living/carbon/human/proc/end_animate_tail_once(image/tail_overlay) //check that the animation hasn't changed in the meantime var/tail_layer = GET_TAIL_LAYER - if(overlays_raw[tail_layer] == tail_overlay && tail_overlay.icon_state == "[tail_style]_once") + if(overlays_raw[tail_layer] == tail_overlay && tail_overlay.icon_state == "[species.tail]_once") animate_tail_stop() - update_tail_accessory() /mob/living/carbon/human/proc/animate_tail_start() - set_tail_state("[tail_style]_slow") + set_tail_state("[species.tail]_slow[rand(0,9)]") /mob/living/carbon/human/proc/animate_tail_fast() - set_tail_state("[tail_style]_loop") + set_tail_state("[species.tail]_loop[rand(0,9)]") /mob/living/carbon/human/proc/animate_tail_reset() if(stat != DEAD && !lying) - set_tail_state("[tail_style]_idle") + set_tail_state("[species.tail]_idle[rand(0,9)]") else - set_tail_state("[tail_style]_static") + set_tail_state("[species.tail]_static") /mob/living/carbon/human/proc/animate_tail_stop(var/update_icons=1) - set_tail_state("[tail_style]_static") - -/mob/living/carbon/human/proc/update_tail_accessory(var/update_icons=1) - overlays_raw[TAIL_NORTH_ACC_LAYER] = null - overlays_raw[TAIL_SOUTH_ACC_LAYER] = null - - var/obj/item/clothing/tail_accessory/TA = get_tail_accessory() - if(!TA) - return - - var/image/tail_overlay = overlays_raw[GET_TAIL_LAYER] - if(!tail_overlay) - return - - overlays_raw[GET_TAIL_ACC_LAYER] = TA.get_mob_overlay(src, TA.icon, "[tail_overlay.icon_state]_to", slot_tail_str) - - if(update_icons) - update_icon() - + set_tail_state("[species.tail]_static") //Adds a collar overlay above the helmet layer if the suit has one // Suit needs an identically named sprite in icons/mob/collar.dmi diff --git a/code/modules/organs/subtypes/skrell.dm b/code/modules/organs/subtypes/skrell.dm index 4f26529cf23..b779953cd23 100644 --- a/code/modules/organs/subtypes/skrell.dm +++ b/code/modules/organs/subtypes/skrell.dm @@ -24,10 +24,6 @@ . = ..() addtimer(CALLBACK(src, .proc/setup_storage), 3 SECONDS) -/obj/item/organ/external/head/skrell/Destroy() - QDEL_NULL(storage) - return ..() - /obj/item/organ/external/head/skrell/proc/setup_storage() storage = new /obj/item/storage/internal/skrell(src) if(owner) @@ -48,4 +44,4 @@ storage.remove_from_storage(thing, get_turf(src)) /obj/item/organ/external/head/skrell/attack_self(mob/user) - storage.open(user) + storage.open(user) \ No newline at end of file diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm index 609225af33b..75f088498e2 100644 --- a/code/modules/organs/subtypes/standard.dm +++ b/code/modules/organs/subtypes/standard.dm @@ -43,21 +43,6 @@ gendered_icon = 1 augment_limit = 3 - var/obj/item/storage/internal/tail/tail_storage - -/obj/item/organ/external/groin/Initialize() - . = ..() - tail_storage = new /obj/item/storage/internal/tail(src) - -/obj/item/organ/external/groin/Destroy() - QDEL_NULL(tail_storage) - return ..() - -/obj/item/organ/external/groin/removed() - . = ..() - for(var/thing in tail_storage) - tail_storage.remove_from_storage(thing, get_turf(src)) - /obj/item/organ/external/groin/body_part_class() return UPPER_TORSO diff --git a/icons/clothing/tail/tajtailcloth.dmi b/icons/clothing/tail/tajtailcloth.dmi deleted file mode 100644 index 1fd854d5dd1..00000000000 Binary files a/icons/clothing/tail/tajtailcloth.dmi and /dev/null differ diff --git a/icons/effects/species.dmi b/icons/effects/species.dmi index 9ba0b6906f1..d5613371bf9 100644 Binary files a/icons/effects/species.dmi and b/icons/effects/species.dmi differ diff --git a/icons/mob/species/skrell/tail.dmi b/icons/mob/species/skrell/tail.dmi deleted file mode 100644 index 9832c9e4fe9..00000000000 Binary files a/icons/mob/species/skrell/tail.dmi and /dev/null differ diff --git a/icons/mob/species/tajaran/tail.dmi b/icons/mob/species/tajaran/tail.dmi index eeb32609fdb..62a432ae76d 100644 Binary files a/icons/mob/species/tajaran/tail.dmi and b/icons/mob/species/tajaran/tail.dmi differ diff --git a/icons/mob/species/unathi/tail.dmi b/icons/mob/species/unathi/tail.dmi index c5a0c608662..eba37dba6aa 100644 Binary files a/icons/mob/species/unathi/tail.dmi and b/icons/mob/species/unathi/tail.dmi differ