From 4f5465c39ed59e11a0f0c59e6eaaf1e8f1e54ee6 Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sat, 17 Oct 2020 01:00:04 +0100 Subject: [PATCH] fixes --- code/__DEFINES/citadel_defines.dm | 2 +- code/modules/client/preferences.dm | 25 +++- code/modules/client/preferences_savefile.dm | 16 ++- .../new_player/sprite_accessories/tails.dm | 132 +++++++++++++++--- icons/mob/mutant_bodyparts.dmi | Bin 34380 -> 34374 bytes 5 files changed, 148 insertions(+), 27 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 107e182f8d..89e44fc215 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -121,6 +121,6 @@ #define MATRIX_BLUE "blue" #define MATRIX_RED_GREEN "red_green" #define MATRIX_RED_BLUE "red_blue" -#define MATRIX_BLUE_GREEN "blue_green" +#define MATRIX_GREEN_BLUE "green_blue" #define MATRIX_ALL "red_green_blue" #define MATRIX_NONE "none" \ No newline at end of file diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 7832c79e18..2dfcde2949 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -561,14 +561,29 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(accessory) if(accessory.color_src == MATRIXED || accessory.color_src == MUTCOLORS || accessory.color_src == MUTCOLORS2 || accessory.color_src == MUTCOLORS3) //mutcolors1-3 are deprecated now, please don't rely on these in the future var/primary_feature = "[mutant_part]_primary" + var/secondary_feature = "[mutant_part]_secondary" + var/tertiary_feature = "[mutant_part]_tertiary" + var/matrixed_sections = accessory.matrixed_sections + if(accessory.color_src == MATRIXED && !matrixed_sections) + message_admins("Sprite Accessory Failure (customization): Accessory [accessory.type] is a matrixed item without any matrixed sections set!") + continue + else if(accessory.color_src == MATRIXED) + switch(matrixed_sections) + if(MATRIX_GREEN) //only composed of a green section + primary_feature = secondary_feature //swap primary for secondary, so it properly assigns the second colour, reserved for the green section + if(MATRIX_BLUE) + primary_feature = tertiary_feature //same as above, but the tertiary feature is for the blue section + if(MATRIX_RED_BLUE) //composed of a red and blue section + secondary_feature = tertiary_feature //swap secondary for tertiary, as blue should always be tertiary + if(MATRIX_GREEN_BLUE) //composed of a green and blue section + primary_feature = secondary_feature //swap primary for secondary, as first option is green, which is linked to the secondary + secondary_feature = tertiary_feature //swap secondary for tertiary, as second option is blue, which is linked to the tertiary dat += "Primary Color
" dat += "    Change
" - if(accessory.color_src == MATRIXED || (accessory.extra && (accessory.extra_color_src == MUTCOLORS || accessory.extra_color_src == MUTCOLORS2 || accessory.extra_color_src == MUTCOLORS3))) - var/secondary_feature = "[mutant_part]_secondary" + if((accessory.color_src == MATRIXED && (matrixed_sections == MATRIX_RED_BLUE || matrixed_sections == MATRIX_GREEN_BLUE || matrixed_sections == MATRIX_ALL)) || (accessory.extra && (accessory.extra_color_src == MUTCOLORS || accessory.extra_color_src == MUTCOLORS2 || accessory.extra_color_src == MUTCOLORS3))) dat += "Secondary Color
" dat += "    Change
" - if(accessory.color_src == MATRIXED || (accessory.extra2 && (accessory.extra2_color_src == MUTCOLORS || accessory.extra2_color_src == MUTCOLORS2 || accessory.extra2_color_src == MUTCOLORS3))) - var/tertiary_feature = "[mutant_part]_tertiary" + if((accessory.color_src == MATRIXED && matrixed_sections == MATRIX_ALL) || (accessory.extra2 && (accessory.extra2_color_src == MUTCOLORS || accessory.extra2_color_src == MUTCOLORS2 || accessory.extra2_color_src == MUTCOLORS3))) dat += "Tertiary Color
" dat += "    Change
" @@ -2055,7 +2070,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["xenodorsal"] = new_dors //every single primary/secondary/tertiary colouring done at once - if("xenodorsal_primary","xenodorsal_secondary","xenodorsal_tertiary","xhead_primary"."xhead_secondary","xhead_tertiary","tail_primary","tail_secondary","tail_tertiary","bodymarkings_primary","bodymarkings_secondary","bodymarkings_tertiary","ears_primary","ears_secondary","ears_tertiary","frills_primary"."frills_secondary","frills_tertiary","ipcantenna_primary","ipcantenna_secondary","ipcantenna_tertiary","taur_primary","taur_secondary","taur_tertiary","snout_primary","snout_secondary","snout_tertiaty","spines_primary","spines_secondary","spines_tertiary") + if("xenodorsal_primary","xenodorsal_secondary","xenodorsal_tertiary","xhead_primary","xhead_secondary","xhead_tertiary","tail_primary","tail_secondary","tail_tertiary","bodymarkings_primary","bodymarkings_secondary","bodymarkings_tertiary","ears_primary","ears_secondary","ears_tertiary","frills_primary","frills_secondary","frills_tertiary","ipcantenna_primary","ipcantenna_secondary","ipcantenna_tertiary","taur_primary","taur_secondary","taur_tertiary","snout_primary","snout_secondary","snout_tertiaty","spines_primary","spines_secondary","spines_tertiary") var/the_feature = features[href_list["preference"]] if(!the_feature) features[href_list["preference"]] = "FFFFFF" diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 1f3762f8ad..4097bad5eb 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -228,6 +228,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(current_version < 39) //extreme changes to how things are coloured for(var/feature in features) + message_admins("[feature]") var/feature_type = features[feature] var/ref_list = GLOB.mutant_reference_list[feature_type] if(ref_list) @@ -237,6 +238,20 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car var/primary_string = "[feature_type]_primary" var/secondary_string = "[feature_type]_secondary]" var/tertiary_string = "[feature_type]_tertiary]" + if(accessory.matrixed_sections) + switch(accessory.matrixed_sections) + if(MATRIX_GREEN) //only composed of a green section + primary_string = secondary_string //swap primary for secondary, so it properly assigns the second colour, reserved for the green section + if(MATRIX_BLUE) + primary_string = tertiary_string //same as above, but the tertiary feature is for the blue section + if(MATRIX_RED_BLUE) //composed of a red and blue section + secondary_string = tertiary_string //swap secondary for tertiary, as blue should always be tertiary + if(MATRIX_GREEN_BLUE) //composed of a green and blue section + primary_string = secondary_string //swap primary for secondary, as first option is green, which is linked to the secondary + secondary_string = tertiary_string //swap secondary for tertiary, as second option is blue, which is linked to the tertiary + else if(accessory.color_src != MATRIXED) + message_admins("Sprite Accessory Failure (migration from [current_version] to 39): Accessory [accessory.type] is a matrixed item without any matrixed sections set!") + continue if(accessory.color_src == MATRIXED) features[primary_string] = features["mcolor"] features[secondary_string] = features["mcolor2"] @@ -248,7 +263,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car else if(accessory.color_src == MUTCOLORS3) features[tertiary_string] = features["mcolor3"] - /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) return diff --git a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm index 554549c0c3..b3a89d9115 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm @@ -120,26 +120,6 @@ color_src = MATRIXED matrixed_sections = MATRIX_RED -/datum/sprite_accessory/tails/mam_tails/batl - name = "Bat (Long)" - icon = 'modular_citadel/icons/mob/mam_tails.dmi' - icon_state = "batl" - -/datum/sprite_accessory/tails_animated/mam_tails_animated/batl - name = "Bat (Long)" - icon = 'modular_citadel/icons/mob/mam_tails.dmi' - icon_state = "batl" - -/datum/sprite_accessory/tails/mam_tails/bats - name = "Bat (Short)" - icon = 'modular_citadel/icons/mob/mam_tails.dmi' - icon_state = "bats" - -/datum/sprite_accessory/tails_animated/mam_tails_animated/bats - name = "Bat (Short)" - icon = 'modular_citadel/icons/mob/mam_tails.dmi' - icon_state = "bats" - /datum/sprite_accessory/tails/human/bee name = "Bee" icon_state = "bee" @@ -229,60 +209,70 @@ icon_state = "datashark" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED_BLUE /datum/sprite_accessory/tails_animated/human/datashark name = "datashark" icon_state = "datashark" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED_BLUE /datum/sprite_accessory/tails/human/eevee name = "Eevee" icon_state = "eevee" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/human/eevee name = "Eevee" icon_state = "eevee" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/human/fennec name = "Fennec" icon_state = "fennec" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/human/fennec name = "Fennec" icon_state = "fennec" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/human/fish name = "Fish" icon_state = "fish" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/human/fish name = "Fish" icon_state = "fish" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/human/fox name = "Fox" icon_state = "fox" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/human/fox name = "Fox" icon_state = "fox" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/human/horse name = "Horse" @@ -301,36 +291,42 @@ icon_state = "husky" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/human/husky name = "Husky" icon_state = "husky" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/human/insect name = "Insect" icon_state = "insect" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/human/insect name = "Insect" icon_state = "insect" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/human/kitsune name = "Kitsune" icon_state = "kitsune" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/human/kitsune name = "Kitsune" icon_state = "kitsune" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/human/ltiger name = "Light Tiger" @@ -345,108 +341,126 @@ icon_state = "murid" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_GREEN /datum/sprite_accessory/tails_animated/human/murid name = "Murid" icon_state = "murid" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_GREEN /datum/sprite_accessory/tails/orca name = "Orca" icon_state = "orca" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/orca name = "Orca" icon_state = "orca" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/human/otie name = "Otusian" icon_state = "otie" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/human/otie name = "Otusian" icon_state = "otie" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/human/rabbit name = "Rabbit" icon_state = "rabbit" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/human/rabbit name = "Rabbit" icon_state = "rabbit" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/human/ailurus name = "Red Panda" icon_state = "wah" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/human/ailurus name = "Red Panda" icon_state = "wah" icon = 'modular_citadel/icons/mob/mam_tails.dmi' color_src = MATRIXED + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/human/pede name = "Scolipede" icon_state = "pede" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/human/pede name = "Scolipede" icon_state = "pede" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/human/sergal name = "Sergal" icon_state = "sergal" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/human/sergal name = "Sergal" icon_state = "sergal" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/human/shark name = "Shark" icon_state = "shark" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/human/shark name = "Shark" icon_state = "shark" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/human/skunk name = "skunk" icon_state = "skunk" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_ALL /datum/sprite_accessory/tails_animated/human/skunk name = "skunk" icon_state = "skunk" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_ALL /datum/sprite_accessory/tails/human/smooth name = "Smooth" @@ -477,60 +491,70 @@ icon_state = "squirrel" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/human/squirrel name = "Squirrel" icon_state = "squirrel" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/human/tamamo_kitsune name = "Tamamo Kitsune Tails" //Tamamo-no-Tiro, let it be known! icon_state = "9sune" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/human/tamamo_kitsune name = "Tamamo Kitsune Tails" icon_state = "9sune" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/human/tentacle name = "Tentacle" icon_state = "tentacle" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/human/tentacle name = "Tentacle" icon_state = "tentacle" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/human/tiger name = "Tiger" icon_state = "tiger" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_ALL /datum/sprite_accessory/tails_animated/human/tiger name = "Tiger" icon_state = "tiger" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_ALL /datum/sprite_accessory/tails/human/wolf name = "Wolf" icon_state = "wolf" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/human/wolf name = "Wolf" icon_state = "wolf" color_src = MATRIXED icon = 'modular_citadel/icons/mob/mam_tails.dmi' + matrixed_sections = MATRIX_RED /****************************************** ************** Furry Tails **************** @@ -566,34 +590,42 @@ /datum/sprite_accessory/tails/mam_tails/axolotl name = "Axolotl" icon_state = "axolotl" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/axolotl name = "Axolotl" icon_state = "axolotl" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/batl name = "Bat (Long)" icon_state = "batl" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/mam_tails_animated/batl name = "Bat (Long)" icon_state = "batl" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/mam_tails/bats name = "Bat (Short)" icon_state = "bats" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/mam_tails_animated/bats name = "Bat (Short)" icon_state = "bats" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/mam_tails/bee name = "Bee" icon_state = "bee" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/mam_tails_animated/bee name = "Bee" icon_state = "bee" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/mam_tails/cat name = "Cat" @@ -608,34 +640,42 @@ /datum/sprite_accessory/tails/mam_tails/catbig name = "Cat, Big" icon_state = "catbig" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/catbig name = "Cat, Big" icon_state = "catbig" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/twocat name = "Cat, Double" icon_state = "twocat" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/twocat name = "Cat, Double" icon_state = "twocat" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/corvid name = "Corvid" icon_state = "crow" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/corvid name = "Corvid" icon_state = "crow" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tail/cow name = "Cow" icon_state = "cow" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/cow name = "Cow" icon_state = "cow" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/dtiger name = "Dark Tiger" @@ -652,42 +692,52 @@ /datum/sprite_accessory/tails/mam_tails/eevee name = "Eevee" icon_state = "eevee" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/mam_tails_animated/eevee name = "Eevee" icon_state = "eevee" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/mam_tails/fennec name = "Fennec" icon_state = "fennec" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/mam_tails_animated/fennec name = "Fennec" icon_state = "fennec" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/mam_tails/human/fish name = "Fish" icon_state = "fish" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/human/fish name = "Fish" icon_state = "fish" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/fox name = "Fox" icon_state = "fox" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/mam_tails_animated/fox name = "Fox" icon_state = "fox" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/mam_tails/hawk name = "Hawk" icon_state = "hawk" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/hawk name = "Hawk" icon_state = "hawk" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/horse name = "Horse" @@ -702,42 +752,52 @@ /datum/sprite_accessory/tails/mam_tails/husky name = "Husky" icon_state = "husky" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/mam_tails_animated/husky name = "Husky" icon_state = "husky" + matrixed_sections = MATRIX_RED_GREEN datum/sprite_accessory/tails/mam_tails/insect name = "Insect" icon_state = "insect" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/insect name = "Insect" icon_state = "insect" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/kangaroo name = "kangaroo" icon_state = "kangaroo" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/kangaroo name = "kangaroo" icon_state = "kangaroo" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/kitsune name = "Kitsune" icon_state = "kitsune" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/mam_tails_animated/kitsune name = "Kitsune" icon_state = "kitsune" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/mam_tails/lab name = "Lab" icon_state = "lab" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/lab name = "Lab" icon_state = "lab" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/ltiger name = "Light Tiger" @@ -754,84 +814,104 @@ datum/sprite_accessory/tails/mam_tails/insect /datum/sprite_accessory/tails/mam_tails/murid name = "Murid" icon_state = "murid" + matrixed_sections = MATRIX_GREEN /datum/sprite_accessory/tails_animated/mam_tails_animated/murid name = "Murid" icon_state = "murid" + matrixed_sections = MATRIX_GREEN /datum/sprite_accessory/tails/mam_tails/orca name = "Orca" icon_state = "orca" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/orca name = "Orca" icon_state = "orca" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/otie name = "Otusian" icon_state = "otie" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/otie name = "Otusian" icon_state = "otie" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/rabbit name = "Rabbit" icon_state = "rabbit" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/rabbit name = "Rabbit" icon_state = "rabbit" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/ailurus name = "Red Panda" icon_state = "wah" extra = TRUE + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/mam_tails_animated/ailurus name = "Red Panda" icon_state = "wah" extra = TRUE + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/mam_tails/pede name = "Scolipede" icon_state = "pede" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/pede name = "Scolipede" icon_state = "pede" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/sergal name = "Sergal" icon_state = "sergal" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/mam_tails_animated/sergal name = "Sergal" icon_state = "sergal" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/mam_tails/shark name = "Shark" icon_state = "shark" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/shark name = "Shark" icon_state = "shark" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/shepherd name = "Shepherd" icon_state = "shepherd" + matrixed_sections = MATRIX_GREEN_BLUE /datum/sprite_accessory/tails_animated/mam_tails_animated/shepherd name = "Shepherd" icon_state = "shepherd" + matrixed_sections = MATRIX_GREEN_BLUE /datum/sprite_accessory/tails/mam_tails/skunk name = "Skunk" icon_state = "skunk" + matrixed_sections = MATRIX_ALL /datum/sprite_accessory/tails_animated/mam_tails_animated/skunk name = "Skunk" icon_state = "skunk" + matrixed_sections = MATRIX_ALL /datum/sprite_accessory/tails/mam_tails/smooth name = "Smooth" @@ -860,47 +940,59 @@ datum/sprite_accessory/tails/mam_tails/insect /datum/sprite_accessory/tails/mam_tails/straighttail name = "Straight Tail" icon_state = "straighttail" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/straighttail name = "Straight Tail" icon_state = "straighttail" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/squirrel name = "Squirrel" icon_state = "squirrel" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/squirrel name = "Squirrel" icon_state = "squirrel" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/tamamo_kitsune name = "Tamamo Kitsune Tails" icon_state = "9sune" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails_animated/mam_tails_animated/tamamo_kitsune name = "Tamamo Kitsune Tails" icon_state = "9sune" + matrixed_sections = MATRIX_RED_GREEN /datum/sprite_accessory/tails/mam_tails/tentacle name = "Tentacle" icon_state = "tentacle" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/tentacle name = "Tentacle" icon_state = "tentacle" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails/mam_tails/tiger name = "Tiger" icon_state = "tiger" + matrixed_sections = MATRIX_ALL /datum/sprite_accessory/tails_animated/mam_tails_animated/tiger name = "Tiger" icon_state = "tiger" + matrixed_sections = MATRIX_ALL /datum/sprite_accessory/tails/mam_tails/wolf name = "Wolf" icon_state = "wolf" + matrixed_sections = MATRIX_RED /datum/sprite_accessory/tails_animated/mam_tails_animated/wolf name = "Wolf" icon_state = "wolf" + matrixed_sections = MATRIX_RED diff --git a/icons/mob/mutant_bodyparts.dmi b/icons/mob/mutant_bodyparts.dmi index 1334ce9e0e8e546373d183919d8612d069f276b8..8d34fb8dc3e6240b5586a2660199e7daa3c5acda 100644 GIT binary patch delta 12441 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 delta 12360 zcmaL72Ut_t_C9<9jEIVeIHI&DD99+qLX#2{5v8iAC>;@LQcR>nPV5B*F^p7+g{BCI zNEd=_0FfdsK!6}sT7Uq7kaGSzpmS&L_xrBTgZq?ycJ|qOt#`faUFWZR0$=Y5JlM8T zF7)J?%ZJ=>u2@h1%btF|5EPtT9v`z`4ZfKyFfbhxD`Q%5lF~exU-E~aJIgQCp|D$C<;|G=7&5?|IL2Ny8@SEKFJ6-Eyq_^D7c5sa?^c9{ywEEx~1unaLprHNR zEm-x`H>jYM!Vp$Sl0EQrrr`GN6`292lRnYg#CO#D-<}kyo}Lc#5n!D$roLU9l~l%N zSsk_vs}?dnc%dWaqwPxZeFp{J1s*wgB&bc}{a$5!q|N!qy0h^`4sx3%ZkK&zuGG7% z&XBv4J-5SbNV&=R8VB=8;l#Gf@4fSCf6Els`YNZ_-(oZC1|xF{gC?OVxh z+UPlzZMWq`Ht)WQ?r$XDun$^HwvMn2vMFz!oT(s*3EhghJo;ksbU>@M)v0; z8c@n1V)6L)qb3rnuzJ$OG z0u9feh!ioTD?4YiCNCfy*37f~$qBk(0}0bm2#a-nEhS6aG#gCSI`Ob!GsV&VScmM> zMFzrnR;|;81c6D*WG|}lqHdiZnH#uBFPm%63g)=gs?CqIzJ2 zyNlSHm{D04v`N8@Ha35S;uxkv-JqSeIDduTachPtcb37Or!_p{(%;-ve6O75PxYbD zhdojo2$=ySuOO-T6Q*DRVEB^676z}1>uY({d)#QhwiU7+p(rksP+y9&8$l?b7dFivyty~syhVUmP`#@4tV!wVP9=*V* zRdX`G>I8G=rr00o`!v!vu`7M=A5U*{of{q#!*HfPADWsdqTzRoMwKF$$Vo)!grcXw z7J$j9ExzT!n4!sJJ(T506-_4lyCs$Wz6t3%K;xvw9@M~;E&Bb@6QTB&yqDCpFQIi- zb&9@CArxkocSmeV)3fsK3SYk^t(_#S%yoJEteex`YISv}cxOeJIc-)6W+*AAZ3smA)s0F_ zFo=JA_oSD0AzJ?hiZ0oSAPSStLEK~u6{YAd*ReDG701k& z9W`_jzwrImM811NA=sdg7lT}O+~QCbk-{3Xg9F89kfzGAzN({CS>gc`1WQZ$TVE?+ zwOK_LJRc&aEJZ&|5xH4I!o_wrpo}QYDdj z;0dHT2iUy*_Xt`uBs>G$&4;|u7b%IpT86L_OwS#T;FVP@^sQ!T^F5gsZDlo}%j>Xvro)lNG|}1-hcTl^=}w*#+jqgMZo#&>rv+RzGyMdNy|} z_XbP~Gd;?LH)NCA0v(DTdtto=zN(~G`i$ZbKE%a2;S(y@bY1Hwhr!Q|U0{+Tm{a_Xa4xmXJ! zDIsG6LR~0!LbmVN<5x@Hmg$Fgb1Le#YFOZTk{S%yyV3@VbHCAl!y|`CT{B^fdR_PO zE5QLF%FTP5ARFiTkIlEvOP}wNODJ;xQC~DZ7C=cgqR;7^f3tl)d|#zc^Rk&v{fy{we=x`@2k%?QAU@(=$#*$^k;nQ^4#0NTr849Zs(g#~ z?=0HJr++y_*4EbID8RI#4!01Y{hba3>$;MZm_kqD75fcD2OC)dT|?q~4|$2I2gvIq z1&Kc$q*uHPB}H^RFGGA_|C_}Ao19z5FI$E9KBO2AMfa|4BwE^RC6aA~)f6ki*!#BD z3KjnzL%*!9zw8Pyb%3VHKb&^+CfK#>oX%=J7d3dO>k)CxO#wFJv5jAJC^RYrfV~Rl2u&dODO?GAABJEKkFXf2jY)f?(Hq0Gs0tUoYFi zK9s{f_J(XHI`%qxT+F(;bo?RW;$<7>z`&SWj5T?WEIt}L?<6MCD^gHgUtR9@226{( zogG+HVS&w!7MZ$^eT5q+%ZTyD-0Ye>-CWwWFMz4xm(|%;cL`2TY*V4kSy)hiq}#S- zfA+Q;aD2W?)L#XCIU^CvRY03v29Mq7y4Ctt)o1`8-`VE#rHf5IMb+$V&9$2yyOumx z^Z-8jZQjmOVLp_#IrX02o^OgJMJ7YXFjXO8=X(@OC{}!IGnC-0B|dfC4#03Lyr~rm z0;~D*!TPwMyDK#WAn2{frI3&ix)j)-EoJHwy+;6vE#P1O@M|O8*S$Cmw)AxTuU%gw z-?|C_l)nS3DC7NDc8%Q94cSi(x@d&fnmyb5g1PgOg}Yj%oz1IW#UJ8Gg0`4h%fSo|onIbeZ3>jcNol~Ayqy38A1*CI(WRZ7f;Gq$)7=*}3nTiw zgisJ+nyFbSMVtAy(3G$C;Gy&us1lze5!Em23`R=ypDi*3Fm8Bg3HTGA@PF_LagCiU zQOr&X{0Z;ZJ^=6}acLbajd?}J|EIU)d>$MeEb)d`x|i7dY9-Y@D|Ea6JJIR9)EW)c z3hnowKO6s9E47n2ZHE>NBHSY8*+>gp5KxxAYo~ziORvllQLhx~LdgLqkzT=n;)*U& z+d+D1;OSBMS~qii;c{_R-Fm9o9Wa2sj(w1hK3;!tUG&FoJn@gc(DQsCMv z%GlXQ5+hMwrpi8=NuRMLT`6TzT|-~UW2OGAAO|JnPBqz_fmTF3YcS|&L&4k)|Ia}NSdSb;9)7{<%kH#lAmN1RJ&UK(K=^lQ?I>Vr;nbs**LQ1yTr#mtp!{Qk) z#JvrS>B@$0%aHOT)&%Pso^QdVAQ&PoruYTC>Ikp@5O>XO?06C+crSLw*Z-3;?o*=G zpE!r-j!?#iGNuuDK;zX%gAz=?S9>7;CpoasPUC0s0RcdhOtwyGlETf{h34v6?{|vbq}CwK>Vd#dD#L<+aG=brK$m+PZ#pf&T6eP^ST}(vJooR=* z4%u$FAYdNy)8>HxJeTU73)Md*8#G#~+9Ep#M*dOi8%E!cB_ir9D>I(kL*(^ohA<)X zu)aVym}7yh8(IC%!jZF|5~DRtcrit;1D%uo?PMp=?6u)RkoC?`0T{fE=BV)iScYA3 zwLW!3f(|1(J|cJMXrp~IxjMSza1K|scJRc^YUui@Ss`t&nX;^#0h`VVw5WCznK2>5 z%bzU?&#jQq0!!3zB6MP7GdZw^r{|>y`^&JQ%D0aD=P;Z&v4LHZMzw=`s5FCHtzHEn zVM*Q__GSCLrV1QaJ3-c~S7C3SYYxk9&5``1lSAjbNueJSJ^40a#=`7<oH%p1su8FsR1V8e>GW>EiQE@Nxm)oW%8I5YlYd;jgwE) zR;%6Y5RRwPKl1=6TtD2Gep`d|hdVO{Q!C$+gIe)qm5M{~?pHKnd3(a~xbC2X8J&nc zy-M6$&Ut4QyE3N1UEGTT3ATDnf2#Fi3hw*x)hCFQW+Mmjf~$&)i&v6gt&`|&LPu;`pEq>Exa*O)x9X`+KAZp7iEEt( z|5eHybFK3wdOaH2ieArTY(pXjFev{a1J7@DEJ=(*9ZkGiU(!h)`q%HVTO8 zc6MP6DR!ts46FM5hlsyu&~dLbw;~3XNGVCjk`Pk_5K!#<0@;brCOMNJ%&pnYE#t%D zbJq4W^!&9!Y(fC0LB~^$yZsDZsKAT~B0iv|ONck|P~QkkmjtM1{UuB(6TYeI!4If! z_&oHD8SmB$Plv!7L|r4>tijmdE^ywZqsW*!+zL>3J~rSLo_q!bg%=G$ASHb+-5bkz z-0Q8~4(3-@&BHH+NJ*xKPkv%sT3p$SEYBpsIh9*G8gWG)KoqHi z_w`sMDJco7$wj7kk!o0BABp=a%aj&goGwil%t;R@@f?jTODsC&Gxn(eLq(y_+pP3} zT2`@j6xr@-_1J|~Er6oBXHNgg4VTxfD92+G-iX(;Ql__w`uokFolrg?wl^I?}-IiTTsXdgIFe~l>++oL`M1spsVx!|qBFS19Ht$?w!i>pFcK`oQ_<#7P z59z3MF9;^Li^VN9=1V~yxwI~EA!}H}PAQz)t;pB_2@YYX-QwgDVcuX3S>|upu0eh* zxn$D0Ybz7KB#&+OOgc<_V7GyoVzYwibAF9@9b@ejpp;Py0w$SnvHywZs!?tZ3{^fQ5@Iv`Pl8=BrBY)I7Va&2Bw0v!V&0t^O zxk9m9xQBm-?q4B%sb!rH6E41?7@XtY&DJ$Mo{|-Zyd7{-WQh^^t>mu*&_>3RMW$BL zA<@Xo!o*-tStW3|)af66ex3h!UzPva7k(t-Z>s$1OSA^XApry>Vx#Xy;Bo7=?9g!c zBmf3}uEhT4f^6pQA&%_p9YOGk#ofpbvY_ToqKfAxxK^Q2nY+n0whVF|aBL`%%dg%F zQowjubo4t>1q%Lli9x@-Z`ExLG(WjqCcWqCs<1q=-A|Hoy)$25Kz4BZk34Lyduklb z?=HwJPiLKKQ<8nw%_>uFdR%EeV8ATPp&r)0vu1=O@DR~HjuG_2Fs-p18l1-LhfC}) z_z|ATvC9)Nf!oL~7tmZf+_0f{UrYvEo|r)>Q6fYk zFt%K})ex;!9qAjM`Os3VuxqEgN{LGG*A_g8C{wpkr_( z`eVymRs9ZhMtXqPbmztr6YLMG-EIkxRmiQ2^YvyU{P<_pnEtAKpsX58wzC++Hn&*! z;*l4F=XR%IUYXTYO(|o|3EuIX9{416oA$8K>qmef<1DUPKnaZe!}Q%CO)-Xj0x1;_ z(oiXVSBq%VAk&xc6nRRXQU82p6RY-9dS*lrCjLq4s{sQrsm<6+mtxYru6p;JF36^~ zXe~TTnOuA6$8SeR7HbZwir3>Z5?#B~d#VDXYZLtj+Roo?kSd{kuZY;XovP3neE!)f ztY7rkr}(HDX7xLeh?ACNJ;n3vjY~Li=U+H*-J1Y5^Ish7e}(0rh_HK3Q?33b34%5Kb)-*7^U2>E|~=kti-s38|_b#FlkjywI_A7-dg%v6BHB z$=bDPCZq>lH3^n3^ zwbr7nTk%jXW$akcDOFX~3sjwY&m439O55_ble6~xUWKSv{nMeBeHA-|?vw51tu>4t z9*wIVEWDw36;-T2tnrlvFdz!I zK7iwCs3`2bQd+ELQr(A1f`xmIu7!2SMa{@TtTJ*(n^(IHabb`iasF;k8u64c{N$wY zMwv{PPZW1cU&Y3}A!`5;9$J_{;~eff+<1RXkqZdWyD9GWpC&df6Vv|yg+?-Bl?bWD z5#9VYz;pLz2PL)mkCjAoJ%V_CFC*4JV7E^Kp?U7$n_ro6Cb!+HW*Uy`j7D@qD|Mo{ z&y^~(%?q_H>$&oM27vln586{Ql`3P;QSduDXxTuus%l2_RVwBS7lByozuAI%>Z390 zHN{Hqu@@&n~R$$DdpBd|!sFkDrl| z3|XXPg{+DX6Zo;9W@BLm(K?`c^ucfVTYt`ska-bb#CW&aj-L{%zD&0wF@D>CJ*;x& z#cjoH8H8MoN-3xGJs>R~k>7J7TgNs+s17L9K`dbV)2mADQc-j zND8%_`KkbwxL8w+<1?LPik8N_v^XW3nL)7PZQe#GYhf6R$e7S4Vsu&>F7>1&?gfk= zXjs>Y%k_e1-yp%Q#`w6q)Bh1$sOi--g+{|81rc^Ts$%}uDt(gH$-}>-uO)rWoJg=n z!yi&bU!&9Oa|e9vu|5SmLZsvDr6DMF-zC9!py;6DAk>`? zjSa+L>^Ar&2# z$qn`_u>Q?8%$1i-17J{f3P<+7tS+FrmDqdXQP7qruOxbH6L^3GL(n>#HW7adkSVJI zslc?NH$&qMCbxUSD#{lmN>d)1=tJ0^=eX4(9It98L7Dc@ za)Tg|d?}$$v zzkmIR44VcxBAz=(8L3qxhv#+Wj1`W}?XNpk3obj_+uO5m5I_;c2W=3pZ6~_@0hu$1 zD6krezADe~P1+=6_Q$ut`Gebvc$V-B$%HiE2`nd@&%x5@y^5*i}8I z$k`7&0(Mv)0Q%<(+$vBlFnw&DxfKR4?jNgzz9Jnun|(+{f0Z&q9U%FgB|g7=5amW3 zy1Y$Aw-Ty6K7<$Em4?n(n^qy*PDbKRNYjLN^7(JjS>+n?HjM$GF+ehI^(I8EfGw*q z0+Qc9VDme6=@DH5Hm-jJmWDafoRPoFdzBT*z^6~2cqc&hw{pRa-@g&x1;_{skMr58 z8<7?urPzb2eXmPseh4QFV9a^VjJ4`eqs$~!$S!`loru- zj*(Ng&!zMbodY*2nXCfDQNHQ7FrjY@Ops{7owpVWty0E0J}-eR9QCH-;zpeLet84p z<3MS6yq}>)u_s;9@l*67pa{?FETG0}^$+s|pVSe|2+9iSN1;GrB8Z ztHG9hEfw7h#UM@-SlYWicNo6W1A7y`*4BJsrH^tIR5 z#RfVje215uOK2N1^Wblc9-i(bk@F%Z8fe8h?pjum7cM8j*T;^EFtkTxd!N!4!hn}B zzkj@y9}y8CQa{ah1PjUrh3pJ9n9N~(#sW&1LmBHREa$-6U{)<+!XWu2Fx0Mbs)o^n z;y=g>b$*3T++pP53DXf4!X9sfo3-R}c|}MfZ`cV5kf<^w*CXu6hUUo%1m6~bXT85R zK}JU4Bg&$~$CKD?^T}rqX^zA>&jrcb>4+GF&U%!E$$!b7ov?%dcGZ9REjS4>jW{mV ztK<|>z(q8ZVo#XzCxFcs2?4L!Ua?5yd7CPyVQf{KTeEUECN#u4vS+jk`IE3VRpwS9 zJes@TBGRWt?%?Gjv!oN?BAdj!HJa3mu3%kYPx5B1tW7;%E5DBbll1|2Nie5s){i$q z&JMLR_hk58p`)+eS@^TPDsd)@{QM$?_&r1dK0ca!mE)&dSieKm-xQ|iE#Qc>Bunn<&GrY(!9~gqEiMup8 zT*&Lkw~X~Q7}}cwr;RL{A`)Kv5I#EqQ}b9RUWD)V_=TaQiLLi1o+5G>DK4zis8xVv zBvC;G(hFah>T>Hc6bd7`V!xw z@O)F~>+5?(j@HU>LKZ3cDp|mtK^h)9`{Q^X^)!!FP1a+OEq}H-1)MAGiV?!aFrttK zW63Z4O>tzw*rw>9$7T^?M|dG|e?H`x$^Qoi8Dx4ar(AGNa&4+aFYj8(4Wg6jjDbL_ zU-JnoymAdji4|wU7x2(aZNVeVI_khA{slYX{#W-P%x zH`e-BzXRjfoR+Kpr3V1t*kAjGNC=a)3B-E54=uM8#|u1F;?wM3OF|fNV{cAf89jDS zgQ9B)^kJaWZ%4R5R^7##{3*!(;=P;s9AlxcPrizzQlC5t8F!`w0Z~f(^b?03l-zq= z!+%SDKzy*RLEo;^twaS2Xa4*_u-a(n(BKCc`r6i2^(Xj&?=x%Y1}FuhE@M4mc4G zD)2@gC)?EC+X505cF^(AMX)Dz9T~A01O(;dYVzI~URZmYsxM_jVfJm;prrr%xq2@ z@LxcGufZ!e6;seEaU*K@nWTw|6-9_U{MNqSp|j)h^O2zEpc1f;A2ObV+vHZ12EVcQ z&2@|jn6lf80GOTYtFdvK;0|l(nl#h;?t{XD^1@PzpV+&k_$B&JDKx5Kf~Wc(=hGsP z2wb#IQx2XM{f1_eC3*X^yLs68wQ$QorpQ!MG&&H`m5BU%5jtrA=Tjf0j0F!YpC?RFbO>dzSsT1%E{4Dujzpr;)EZD7wr89Dr8nk zU-CWV)9HhMyt>ocnpg1~DB`zgr4QZeZ+(PhuFxLE(ZCY_HRn|3<$>3BP+^f;AWRr@ z*DQ|KvVHhYF`T+s0~3{8ESVA6a>7c&k`?X3or8;FneUH^PHEA?`#&Vgf1S=wC36@0 zWnj&$+Zxt|yak5J>j|v2CNBpiW=whsY1pdPxa*-9Oc-DMVuBtVa%*FQ!9Tvk(Akk z;WlGHr}Fz}kjb>m<>I>OBD(X81_vXNF*q*iKCQJC1{EJ=f00^}R|uc6xn@u^nO0p;8W7GyA31&jj`*cd+lrYzeO1gFOS#|t|uT0LGG97 ziX&aMfc|cOg_&X54670t<@_)W%)34`V|LTGQTFht{wm$` z3S&Tn!GP50M(dQ@q?&sa(pWdA!tPVzl@L#YU|DIYE#LWu7G6hRz9jpiEzj20hFM#H zo`r+zNjjT$QnU^~Qk=h^%j;S{J!A{JX8slNg#7(a-K0z{a@g^C2WL5{-c^Sxj-h(B zBV31ZWEH-V8pHj%X(5d0V2Q2g>MGyC`zoPz_Y{kL7{c0*S8Up{MY25pa)AX8%J>G^ zY#F}cj~JVY(@^8yxo7E$KZ0m5d10aoeXABJLc?8$c;F3_!DoJf^gWp;KT*8B@Q5VA z(}Qr0%6)d%UXt@4kBa_wFu&@xUj^$h^ZwnI_&w!aTIA>5oN?QN%Mu&3?}J6}9-?&9 znTL=^mc5s8U7S>V+z@)?uvx0@m6>mlu%^w7^oXT@WDtH35mp%@*`-pp*oJalavG2$ z(Fcka7I5_e6BsrPEa%s01RzX}4pI5K58Rj&)Dtq?wH<0q|9m!%&JlLsTO+i<_mL#T z?=CqEx7nH(=6`SfJb68HZoL=ySjXtTFJayRvWjrw6v6BwVU=8D-r02f1iXD>Y~Du_ z6j*A2BV%XL9YND!0Rb8v{o66D8mmH5IOAw&|9vecuMU{356sLbrO{x7H$NQl>c(hn zA)+6`IL{VCro`N76qrFIT|^japqS~p^Z~?I&o^rC6W?^mGT1Z(Kb=qF?$QrqUVPor z#(8M%$p)U%+DEi9NN_zKv^YStdV^*I(D?JHVrAK)=j+IGy#|Vv5cHMLUfUMHS53#{ n$$X?RB&OfE17K#uMjl*oaE01Qw2T74ALyvD<)NH|&R72*u7qmz