From 700e49f0474c1788e4db8737a6bee2480890f7e0 Mon Sep 17 00:00:00 2001 From: Matt Atlas Date: Mon, 23 Mar 2020 20:27:57 +0100 Subject: [PATCH] New Underwear (#8343) If there is a God, then He will prevent me from clicking the green button. --- SQL/migrate/V045__underwear_updates.sql | 10 + aurorastation.dme | 6 + code/_helpers/_global_objects.dm | 3 + code/_helpers/global_lists.dm | 31 +- code/_helpers/lists.dm | 122 ++++- code/_onclick/hud/human.dm | 6 +- code/controllers/subsystems/garbage-debug.dm | 5 - code/datums/category.dm | 16 +- code/datums/underwear/bottom.dm | 113 +++++ code/datums/underwear/socks.dm | 185 ++++++++ code/datums/underwear/top.dm | 53 +++ code/datums/underwear/undershirt.dm | 417 ++++++++++++++++++ code/datums/underwear/underwear.dm | 73 +++ .../gamemodes/cult/runes/manifest_ghost.dm | 2 +- .../game/objects/structures/under_wardrobe.dm | 121 +++-- .../preference_setup/general/03_body.dm | 1 + .../preference_setup/general/04_equipment.dm | 163 ++++--- .../preference_setup/loadout/gear_tweaks.dm | 11 +- .../preference_setup/preference_setup.dm | 6 + code/modules/client/preferences.dm | 19 +- .../abstract/new_player/preferences_setup.dm | 12 +- code/modules/mob/living/carbon/human/human.dm | 20 + .../mob/living/carbon/human/human_defines.dm | 6 +- .../mob/living/carbon/human/update_icons.dm | 23 +- html/changelogs/hot_sexy_lingerie_update.yml | 44 ++ icons/mob/human.dmi | Bin 29653 -> 5735 bytes icons/mob/underwear.dmi | Bin 0 -> 74176 bytes 27 files changed, 1280 insertions(+), 188 deletions(-) create mode 100644 SQL/migrate/V045__underwear_updates.sql create mode 100644 code/_helpers/_global_objects.dm create mode 100644 code/datums/underwear/bottom.dm create mode 100644 code/datums/underwear/socks.dm create mode 100644 code/datums/underwear/top.dm create mode 100644 code/datums/underwear/undershirt.dm create mode 100644 code/datums/underwear/underwear.dm create mode 100644 html/changelogs/hot_sexy_lingerie_update.yml create mode 100644 icons/mob/underwear.dmi diff --git a/SQL/migrate/V045__underwear_updates.sql b/SQL/migrate/V045__underwear_updates.sql new file mode 100644 index 00000000000..194879831f3 --- /dev/null +++ b/SQL/migrate/V045__underwear_updates.sql @@ -0,0 +1,10 @@ +-- +-- Adds support for underwear updates in PR #6973. +-- This collates all underwear data into one column, with an additional column for custom colours. +-- + +ALTER TABLE `ss13_characters` + CHANGE COLUMN `underwear` `all_underwear` JSON NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci' AFTER `eyes_colour`, + DROP COLUMN `undershirt`, + DROP COLUMN `socks`, + ADD COLUMN `all_underwear_metadata` JSON NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci' AFTER `all_underwear`; diff --git a/aurorastation.dme b/aurorastation.dme index 82fab7eeab7..e34455384ae 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -60,6 +60,7 @@ #include "code\__defines\vueui.dm" #include "code\__defines\webhook.dm" #include "code\__defines\ZAS.dm" +#include "code\_helpers\_global_objects.dm" #include "code\_helpers\_string_lists.dm" #include "code\_helpers\area_movement.dm" #include "code\_helpers\areas.dm" @@ -351,6 +352,11 @@ #include "code\datums\trading\unique.dm" #include "code\datums\trading\vox.dm" #include "code\datums\trading\weaponry.dm" +#include "code\datums\underwear\bottom.dm" +#include "code\datums\underwear\socks.dm" +#include "code\datums\underwear\top.dm" +#include "code\datums\underwear\undershirt.dm" +#include "code\datums\underwear\underwear.dm" #include "code\datums\uplink\ammunition.dm" #include "code\datums\uplink\announcements.dm" #include "code\datums\uplink\badassery.dm" diff --git a/code/_helpers/_global_objects.dm b/code/_helpers/_global_objects.dm new file mode 100644 index 00000000000..4a77edce5fb --- /dev/null +++ b/code/_helpers/_global_objects.dm @@ -0,0 +1,3 @@ +//Gear tweaks and underwear. +var/datum/gear_tweak/color/gear_tweak_free_color_choice = new() +var/datum/category_collection/underwear/global_underwear = new() diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index 78733de2979..b642bc8c198 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -46,7 +46,7 @@ var/global/list/poster_designs = list() var/list/obj/item/device/uplink/world_uplinks = list() //Preferences stuff - //Hairstyles +//Hairstyles var/global/list/hair_styles_list = list() //stores /datum/sprite_accessory/hair indexed by name var/global/list/hair_styles_male_list = list() var/global/list/hair_styles_female_list = list() @@ -58,34 +58,7 @@ var/global/list/body_marking_styles_list = list() var/global/list/chargen_disabilities_list = list() var/global/static/list/valid_player_genders = list(MALE, FEMALE, NEUTER) - //Underwear -var/global/list/underwear_m = list("White" = "m1", "Grey" = "m2", "Green" = "m3", "Blue" = "m4", "Black" = "m5", "Mankini" = "m6", "Boxers" = "boxers", "Green and blue boxers" = "boxers_green_and_blue","Loveheart boxers" = "boxers_loveheart","None") //Curse whoever made male/female underwear diffrent colours -var/global/list/underwear_f = list("Red" = "f1", "White" = "f2", "Yellow" = "f3", "Blue" = "f4", "Black" = "f5", "Thong" = "f6", "Black Sports" = "f7","White Sports" = "f8","None") - //undershirt -var/global/list/undershirt_t = list( - "White tank top" = "u1", "Black tank top" = "u2", "Black shirt" = "u3", "White shirt" = "u4", - "Polo" = "polo", "Blue polo" = "bluepolo_s", "Red polo" = "redpolo_s", "Yellow polo" = "grayyellowpolo_s", - "Striped shirt" = "shirt_stripes_s", "NanoTrasen shirt" = "shirt_nano_s", "Tiedye shirt" = "shirt_tiedye_s", - "Green sport shirt" = "greenshirtsport_s", "Red sport shirt" = "redshirtsport_s", "Blue sport shirt" = "blueshirtsport_s", - "Striped tank top " = "tank_stripes_s", "Rainbow tank top" = "tank_rainbow_s", "Longsleeve shirt" = "undershirt_long", - "Striped longsleve shirt" = "longstripe", "Blue striped longsleve shirt" = "longstripe_blue", "None") - - //socks -var/global/list/socks_f = list( - "White normal" = "white_norm", "White short" = "white_short", "White knee" = "white_knee", - "White thigh" = "white_thigh", "Black normal" = "black_norm", "Black short" = "black_short", - "Black knee" = "black_knee", "Black thigh" = "black_thigh", "Striped normal" = "striped_norm", - "Striped short" = "striped_short", "Striped knee" = "striped_knee", "Striped thigh" = "striped_thigh", - "Rainbow normal" = "rainbow_norm", "Rainbow short" = "rainbow_short", "Rainbow knee" = "rainbow_knee", - "Rainbow thigh" = "rainbow_thigh", "Pantyhose" = "pantyhose", "None") - -var/global/list/socks_m = list( - "White normal" = "white_norm", "White short" = "white_short", "White knee" = "white_knee", - "Black normal" = "black_norm", "Black short" = "black_short", "Black knee" = "black_knee", - "Striped normal" = "striped_norm", "Striped short" = "striped_short", "Striped knee" = "striped_knee", - "Rainbow normal" = "rainbow_norm", "Rainbow short" = "rainbow_short", "Rainbow knee" = "rainbow_knee", "None") - - //Backpacks +//Backpacks var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt", "Duffel Bag", "Messenger Bag") var/global/list/backbagstyles = list("Job-specific", "Grey") var/global/list/exclude_jobs = list(/datum/job/ai,/datum/job/cyborg, /datum/job/merchant) diff --git a/code/_helpers/lists.dm b/code/_helpers/lists.dm index 585d574cdb1..de0a9c6cb18 100644 --- a/code/_helpers/lists.dm +++ b/code/_helpers/lists.dm @@ -285,6 +285,122 @@ if(L[key] == value) return key +/proc/dd_sortedObjectList(var/list/L, var/cache=list()) + if(L.len < 2) + return L + var/middle = L.len / 2 + 1 // Copy is first,second-1 + return dd_mergeObjectList(dd_sortedObjectList(L.Copy(0,middle), cache), dd_sortedObjectList(L.Copy(middle), cache), cache) //second parameter null = to end of list + +/proc/dd_mergeObjectList(var/list/L, var/list/R, var/list/cache) + var/Li=1 + var/Ri=1 + var/list/result = new() + while(Li <= L.len && Ri <= R.len) + var/LLi = L[Li] + var/RRi = R[Ri] + var/LLiV = cache[LLi] + var/RRiV = cache[RRi] + if(!LLiV) + LLiV = LLi:dd_SortValue() + cache[LLi] = LLiV + if(!RRiV) + RRiV = RRi:dd_SortValue() + cache[RRi] = RRiV + if(LLiV < RRiV) + result += L[Li++] + else + result += R[Ri++] + + if(Li <= L.len) + return (result + L.Copy(Li, 0)) + return (result + R.Copy(Ri, 0)) + +// Insert an object into a sorted list, preserving sortedness +/proc/dd_insertObjectList(var/list/L, var/O) + var/min = 1 + var/max = L.len + var/Oval = O:dd_SortValue() + + while(1) + var/mid = min+round((max-min)/2) + + if(mid == max) + L.Insert(mid, O) + return + + var/Lmid = L[mid] + var/midval = Lmid:dd_SortValue() + if(Oval == midval) + L.Insert(mid, O) + return + else if(Oval < midval) + max = mid + else + min = mid+1 + +/proc/dd_sortedtextlist(list/incoming, case_sensitive = 0) + // Returns a new list with the text values sorted. + // Use binary search to order by sortValue. + // This works by going to the half-point of the list, seeing if the node in question is higher or lower cost, + // then going halfway up or down the list and checking again. + // This is a very fast way to sort an item into a list. + var/list/sorted_text = new() + var/low_index + var/high_index + var/insert_index + var/midway_calc + var/current_index + var/current_item + var/list/list_bottom + var/sort_result + + var/current_sort_text + for (current_sort_text in incoming) + low_index = 1 + high_index = sorted_text.len + while (low_index <= high_index) + // Figure out the midpoint, rounding up for fractions. (BYOND rounds down, so add 1 if necessary.) + midway_calc = (low_index + high_index) / 2 + current_index = round(midway_calc) + if (midway_calc > current_index) + current_index++ + current_item = sorted_text[current_index] + + if (case_sensitive) + sort_result = sorttextEx(current_sort_text, current_item) + else + sort_result = sorttext(current_sort_text, current_item) + + switch(sort_result) + if (1) + high_index = current_index - 1 // current_sort_text < current_item + if (-1) + low_index = current_index + 1 // current_sort_text > current_item + if (0) + low_index = current_index // current_sort_text == current_item + break + + // Insert before low_index. + insert_index = low_index + + // Special case adding to end of list. + if (insert_index > sorted_text.len) + sorted_text += current_sort_text + continue + + // Because BYOND lists don't support insert, have to do it by: + // 1) taking out bottom of list, 2) adding item, 3) putting back bottom of list. + list_bottom = sorted_text.Copy(insert_index) + sorted_text.Cut(insert_index) + sorted_text += current_sort_text + sorted_text += list_bottom + return sorted_text + + +/proc/dd_sortedTextList(list/incoming) + var/case_sensitive = 1 + return dd_sortedtextlist(incoming, case_sensitive) + /proc/count_by_type(var/list/L, type) var/i = 0 for(var/T in L) @@ -477,7 +593,7 @@ if (isnull(subject)) return - + var/final = keys[keys.len] if (isdatum(subject)) subject_d = subject @@ -522,7 +638,7 @@ if (isnull(subject)) return - + var/final = keys[keys.len] if (isdatum(subject)) subject_d = subject @@ -573,4 +689,4 @@ . = list() for(var/entry in L) if(istype(entry, type)) - . += entry \ No newline at end of file + . += entry diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 406860083c0..8f768afe07c 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -291,7 +291,7 @@ mymob.nutrition_icon.name = "nutrition" mymob.nutrition_icon.screen_loc = ui_nutrition hud_elements |= mymob.nutrition_icon - + if(hud_data.has_hydration) mymob.hydration_icon = new /obj/screen() mymob.hydration_icon.icon = ui_style @@ -393,7 +393,5 @@ f_style = "Shaved" if(dna.species == "Human") //no more xenos losing ears/tentacles h_style = pick("Bedhead", "Bedhead 2", "Bedhead 3") - undershirt = null - underwear = null - socks = null + all_underwear.Cut() regenerate_icons() diff --git a/code/controllers/subsystems/garbage-debug.dm b/code/controllers/subsystems/garbage-debug.dm index 010c8ffb509..2d70f5223bb 100644 --- a/code/controllers/subsystems/garbage-debug.dm +++ b/code/controllers/subsystems/garbage-debug.dm @@ -312,11 +312,6 @@ SearchVar(facial_hair_styles_female_list) SearchVar(skin_styles_female_list) SearchVar(body_marking_styles_list) - SearchVar(underwear_m) - SearchVar(underwear_f) - SearchVar(undershirt_t) - SearchVar(socks_f) - SearchVar(socks_m) SearchVar(backbaglist) SearchVar(exclude_jobs) SearchVar(visual_nets) diff --git a/code/datums/category.dm b/code/datums/category.dm index 9542f6a3e94..b2a03a43327 100644 --- a/code/datums/category.dm +++ b/code/datums/category.dm @@ -4,16 +4,19 @@ /datum/category_collection var/category_group_type // The type of categories to initialize var/list/datum/category_group/categories // The list of initialized categories + var/list/datum/category_group/categories_by_name //Associative list of initialised categories, by name /datum/category_collection/New() ..() categories = new() + categories_by_name = new() for(var/category_type in typesof(category_group_type)) var/datum/category_group/category = category_type if(initial(category.name)) category = new category(src) categories += category - sortTim(categories, /proc/cmp_name_asc, FALSE) + categories_by_name[category.name] = category + categories = dd_sortedObjectList(categories) /datum/category_collection/Destroy() for(var/category in categories) @@ -28,21 +31,24 @@ var/name = "" var/category_item_type // The type of items to initialize var/list/datum/category_item/items // The list of initialized items + var/list/datum/category_item/items_by_name // Associative list of initialised items, by name var/datum/category_collection/collection // The collection this group belongs to /datum/category_group/New(var/datum/category_collection/cc) ..() collection = cc items = new() + items_by_name = new() for(var/item_type in typesof(category_item_type)) var/datum/category_item/item = item_type if(initial(item.name)) item = new item(src) items += item + items_by_name[item.name] = item // If you change this, confirm that character setup doesn't become completely unordered. - sortTim(items, /proc/cmp_player_setup_group) + items = dd_sortedObjectList(items) /datum/category_group/Destroy() for(var/item in items) @@ -51,6 +57,9 @@ collection = null return ..() +/datum/category_group/dd_SortValue() + return name + /***************** * Category Items * *****************/ @@ -65,3 +74,6 @@ /datum/category_item/Destroy() category = null return ..() + +/datum/category_item/dd_SortValue() + return name diff --git a/code/datums/underwear/bottom.dm b/code/datums/underwear/bottom.dm new file mode 100644 index 00000000000..5956b2436d4 --- /dev/null +++ b/code/datums/underwear/bottom.dm @@ -0,0 +1,113 @@ +/datum/category_item/underwear/bottom/none + name = "None" + always_last = TRUE + +/datum/category_item/underwear/bottom/briefs + name = "Briefs" + icon_state = "briefs" + has_color = TRUE + +/datum/category_item/underwear/bottom/briefs/is_default(var/gender) + return gender != FEMALE + +/datum/category_item/underwear/bottom/boxers + name = "Boxers" + icon_state = "boxers" + has_color = TRUE + +/datum/category_item/underwear/bottom/boxers_striped + name = "Boxers, Striped" + icon_state = "boxers_striped" + has_color = TRUE + +/datum/category_item/underwear/bottom/boxers_green_and_blue + name = "Boxers, Green & Blue Striped" + icon_state = "boxers_green_and_blue" + +/datum/category_item/underwear/bottom/boxers_loveheart + name = "Boxers, Loveheart" + icon_state = "boxers_loveheart" + has_color = TRUE + +/datum/category_item/underwear/bottom/panties + name = "Panties" + icon_state = "panties" + has_color = TRUE + +/datum/category_item/underwear/bottom/panties/is_default(var/gender) + return gender == FEMALE + +/datum/category_item/underwear/bottom/panties_striped + name = "Panties, Striped" + icon_state = "panties_striped" + has_color = TRUE + +/datum/category_item/underwear/bottom/panties_bikini + name = "Panties, Bikini" + icon_state = "panties_bikini" + has_color = TRUE + +/datum/category_item/underwear/bottom/panties_hipster + name = "Panties, Hipster" + icon_state = "panties_hipster" + has_color = TRUE + +/datum/category_item/underwear/bottom/compression_shorts + name = "Compression Shorts" + icon_state = "compression_shorts" + has_color = TRUE + +/datum/category_item/underwear/bottom/compression_shorts_alt + name = "Compression Shorts, Alt" + icon_state = "compression_shorts_alt" + has_color = TRUE + +/datum/category_item/underwear/bottom/shorts_army + name = "Shorts, Army" + icon_state = "shorts_army" + +/datum/category_item/underwear/bottom/shorts_expedition + name = "Shorts, Expedition" + icon_state = "shorts_expedition" + +/datum/category_item/underwear/bottom/shorts_fleet + name = "Shorts, Fleet" + icon_state = "shorts_fleet" + +/datum/category_item/underwear/bottom/shorts_necropolis + name = "Shorts, Necropolis Industries" + icon_state = "shorts_necropolis" + +/datum/category_item/underwear/bottom/shorts_epmc + name = "Shorts, EPMC" + icon_state = "shorts_epmc" + +/datum/category_item/underwear/bottom/midway + name = "Midway Briefs" + icon_state = "midway" + has_color = TRUE + +/datum/category_item/underwear/bottom/longjohnbottoms + name = "Long John Bottoms" + icon_state = "ljonb" + has_color = TRUE + +/datum/category_item/underwear/bottom/longjohnbottoms_alt + name = "Long John Bottoms, Alt" + icon_state = "ljonb_alt" + has_color = TRUE + +/datum/category_item/underwear/bottom/onepiece + name = "One Piece" + icon_state = "onepiece" + has_color = TRUE + +/datum/category_item/underwear/bottom/onepiece_striped + name = "One Piece, Striped" + icon_state = "onepiece_striped" + has_color = TRUE + +/datum/category_item/underwear/bottom/swimbottom + name = "Swimming Bottom" + icon_state = "swimbottom" + has_color = TRUE \ No newline at end of file diff --git a/code/datums/underwear/socks.dm b/code/datums/underwear/socks.dm new file mode 100644 index 00000000000..e17029a46c9 --- /dev/null +++ b/code/datums/underwear/socks.dm @@ -0,0 +1,185 @@ +/datum/category_item/underwear/socks/none + always_last = TRUE + name = "None" + +/datum/category_item/underwear/socks/short + name = "Short" + icon_state = "socks_short" + has_color = TRUE + +/datum/category_item/underwear/socks/striped_short + name = "Short, Striped" + icon_state = "striped_short" + has_color = TRUE + +/datum/category_item/underwear/socks/thin_short + name = "Short, Thin" + icon_state = "thin_short" + has_color = TRUE + +/datum/category_item/underwear/socks/bee_short + name = "Short, Bee" + icon_state = "bee_short" + +/datum/category_item/underwear/socks/woolblueorange_short + name = "Short, Wool Blue/Orange" + icon_state = "woolbo_short" + +/datum/category_item/underwear/socks/woolredblue_short + name = "Short, Wool Red/Blue" + icon_state = "woolrb_short" + +/datum/category_item/underwear/socks/spider_short + name = "Short, Spider" + icon_state = "spider_short" + +/datum/category_item/underwear/socks/rainbow_short + name = "Short, Rainbow" + icon_state = "rainbow_short" + +/datum/category_item/underwear/socks/normal + name = "Normal" + icon_state = "socks_norm" + has_color = TRUE + +/datum/category_item/underwear/socks/striped_normal + name = "Normal, Striped" + icon_state = "striped_norm" + has_color = TRUE + +/datum/category_item/underwear/socks/thin_normal + name = "Normal, Thin" + icon_state = "thin_normal" + has_color = TRUE + +/datum/category_item/underwear/socks/bee_normal + name = "Normal, Bee" + icon_state = "bee_normal" + +/datum/category_item/underwear/socks/woolblueorange_normal + name = "Normal, Wool Blue/Orange" + icon_state = "woolbo_normal" + +/datum/category_item/underwear/socks/woolredblue_normal + name = "Normal, Wool Red/Blue" + icon_state = "woolrb_normal" + +/datum/category_item/underwear/socks/spider_normal + name = "Normal, Spider" + icon_state = "spider_normal" + +/datum/category_item/underwear/socks/rainbow_normal + name = "Normal, Rainbow" + icon_state = "rainbow_normal" + +/datum/category_item/underwear/socks/knee + name = "Knee" + icon_state = "socks_knee" + has_color = TRUE + +/datum/category_item/underwear/socks/striped_knee + name = "Knee, Striped" + icon_state = "striped_knee" + has_color = TRUE + +/datum/category_item/underwear/socks/thin_knee + name = "Knee, Thin" + icon_state = "thin_knee" + has_color = TRUE + +/datum/category_item/underwear/socks/bee_knee + name = "Knee, Bee" + icon_state = "bee_knee" + +/datum/category_item/underwear/socks/woolblueorange_knee + name = "Knee, Wool Blue/Orange" + icon_state = "woolbo_knee" + +/datum/category_item/underwear/socks/woolredblue_knee + name = "Knee, Wool Red/Blue" + icon_state = "woolrb_knee" + +/datum/category_item/underwear/socks/spider_knee + name = "Knee, Spider" + icon_state = "spider_knee" + +/datum/category_item/underwear/socks/rainbow_knee + name = "Knee, Rainbow" + icon_state = "rainbow_knee" + +/datum/category_item/underwear/socks/thigh + name = "Thigh" + icon_state = "socks_thigh" + has_color = TRUE + +/datum/category_item/underwear/socks/striped_thigh + name = "Thigh, Striped" + icon_state = "striped_thigh" + has_color = TRUE + +/datum/category_item/underwear/socks/thin_thigh + name = "Thigh, Thin" + icon_state = "thin_thigh" + has_color = TRUE + +/datum/category_item/underwear/socks/bee_thigh + name = "Thigh, Bee" + icon_state = "bee_thigh" + +/datum/category_item/underwear/socks/woolblueorange_thigh + name = "Thigh, Wool Blue/Orange" + icon_state = "woolbo_thigh" + +/datum/category_item/underwear/socks/woolredblue_thigh + name = "Thigh, Wool Red/Blue" + icon_state = "woolrb_thigh" + +/datum/category_item/underwear/socks/spider_thigh + name = "Thigh, Spider" + icon_state = "spider_thigh" + +/datum/category_item/underwear/socks/rainbow_thigh + name = "Thigh, Rainbow" + icon_state = "rainbow_thigh" + +/datum/category_item/underwear/socks/leggings + name = "Leggings" + icon_state = "leggings" + has_color = TRUE + +/datum/category_item/underwear/socks/pantyhose + name = "Pantyhose" + icon_state = "pantyhose" + has_color = TRUE + +/datum/category_item/underwear/socks/stockings_blue + name = "Stockings, Blue" + icon_state = "stockings_blue" + +/datum/category_item/underwear/socks/stockings_cyan + name = "Stockings, Cyan" + icon_state = "stockings_cyan" + +/datum/category_item/underwear/socks/stockings_dpink + name = "Stockings, Dark Pink" + icon_state = "stockings_dpink" + +/datum/category_item/underwear/socks/stockings_green + name = "Stockings, Green" + icon_state = "stockings_green" + +/datum/category_item/underwear/socks/stockings_lpink + name = "Stockings, Light Pink" + icon_state = "stockings_lpink" + +/datum/category_item/underwear/socks/stockings_orange + name = "Stockings, Orange" + icon_state = "stockings_orange" + +/datum/category_item/underwear/socks/stockings_purple + name = "Stockings, Purple" + icon_state = "stockings_purple" + +/datum/category_item/underwear/socks/stockings_yellow + name = "Stockings, Yellow" + icon_state = "stockings_yellow" \ No newline at end of file diff --git a/code/datums/underwear/top.dm b/code/datums/underwear/top.dm new file mode 100644 index 00000000000..239cbe7ec7b --- /dev/null +++ b/code/datums/underwear/top.dm @@ -0,0 +1,53 @@ +/datum/category_item/underwear/top/none + name = "None" + always_last = TRUE + +/datum/category_item/underwear/top/none/is_default(var/gender) + return gender != FEMALE + +/datum/category_item/underwear/top/bra + is_default = TRUE + name = "Bra" + icon_state = "bra" + has_color = TRUE + +/datum/category_item/underwear/top/bra/is_default(var/gender) + return gender == FEMALE + +/datum/category_item/underwear/top/bra_bikini + name = "Bra, Bikini" + icon_state = "bra_bikini" + has_color = TRUE + +/datum/category_item/underwear/top/bra_bralette + name = "Bra, Bralette" + icon_state = "bra_bralette" + has_color = TRUE + +/datum/category_item/underwear/top/bra_striped + name = "Bra, Striped" + icon_state = "bra_striped" + has_color = TRUE + +/datum/category_item/underwear/top/sports_bra + name = "Sports Bra" + icon_state = "sports_bra" + has_color = TRUE + +/datum/category_item/underwear/top/binder + name = "Binder" + icon_state = "binder" + +/datum/category_item/underwear/top/binder_strapless + name = "Binder, Strapless" + icon_state = "binder_strapless" + +/datum/category_item/underwear/top/tubetop + name = "Tube Top" + icon_state = "tubetop" + has_color = TRUE + +/datum/category_item/underwear/top/swimtop + name = "Swimming Top" + icon_state = "swimtop" + has_color = TRUE diff --git a/code/datums/underwear/undershirt.dm b/code/datums/underwear/undershirt.dm new file mode 100644 index 00000000000..da045f99e41 --- /dev/null +++ b/code/datums/underwear/undershirt.dm @@ -0,0 +1,417 @@ +/datum/category_item/underwear/undershirt/none + is_default = TRUE + name = "None" + always_last = TRUE + +/datum/category_item/underwear/undershirt/tank_top + name = "Tank Top" + icon_state = "tanktop" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tank_top_fem + name = "Tank Top, Feminine" + icon_state = "tanktop_fem" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tank_top_alt + name = "Tank Top, Alt" + icon_state = "tanktop_alt" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tank_top_alt_fem + name = "Tank Top, Alt Feminine" + icon_state = "tanktop_alt_fem" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tank_top_alt_vneck + name = "Tank Top, Alt V-Neck" + icon_state = "tanktop_alt_vneck" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tank_top_alt_vneck_fem + name = "Tank Top, Alt V-Neck Feminine" + icon_state = "tanktop_alt_vneck_fem" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tank_top_midriff + name = "Tank Top, Midriff" + icon_state = "tank_midriff" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tank_top_midriff_short + name = "Tank Top, Midriff Short" + icon_state = "tank_midriff_short" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tank_top_expedition + name = "Tank Top, Expedition" + icon_state = "tank_expedition" + +/datum/category_item/underwear/undershirt/tank_top_expedition_fem + name = "Tank Top, Expedition Feminine" + icon_state = "tank_expedition_fem" + +/datum/category_item/underwear/undershirt/tank_top_fleet + name = "Tank Top, Fleet" + icon_state = "tank_fleet" + +/datum/category_item/underwear/undershirt/tank_top_fleet_fem + name = "Tank Top, Fleet Feminine" + icon_state = "tank_fleet_fem" + +/datum/category_item/underwear/undershirt/tank_top_fire + name = "Tank Top, Fire" + icon_state = "tank_fire" + +/datum/category_item/underwear/undershirt/tank_top_fire_fem + name = "Tank Top, Fire Feminine" + icon_state = "tank_fire_fem" + +/datum/category_item/underwear/undershirt/tank_top_stripes + name = "Tank Top, Stripes" + icon_state = "tank_stripes" + +/datum/category_item/underwear/undershirt/tank_top_stripes_fem + name = "Tank Top, Stripes Feminine" + icon_state = "tank_stripes_fem" + +/datum/category_item/underwear/undershirt/tank_top_stripes_alt + name = "Tank Top, Stripes Alt" + icon_state = "tank_stripes_alt" + +/datum/category_item/underwear/undershirt/tank_top_stripes_alt_fem + name = "Tank Top, Stripes Alt Feminine" + icon_state = "tank_stripes_alt_fem" + +/datum/category_item/underwear/undershirt/tank_top_sun + name = "Tank Top, Sun" + icon_state = "tank_sun" + +/datum/category_item/underwear/undershirt/tank_top_sun_fem + name = "Tank Top, Sun Feminine" + icon_state = "tank_sun_fem" + +/datum/category_item/underwear/undershirt/tank_top_sun_alt + name = "Tank Top, Sun Alt" + icon_state = "tank_sun_alt" + +/datum/category_item/underwear/undershirt/tank_top_sun_alt_fem + name = "Tank Top, Sun Alt Feminine" + icon_state = "tank_sun_alt_fem" + +/datum/category_item/underwear/undershirt/tank_top_tight + name = "Tank Top, Tight" + icon_state = "tank_tight" + +/datum/category_item/underwear/undershirt/tank_top_tight_fem + name = "Tank Top, Tight Feminine" + icon_state = "tank_tight_fem" + +/datum/category_item/underwear/undershirt/shortsleeve_undershirt + name = "Shortsleeve Undershirt" + icon_state = "shortsleeve" + has_color = TRUE + +/datum/category_item/underwear/undershirt/shortsleeve_undershirt_fem + name = "Shortsleeve Undershirt, Feminine" + icon_state = "shortsleeve_fem" + has_color = TRUE + +/datum/category_item/underwear/undershirt/shortsleeve_undershirt_vneck + name = "Shortsleeve Undershirt, V-Neck" + icon_state = "shortsleeve_vneck" + has_color = TRUE + +/datum/category_item/underwear/undershirt/shortsleeve_undershirt_vneck_fem + name = "Shortsleeve Undershirt, V-Neck Feminine" + icon_state = "shortsleeve_vneck_fem" + has_color = TRUE + +/datum/category_item/underwear/undershirt/undershirt + name = "Undershirt" + icon_state = "undershirt" + has_color = TRUE + +/datum/category_item/underwear/undershirt/undershirt_fem + name = "Undershirt, Feminine" + icon_state = "undershirt_fem" + has_color = TRUE + +/datum/category_item/underwear/undershirt/undershirt_heart + name = "Undershirt, Heart" + icon_state = "heart" + +/datum/category_item/underwear/undershirt/undershirt_heart_fem + name = "Undershirt, Heart Feminine" + icon_state = "heart_fem" + +/datum/category_item/underwear/undershirt/undershirt_heart_echelon + name = "Undershirt, Heart Echelon" + icon_state = "heart_echelon" + +/datum/category_item/underwear/undershirt/undershirt_heart_echelon_fem + name = "Undershirt, Heart Echelon Feminine" + icon_state = "heart_echelon_fem" + +/datum/category_item/underwear/undershirt/shirt_love_nt + name = "Undershirt, I<3NT" + icon_state = "ilovent" + +/datum/category_item/underwear/undershirt/shirt_love_nt_fem + name = "Undershirt, I<3NT Feminine" + icon_state = "ilovent_fem" + +/datum/category_item/underwear/undershirt/shirt + name = "Shirt" + icon_state = "shirt" + has_color = TRUE + +/datum/category_item/underwear/undershirt/shirt_alien + name = "Shirt, Alien" + icon_state = "shirt_alien" + +/datum/category_item/underwear/undershirt/shirt_band + name = "Shirt, Band" + icon_state = "shirt_band" + +/datum/category_item/underwear/undershirt/shirt_clown + name = "Shirt, Clown" + icon_state = "shirt_clown" + +/datum/category_item/underwear/undershirt/shirt_ian + name = "Shirt, Ian" + icon_state = "shirt_ian" + +/datum/category_item/underwear/undershirt/shirt_jersey + name = "Shirt, Blue Jersey" + icon_state = "shirt_jersey" + +/datum/category_item/underwear/undershirt/shirt_jersey_red + name = "Shirt, Red Jersey" + icon_state = "shirt_jersey_red" + +/datum/category_item/underwear/undershirt/shirt_meat + name = "Shirt, Meat" + icon_state = "shirt_meat" + +/datum/category_item/underwear/undershirt/shirt_nt + name = "Shirt, NT" + icon_state = "shirt_nano" + +/datum/category_item/underwear/undershirt/shirt_nt_red + name = "Shirt, NT Red" + icon_state = "shirt_nano_red" + +/datum/category_item/underwear/undershirt/shirt_peace + name = "Shirt, Peace" + icon_state = "shirt_peace" + +/datum/category_item/underwear/undershirt/shirt_question + name = "Shirt, Question" + icon_state = "shirt_question" + +/datum/category_item/underwear/undershirt/shirt_skull + name = "Shirt, Skull" + icon_state = "shirt_skull" + +/datum/category_item/underwear/undershirt/shirt_ss13 + name = "Shirt, SS13" + icon_state = "shirt_ss13" + +/datum/category_item/underwear/undershirt/shirt_blue_striped + name = "Shirt, Blue Stripes" + icon_state = "shirt_stripes" + +/datum/category_item/underwear/undershirt/shirt_blue_striped_alt + name = "Shirt, Blue Stripes Alt" + icon_state = "shirt_stripes_alt" + +/datum/category_item/underwear/undershirt/shirt_tiedye + name = "Shirt, Tiedye" + icon_state = "shirt_tiedye" + +/datum/category_item/underwear/undershirt/shirt_tight + name = "Shirt, Tight" + icon_state = "tight" + +/datum/category_item/underwear/undershirt/shirt_wing + name = "Shirt, Wing" + icon_state = "wing_shirt" + +/datum/category_item/underwear/undershirt/shirt_pinkblack + name = "Shirt, Pink-Black" + icon_state = "pinkblack_tshirt" + +/datum/category_item/underwear/undershirt/sport_shirt_blue + name = "Sport Shirt, Blue" + icon_state = "sportblue" + +/datum/category_item/underwear/undershirt/sport_shirt_green + name = "Sport Shirt, Green" + icon_state = "sportgreen" + +/datum/category_item/underwear/undershirt/sport_shirt_red + name = "Sport Shirt, Red" + icon_state = "sportred" + +/datum/category_item/underwear/undershirt/shirt_army + name = "Shirt, Army" + icon_state = "shirt_army" + +/datum/category_item/underwear/undershirt/shirt_army_fem + name = "Shirt, Army Feminine" + icon_state = "shirt_army_fem" + +/datum/category_item/underwear/undershirt/shirt_expedition + name = "Shirt, Expedition" + icon_state = "shirt_expedition" + +/datum/category_item/underwear/undershirt/shirt_expedition_fem + name = "Shirt, Expedition Feminine" + icon_state = "shirt_expedition_fem" + +/datum/category_item/underwear/undershirt/shirt_fleet + name = "Shirt, Fleet" + icon_state = "shirt_fleet" + +/datum/category_item/underwear/undershirt/shirt_fleet_fem + name = "Shirt, Fleet Feminine" + icon_state = "shirt_fleet_fem" + +/datum/category_item/underwear/undershirt/shirt_necropolis + name = "Shirt, Necropolis Industries" + icon_state = "shirt_necropolis" + +/datum/category_item/underwear/undershirt/shirt_necropolis_fem + name = "Shirt, Necropolis Industries Feminine" + icon_state = "shirt_necropolis_fem" + +/datum/category_item/underwear/undershirt/shirt_epmc + name = "Shirt, EPMC" + icon_state = "shirt_epmc" + +/datum/category_item/underwear/undershirt/shirt_epmc_fem + name = "Shirt, EPMC Feminine" + icon_state = "shirt_epmc_fem" + +/datum/category_item/underwear/undershirt/polo + name = "Polo" + icon_state = "polo" + has_color = TRUE + +/datum/category_item/underwear/undershirt/polo_fem + name = "Polo, Feminine" + icon_state = "polo_fem" + has_color = TRUE + +/datum/category_item/underwear/undershirt/polo_blue + name = "Polo, Blue" + icon_state = "polo_blue" + +/datum/category_item/underwear/undershirt/polo_blue_fem + name = "Polo, Blue Feminine" + icon_state = "polo_blue_fem" + +/datum/category_item/underwear/undershirt/polo_red + name = "Polo, Red" + icon_state = "polo_red" + +/datum/category_item/underwear/undershirt/polo_red_fem + name = "Polo, Red Feminine" + icon_state = "polo_red_fem" + +/datum/category_item/underwear/undershirt/polo_grayyellow + name = "Polo, Gray Yellow" + icon_state = "polo_grayyellow" + +/datum/category_item/underwear/undershirt/polo_grayyellow_fem + name = "Polo, Gray Yellow Feminine" + icon_state = "polo_grayyellow_fem" + +/datum/category_item/underwear/undershirt/polo_greenstrip + name = "Polo, Green Strip" + icon_state = "polo_corp" + +/datum/category_item/underwear/undershirt/polo_greenstrip_fem + name = "Polo, Green Strip Feminine" + icon_state = "polo_corp_fem" + +/datum/category_item/underwear/undershirt/polo_bluestrip + name = "Polo, Blue Strip" + icon_state = "polo_dais" + +/datum/category_item/underwear/undershirt/polo_bluestrip_fem + name = "Polo, Blue Strip Feminine" + icon_state = "polo_dais_fem" + +/datum/category_item/underwear/undershirt/polo_redstrip + name = "Polo, Red Strip" + icon_state = "polo_nt" + +/datum/category_item/underwear/undershirt/polo_redstrip_fem + name = "Polo, Red Strip Feminine" + icon_state = "polo_nt_fem" + +/datum/category_item/underwear/undershirt/bowlinga + name = "Bowling Shirt, Aqua" + icon_state = "bowlinga" + +/datum/category_item/underwear/undershirt/bowlingp + name = "Bowling Shirt, Pink" + icon_state = "bowlingp" + +/datum/category_item/underwear/undershirt/bowlingr + name = "Bowling Shirt, Red" + icon_state = "bowlingr" + +/datum/category_item/underwear/undershirt/bowlingw + name = "Bowling Shirt, White" + icon_state = "bowlingw" + +/datum/category_item/underwear/undershirt/longjon + name = "Long John Shirt" + icon_state = "ljont" + has_color = TRUE + +/datum/category_item/underwear/undershirt/blouse_fem + name = "Blouse Shirt" + icon_state = "blouse_fem" + has_color = TRUE + +/datum/category_item/underwear/undershirt/longsleeve_undershirt + name = "Longsleeve Undershirt" + icon_state = "undershirt_long" + has_color = TRUE + +/datum/category_item/underwear/undershirt/longsleeve_undershirt_fem + name = "Longsleeve Undershirt, Feminine" + icon_state = "undershirt_long_fem" + has_color = TRUE + +/datum/category_item/underwear/undershirt/longstripe_black + name = "Longsleeve Striped Shirt, Black" + icon_state = "longstripe" + has_color = TRUE + +/datum/category_item/underwear/undershirt/longstripe_blue + name = "Longsleeve Striped Shirt, Blue" + icon_state = "longstripe_blue" + +/datum/category_item/underwear/undershirt/longstripe_pink + name = "Longsleeve Striped Shirt, Pink" + icon_state = "longstripe_pink" + +/datum/category_item/underwear/undershirt/longsleeve_shirt + name = "Longsleeve Shirt" + icon_state = "shirt_long" + has_color = TRUE + +/datum/category_item/underwear/undershirt/longsleeve_shirt_fem + name = "Longsleeve Shirt, Feminine" + icon_state = "shirt_long_fem" + has_color = TRUE + +/datum/category_item/underwear/undershirt/turtleneck + name = "Turtleneck" + icon_state = "turtleneck" + has_color = TRUE \ No newline at end of file diff --git a/code/datums/underwear/underwear.dm b/code/datums/underwear/underwear.dm new file mode 100644 index 00000000000..0297690f822 --- /dev/null +++ b/code/datums/underwear/underwear.dm @@ -0,0 +1,73 @@ +/**************************** +* Category Collection Setup * +****************************/ +/datum/category_collection/underwear + category_group_type = /datum/category_group/underwear + +/************* +* Categories * +*************/ +/datum/category_group/underwear + var/sort_order = 5 // Lower sort order is applied as icons first + var/display_name + var/gender = NEUTER + +/datum/category_group/underwear/dd_SortValue() + return sort_order + +/datum/category_group/underwear/top + name = "Underwear, top" + sort_order = 1 + display_name = "top piece" + category_item_type = /datum/category_item/underwear/top + +/datum/category_group/underwear/bottom + name = "Underwear, bottom" + sort_order = 2 + display_name = "bottom piece" + category_item_type = /datum/category_item/underwear/bottom + +/datum/category_group/underwear/socks + name = "Socks" + sort_order = 3 + display_name = "socks" + gender = PLURAL + category_item_type = /datum/category_item/underwear/socks + +/datum/category_group/underwear/undershirt + name = "Undershirt" + sort_order = 4 // Undershirts currently have the lowest sort order because they may cover both underwear and socks. + display_name = "undershirt" + category_item_type = /datum/category_item/underwear/undershirt + +/******************* +* Category entries * +*******************/ +/datum/category_item/underwear + var/always_last = FALSE // Should this entry be sorte last? + var/is_default = FALSE // Should this entry be considered the default for its type? + var/icon = 'icons/mob/underwear.dmi' // Which icon to get the underwear from + var/icon_state // And the particular item state + var/list/tweaks = list() // Underwear customisation + var/has_color = FALSE + +/datum/category_item/underwear/New() + if(has_color) + tweaks += gear_tweak_free_color_choice + +/datum/category_item/underwear/dd_SortValue() + if(always_last) + return "~"+name + return name + +/datum/category_item/underwear/proc/is_default(var/gender) + return is_default + +/datum/category_item/underwear/proc/generate_image(var/list/metadata) + if(!icon_state) + return + + var/image/I = image(icon = 'icons/mob/underwear.dmi', icon_state = icon_state) + for(var/datum/gear_tweak/gt in tweaks) + gt.tweak_item(I, metadata && metadata["[gt]"] ? metadata["[gt]"] : gt.get_default()) + return I diff --git a/code/game/gamemodes/cult/runes/manifest_ghost.dm b/code/game/gamemodes/cult/runes/manifest_ghost.dm index 36b0cf562c3..66f3bdc552c 100644 --- a/code/game/gamemodes/cult/runes/manifest_ghost.dm +++ b/code/game/gamemodes/cult/runes/manifest_ghost.dm @@ -32,7 +32,7 @@ chose_name = TRUE break apparition.universal_speak = TRUE - apparition.underwear = null + apparition.all_underwear.Cut() apparition.key = ghost.key cult.add_antagonist(apparition.mind) playsound(loc, 'sound/magic/exit_blood.ogg', 100, 1) diff --git a/code/game/objects/structures/under_wardrobe.dm b/code/game/objects/structures/under_wardrobe.dm index c3e76950274..ede8b9a7cf7 100644 --- a/code/game/objects/structures/under_wardrobe.dm +++ b/code/game/objects/structures/under_wardrobe.dm @@ -11,55 +11,84 @@ icon_state = "cabinet_closed" density = 1 -/obj/structure/undies_wardrobe/attack_hand(mob/user as mob) - src.add_fingerprint(user) - var/mob/living/carbon/human/H = user - if(!ishuman(user) || (H.species && !(H.species.appearance_flags & HAS_UNDERWEAR)) && !(H.species.appearance_flags & HAS_SOCKS)) +/obj/structure/undies_wardrobe/attack_hand(var/mob/user) + if(!human_who_can_use_underwear(user)) to_chat(user, "Sadly there's nothing in here for you to wear.") - return 0 + return + interact(user) +/obj/structure/undies_wardrobe/interact(var/mob/living/carbon/human/H) + var/dat = list() + dat += "Underwear:
" + for(var/datum/category_group/underwear/UWC in global_underwear.categories) + var/datum/category_item/underwear/UWI = H.all_underwear[UWC.name] + var/item_name = UWI?.name || "None" + dat += "[UWC.name]: [item_name]" + if(UWI) + for(var/datum/gear_tweak/gt in UWI.tweaks) + dat += " [gt.get_contents(get_metadata(H, UWC.name, gt))]" + dat += " (Remove)
" - var/list/selection_types = list() - if (H.species.appearance_flags & HAS_UNDERWEAR) - selection_types += list(M_UNDER, F_UNDER, U_SHIRT) - if (H.species.appearance_flags & HAS_SOCKS) - selection_types += list(M_SOCKS, F_SOCKS) + dat = jointext(dat, null) + show_browser(H, dat, "window=wardrobe;size=400x200") - var/utype = input("Which section do you want to pick from?") as null|anything in selection_types - var/list/selection - switch(utype) - if(M_UNDER) - selection = underwear_m - if(F_UNDER) - selection = underwear_f - if(U_SHIRT) - selection = undershirt_t - if(M_SOCKS) - selection = socks_m - if(F_SOCKS) - selection = socks_f - var/pick = input("Select the style") as null|anything in selection - if(pick) - if(get_dist(src,user) > 1) +/obj/structure/undies_wardrobe/proc/get_metadata(var/mob/living/carbon/human/H, var/underwear_category, var/datum/gear_tweak/gt) + var/metadata = H.all_underwear_metadata[underwear_category] + if(!metadata) + metadata = list() + H.all_underwear_metadata[underwear_category] = metadata + + var/tweak_data = metadata["[gt]"] + if(!tweak_data) + tweak_data = gt.get_default() + metadata["[gt]"] = tweak_data + return tweak_data + +/obj/structure/undies_wardrobe/proc/set_metadata(var/mob/living/carbon/human/H, var/underwear_category, var/datum/gear_tweak/gt, var/new_metadata) + var/list/metadata = H.all_underwear_metadata[underwear_category] + metadata["[gt]"] = new_metadata + +/obj/structure/undies_wardrobe/proc/human_who_can_use_underwear(var/mob/living/carbon/human/H) + if(!istype(H) || !H.species || !(H.species.appearance_flags & HAS_UNDERWEAR)) + return FALSE + return TRUE + +/obj/structure/undies_wardrobe/CanUseTopic(var/user) + if(!human_who_can_use_underwear(user)) + return STATUS_CLOSE + + return ..() + +/obj/structure/undies_wardrobe/Topic(href, href_list, state) + if(..()) + return TRUE + + var/mob/living/carbon/human/H = usr + if(href_list["remove_underwear"]) + if(href_list["remove_underwear"] in H.all_underwear) + H.all_underwear -= href_list["remove_underwear"] + . = TRUE + else if(href_list["change_underwear"]) + var/datum/category_group/underwear/UWC = global_underwear.categories_by_name[href_list["change_underwear"]] + if(!UWC) return - switch (utype) - if(U_SHIRT) - H.undershirt = undershirt_t[pick] - if(F_SOCKS) - H.socks = selection[pick] - if(M_SOCKS) - H.socks = selection[pick] - if(M_UNDER) - H.underwear = selection[pick] - if(F_UNDER) - H.underwear = selection[pick] - + var/datum/category_item/underwear/selected_underwear = input(H, "Choose underwear:", "Choose underwear", H.all_underwear[UWC.name]) as null|anything in UWC.items + if(selected_underwear && CanUseTopic(H, default_state)) + H.all_underwear[UWC.name] = selected_underwear + H.hide_underwear[UWC.name] = FALSE + . = TRUE + else if(href_list["underwear"] && href_list["tweak"]) + var/underwear = href_list["underwear"] + if(!(underwear in H.all_underwear)) + return + var/datum/gear_tweak/gt = locate(href_list["tweak"]) + if(!gt) + return + var/new_metadata = gt.get_metadata(usr, get_metadata(H, underwear, gt), "Wardrobe Underwear Selection") + if(new_metadata) + set_metadata(H, underwear, gt, new_metadata) + H.hide_underwear[underwear] = FALSE + . = TRUE + if(.) H.update_underwear(TRUE) - - return 1 - -#undef M_UNDER -#undef F_UNDER -#undef M_SOCKS -#undef F_SOCKS -#undef U_SHIRT + interact(H) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 1b269bffd19..26181b9d014 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -753,3 +753,4 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.rlimb_data[organ] = null while(null in pref.rlimb_data) pref.rlimb_data -= null*/ + diff --git a/code/modules/client/preference_setup/general/04_equipment.dm b/code/modules/client/preference_setup/general/04_equipment.dm index 8e9a102ce3e..cecd8e97f5c 100644 --- a/code/modules/client/preference_setup/general/04_equipment.dm +++ b/code/modules/client/preference_setup/general/04_equipment.dm @@ -1,18 +1,20 @@ +/datum/preferences + var/list/all_underwear + var/list/all_underwear_metadata + /datum/category_item/player_setup_item/general/equipment name = "Equipment" sort_order = 4 /datum/category_item/player_setup_item/general/equipment/load_character(var/savefile/S) - S["underwear"] >> pref.underwear - S["undershirt"] >> pref.undershirt - S["socks"] >> pref.socks + S["all_underwear"] >> pref.all_underwear + S["all_underwear_metadata"] >> pref.all_underwear_metadata S["backbag"] >> pref.backbag S["backbag_style"] >> pref.backbag_style /datum/category_item/player_setup_item/general/equipment/save_character(var/savefile/S) - S["underwear"] << pref.underwear - S["undershirt"] << pref.undershirt - S["socks"] << pref.socks + S["all_underwear"] << pref.all_underwear + S["all_underwear_metadata"] << pref.all_underwear_metadata S["backbag"] << pref.backbag S["backbag_style"] << pref.backbag_style @@ -20,9 +22,8 @@ return list( "ss13_characters" = list( "vars" = list( - "underwear", - "undershirt", - "socks", + "all_underwear", + "all_underwear_metadata", "backbag", "backbag_style" ), @@ -36,9 +37,8 @@ /datum/category_item/player_setup_item/general/equipment/gather_save_query() return list( "ss13_characters" = list( - "underwear", - "undershirt", - "socks", + "all_underwear", + "all_underwear_metadata", "backbag", "backbag_style", "id" = 1, @@ -48,9 +48,8 @@ /datum/category_item/player_setup_item/general/equipment/gather_save_parameters() return list( - "underwear" = pref.underwear, - "undershirt" = pref.undershirt, - "socks" = pref.socks, + "all_underwear" = json_encode(pref.all_underwear), + "all_underwear_metadata" = json_encode(pref.all_underwear_metadata), "backbag" = pref.backbag, "backbag_style" = pref.backbag_style, "id" = pref.current_character, @@ -60,58 +59,87 @@ /datum/category_item/player_setup_item/general/equipment/sanitize_character(var/sql_load = 0) if (sql_load) pref.backbag = text2num(pref.backbag) + pref.backbag_style = text2num(pref.backbag_style) + if(istext(pref.all_underwear)) + var/before = pref.all_underwear + try + pref.all_underwear = json_decode(pref.all_underwear) + catch(var/exception/e) + log_debug("UNDERWEAR: Caught [e]. Initial value: [before]") + pref.all_underwear = list() + if(istext(pref.all_underwear_metadata)) + var/before = pref.all_underwear_metadata + try + pref.all_underwear_metadata = json_decode(pref.all_underwear_metadata) + catch(var/exception/e) + log_debug("UNDERWEAR METADATA: Caught [e]. Initial value: [before]") + pref.all_underwear_metadata = list() + + if(!istype(pref.all_underwear)) + pref.all_underwear = list() + + for(var/datum/category_group/underwear/WRC in global_underwear.categories) + for(var/datum/category_item/underwear/WRI in WRC.items) + if(WRI.is_default(pref.gender ? pref.gender : MALE)) + pref.all_underwear[WRC.name] = WRI.name + break + + if(!istype(pref.all_underwear_metadata)) + pref.all_underwear_metadata = list() + + for(var/underwear_category in pref.all_underwear) + var/datum/category_group/underwear/UWC = global_underwear.categories_by_name[underwear_category] + if(!UWC) + pref.all_underwear -= underwear_category + else + var/datum/category_item/underwear/UWI = UWC.items_by_name[pref.all_underwear[underwear_category]] + if(!UWI) + pref.all_underwear -= underwear_category + + for(var/underwear_metadata in pref.all_underwear_metadata) + if(!(underwear_metadata in pref.all_underwear)) + pref.all_underwear_metadata -= underwear_metadata pref.backbag = sanitize_integer(pref.backbag, 1, backbaglist.len, initial(pref.backbag)) pref.backbag_style = sanitize_integer(pref.backbag_style, 1, backbagstyles.len, initial(pref.backbag_style)) - var/undies = get_undies() - var/gender_socks = get_gender_socks() - if(!get_key_by_value(undies, pref.underwear)) - pref.underwear = null - if(!get_key_by_value(undershirt_t, pref.undershirt)) - pref.undershirt = undershirt_t[undershirt_t[1]] - if(!get_key_by_value(gender_socks, pref.socks)) - pref.socks = null - /datum/category_item/player_setup_item/general/equipment/content() - var/list/dat = list() - dat += "Equipment:
" - dat += "Underwear: [get_key_by_value(get_undies(),pref.underwear)]
" - dat += "Undershirt: [get_key_by_value(undershirt_t,pref.undershirt)]
" - dat += "Socks: [get_key_by_value(get_gender_socks(),pref.socks)]
" - dat += "Backpack Type: [backbaglist[pref.backbag]]
" - dat += "Backpack Style: [backbagstyles[pref.backbag_style]]
" + . = list() + . += "Equipment:
" + for(var/datum/category_group/underwear/UWC in global_underwear.categories) + var/item_name = pref.all_underwear[UWC.name] ? pref.all_underwear[UWC.name] : "None" + . += "[UWC.name]: [item_name]" - . = dat.Join() + var/datum/category_item/underwear/UWI = UWC.items_by_name[item_name] + if(UWI) + for(var/datum/gear_tweak/gt in UWI.tweaks) + . += " [gt.get_contents(get_metadata(UWC.name, gt))]" -/datum/category_item/player_setup_item/general/equipment/proc/get_undies() - return pref.gender == MALE ? underwear_m : underwear_f + . += "
" -/datum/category_item/player_setup_item/general/equipment/proc/get_gender_socks() - return pref.gender == MALE ? socks_m : socks_f + . += "Backpack Type: [backbaglist[pref.backbag]]
" + . += "Backpack Style: [backbagstyles[pref.backbag_style]]
" + + return jointext(., null) + +/datum/category_item/player_setup_item/general/equipment/proc/get_metadata(var/underwear_category, var/datum/gear_tweak/gt) + var/metadata = pref.all_underwear_metadata[underwear_category] + if(!metadata) + metadata = list() + pref.all_underwear_metadata[underwear_category] = metadata + + var/tweak_data = metadata["[gt]"] + if(!tweak_data) + tweak_data = gt.get_default() + metadata["[gt]"] = tweak_data + return tweak_data + +/datum/category_item/player_setup_item/general/equipment/proc/set_metadata(var/underwear_category, var/datum/gear_tweak/gt, var/new_metadata) + var/list/metadata = pref.all_underwear_metadata[underwear_category] + metadata["[gt]"] = new_metadata /datum/category_item/player_setup_item/general/equipment/OnTopic(var/href,var/list/href_list, var/mob/user) - if(href_list["change_underwear"]) - var/underwear_options = get_undies() - var/new_underwear = input(user, "Choose your character's underwear:", "Character Preference", get_key_by_value(get_undies(),pref.underwear)) as null|anything in underwear_options - if(!isnull(new_underwear) && CanUseTopic(user)) - pref.underwear = underwear_options[new_underwear] - return TOPIC_REFRESH - - else if(href_list["change_undershirt"]) - var/new_undershirt = input(user, "Choose your character's undershirt:", "Character Preference", get_key_by_value(undershirt_t,pref.undershirt)) as null|anything in undershirt_t - if(!isnull(new_undershirt) && CanUseTopic(user)) - pref.undershirt = undershirt_t[new_undershirt] - return TOPIC_REFRESH - - else if(href_list["change_socks"]) - var/socks_options = get_gender_socks() - var/new_socks = input(user, "Choose your character's socks:", "Character Preference", get_key_by_value(get_gender_socks(),pref.socks)) as null|anything in socks_options - if(!isnull(new_socks) && CanUseTopic(user)) - pref.socks = socks_options[new_socks] - return TOPIC_REFRESH - - else if(href_list["change_backpack"]) + if(href_list["change_backpack"]) var/new_backbag = input(user, "Choose your character's bag type:", "Character Preference", backbaglist[pref.backbag]) as null|anything in backbaglist if(!isnull(new_backbag) && CanUseTopic(user)) pref.backbag = backbaglist.Find(new_backbag) @@ -123,4 +151,25 @@ pref.backbag_style = backbagstyles.Find(new_backbag) return TOPIC_REFRESH + else if(href_list["change_underwear"]) + var/datum/category_group/underwear/UWC = global_underwear.categories_by_name[href_list["change_underwear"]] + if(!UWC) + return TOPIC_NOACTION + var/datum/category_item/underwear/selected_underwear = input(user, "Choose underwear:", "Character Preference", pref.all_underwear[UWC.name]) as null|anything in UWC.items + if(selected_underwear && CanUseTopic(user)) + pref.all_underwear[UWC.name] = selected_underwear.name + return TOPIC_REFRESH + else if(href_list["underwear"] && href_list["tweak"]) + var/underwear = href_list["underwear"] + if(!(underwear in pref.all_underwear)) + return TOPIC_NOACTION + var/datum/gear_tweak/gt = locate(href_list["tweak"]) + if(!gt) + return TOPIC_NOACTION + var/new_metadata = gt.get_metadata(usr, get_metadata(underwear, gt)) + if(new_metadata) + set_metadata(underwear, gt, new_metadata) + return TOPIC_REFRESH + return ..() + diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm index 09c56ad1585..8798e7c6c44 100644 --- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm +++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm @@ -20,8 +20,6 @@ Color adjustment */ -var/datum/gear_tweak/color/gear_tweak_free_color_choice = new() - /datum/gear_tweak/color var/list/valid_colors @@ -38,16 +36,15 @@ var/datum/gear_tweak/color/gear_tweak_free_color_choice = new() /datum/gear_tweak/color/get_random() return valid_colors ? pick(valid_colors) : COLOR_GRAY -/datum/gear_tweak/color/get_metadata(var/user, var/metadata) +/datum/gear_tweak/color/get_metadata(var/user, var/metadata, var/title = "Character Preference") if(valid_colors) - return input(user, "Choose an item color.", "Character Preference", metadata) as null|anything in valid_colors - return input(user, "Choose an item color.", "Global Preference", metadata) as color|null + return input(user, "Choose a color.", title, metadata) as null|anything in valid_colors + return input(user, "Choose a color.", title, metadata) as color|null /datum/gear_tweak/color/tweak_item(var/obj/item/I, var/metadata) if(valid_colors && !(metadata in valid_colors)) return - I.color = metadata - I.update_icon() + I.color = sanitize_hexcolor(metadata, I.color) /* Path adjustment diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index 14e130ca1b4..30425b9c960 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -132,6 +132,9 @@ var/sql_role = SQL_CHARACTER var/modified = 0 +/datum/category_group/player_setup_category/dd_SortValue() + return sort_order + /datum/category_group/player_setup_category/proc/sanitize_setup(sql_load = FALSE) for(var/datum/category_item/player_setup_item/PI in items) PI.sanitize_preferences(sql_load) @@ -220,6 +223,9 @@ pref = null return ..() +/datum/category_item/player_setup_item/dd_SortValue() + return sort_order + /datum/category_item/player_setup_item/proc/to_client_chat(str) if (pref && pref.client) to_chat(pref.client, str) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 742d164f589..fe5ffc2d875 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -38,9 +38,6 @@ datum/preferences var/age = 30 //age of character var/spawnpoint = "Arrivals Shuttle" //where this character will spawn (0-2). var/b_type = "A+" //blood type (not-chooseable) - var/underwear //underwear type - var/undershirt //undershirt type - var/socks //socks type var/backbag = 2 //backpack type var/backbag_style = 1 var/h_style = "Bald" //Hair type @@ -372,11 +369,17 @@ datum/preferences character.sync_trait_prefs_to_mob(src) - character.underwear = underwear - - character.undershirt = undershirt - - character.socks = socks + character.all_underwear.Cut() + character.all_underwear_metadata.Cut() + for(var/underwear_category_name in all_underwear) + var/datum/category_group/underwear/underwear_category = global_underwear.categories_by_name[underwear_category_name] + if(underwear_category) + var/underwear_item_name = all_underwear[underwear_category_name] + character.all_underwear[underwear_category_name] = underwear_category.items_by_name[underwear_item_name] + if(all_underwear_metadata[underwear_category_name]) + character.all_underwear_metadata[underwear_category_name] = all_underwear_metadata[underwear_category_name] + else + all_underwear -= underwear_category_name if(backbag > 6 || backbag < 1) backbag = 1 //Same as above diff --git a/code/modules/mob/abstract/new_player/preferences_setup.dm b/code/modules/mob/abstract/new_player/preferences_setup.dm index 3e4113b890e..07beb73e7d9 100644 --- a/code/modules/mob/abstract/new_player/preferences_setup.dm +++ b/code/modules/mob/abstract/new_player/preferences_setup.dm @@ -1,5 +1,6 @@ /datum/preferences //The mob should have a gender you want before running this proc. Will run fine without H + /datum/preferences/proc/randomize_appearance_for(var/mob/living/carbon/human/H,var/random_gender=TRUE) if(random_gender) gender = pick(MALE, FEMALE) @@ -14,17 +15,6 @@ randomize_eyes_color() if(current_species.appearance_flags & HAS_SKIN_COLOR) randomize_skin_color(current_species) - if(current_species.appearance_flags & HAS_UNDERWEAR) - if(gender == FEMALE) - underwear = underwear_f[pick(underwear_f)] - else - underwear = underwear_m[pick(underwear_m)] - undershirt = undershirt_t[pick(undershirt_t)] - if(current_species.appearance_flags & HAS_SOCKS) - if(gender == FEMALE) - socks = socks_f[pick(socks_f)] - else - socks = socks_m[pick(socks_m)] h_style = random_hair_style(gender, species) f_style = random_facial_hair_style(gender, species) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index ae9a4ee33d3..f24914d69ab 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -73,6 +73,10 @@ . = ..() + hide_underwear.Cut() + for(var/category in global_underwear.categories_by_name) + hide_underwear[category] = FALSE + if(dna) dna.ready_dna(src) dna.real_name = real_name @@ -1757,6 +1761,22 @@ if (doClickAction) ..() +/mob/living/carbon/human/verb/toggle_underwear() + set name = "Toggle Underwear" + set desc = "Shows/hides selected parts of your underwear." + set category = "Object" + + if(stat) + return + var/datum/category_group/underwear/UWC = input(usr, "Choose underwear:", "Show/hide underwear") as null|anything in global_underwear.categories + var/datum/category_item/underwear/UWI = all_underwear[UWC.name] + if(!UWI || UWI.name == "None") + to_chat(src, "You do not have [UWC.gender==PLURAL ? "[UWC.display_name]" : "any [UWC.display_name]"].") + return + hide_underwear[UWC.name] = !hide_underwear[UWC.name] + update_underwear(1) + to_chat(src, "You [hide_underwear[UWC.name] ? "take off" : "put on"] your [UWC.display_name].") + /mob/living/carbon/human/verb/pull_punches() set name = "Pull Punches" set desc = "Try not to hurt them." diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index b4840529a02..8b26c8a0cd9 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -32,9 +32,9 @@ var/age = 30 //Player's age (pure fluff) var/b_type = "A+" //Player's bloodtype - var/underwear = 1 //Which underwear the player wants - var/undershirt = 0 //Which undershirt the player wants. - var/socks = 0 //Which socks the player wants. + var/list/all_underwear = list() + var/list/all_underwear_metadata = list() + var/list/hide_underwear = list() var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack. var/backbag_style = 1 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 21ce4582870..12940e5cd36 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -308,20 +308,18 @@ There are several things that need to be remembered: update_icons() /mob/living/carbon/human/proc/update_underwear(update_icons = TRUE) - var/list/ovr + overlays_raw[UNDERWEAR_LAYER] = list() - if(underwear && (species.appearance_flags & HAS_UNDERWEAR)) - LAZYADD(ovr, SSicon_cache.get_state('icons/mob/human.dmi', "[underwear]")) + if(species.appearance_flags & HAS_UNDERWEAR) + for(var/category in all_underwear) + if(hide_underwear[category]) + continue + if(category == "Underwear, top" && hide_underwear["Undershirt"] == FALSE && !istype(all_underwear["Undershirt"], /datum/category_item/underwear/undershirt/none)) + continue //This piece of "code" is here to prevent tops from showing up over undershirts. + var/datum/category_item/underwear/UWI = all_underwear[category] + overlays_raw[UNDERWEAR_LAYER] += UWI.generate_image(all_underwear_metadata[category]) - if(undershirt && (species.appearance_flags & HAS_UNDERWEAR)) - LAZYADD(ovr, SSicon_cache.get_state('icons/mob/human.dmi', "[undershirt]")) - - if(socks && (species.appearance_flags & HAS_SOCKS)) - LAZYADD(ovr, SSicon_cache.get_state('icons/mob/human.dmi', "[socks]")) - - overlays_raw[UNDERWEAR_LAYER] = ovr - - if (update_icons) + if(update_icons) update_icons() // This proc generates & returns an icon representing a human's hair, using a cached icon from SSicon_cache if possible. @@ -1424,3 +1422,4 @@ There are several things that need to be remembered: #undef UNDERSCORE_OR_NULL #undef GET_BODY_TYPE #undef GET_TAIL_LAYER + diff --git a/html/changelogs/hot_sexy_lingerie_update.yml b/html/changelogs/hot_sexy_lingerie_update.yml new file mode 100644 index 00000000000..58d74725a5b --- /dev/null +++ b/html/changelogs/hot_sexy_lingerie_update.yml @@ -0,0 +1,44 @@ +################################ +# 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: Mwahahahaha, The Stryker + +# 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: "Splits the underwear into top and bottom pieces." + - rscadd: "Allows underwear to be removed." + - rscadd: "Ports some many more underwear, undershirt, socks styles from BS12, Polaris, tg, as well as some made by The Stryker, using this new system." + - bugfix: "Backpack styles (job-specific or grey) no longer keep changing back to job-specific." \ No newline at end of file diff --git a/icons/mob/human.dmi b/icons/mob/human.dmi index ffe2d44ae9ecb60d94683714dc11b9b37341e677..7ad330f892ef41e51b85a6cf7d062e1cd2813f14 100644 GIT binary patch literal 5735 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 A*Z=?k literal 29653 zcmcG$2UHYY+a+2JCW>a^X@E|}Wee~Q%1{1jO2a5Jq6_F>Va?^SSpUVE>5 z(H`A8G2k{VaQ4G-UW`+2{TsK~YvDm>_h;@l1wM2aAL*QXaz)dbe?IJu;gc94YG>8k z1%iUtyg&R7zjvitG;Tcc{(9%7{do??K-Fu3@6q>y5-QZ7%kxP!f~nJM4c_1nx3-l8`2XniG(3v74FVroKR+v_w7Cuk#ZmIdpI~c;F#>%1HhQ@N-3EzUE**9xt8;cM898*zxkrL^nG zU2l_@Bwkd$t$ss*ml*8eyd>MAwRXr6G}~cs)r8C-hzGi_a$DQ;%i09OReLX4k+Asa z-o0OMxdV=q-f}ZX415hy%GVbvjnCLEn;B(p$SNDQ$G%pK=l6d-F<@q3n;Bm29yD7L zE}Y+TQ=Vp`rlp3`CmZgbb5M+Amr94t>4_hzl6}1N@O<3WO2{rtbfpQEy*KWt6Haiz)H~X{739zVl2OkMR?K{05mnrf1jk7vw(yo8Y4{Q+? zs2(hFy0YQ2@6Ni)D|asMT6jMJSL(UQ?x%_z8beIfxXrY#yuM&J9@3g`u=PMS2+hZn zyyZp3ql!~hfZ9zC=3z`Z9S04EsnG@tpNU@iTUc&?sQsEr+U4M&Hm(cL=7nZH%pWfD z|3N)A@U2iB!#uFWo9y5!RS1KXpOO*an%jj9Oha`i!WF1@2PHf8TuQU({3@=-$iYD; zpE=nX(ZW2*Sz;TZbl_J%N0sYy9oW z+Gg&A`iW%l;Z0XbwCPXy@$ru``w7`%=lKUaTYDc2I8~7msJfE#P!V`3gn6E8>_`v_ zW=cJ!6gI~_`BMmW(c{M|T?xzSW=bP+!rmRsi|on1C$8^uyV_(9FW>T<_eemT=@6X? z)bnQn8y1{pD6*RlXE*pcsLgF~S`adSM3a|;diHp0zr2|{AB&R0U$y(^b!ZgR-HUh! zi|B-YE%x$w_})CK8I6G}T%6vq6cgdEF{Ttn5U?*P4a=M|gtij(bU&T?=~x8a``KR| z%_c8}XE-yIQCQF5xgoP#F3oqoKuxpTf4=Q&RF7ZRlFXr{Yq@l*@WyKgmEPZqHt^FQ zmQ8L=ktfEPkk##f8Q>rt)#%gP;&%|R#PakzA}zPbX{&V1_>PB~#FePRUpYj=Met7g zS~6z5?TYXHk{GH*JdvKqB34kucOQ4eXFsgIM(`YYtnVIH5+CKhAM~QVt4Ue&$tGs+ zHmgy$l$f_{%%GQsx^H7`Dv=ZJ&WgujmHS&GU$v3iTlJ!}8K%LnV-ePVprfPX)cGSf z_Z=sx*|xAmn8GseBWH+M>d%TYghuJiHz26^iDz zS5!20Q1|Cu9zI<{)qWM1F*hp_qqR0PaA+_ajmD)u->%p`&{Cgt&p(L8!`zDc24Q7V22oCNq3fXcEQgo{- zJVyLH=mU^3UGgxaQsf9>tGa!5+P)H1z_zr#VeEeN-Z$^a!Ew5nQWZBRzWeB?4~gro zI%ufiYy6Rl@QU!8??^~eL?O<98z-myn{qyzPk{z`X~dF()!gnv41!wdoPnsIB$mEU!49+ zKz!cy%3r*Ln4573`iym$ped)l?^Avvy5CEzaa(OxrjwVP+u`z>W4Nq}%sr5!h@r^R zLWq|-$HtkQ-=C+;{&>zdGBwV`*8f1XTty(o;??4d%8rOUz|%!BIeZ%6B6-@ z2oD|}`@8~;m1;Wq-N&Q7r|(tlP(D?>h&H=KPSCD7<#=}!#HT#SjF z?5mkqM=Y&=Y_AduAD47vLF~WOQtvJuVB*`@9+2M35r$ifj-Nhi-R4P6jMBLERr2b`pe3qBn@}*UbNiyy-^o^<7c62Twa%Q4xpI@%CkYI z8hP>tE93RH*mm!Zb}7~XhUvd(t!&(4*|qrX2X*3B?P$8mQhi!Rh-6)8*L{f$O|kS~ zZ*hTcm2cCJcA7AQ=&!ppjf56}FmKM9#C~vb@=;a;-O64>nLQ(CTY-|O&KG#Z>cDIs z>sVibOWcxG)=83l;cKXItsS>vQW0W^Kg@gceotnGq8EH`2DqrZdimnRv1XyCtb}DAef>LyL z4DM;;`wV&MB7l|ia}BHLLk*)YuJP`K5#%K*+i~F4eIw4u!LZ zotd_nQL2Iy$Mhe~`ce zujyjj1jsU~p&Yj*?yFig+|QJ#Rdb7Tzju@A#TTMCi8J^l!MN{v%+z{V82lxXC-NJW z`UON$FG6;fuGQLL|L>aGbhFis?|k2VyMKkwQo0gCogc8^n`Kw8A}P^%p+0M_pC<2J zmhIkX{3LbD0e-#6yp5JW;RzLi-85{D1tsay%zqY$Y^KgK1-%Kr$ z&F8_^+1;`n6ahIWc_@}H>@Am^N-UMOmEK(OOQ#@@-XH6Ya$NcP=jT!7#y1J=pd$}D zRhLI`J2q&Di79GzEg2=^EYi5Qgkp_7DQYzJGH{~cIfG^^7>Tpwk+3uyM>$n%#mLJX z1zm!NmbIq3?;&%K0(+QWzFM3K?D+>&#Ho z5U%3=v#Nmzy$!~OiUXRTyMNb$IldPn_G7A9-fP$rvq@pDVMS3fSr>X6f0@%!4`NXy z1?ElwEKNSDm~2AO`0|PX7uFJfg8y+zkqDjkC1id%eqR=%J8$Wp6bX9)F>we~$#B}lu~6S%bgG(M@aT_~IR%+UME4wXCh8%(Y`I(K znVN+++P}O3I}^AmDd;O7&26<=>t&De#}?WpWAn{tc*hhw2$>?4_ci=Oak#|ffO?|= z`D2bVLv82s1!U2-Mk&)m55{g-`y8i@Do$)Ax1;h^QstS78SB4y-5%VZutCa{PQLcC zxcq#P)|UWeOMjKyYK#OL@bcm4b?6K2+Kqtd}k+t ztp5!^h6QWNh+XcSKWxZ(bwl!f`1YkRhxy%xKTHV0z!ON*#K-)(0L9I6x65)ZT6>Eq ztJ&77Gyav6-a@o_&jR1SKVQc#qJ01U8PYcchk7QZT~9xt39Ru>UvqPF<7f4BbS`tI zxviUPpH=;AyOriHkUqN$HQ|;Kc^JH>o1JdB^J@lAyDUeB< zYZ48H(FjCE!_VDo%T(%}ESk7QV>;bWFrNnG+ox5^{m9P9nwxMjAB(a17}$5wI()Js zC9L-&R?!SyahAOO!3+^d3UcgXfB0@WN{V2bN<3@w0haHdzU+NmtXss>#e-M?qS&5R0JnVjkmI#@lYuA+7)FI;s7Y*W4%Rf z-hFj~kv>0p>D&Fd%~kzip>QO(+zB5kSmF)FB*`4JM&f-B-(^ZoweTntQG?UX+g=tY zNAa^e^o?Te(>jN@wdBWNCjj`5hExC1wXm;~ef==by7k|QfCVTyOc3W9Yx2E&PG=WJr_yY-u$VN1&Twkn zepw8$Hsx`PPjFK>tG((`X`8o2JSwQ+lu1LuHsmb{oo7zYRjs%SPrEGUzp*N4t=eMj zLZnx-SMTUrhl-96C+B=mc?pNPwv{#%oOB>+h`8{Z_RU9ot4?}iR(U2U1-mwU++LRA z$(hxmLbbbh-xd3xcpoooBG_>@;L_o?LlF0-K0l}B#faA70yBIqJA8&ng&f}U?=&}x z_{gnhuS+{R3Xl1mKyJR!R^D75MYxxocI|DnLge=f5j&PQuV1g;0b+oB)TB-Dv8?5O z)*r_mGni5nGZ6m(59v=GWxWr1J_2!4vb;*O-#$j0UP} zUPZxjx__4-_)lJZSq_Im@{ta(>OZIDva+^>+ZUG(o+JV64LE+kl=GNysPDOZo0qzE zx;!1B%f5fq>Ohk*A6TW8;{6$;!}cD#fy64tbl^NB8W=^(QESJAYOW;{rkq8-{<4Lq zco58%kIRQO zcg0vap1o30QITA5qy-*AEM+lhW4`ULFM44`z3vYezXcc5BbEm;3)}Ic^}7R+vgV8o z43U3}7N9(XN{!>xmDf9J3%4opm=vM*$Wo*EM#dmQU85|umCH%h2@_|l6n%_~FO z@gYOVs!qB|eWUy}j(b@LAuWlho^L`8%8PW6Vp$Xw@G&CYn?8|02G!@tVJGduk?Sid z3NMB4lEW8I?`V;!B$W4VWvK6aJh zX3SfQsF4XmdbCT9!FU^$oM94Zf(Xg)LZp@ed#*)u!+VGm6hCC>fMwDe5l@38m5dsk z_CV0>zP>LKb1F3IKJrW$r;pH$LR%Uh7I#kWDzZ_y$9ocgKL!+Huy4&?kqv*{&I}jqG&OxIiJ|+ zpF+B|61O`ZXzS>tS4yr}MV$xdaI zieOaguC>3ip%7>$EA4yLkfSV`R8IqW*zZgQHiq04$s{u+k<*t$gt?m(DBfaWdUJoA zt|;l~BvkLCz+iI`Pp3&Fzrx4I9@lzqUs0qmuURNs&TRceJr@CbG4f6`H6(L&(;K3u zs}k^&LnK+AyOdv7XZRP5POq!uNKQ^}@9b25^ypkiN5^9=t&H6}54*d&&3?bX47QU) z5)E~Tr9R$=pKm_u)D-v8ad2?>h3oC=(yqbMamn3!iO2ZvblW0=$YN7zIBZVar<{@W zAp5h8475a6|Do?X%pI`frm|U$!GQ{xmt~i3kWpoex;SgewgiPnQ|1(gx(#_a~j%e!}eIB6c+TXW=f~ zPkoWQQsGn+L8=i{XB3(Whu^B#62hqM63P5C)5%PHw^Wb4N5th0=i)pw)9XB}AxMPU*~z_!}Vuxe#Z&? zpp6Ev=Ag$&8x;tqWW;R@)YeLE0{ zH7StOp9t3-JIfoT^dOoAh*9doCB~if;(}_js`*hXTH5Ly`f(01$MpoOHqmgTwM#~H zZ~b|rR6c&zv)^~Q(fI}fDZbnH!Tpz1$rJZhhitAwu8XE@1Bslq<4wc@i)y!zzELII zRPU9y%FD|Ig@pbn>`so4Usu=))l5=uL=bjT%UdelOG=tjWn8ZGe38iz4qjMz#cNL1 z7(~O;<)&xsmATC^_qeY7#ErI|Th7x_3BMZVfPHBZys?jGpbjdVcif!14USjx@u{u0 zZwX^sf!~(7fXI`14q0(|(@{v%_#WjFlp%z#ronNQhOYYofsE(xo2g?RZ|Ce$p_dOK zC4;PL5zn2(zm>#=uZ_DG0~XBt$xM@y6~!XRpd}Q?254w%C5J_a?&-8(t~>Ydhi-Fx z5HULHP#3Lt&A=Y`kIN99Kl-LbnNZr=+cVp9x>R!6_a!%N&9()VXSkWehs{S_2Bt~l zGT(e1-E^+TWf+A(6}gw$+fw>G^wE%|c=I{Pplv)q_@e6~{jCF`7g#HD9iO0r9>phM z_jBiAjtfoLgUlD2WE9Awqodg4{W6kP?Le@JJ+ZXEO8ws3zouGdx~F>>7ln>AT)W}s zK|m6sJj$9YJj(3n%%XE@cPMu~>N2iW{9Ku`vP8^c6;*3#)A)*xDW~hC0nvIR0 zear~WaUi)+|d(fNOzFN^Sa zQ%?bW-l2cHqRjB&5Aj`12ZruvD(nhh`VG_JIA|X`#xk)}d3=jrQscDmT&!AIOBmZ4 zHRAZt1Yo4rJ2zgy!F=pvt;d(Z75E--(tv>Y=ztIdfPVWr1nxsF3_{X=(hTD2!tI zp2oWqb8vnY*`PN+eFCh4g*Iv*>4{`!W@hK)u;IJ~IAA<{?EDYN1ICg+;2E!@3`xhC z`%F}l_wN^)zihnvz30v)daCibj_ou@3S@{?yimETeF+tPW7fH;Xx!r9)s>hCh5|qh z1SKV(K7EEw>*O1&D=R#2hpkypzxg?(Tv|{dGC%YZ+^wX0QnH31Yh9)G z&X%K1-A#zm?X>1Y8@07Na*&eX1v03VDr90(2#%;$U;koi7`8l82G z3Uh@vf|L1GO0M5gU)J=rw9MlZ6KQy!bCgw9X30@C{j0fdorxjMnmqkPP7lUnl0Scp zv~bPWQW*lFS`Pq(qqRtgv@a2lVUd@YXI1o<1A{asHZ}kR`O?B-dODa}w+2h9xx&sc zUg6>Ae=gl|uW4dLJ*F4M0SzL^TuF9Y^^g!;>;2rT3Sc? z0TPIjhqbd(s)*2rEXJGHwA0=a5~49OG6FHy0SUDy3pX7(T-{FI@KrlrQd1OP>vVQ@ z?i(5kUSGE#9{SPF3x{81V`B?Z;Uk}snNJe=H>EC^j~qS-rsX`J3!jRJINP*rI6I8F z)1k+gF?U&FT610ws+@%|R z^L$I&bW<>8b3s7?bL>486+VV1Mn?H{5ZkpBttjhVwP6jsy0g*qvKB&SjYu*_&z>}< zH0rl!1*_AT!JZoxV7_&!v$MuLqa&RN$dt9U-onD-DvJ2x5!qQ=T57|+WdO|^Cr`%u z5QYLm@Z&S8N^1OX6!i-Pf;Twn#jikLYf)O-@?@~xXo}t4T^=DJb$lOQ8g=+6HZ|3O zi;OC`X>`T_{%mAgGf51_$;mlf=T-WF+3g%a<~FwfP!f0`Y7SF(8Y#r zTA!bvPyhbC_1><2;=N0J$R(yeXbPZnc6RpTPik&%FwG z+G^%QbvixTl_+J9f|KvxR+R%Zo!j1QPlHv^wjZ1#xmr0m zNRN(&)SgUTD6Ob)&+1aQSWCNExYE7h?h9G%+&bYaGZ=pV*bD81yKpc-?cOY$6#z zbPRXa@^W&fSx~Q}B5#{7zd`EP@HoPu>qhide#>NgssUPEpYF~rSuW&)E#T8pxS5Sy@`j8ycfGK%6ujOK(&a-R z2Ct;KJ`~WVi%+C@`{yw#>OkX$dG%Ucv{cKurC;8kx%8YzEbP6XRUvxpaYpn-YMs_7 zNgZ+sofjKi!)!MF%N=SY)DMoTaj&er-l|4qTh;U(+@2==428ESAJ`XFHBS)*Eta$F zfyxv4Qpj(G8iUFE)N0)Q)92HbuEg_I-pUqVdvoRdS&C*9GxN;qqeoN}!HQ(o6oEhE z3Cdnx)u8k<(bJ=xP@Yyu)zlZ@S_v~THn#U43A)3Zt$=fwU!|dv87cT)Ow{+xR`B*U z)Z@wsa5I4Vv1$ATZiIk!tjNBSfw#zu?oaL+B?AJ~CC;#H44%_2Z-cXMpOBvcm2kQ? zm%BHhUo5J0ihAJ8REB&!gzUxoi1np5t!G^hCoFqE?Q032ekuZm+@aY7qO?fw!Y&kAFMVwux zIoB_cF~0~$I4y3slv7g|dat&*-hV}w(lOhg!P{`M=f)k)eJ!Qq57|(Gk&uEf?s~(l z;}@b@0MgSEI264U_W&9Q3DvSJrJmxZ4(j?rWP9f%3T4ZEb3E9bPWDG(#<0uV*Yj| z!%1B|L#CbYYn>pEcFLLJSC4A9{%WbI+}0KOfS?ZAjzE(4N`K8<)J}`~ZFM3sMaj$~ z`)b+%K78Us)3U9}WbWMm_j{sAm45cDYaP>%PZ7B&5qjx~n>ovOW)FXz_%I|!&uprR z9dzyR2jO&R8THANVA?*xV)2{pFfe~a+O zbcXKU==vvvK2zvt`z1S+N20K`R<5dY`hKa4CdS)CSLu>1DYSKu;@7v}BdE&9WxIyI zR#2#4a+jTY5y^LM>lS=?c7Xm!6qZlyiVf~PQC8LR!K*)~4LI;szi3fx-hI1`4fa8! z_c;{@3>smuj>?AzcSBM7vPL_uax6V$tTDk+9B9y)Jt^|FZmkh)7w55#1u)3)N*ts^ zTO0j7Nu#vat>>Nx+&^8;wT078rs_U3S&gi}kFCwagr@ZjDazH!!W9jVqG9_v(}`7g zZ{O-gQxxBnsU8(ahsBeBbbf#$Jw0!y9E6|MCi$blySst^N61V1{$ErI{|Vv!%MJYB zQ0s#nsA@I}-h2=Jr(N!NvnkLXlZMXXC!FkKHdto~_zjlaSsx=Or>(DJ9@%@#A*q6` zrmKSTfW}np?F(ja_H=hM+1c4WAepk60J?7Ii^%@o2P!sSE>YN^A_O~D32z-~@T(mz zu~6@j0pjwdrDe30pX|6(8>bmykpk(uiP3VKmU&~y4~TSWq?M(EkqCF^-Zgm;PDTld zSu?eil>=dCuS?FER~u*cKet+Hx0z`Uy{oKDzQ$<+;;^!^YHSW=Ot42(&Z;vpF|}5^ zEcW&FK}M>B>FIY4eK2L#aSXJ-=jZ2YH8N_- zy=bpL*+3BS@78uxJZH`b+wo#*BYtEou}1XBeb-E-g?{B^2#bg?|H;x+1NSk&!OqTp zc4Xu?-nn|9@xuXfGTmIve!d@#zH&w5i&Zo3t=qesvz>VR=ECf3v6s99eSJKT)pE#> zA3s#rTta4M%%DEqgL}`OJ@Y)?YHJ~^r|7ZH z5f&c)#LzI}-MiDg@HG9!EVzPeTjl#L3tHKSsS5HU#!Rkx}hZ@T%nmfxT&=L8|s<%2nKPR?Qu>mqjB zmv_pS|73k01BaMJ=ES*eFe(|UN%|eRYU}CIB=|HA4i1|2r>jP-f>_`3t3?S$Znzm# z*fPk-$Sj!KET+cA1(L?5HXZplz%1uOdHTU>E1RLPXvOX50?<1sS zqS3lLsUm@qlI?s-2I5>SW8_1lXU^RmpdXWP&OCARXtr zzKMMPOUR{7oN032io7G6Vt-1-=eF6bhab}~H;kXQk05Kt6){$zz&@|8fA2Jp`xW1o zXgBo=#slY)Ia?U_$FX)#3~4VLOiZ4sc|xj6ppYo29p99&&5ML3`-){_t5C^Z7K6Du z{bWj7;|SsF5v`b7Jv>XwSlr}zltU(dxOQ&grlZfmXE2}R%H>n}8ua=2IKI@~+umJe zj&`*VRi`+9$Mj(@EC%;_J;bezpO4+nb;ECL@m8~j`UU$)vRlbV+1^}tYXEJVf()Ng zI}=q+6r_Lb@9&>Jobg+~JvPMZ*4;4<$i|m5m}hQ}QY4WfG5#(@LfLY=fp3u|akXa} zJB!_j4g;4A<$T<2Y8cDBg>UXEe9Gy%(XVrmr%f9Urb(6`lG|v=F2IJPiDQ_;j#6H; ztom~g=8LMvwy;@>z}C7!*XYmu_T)r%K1m}~R)#a#L{&9t+O-AFX0VsykUo^S<<`|% zlwvn?L38isJ;`O?sFJao!z@!Si|TDSD?pCudW{lENvlH@ekvpsR3-gtD{aiNj1z8_fO|=ZK?PH%3Ab+ ztVp|r(~L?}%{f;?GJR0|#uZ!txx#-ww2`1$puQ&+X)2a9fQZqnr=cJt%9*!DL|XQy zOt7Cljl#Aj90Jv=XyP@Wa4}%%@StXfq^=^k6}ceCIVNlL*}lTd;BTu>>+IVq zjeXS=&^pkiuxhJ*zBCESbXPFV0L&@AIma5K^!eOsFDWHya|2Dvzw$y8ȥS^ppS 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 VN#Bt$0^?%fv8tv@=_8ZC{{{4opOOFo diff --git a/icons/mob/underwear.dmi b/icons/mob/underwear.dmi new file mode 100644 index 0000000000000000000000000000000000000000..405b12829485392b37e0425f515151109458dd2a GIT binary patch literal 74176 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�$52y$Gc>H^E*^w5I;gD9)uECk^~`0XYOdd$VSiPV8GyVo7i+oz|e zv%4z+v!leNrKK+?|B`Vf5TTqZPX_+UNb7vyFLuyEnXRwFhyeyelFVczj86TJs89av z>pps9@HO%}n9aZbGxHgJ>r=t5nc2^bHe*P{)KohhAJX!mQt&X2)(x*;O&XodWAzYM zVk#O#X8`W=B^bslPU86L!iMV|%>6Wzs2)DN>)JB&H~Q(J$#0bUhF1m*u2BQ&X%}fA zsfcos^4q`Ts0+34!K&3g9YsEE=Gln#vroK<#E+wz5an9Rc1C3X-9IBW!>*W+H`gb} z&GfVxfF_U>E#&S_4`W;#?xl)x4AG`#C`Vbf{yov%*@CN;&ZtU8j{db~VPI##qo^Bz zf|!d>;QoEGr?`g0)ATA&`dT)tTXIg&SPLJ^mp!1rlOzfj!9Ox6`vIvs7jR_V-QDA{ z{3MxwCfPXmTm5SPs<9{QQ`=ueXZ!ufj~74|Z)eAen!W(mU^aO4lE7dL>lz`HpR}O& z?c_?1xC(w-8t^l4FUZUQ*uv5AgO>Yk(=Y5^y}bR*LSi3#g&Gw5d}WQky~8(D;5{XvcpQ{-r^ zeEAy@ip^I7Db*bv&pyL&ChNXLF5N8M!9q^Di{$PP+C{t$7>a0L;Yk~%N8gLxp_?h;u-xRoam=2PLHLP+ZOb0TCl>3+Qt0zyU>&h_ zK7SL(3f%|yadUSE%OVCds>suG;pLawlBhp{?%ysOugjFA**Y_8%kMUbOpIJ8WM??< zxaQN#%A1?f2DH3=%0~+jSfDznKn~BSY_}`{Ge819QBlz)l#`=lY}UtYEQxuAXiE?Z$ zn_aCEH~9X3aN9<$ayS#|^<}Rz9-S~OsSW~(X#wfbq9FmC=6ApyOlmbWI;to|eOQX^ zJ-EPZ#k9tpMacoBcB4=z1K0+B(qsjTz<9yqs5B-CokcE_zA3+^H$c2Lg5e& zgsa$LlPI{Ze3a;?;4k**2vJ6;bK+mhebG4YQZd+dHp*sk-5pTN_h6E`Pb|w%i(T*z z3uih-_deIVaJc-IRowy}hkbXF?svdAsY8osQwTP_Z@aU6IQJa!aPsK<(%IR$quQcH z&n}D+5qd}p+P99JBSCqfV!GUuRSl%iRd~LmvR4Ser`z<-|rJ`=xdvrA0?wWPSoE*U;fb(Cc(t;_e zVoPxDp{@#-4A`QVJ6q077r(U2*qW-rDKGGS6xSbtS|l(BP4UkqtVn>5vjTIVw#V8Y zoiRShzK7$o0b3>}AG(W+Z@Hk`d@dZ?uj=JmjV+~r z9j=He7oS1I_sG*`_uy_6&i26ns_r}En)w()5V`?pG=oc|K)JQFos`;T0JfB(#XIqCo7 z19n&EZ#0Kuu^Zkxs`=Bz=l1Q}0oouGiARq=2pA#z4Uexg4BYBaOeN{mng;C=n^2Wn zYz#os^~=kX8zof`459oDNXH#jLhMQU<)uad*Rb8!}02`CWkZkJ{&}1&gj2;jJ zS){Zr;apv_Q^xqp(+k5~_LnZFx9q}$A&}=;S@B1apK2h`rpW_3#1QWv!diAv$&=#X zlbI9;T5L*P^WdiqnRyoqZC)RB^;>pu6t1Y&3U9dC7ivEb=A zubJElw?PuBgFVCMVH@%EW$Gr`tfT01GvPVJR(8Oz@)y}TkzTMc-R=un80r>sld_i3 zbWA#pg6p0LggGCSMU{?u7#v3RTy?Z4O`Kd|D{`#aSu#cjeiciC{vB z?m9pv$2gdcKp;Ssufla$NK5#U6`%U`(;y1_Ctyl=Y|vZ-+UD8mb7y=HK}IjL8jA#I zuVAjlagN4nPTrW`7c|=e2!|!OkA)Xv^*T z9CW>Q`$n*a1{EWpTFLF^eV=#2kAC%_b^{8c_$b9BL?1`(osTC$Q|W@Vbx>@fMbx~; zt~ZHQp`DQs6q=JEzxDCHLfR7+64Kj0@B&5TSGy?RiYdr20w0e_$Zz^XW!+-}%$(1p zVg#N+$R}V|E88tD8(+K0rgbGn3s>ehWa*!+=Qe(CG$*#JSa8*7&U`Y!)Us0iz3yt$ zXsCk4trP45q9Y>H~?WZt_;8^f0i=Tihih&AW_srC?jnj@?DMDWskt1C>t6afh0&R(yV5K6zJ7PY z!<&wFfq)$FCB9)e_jL3w>sZS3(m-OYYAYHl}R1;#g&y(`D7qY-HVYBvQ~E|b&!fMFuT^{ zpQl1km6nz|lL~HSJ_9qFlav!E!04=B?&@2<89-vG&zgis8%`oKo! zpFT0T)|#}RPxZbeXx_Jr^_C8dP_74v%02c$33IQw&94VVJaJwDl=3oJxZ6r$s2|)v zrzlDB@@+P^;o*=XHBXd+>-%wJ%SvQ8)&QwFT2m&Kc}0rh?&e@rTlZjkbf3=}BvLy2 zMOs!4X)Co-Jv6Im&lP&^KFp7C8oABCDM(%LtKoUzi-(`%@@|l_ox&e32{7 z;-Yju+F#dA)pb62$)^Agn1tP>5tpYDC2ZCZ+ZX-){oeppYlwZm8nC|kmj@~PU($|) z44aEMz`+U1oBDd94&|Ax5yjCGtn?(1`4L?h@42NWAu4)@oUufbVBeo-9iO{{%pENF zK%Nh~wRqk)P0k}@pV#Qt#x{^^xPphqO@h*y?cqQp3W%&!a!}BORGk7rrFmgNzSsG^ z3lE!4glIXpT{Ljo-JFa9rC^s5;GjB(AY9VrR<2vI`+B_ZnZDC@7m=XXL5%D00Opgy z>s$IZox88Ov-=F&90i8S>J;icG1#i`GI=kneeeq7O+TgPjb(GP!}C8*ibZ8OCjI%Bd2J&8}mN5d1zh0?o35oRp-2M7*u?K z(@oBCzELt|<>5W9KG1gRF2|7`?sr)ROhMCFy~gS+*ZOOR3L*3MjgNNHA-3X@9rgw} zu`wOxhrw*X@_Cf6x6&lPy3=a&7R`TK)Txfnysz}J6(qnqaNahePbt4QLm6umcdB3a z8h8JANUr)u6FIT7mJejto%^>ofcV4iaC>!ib*)w_=+8W=X9qdqIjtwQ{5#k7Ok;#V zHN$={Cv$NZb=X7ojpHY-XH6PbkSp($k_Ss|7H`PhI`TSyBBYj^frCoqjde*tR_|BT z{edp7#Sa6&!Ch?SMVn!A{Bz}816Ie&Jl`h9mn-TVbH7B1E!;}xgHWCA~~89|0M z?_!q+t~Yc?E1otq;T;p>?S@ctmf;`x z%~wxBj=WVkImQ}+Ic8;ZqF9BgYq_qU^w#azCzrvTw78rL-QT3fR@6dw?zav#$EuVJ z-a9HHxy2ih^*E)3Tr{9u_3g;EQU~e*R{M{bwn+1>bb(1G=g{@5gM)+e&{@&JuP+C; z!5Y}>knVf%6`?|YiRPtoD|7SJy|-pt+eZ>s%;hF!$iW@mp61kC0ti5#;SX-hz={S@ z$+>6?Bo9u95k(J*|HJ^J%dOBQIA?R3KmO@^J_KUJgD7M*Iy9McX%8FoAqm1Z!75Uq>p@A zXeKB@c~B~lZvb^k&@pv>7NWcLc?nl)d@JjjA0r@O{%w^E zYSKhhkBhR@o%Fd0$gX}AJ{R@e*al;;?e7wl-LKEC%X~h$>wa(AbqtU19~h1+nwth< z>3F6>2k#BGQP~SK7k2iKmnv7+LZYonfbldXJIE=)OIH`6Txg7hRIhOLutpm%EMvxa zEUh5z1GRBSXSgJIc^pb);yN_C_`Io2)8tvI@>kN}4FM~ zx5vV}O~2O)xQ8u}@)_Ta?W|{Eel9OCSfm?cQRbT$&MgdS-m}-Gw?5$|RCI>V4^JPD z=}E}?S{7F% z)`Cx+Ha5IiBb-=*yqx_dNIIWC-*!If_l-U{6G?GxyuPsU)LR~K_`5yd7O0@Rk`zl_~_Otn5-a6Xdx*XbJ7pye!P|yFwd&{ZVE4%w& zAJcv5SYY?86y>ceH@7&}aGUGp#k;<|V?UMFb2pgfM^R6LYugR{jn44kk~>oThS?^? zlLqf16eD@7-{Rw6vzeO&7hMk7g+TCXSQ5M=BKT4WYau{z0nYXus$eQ;U1=S!{8PWrdlwiMt z5KAY78?TZ*KB^31PWh<<-0Ii$2Mco^g97h9GnY?QcgBC&`0%B(&Q_JzGE`n~Wx(XM zRz>|UNMuxvYShk};xgF&=nr;Zn})oRY0m0uo6OPbc-G&RM|L8V%NS$BBJru)*GGwz z)we;pgVphNk=>u#m%gsujuElRv?aPk4#()aePR$w)}5MZOu7H6N=D z+*j~e*;?w1ea(LPfvbiSNbjUMM*F>C&t~MuBepA7q~aXeaAu!B+d31?xq&5+&iP3l zr#f((ThAQ|6W#jXmLrVY9Z7d<$jUagT}SpPtDlOqKFAmX7NK6XM!*B=pz?h^G50PM zM6`k!&lE z@aDTeERHT@2BV1nwr=`mb)h&GiCrJvo6g8R@B4n@aJxYk7Ikzb*`z9@QtYP#vy95c z$)bA;Iiz8urSj~f24lk@(d(lh8PsBy^QmirZK!tS;9tH9`=I%K{{TfF{K40}395es z*xK7<9*!U%0VRV`v0TmRrsf~amA=ks$K~gkeh6fwaT}hvBH4V=HXhFS`Pd%;VvrNy zC1(akv!B6ISI8<)4jC+T2;Nme3fdn`q&}>gFi9NOSQN0AJ*%&w(bgq(pxJd+Zw4z! zR|(IWApo_(eyw)B6e6``J&NRkXXi0IBD3!H{ zsG~p766o7KsDzzuokAY6N7O8@?Ct*Idqdne>pyTgAnmPzmHG%y3HGM>eO8vqDil(y z?@8yHigpP}R(7v|Ah%#u!Mir>$E^6H1R;7SkfNv6-YasY9R+VVQ*~3Xk2Js23=|68 zcm++1Mkv*6OV@^R3{rRraT4?uDv*g?VxQ*0V}s5SN;=izQHLa<>e)XG_H|4wx2>v} zBmoEk4EzKj3}E-UNcfa`Prq52Jau-#`oDnmrI;GOeP2J^w4o%8y8nxYk1hiBA3xBn zNl=#`^4B-9dG8Ddhv2T{z$<3hC%Yuf-HO3a zURkZgF1;^AZ15bfAC7dRD+Ce=>}zKIn+9S9daNQm{B)@zCE7q~;N7Nv&AZ&rZ*g9@ z!$*Q-CFpbX#JDlH*(mb-cM03YB{n(^^*f)uwOPREeNDA#9dCp>^yzpy} zH^&v!)YJ79xX$8rzdk#kqUeqw{C0WXQfhluPEkMSau0r4sU>PR80!VCH4Q@rv1Zy`f8wM>w9VeB`+``Wu9{>Jvy_dk_C_F}l> zKgLMJU8c*&FJ6@nFHsC&iCSK|6vrJP`QxbLzI>^bf$;$|Z?h66B4F*uNKBJ8VlhbdSorf? zuS7Xj^}fyeUl!ZdqDR(5drmw`o|6>s`6dm+mq(CIoXX+5sGH4Cg{uPj|BOt344qZ9 zdYS67oOcR*g9!%Bzln4s={(+D=C`3la#d9IM|ofe@y>5TTIT3n+Jew=GZp$xXO`s7 z(!(Pr?$#mdsMa*;G_}5--Mbt&4Z0w={~t*ax5H;SG}Q=^48?4g6`DfD)5Y@5364>n ziXMl)w&$4Tam)uTH%gEt#>EscjkG4;&-inrYaf92_7Fu7R5&F_7}y;TQCjdv6l*6x zJNjVh{&bWF)3l)!jUCD1g9Yj4$^ib*?jUfI$miuAuY94TtePE|CXt8ML@B6j<<_O< z!%L0)NF}U4LJad>Lx!p&0`;0kf!X6&PP z1kG$J?Lj)X8I;yH6P8@drfxq1k#ZG`*H@Af1u-2Z_=++`xnx>4dbk?`V?R#!M#B!w zd64IH{D>~fRme_==gU)D^OG5=!;35BR?Sn)QK*=IfNt1+ND!EYTR=ZrOIzPAe>n9m2Giz@7K8;Q!tM}QN0=TOE#`r z{;;(l)aacgz=&kULsy;@{vwR+sc#S>(*_FFD5CdBCe0CUjCucDQ~w^5Sbbf|${L3hxy(RfG)**bNK+4H_+jZfk8pm4>Ezfs1;%4z|*zlgJ#pS7monVNs@TZfwO}^G8BVZ1|t+Muz01>gT94jy&hAaQS`tYJ=)%>O<(F zn3RPd|CbW_!$v5j4Il2+|20AAf=SPTP1nUg4}bpW(eya^+GcF2V(rkA_o5+aOzm;C z@5&E9f75^__2(J`rq=oj3ud*Yts@F>Tqduz2PzIsRJuI3#FD<5%UEBRv8*1YExBR*M8m7%yQ zqcXalb4vb2)Pn0M0XWTz=)VtQ)c=$4`hNrZ&&fWg1HF&|vNxoK zzK8glf-16CDH1|o6{(n6+-H7ZN*kZO*)nbl`|#oKfr|^F*z&dbPTHMON-3UcmP{$) zWXGeu-C7KruvBC40e}MeP8>fCX~|dpm=WWGhTE?RH8ZQtr#DR3zMkNThZxwSy5)GWd|1H75;hHt8kceJ~SN!2qSa2 z*9^T2mfP2-iPX^d=I@SCIYbP4sNx4Z`*tdqNp$C}gBw5SgaDU#{w5B%T6OL$3F%#B5!yV+ct zA?q2E`4vcD>%qhLnI%E0l~l-GPWA=lxzX7AP63oO}B8Y16HYygl&$dafGl zi}Q5-u(e?qP4~NOXz`>a)U@l-jX5V2FMRoiFYlXqYVcf;BO1Cwq#L3ci2 zIX8Vxr)&hdvUN)OHNsNX&58t!@iFJfH1Dn|Tl$f@=5619JCp`^;U*p~K5AFjN$l$6 z>2)I(d%}yUCPJC!;o@j)Dcfc}sVuX@=LT+@?-Wb5#Wo6NW%}FCO%eedn zE<-NFnZ3!ctAbWvayo)Mys0x1y;=Yi{Q^P(lx4NZNhrX!ndQ$quR&VeQ7~c#)d+2F zduxZ~+zpBpXcrJ=`0fmwkD*(if<@XItD|lT$xBXxA&QSP*{mB`AX$(|5l7D|0M)Uo z4@8P71_dF1W3GDmUhgAWWD{u=(@*nK_x@J%i0PEV83qe6anUf_oV8`LSJ;*LdKhV^lH)icm z{fPydWj+TTH)7UNAD3v4qJOSC&Ez->Pf1~)qL}5I8$pD1KGj7pqnq>?^bh;n|N4|x zDH6q~aW)PkU*jc@WxdNB!nw7)yD1gtKN=ew_ip%&TQ%@;>=B>F3RIR2#zI~sV{~z; z5syJH1*oE}$J-pJwbm9Em&!s_0Z2W&xZ+Ta=JU{;LGb{5<`Z{8xPsjD%z*@KG0WHM z_G%QKm>XZT_X*fRBw}7C>vWXQ4VxUrfO~KgYBW>M9d@%nq}fZC`;L(Z=g*9xAK}fk zY`oK8t5t~mf7l`S)V8IH*dO~IIvPt{qj?cGj!Ee3-Acce_8@Ox^EDIbeL#M28DrW} zMpo0;)X?HZq&cbynP9MO7phL)y(I%z)Ay|-tAjxG&yA!T)5JFS)+6IFdA|qL*tSRB zd;Ni1e@Bo;gqlsTcqHgA_GIzyK{|-v)wkYMf?&Ez3 z#d~Kz`~S8|`dMH)&+3!@G3D+7(EUt(fKOeRyi&3BcP;tM=E4!K-JE$xo1-vMM%xF0 z@R;4u)-dL!Q1Jn2Mdi|>qF%rG_LGwx1{#)HQ{kXF6@2EOI7C729bIM7U?n@zYjkMH z4kd7t6y+7(p_ewve4!YrrGZ$;Ey6<+J~GDGua#3?)gIibArmje%BB$s7}4nYs6vI3 z_a!Blox|?kOW)VJx0Lb*w5*ipl!C$9R2?L8VBj|OswzQUIE2MMq(3pqW@!cKcMwP& zEv}%=1KfxnRCR1meg@&!7bwMZH=IopcNmBtXMr#N=_BI7vU6glnc zH}Rr*OSBv43INW2qD@^~5-5MuLaj~kt9|uceg{V9apJi$gLr?i|KW zm0@`K0-~gMZ){urN9e#)LpC^Q$e)0Ca{usVs(8Zhq+Qb{hP3Djt%!c-+l+d~6h(%P zlYGTj$==0CF}0yzkuhnH!tfM@Bjn2$fghg)Z?qb&Q|gGSwt>0FzD0GcnOfd`Cu;-N zpF~6xDF)DJxdNp!^}vOG`AP8>uf~1nCEVuwJEVurN2|gKoV9FW3XPPw*fKH6ZBW^{$xP@;~kB>s@0-6n=1 zx*S&M5bnhg6+TEng)M@=lx`Q*(>KX7Q&+~giAn~~Xp`^;9zd;-nyAzF2>+ZfMcA6~ zp`5kNggI3`FfQQN+b|-4bb+Lfa<1p7z~tW+6+o{v6Ayestm5(8gn|~ZpOq$Qr`b2| zDSF>c{cytj)R&sPH>FfA0iCaaH|gL$mb#Aj5;>u@BCjr{7Srj!#>Hju(9lER)yJXmLOrXa)-cI>Yyfdy3U*dRrDpi>gS+cvPa z&VCK1VE^`YChL7|L6-ApVt#hssP=f@Uej4WA1h`>;jIP#PFt6U59iV#MS{^a%u(iq9dapHJ@#plgPy6_JhNQy&V}2t9kW^`te52Hy6}4wK{^Q3ZKz9#uKL5;C zGCE{?`BEtb5bG!W_;Dvo!Kc-|anVZi?em3lYZ;h4Vl(vY?etjX-?h|Zv>P2zxHhS) zs{&Ix{jsRX_cP1$1#0!VSA{?a%ywQ5auK(rVuQfxKw9|FlW_@yYEinpA;*z>ZG4h` z%lf6TCrrF5_YouvysJI{Q?VWvv>-M>|98Qs#_~pcHVP>y}gkve^l15s3ghY%G8UY9m9nwKoWKX{Vuq8lm&tJcG z4xDBc(wBr%tgWpfkzh!4Hat~T?q6ay()5Q{i(UkulL7tbvQz_Re| ztjKW;P2~IjHQRfcxkozFLtaGCbH61^bPsbB2pRRvkB^PDVhLhkpR(QU!GlL=tgfr; zB``*O0C-@Vvj=RP;P81sDhjbDpFeXeEm_XvmtzTWW*RVwww2WcE(|Ca%mc%>^8`)V zO$Cfw^VVIOz>j%O{rQ41l3CDmN9-!<3K{txdMkj@+xR4jA*wC0tA@A`7KTf4TM+=X zq{Yoa@?)izbdWvbILZ^WvF5j9?pupJM?T}vOc+*UgX=}+a7i56R`LW2EfKMrKKbY? zKcwB=Z=IBTLCv_!K)VsEtzxZr^QOamPsqm>;$&4ZYCTQ;P|z@d7FcK`6EQ#ypvJ+zHw5H?fDG>(-^(@^&PXwqifP~^7_9D}n$vV(UNeJI zi*!ECH}vQH+@-$wm`PF;-SW{22F~)?`RBG%r*~r?8inPxRny-ZB3S!#nojxUJ{+et zCr9u+5|QV&|8*7Y(<62#TmXx~=l!(mYPqU&-Y>b4z&0oO3PhVzx;rrVyoLrYuvIF@ z_0ExATR58He=UhO;rDM(K&~wfWnbjrQRG1`^`?Nzm6)); z-W0LQkZtFSxVzRiHoUwc!3iO0e2}V>0LA|4ZgZ>nUHPSVUN{Un%A*ty2Fyw@!tFHV z=iY{&Ilid@Hy4)0K>(5+&bt|oLF*!4HDrc0WQQ~8jkgpmS=09H;Wkj7N>?I z*UVu34^zaA#z?b8^MT)cS&lT(oQtC2X@hVzKnq(3fXNQ`h_OG*Quf!WTBT%bu zdhb=reix$XBKc~X>}S8Q4Rpcle&4>7uiLvckV91Fg75zLG!y*Ra0ffH*F<2@&Sfw+ zF-dXZhX&twbCae_M^>%rA~0u9M`uSU@}Tw92>L>tMm%Ra^j=Nc#;mbMM##&|`_$Fd zY2|26bWniP_68)4X|4u-e$t?O@g$+4fEES_m=C?v6-!sUI6OAS?#GcY3M8HzW_~e1 zn4`qdAuc;Gjk^8Nxu?*+P4F(yaEanM)cwvBNGOxm@w_O$XKi*DaZdJmra`L}L)-Fz z7Ot<2QV(mG4c1rA+b^Q*rA_!BwF)p)SiV8-Z*%Vb;lRq;-*Ew&S4Rja*$6m2pYQ@f zXGXXlO4_oM@V&cuVGLIH!Uh>a9Qpno!msqOQu&9jenGYS#3Mj)1Ex+YY3DwUA7@34 z5d6E>`73|>C^e@992=XNNh~QTNke3L63;C0qnxGoSwj?49;<}Mg1Q8V?MUU!rRN)( z$q(rhX#f1CyN;^oc;`!s)_xFmNUrHbdzT1h=$7$8GxF-9U0;DT7<*w`T5%a#DN%HE zkIS1|aFmd3UV5dRePBXlY-blIT50XZ&70C(k}1&He+TWdkaqoJ0sDZ0uy1n9ja^ak z(%Dl-beK6!VFXU~9T=%6S@_6Jy)`@m+@7Rx^7eB7Hkg~Me0-J2Y-Uz0@>Jh?dNcqr z&+hN(;tS0@`@`xDFoo(Y12dxx66{TwM2xeT-kZ@lgr~3OBKG zy5Zz_r%NtK$2vW<%B|?z4q%Z;)>XFYTB=&P*X(wHe3KmiIWgy7O*xBMN{Yb*nD#Ad7eSluor%-B`esTs7`W6c$(<2RoL2|h)U^8-7x%&CiD{C}GlY`dF7@z=>JgT-{ND z=y_PpPVuszsB86vU^H?Q)WLs5fLkE$-CBJ*P6*AO$vV3IrgOk>Qkvo)G=YH3Ga#8XQ96VV#|S9PyOIqAqyg(<_jVO|cThPCgMANvaL8iE;bsjw z$9r8&K7any6D^Mj03IH+P^GOvl-SVguPr@e8hW$)%P$)ChVo|M!>n@*nLyvE*Yy

haT&4rctH<50dI4o5CZC7~N9CiYAT2GiqrDf`Re_P=QFXGBsB z^~51gWc|MM9G}coFc{8xIs_U2-n=bAVbREHlX+G3!jCJ05kRUVONFlM_T9U8r|fc- zOg1C9($fzh5SM{04IqUUVi^Ud2|CDfh?zR};@tF6ff6HXgww3iW)$t!mS8E25_V8L zZQxomrw~5mS~~{U-K42$rXwm--31^SMdXKE!Ich5)`_D{wFpK~XmCiz6t)p%E-_!U0-5XFdFRFWx|V z>8a#KG?pq`>f!2fz4n?PMwA3D`3!uj-*=OvXPv4P(36YsBuZ5->9VUz19$e;teGlg z7jNY%X)0OElvcF6X+~~A6q1`NAAMb=Yuz^OGs{rlr^XFZeq1&1QhjZ$I=iwlE@A&V zhTg6_n_Og44EfjudG;SsEXzMpEGV-%%^!g(KAd*B+Q9dy9=X?}Sc`vbw)ngVcS#mU z;>*-3>Tn@B_+9_9S8Q4uTa4;`ii9h!CVKP>jLu6$h(;WD9?x3s)d+HTW7Gm^b+qyS z?5WVMV5e?J{(UZD@_#XpDc)C^3hdzMse)j0^K5jq)z_08f5YV$Lhdd9e6`Gf7pk`Y z>jtm0{&!hc@17Bln_2lhWjXZ}0s#v5IRY-Pw0nfr9P~N=ke`gzDvbN@#cxlm_rKrs zIDfHumT-_TICJ`)xLJ4!S>(aixp!WDS|VrfWDH^&&{FN2mSw1c;c?RWE6uVwe>XpJ z9ew;40rDJ98O)G%>my~Qr=QFni~{-IAh)^`(f8|%TgnnYfT~W1jv+v9Wvj?f}xR`c$O@=}iCMcCX+u`(%0%k?DN`SzG2 z0NSrW&wg3*cCH$O!37?O;r7r$;>v6wLPJJ5XWGv3O7_#;WNW>Ji+6oHWUq}~bQo&h zgv4XE-+a1+2q!3ank^5|Kn^SGIo18Y3bP}(W6Pc^%cg>CZb$a@_ z)HYiiu-{_%>LSa~AGujAW>8$>_RqQkN7Pu#?DzUJBN6Dwzp!E6_pMI~zPO&7dxr59 z8Y|z4@ID)i75PDU@{otFf`4ARoo_>dxrx&Bj$`|)(H<#6*UwwI*$|kabCqjb5=WBs z-jw<5r5ssuvomjzHTPxk4Zr<%7dd!sAg53>-_c2Z*G6yHkczEcw%{Y1 z^-h{WBI`EA{8l>kFJ#4{f`ep6u74~@ z7{VD=wCmxAfvT}g0_B|ck0>bK8}oRh{ER3F7)qbg_fX`ZQkAU1ZUW+PWbuA$TDrex^vDKoyQ ztA+GS@Td=XR8>GEAuVfZrbk^8*&>JXhos$&%=&ILn}4rmZCHUaV8lOO7YuS6=c{Upwu&8zX@^6(}HOq^Or+Icp6x`8_>Bp0NE$GgwOcMIcM>xN-2jm&x}K+j7zEW>+h)fNxos3xqzd3)A;E}R0Z8$2GeZt>SCY@8$Pi}6C|*JKcMBLZt)ipV3}~k! z|3;=i7BL`@eYbT}>Vd%yb+E9o?eb@*E~>2Nd?f3~;WZZh4c82Ih*pMX9S=IuCp>53 zxZQ24&UikW^Qy<9vt}YDd%SU;v2vE3Yr`C@AVa4L+J^uhXf{Rxs+SYd%__mKL_@_~ zb;}*~p``D{r6&qIm(QO+FLdpyy;MCII*m5>3LQ^fjj(zaau76GO%=`i@>0G)Q8>OB zE=$n$F`(vOSv)(2wkaBca}$F=nP=JosNMy-vp!pkH$e281w+nE3Gs?C(s1{l?cLlX zU1X&Gyj&PNj?u}?V^WNczSF@hWP1^k$65~7nNq~UP=R{m7&^(_*Z1xd475acnhSt; z7#cq=DpNRmcOKQ*y}nOK`?C+QBHyDEkl;1Q05wN4t*w>8?F=E?oPkvgjqU9gV{UK^ zbVL53Ip^jZHYJVWG!`&dOt_WK(~z&ng%3R^<)q1LyMd05j<$!jryU)&q1i6VgXvJa z+9e`J1vOdSZ{B$Sg#*sXMU8Y8(9nxR-h5bd1Q{L8{EtKhJ8M$Kb*A5H-FHCpFJg@8eT$|=H-cQ2r8%Q^Shu3X3Ld0dPC?8 zl%cl#Yu29s2fVnF%JdHzA$ej$ZS2-Ehl8NjfvgKyfjz@oQPYuz+pIAfIoov1zMa50aew;JW}DB}7Z zZbhpV|JwIujfYo(+k5tdhy)c`+#`MryJ&_Q5Gh8Mt17!i5T)1 zIlHAWfw*YVrz7|xjVAcQ8RUFAEB#mPK>$(og@qxA+Ovhc9c7jor2(i-Iz1$iwra=|$yeu7 zCF$#-xnq0pp_tryKywMG9O8@1>U(#wpK|D{;urSUTp4uTUR#`?^=@`9Zg&= zEGpvMf!Q1y?>I`zS%chq8Rq{0ic;^BU;PaJixpY$XmnjR