diff --git a/aurorastation.dme b/aurorastation.dme index 8a5dc6e0d41..6c7b40eff35 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1367,6 +1367,7 @@ #include "code\modules\clothing\chameleon.dm" #include "code\modules\clothing\clothing.dm" #include "code\modules\clothing\clothing_accessories.dm" +#include "code\modules\clothing\ears\antennae.dm" #include "code\modules\clothing\ears\bandanna.dm" #include "code\modules\clothing\ears\earmuffs.dm" #include "code\modules\clothing\ears\earrings.dm" diff --git a/code/__defines/items_clothing.dm b/code/__defines/items_clothing.dm index a7b6e91ab43..54bb896bc5c 100644 --- a/code/__defines/items_clothing.dm +++ b/code/__defines/items_clothing.dm @@ -97,6 +97,8 @@ #define slot_w_uniform_str "slot_w_uniform" #define slot_head_str "slot_head" #define slot_wear_suit_str "slot_suit" +#define slot_l_ear_str "slot_l_ear" +#define slot_r_ear_str "slot_r_ear" #define slot_shoes_str "slot_shoes" //itemstate suffixes. Used for containedsprite worn items diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 92ba7e73108..fa7d9f8f0a9 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -212,6 +212,8 @@ #define INV_W_UNIFORM_DEF_ICON 'icons/mob/uniform.dmi' #define INV_ACCESSORIES_DEF_ICON 'icons/mob/ties.dmi' #define INV_SUIT_DEF_ICON 'icons/mob/suit.dmi' +#define INV_L_EAR_DEF_ICON 'icons/mob/l_ear.dmi' +#define INV_R_EAR_DEF_ICON 'icons/mob/r_ear.dmi' #define INV_SHOES_DEF_ICON 'icons/mob/feet.dmi' // IPC tags diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index d606eb28ede..2f5fdcc4505 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -741,9 +741,9 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. if (slot_wear_id) M.update_inv_wear_id() if (slot_l_ear) - M.update_inv_ears() + M.update_inv_l_ear() if (slot_r_ear) - M.update_inv_ears() + M.update_inv_r_ear() if (slot_glasses) M.update_inv_glasses() if (slot_gloves) @@ -845,4 +845,4 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. return /obj/item/proc/extinguish_fire() - return \ No newline at end of file + return diff --git a/code/game/objects/items/devices/lighting/flashlight.dm b/code/game/objects/items/devices/lighting/flashlight.dm index 5646b0daefa..c4f15923d99 100644 --- a/code/game/objects/items/devices/lighting/flashlight.dm +++ b/code/game/objects/items/devices/lighting/flashlight.dm @@ -43,7 +43,8 @@ set_light(0) if (ismob(src.loc)) //for reasons, this makes headlights work. var/mob/M = src.loc - M.update_inv_ears() + M.update_inv_l_ear() + M.update_inv_r_ear() M.update_inv_head() /obj/item/device/flashlight/attack_self(mob/user) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 7eb4cb2518e..136b35e34e1 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -308,11 +308,11 @@ update_icons_required = TRUE if(H.l_ear && washears) if(H.l_ear.clean_blood()) - H.update_inv_ears(0) + H.update_inv_l_ear(0) update_icons_required = TRUE if(H.r_ear && washears) if(H.r_ear.clean_blood()) - H.update_inv_ears(0) + H.update_inv_r_ear(0) update_icons_required = TRUE if(H.belt) if(H.belt.clean_blood()) diff --git a/code/game/turfs/simulated/water.dm b/code/game/turfs/simulated/water.dm index 152afa3deff..0cd39e9be5b 100644 --- a/code/game/turfs/simulated/water.dm +++ b/code/game/turfs/simulated/water.dm @@ -207,10 +207,10 @@ H.update_inv_glasses(0) if(H.l_ear && washears) if(H.l_ear.clean_blood()) - H.update_inv_ears(0) + H.update_inv_l_ear(0) if(H.r_ear && washears) if(H.r_ear.clean_blood()) - H.update_inv_ears(0) + H.update_inv_r_ear(0) if(H.belt) if(H.belt.clean_blood()) H.update_inv_belt(0) diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno/machine.dm b/code/modules/client/preference_setup/loadout/loadout_xeno/machine.dm index 1d585d60d72..1cb940dec54 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno/machine.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno/machine.dm @@ -64,7 +64,7 @@ /datum/gear/ears/antennae display_name = "antennae" - path = /obj/item/clothing/head/antenna + path = /obj/item/clothing/ears/antenna cost = 1 whitelisted = list(SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL) sort_category = "Xenowear - IPC" @@ -73,23 +73,21 @@ /datum/gear/ears/antennae/New() ..() var/antenna = list() - antenna["antenna, curved"] = /obj/item/clothing/head/antenna - antenna["antenna, straight"] = /obj/item/clothing/head/antenna/straight - antenna["antenna, spiked"] = /obj/item/clothing/head/antenna/spiked - antenna["antenna, small spiked"] = /obj/item/clothing/head/antenna/spiked/small - antenna["antenna, side"] = /obj/item/clothing/head/antenna/side - antenna["antenna, dish"] = /obj/item/clothing/head/antenna/dish - antenna["antenna, double"] = /obj/item/clothing/head/antenna/double - antenna["antenna, left"] = /obj/item/clothing/head/antenna/double/left - antenna["antenna, right"] = /obj/item/clothing/head/antenna/double/right - antenna["antenna, left horn"] = /obj/item/clothing/head/antenna/double/left/horn - antenna["antenna, right horn"] = /obj/item/clothing/head/antenna/double/right/horn - antenna["antenna, circle"] = /obj/item/clothing/head/antenna/circle + antenna["antenna, curved"] = /obj/item/clothing/ears/antenna/curved + antenna["antenna, straight"] = /obj/item/clothing/ears/antenna/straight + antenna["antenna, circle"] = /obj/item/clothing/ears/antenna/circle + antenna["antenna, tusk"] = /obj/item/clothing/ears/antenna/tusk + antenna["antenna, horn crown"] = /obj/item/clothing/ears/antenna/horncrown + antenna["antenna, dual horns"] = /obj/item/clothing/ears/antenna/horn + antenna["antenna, horn"] = /obj/item/clothing/ears/antenna/horn/single + antenna["antenna, dishes"] = /obj/item/clothing/ears/antenna/dish + antenna["antenna, dual whips"] = /obj/item/clothing/ears/antenna/whip + antenna["antenna, whip"] = /obj/item/clothing/ears/antenna/whip/single gear_tweaks += new/datum/gear_tweak/path(antenna) /datum/gear/ears/trinary_halo display_name = "trinary perfection antenna" - path = /obj/item/clothing/head/antenna/trinary_halo + path = /obj/item/clothing/ears/antenna/trinary_halo cost = 1 whitelisted = list(SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL) sort_category = "Xenowear - IPC" diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index c980b4f2578..c46d3af71b6 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -295,7 +295,8 @@ /obj/item/clothing/ears/update_clothing_icon() if (ismob(src.loc)) var/mob/M = src.loc - M.update_inv_ears() + M.update_inv_l_ear() + M.update_inv_r_ear() /obj/item/clothing/ears/offear name = "Other ear" diff --git a/code/modules/clothing/ears/antennae.dm b/code/modules/clothing/ears/antennae.dm new file mode 100644 index 00000000000..33429c08744 --- /dev/null +++ b/code/modules/clothing/ears/antennae.dm @@ -0,0 +1,74 @@ +//ipc 'pins' + +/obj/item/clothing/ears/antenna + name = "antenna" + slot_flags = SLOT_HEAD | SLOT_EARS + body_parts_covered = 0 + matter = list(DEFAULT_WALL_MATERIAL = 10) + drop_sound = 'sound/items/drop/component.ogg' + pickup_sound = 'sound/items/pickup/component.ogg' + +/obj/item/clothing/ears/antenna/curved + name = "curved antennae" + desc = "A set of decorative antennae. This particular pair is curved in the middle point, arcing upwards. Unfortunately, it doesn't get FM here." + icon_state = "curvedantennae" + item_state = "curvedantennae" + +/obj/item/clothing/ears/antenna/straight + name = "straight antennae" + desc = "A set of decorative antennae. This particular pair is straight, jutting out to what is reasonably shoulder width. They don't seem to plug into anything." + icon_state = "straightantennae" + item_state = "straightantennae" + +/obj/item/clothing/ears/antenna/circle + name = "circle antennae" + desc = "A set of decorative antennae. This particular pair is circular, mimicking a sattelite dish. Still better than cable, though." + icon_state = "circleantennae" + item_state = "circleantennae" + +/obj/item/clothing/ears/antenna/tusk + name = "tusk antennae" + desc = "A set of decorative antennae. This particular pair is stylized like animal tusks, for combat down the runway, of course." + icon_state = "tusk" + item_state = "tusk" + +/obj/item/clothing/ears/antenna/horncrown + name = "horn crown antennae" + desc = "A set of decorative antennae. This particular pair is in a spring shape, attached to a large chassis. Careful for doorways." + icon_state = "horncrown" + item_state = "horncrown" + +/obj/item/clothing/ears/antenna/horn + name = "horn antennae" + desc = "A set of decorative antennae. This particular pair is in a spring shape, mimicking animal horns." + icon_state = "dual_horn" + item_state = "dual_horn" + +/obj/item/clothing/ears/antenna/horn/single + name = "horn antenna" + desc = "A set of decorative antennae. This particular one is in a spring shape, mimicking an animal's horn." + icon_state = "horn" + item_state = "horn" + +/obj/item/clothing/ears/antenna/dish + name = "antenna dishes" + desc = "A set of decorative antennae. This particular one is stylized as two tiny dishes, intended to hold excess wiring in a very specific manner. If only they picked up holodramas." + icon_state = "dual_dish" + item_state = "dual_dish" + +/obj/item/clothing/ears/antenna/whip + name = "whip antennae" + desc = "A set of decorative antennae. Despite being commonly seen on Shells, nobody knows what these actually do." + icon_state = "dual_whip" + item_state = "dual_whip" + +/obj/item/clothing/ears/antenna/whip/single + name = "whip antenna" + desc = "A decorative antenna. Despite being commonly seen on Shells, nobody knows what these actually do." + icon_state = "whip" + item_state = "whip" +/obj/item/clothing/ears/antenna/trinary_halo + name = "trinary perfection antenna" + desc = "A decorative antenna that is commonly worn by IPCs who serve the Trinary Perfection. It resembles a golden gear." + icon_state = "trinary_halo" + item_state = "trinary_halo" diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 457d96e6365..2d3f34741bd 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -281,6 +281,7 @@ ) flags_inv = BLOCKHAIR siemens_coefficient = 2.0 //why is it so conductive?! + /obj/item/clothing/head/hijab //It might've taken a year but here's your Hijab's, Dea. name = "hijab" desc = "Encompassing cloth headwear worn by some human cultures and religions." @@ -508,87 +509,6 @@ icon_state = "ruby_crest" item_state = "ruby_crest" - -//ipc 'pins' - -/obj/item/clothing/head/antenna - name = "curved antennae" - desc = "A set of decorative antennae. This particular pair is curved in the middle point, arcing upwards. Unfortunately, it doesn't get FM here." - icon_state = "curvedantennae" - item_state = "curvedantennae" - slot_flags = SLOT_HEAD | SLOT_EARS - body_parts_covered = 0 - matter = list(DEFAULT_WALL_MATERIAL = 10) - drop_sound = 'sound/items/drop/component.ogg' - pickup_sound = 'sound/items/pickup/component.ogg' - -/obj/item/clothing/head/antenna/straight - name = "straight antennae" - desc = "A set of decorative antennae. This particular pair is straight, jutting out to what is reasonably shoulder width. They don't seem to plug into anything." - icon_state = "straightantennae" - item_state = "straightantennae" - -/obj/item/clothing/head/antenna/spiked - name = "spiked chassis mounts" - desc = "Two large mounts holding up chassis protrusions on either side of the head. Careful for doorways." - icon_state = "horncrown" - item_state = "horncrown" - -/obj/item/clothing/head/antenna/spiked/small - name = "small chassis horns" - desc = "Two small mounts holding up chassis protrusions on either side of the head, sans head crown." - icon_state = "horn" - item_state = "horncrown" - -/obj/item/clothing/head/antenna/side - name = "side chassis mounts" - desc = "Two large mounts holding up chassis protrusions on either side of the head." - icon_state = "tusk" - item_state = "tusk" - -/obj/item/clothing/head/antenna/dish - name = "head dishes" - desc = "Two tiny dishes intended to hold excess wiring in a very specific manner and mostly end up being used as decoration. If only they picked up holodramas." - icon_state = "dish" - item_state = "dish" - -/obj/item/clothing/head/antenna/double - name = "antenna ears" - desc = "Despite being commonly seen on Shells, nobody knows what these actually do." - icon_state = "dual_robot_antennae" - item_state = "dual_robot_antennae" - -/obj/item/clothing/head/antenna/double/left/horn - name = "left antenna horn" - icon_state = "left_horn" - item_state = "left_horn" - -/obj/item/clothing/head/antenna/double/left - name = "left antenna ear" - icon_state = "left_robot_antennae" - item_state = "left_robot_antennae" - -/obj/item/clothing/head/antenna/double/right - name = "right antenna ear" - icon_state = "right_robot_antennae" - item_state = "right_robot_antennae" - -/obj/item/clothing/head/antenna/double/right/horn - name = "right antenna horn" - icon_state = "right_horn" - item_state = "right_horn" - -/obj/item/clothing/head/antenna/circle - name = "circle antenna" - icon_state = "circleantenna" - item_state = "dish" - -/obj/item/clothing/head/antenna/trinary_halo - name = "trinary perfection antenna" - desc = "A decorative antenna that is commonly worn by IPCs who serve the Trinary Perfection. It resembles a golden gear." - icon_state = "trinary_halo" - item_state = "trinary_halo" - /obj/item/clothing/head/fake_culthood name = "occultist hood" icon_state = "culthood" diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 0ef82d26ed3..73a36b26a0e 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -120,15 +120,16 @@ This saves us from having to call add_fingerprint() any time something is put in var/obj/item/I = W if(I.flags_inv & (HIDEMASK|BLOCKHAIR|BLOCKHEADHAIR)) update_hair(0) //rebuild hair - update_inv_ears(0) + update_inv_l_ear(0) + update_inv_r_ear(0) update_inv_wear_mask(0) update_inv_head() else if (W == l_ear) l_ear = null - update_inv_ears() + update_inv_l_ear() else if (W == r_ear) r_ear = null - update_inv_ears() + update_inv_r_ear() else if (W == shoes) shoes = null update_inv_shoes() @@ -142,7 +143,8 @@ This saves us from having to call add_fingerprint() any time something is put in var/obj/item/I = W if(I.flags_inv & (BLOCKHAIR|BLOCKHEADHAIR)) update_hair(0) //rebuild hair - update_inv_ears(0) + update_inv_l_ear(0) + update_inv_r_ear(0) if(internal) if(internals) internals.icon_state = "internal0" @@ -203,7 +205,8 @@ This saves us from having to call add_fingerprint() any time something is put in src.wear_mask = W if(wear_mask.flags_inv & (BLOCKHAIR|BLOCKHEADHAIR)) update_hair(redraw_mob) //rebuild hair - update_inv_ears(0) + update_inv_l_ear(0) + update_inv_r_ear(0) W.equipped(src, slot) update_inv_wear_mask(redraw_mob) if(slot_handcuffed) @@ -237,7 +240,7 @@ This saves us from having to call add_fingerprint() any time something is put in src.r_ear = O O.layer = SCREEN_LAYER+0.01 W.equipped(src, slot) - update_inv_ears(redraw_mob) + update_inv_l_ear(redraw_mob) if(slot_r_ear) src.r_ear = W if(r_ear.slot_flags & SLOT_TWOEARS) @@ -246,7 +249,7 @@ This saves us from having to call add_fingerprint() any time something is put in src.l_ear = O O.layer = SCREEN_LAYER+0.01 W.equipped(src, slot) - update_inv_ears(redraw_mob) + update_inv_r_ear(redraw_mob) if(slot_glasses) src.glasses = W W.equipped(src, slot) @@ -259,7 +262,8 @@ This saves us from having to call add_fingerprint() any time something is put in src.head = W if(head.flags_inv & (BLOCKHAIR|BLOCKHEADHAIR|HIDEMASK)) update_hair(redraw_mob) //rebuild hair - update_inv_ears(0) + update_inv_l_ear(0) + update_inv_r_ear(0) update_inv_wear_mask(0) W.equipped(src, slot) update_inv_head(redraw_mob) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 9f9fd8f4fe1..3707988d441 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -41,7 +41,8 @@ There are several things that need to be remembered: update_inv_r_hand() update_inv_belt() update_inv_wear_id() - update_inv_ears() + update_inv_l_ear() + update_inv_r_ear() update_inv_s_store() update_inv_pockets() update_inv_back() @@ -103,16 +104,17 @@ There are several things that need to be remembered: #define SUIT_STORE_LAYER 17 #define BACK_LAYER 18 #define HAIR_LAYER 19 -#define EARS_LAYER 20 -#define FACEMASK_LAYER 21 -#define HEAD_LAYER 22 -#define COLLAR_LAYER 23 -#define HANDCUFF_LAYER 24 -#define LEGCUFF_LAYER 25 -#define L_HAND_LAYER 26 -#define R_HAND_LAYER 27 -#define FIRE_LAYER 28 //If you're on fire -#define TOTAL_LAYERS 28 +#define L_EAR_LAYER 20 +#define R_EAR_LAYER 21 +#define FACEMASK_LAYER 22 +#define HEAD_LAYER 23 +#define COLLAR_LAYER 24 +#define HANDCUFF_LAYER 25 +#define LEGCUFF_LAYER 26 +#define L_HAND_LAYER 27 +#define R_HAND_LAYER 28 +#define FIRE_LAYER 29 //If you're on fire +#define TOTAL_LAYERS 29 ////////////////////////////////// #define UNDERSCORE_OR_NULL(target) "[target ? "[target]_" : ""]" @@ -496,7 +498,8 @@ There are several things that need to be remembered: update_inv_wear_id(FALSE) update_inv_gloves(FALSE) update_inv_glasses(FALSE) - update_inv_ears(FALSE) + update_inv_l_ear(FALSE) + update_inv_r_ear(FALSE) update_inv_shoes(FALSE) update_inv_s_store(FALSE) update_inv_wear_mask(FALSE) @@ -706,50 +709,88 @@ There are several things that need to be remembered: if(update_icons) update_icon() -/mob/living/carbon/human/update_inv_ears(var/update_icons=1) - if (QDELING(src)) +/mob/living/carbon/human/update_inv_l_ear(var/update_icons=1) + if(QDELING(src)) return - overlays_raw[EARS_LAYER] = null - - if (check_draw_ears()) - var/result_layer + if(check_draw_ears()) if(l_ear) - var/t_type = l_ear.icon_state + l_ear.screen_loc = ui_l_ear + var/image/result_layer = null + + //Determine the icon to use + var/t_icon = INV_L_EAR_DEF_ICON if(l_ear.contained_sprite) l_ear.auto_adapt_species(src) - t_type = "[UNDERSCORE_OR_NULL(l_ear.icon_species_tag)][l_ear.item_state][WORN_LEAR]" - result_layer = image(l_ear.icon_override || l_ear.icon, t_type) - else if(l_ear.icon_override) - result_layer = image(l_ear.icon_override, "[t_type]_l") - else if(l_ear.sprite_sheets && l_ear.sprite_sheets[GET_BODY_TYPE]) - result_layer = image(l_ear.sprite_sheets[GET_BODY_TYPE], "[t_type]_l") - else - result_layer = image('icons/mob/ears.dmi', "[t_type]") + var/t_state = "[UNDERSCORE_OR_NULL(l_ear.icon_species_tag)][l_ear.item_state][WORN_LEAR]" + result_layer = image(l_ear.icon_override || l_ear.icon, t_state) + else if(l_ear.icon_override) + t_icon = l_ear.icon_override + else if(l_ear.sprite_sheets && l_ear.sprite_sheets[GET_BODY_TYPE]) + t_icon = l_ear.sprite_sheets[GET_BODY_TYPE] + else if(l_ear.item_icons && (slot_l_ear_str in l_ear.item_icons)) + t_icon = l_ear.item_icons[slot_l_ear_str] + else + t_icon = INV_L_EAR_DEF_ICON + + if(!result_layer) //Create the image + result_layer = image(t_icon, l_ear.icon_state) + + if(l_ear.color) + result_layer.color = l_ear.color + + var/image/worn_overlays = l_ear.worn_overlays(t_icon) + if(worn_overlays) + result_layer.overlays.Add(worn_overlays) + + overlays_raw[L_EAR_LAYER] = result_layer + else + overlays_raw[L_EAR_LAYER] = null + + if(update_icons) + update_icon() + +/mob/living/carbon/human/update_inv_r_ear(var/update_icons=1) + if(QDELING(src)) + return + + if(check_draw_ears()) if(r_ear) - var/image/I - var/t_type = r_ear.icon_state + r_ear.screen_loc = ui_r_ear + + var/image/result_layer = null + + //Determine the icon to use + var/t_icon = INV_R_EAR_DEF_ICON if(r_ear.contained_sprite) r_ear.auto_adapt_species(src) - t_type = "[UNDERSCORE_OR_NULL(r_ear.icon_species_tag)][r_ear.item_state][WORN_REAR]" - I = image(r_ear.icon_override || r_ear.icon, t_type) + var/t_state = "[UNDERSCORE_OR_NULL(r_ear.icon_species_tag)][r_ear.item_state][WORN_REAR]" + result_layer = image(r_ear.icon_override || r_ear.icon, t_state) else if(r_ear.icon_override) - I = image(r_ear.icon_override, "[t_type]_r") + t_icon = r_ear.icon_override else if(r_ear.sprite_sheets && r_ear.sprite_sheets[GET_BODY_TYPE]) - I = image(r_ear.sprite_sheets[GET_BODY_TYPE], "[t_type]_r") + t_icon = r_ear.sprite_sheets[GET_BODY_TYPE] + else if(r_ear.item_icons && (slot_r_ear_str in r_ear.item_icons)) + t_icon = r_ear.item_icons[slot_r_ear_str] else - I = image('icons/mob/ears.dmi', "[t_type]") + t_icon = INV_R_EAR_DEF_ICON - if (result_layer) - result_layer = list(result_layer, I) - I.color = r_ear.color - else - result_layer = I + if(!result_layer) //Create the image + result_layer = image(t_icon, r_ear.icon_state) - overlays_raw[EARS_LAYER] = result_layer + if(r_ear.color) + result_layer.color = r_ear.color + + var/image/worn_overlays = r_ear.worn_overlays(t_icon) + if(worn_overlays) + result_layer.overlays.Add(worn_overlays) + + overlays_raw[R_EAR_LAYER] = result_layer + else + overlays_raw[R_EAR_LAYER] = null if(update_icons) update_icon() @@ -1515,7 +1556,8 @@ There are several things that need to be remembered: #undef SUIT_STORE_LAYER #undef BACK_LAYER #undef HAIR_LAYER -#undef EARS_LAYER +#undef L_EAR_LAYER +#undef R_EAR_LAYER #undef FACEMASK_LAYER #undef HEAD_LAYER #undef COLLAR_LAYER diff --git a/code/modules/mob/update_icons.dm b/code/modules/mob/update_icons.dm index c86a16d7113..24d59c3c726 100644 --- a/code/modules/mob/update_icons.dm +++ b/code/modules/mob/update_icons.dm @@ -58,7 +58,10 @@ /mob/proc/update_inv_pockets() return -/mob/proc/update_inv_ears() +/mob/proc/update_inv_l_ear() + return + +/mob/proc/update_inv_r_ear() return /mob/proc/update_targeted() diff --git a/html/changelogs/wezzy-earsmatter.yml b/html/changelogs/wezzy-earsmatter.yml new file mode 100644 index 00000000000..4257e1c2642 --- /dev/null +++ b/html/changelogs/wezzy-earsmatter.yml @@ -0,0 +1,41 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: Wowzewow (Wezzy) + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Left ear and right ear mob icons have been differentiated. You can now tell which ear someone has something in." diff --git a/icons/mob/ears.dmi b/icons/mob/ears.dmi deleted file mode 100644 index d25d596d8ef..00000000000 Binary files a/icons/mob/ears.dmi and /dev/null differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index c8cdccd2249..121734bc19d 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/l_ear.dmi b/icons/mob/l_ear.dmi new file mode 100644 index 00000000000..79ca242df37 Binary files /dev/null and b/icons/mob/l_ear.dmi differ diff --git a/icons/mob/r_ear.dmi b/icons/mob/r_ear.dmi new file mode 100644 index 00000000000..67b410b08d0 Binary files /dev/null and b/icons/mob/r_ear.dmi differ diff --git a/icons/obj/clothing/ears.dmi b/icons/obj/clothing/ears.dmi index 9df93845ebd..e3eb9831eeb 100644 Binary files a/icons/obj/clothing/ears.dmi and b/icons/obj/clothing/ears.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 2cc96bc02ca..4b4ea5c8aa5 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ