From ed42f5011f9973a4e8619c1ef743a7ebe3f49ba0 Mon Sep 17 00:00:00 2001 From: Alberyk Date: Mon, 11 Jul 2016 10:46:28 -0300 Subject: [PATCH] Porting contained sprites and first custom item wave (#484) Porting the contained sprite var from old code, allowing for less problems with icon storages in the future. Custom items added: Antique Pocket Watch - Eric Derringer - xelnagahunter Mendoza's cap - Chance Mendoza - loow Ziva's Bandana - Ziva Ta'Kim - sierrakomodo Fancy Jacket - Zubari Akenzua - filthyfrankster (req_titles: Security Officer, Warden, Head of Security, Detective, Forensic Technician) Heirloom Unathi Mantle - Sslazhir Yinzr - alberyk Chich Eyewear - Roxy Wallace - nebulaflare Data Chip - Roxy Wallace - nebulaflare Sharpshooter Gloves - Hawk Silverstone - nebulaflare Data Drive Pendant - Kyyir'ry'avii Mo'Taki - nebulaflare Graphite's chassis - Grap..Null - dreamixpl Skrell Purple Head Cloth - Shkor-Dyet Dom'Pesh - mofo1995 Pocket Altar - Kiara Branwen - nursiekitty Brown Hat - Avery Bell - serveris6 Pinned Brown Coat - Avery Bell - serveris6 Also, adding old custom synth sprites from old code. --- baystation12.dme | 1 + code/game/objects/items.dm | 3 +- code/modules/customitems/item_defines.dm | 146 ++++++++++++++++++ .../mob/living/carbon/human/update_icons.dm | 38 ++++- icons/obj/custom_items/bell_coat.dmi | Bin 0 -> 1713 bytes icons/obj/custom_items/bell_hat.dmi | Bin 0 -> 382 bytes icons/obj/custom_items/doompesh_cloth.dmi | Bin 0 -> 1125 bytes icons/obj/custom_items/hawk_gloves.dmi | Bin 0 -> 383 bytes icons/obj/custom_items/kiara_altar.dmi | Bin 0 -> 985 bytes icons/obj/custom_items/motaki_bandana.dmi | Bin 0 -> 653 bytes icons/obj/custom_items/motaki_datadrive.dmi | Bin 0 -> 406 bytes icons/obj/custom_items/nebula_chip.dmi | Bin 0 -> 317 bytes icons/obj/custom_items/nebula_glasses.dmi | Bin 0 -> 629 bytes icons/obj/custom_items/pocket_watch.dmi | Bin 0 -> 962 bytes icons/obj/custom_items/yinzr_mantle.dmi | Bin 0 -> 1616 bytes icons/obj/custom_items/zubari_jacket.dmi | Bin 0 -> 771 bytes 16 files changed, 183 insertions(+), 5 deletions(-) create mode 100644 code/modules/customitems/item_defines.dm create mode 100644 icons/obj/custom_items/bell_coat.dmi create mode 100644 icons/obj/custom_items/bell_hat.dmi create mode 100644 icons/obj/custom_items/doompesh_cloth.dmi create mode 100644 icons/obj/custom_items/hawk_gloves.dmi create mode 100644 icons/obj/custom_items/kiara_altar.dmi create mode 100644 icons/obj/custom_items/motaki_bandana.dmi create mode 100644 icons/obj/custom_items/motaki_datadrive.dmi create mode 100644 icons/obj/custom_items/nebula_chip.dmi create mode 100644 icons/obj/custom_items/nebula_glasses.dmi create mode 100644 icons/obj/custom_items/pocket_watch.dmi create mode 100644 icons/obj/custom_items/yinzr_mantle.dmi create mode 100644 icons/obj/custom_items/zubari_jacket.dmi diff --git a/baystation12.dme b/baystation12.dme index 7fc845f8faf..e4627f614b0 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -977,6 +977,7 @@ #include "code\modules\clothing\under\jobs\engineering.dm" #include "code\modules\clothing\under\jobs\medsci.dm" #include "code\modules\clothing\under\jobs\security.dm" +#include "code\modules\customitems\item_defines.dm" #include "code\modules\customitems\item_spawning.dm" #include "code\modules\detectivework\footprints.dm" #include "code\modules\detectivework\forensics.dm" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 4ae15667f74..73377d7a517 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -41,7 +41,8 @@ var/obj/item/device/uplink/hidden/hidden_uplink = null // All items can have an uplink hidden inside, just remember to add the triggers. var/zoomdevicename = null //name used for message when binoculars/scope is used var/zoom = 0 //1 if item is actively being used to zoom. For scoped guns and binoculars. - + var/contained_sprite = 0 //1 if item_state, lefthand, righthand, and worn sprite are all in one dmi + var/item_state = null // Used to specify the item state for the on-mob overlays. var/item_state_slots = null //overrides the default item_state for particular slots. diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm new file mode 100644 index 00000000000..dfa5e211749 --- /dev/null +++ b/code/modules/customitems/item_defines.dm @@ -0,0 +1,146 @@ +/// Aurora custom items /// +// Add custom items to this file, their sprites into their own dmi. in the icons/obj/custom_items +// Clothing items will probably require contained sprites + +/obj/item/clothing/accessory/fluff/antique_pocket_watch //Antique Pocket Watch - Eric Derringer - xelnagahunter - Done + name = "antique pocket watch" + icon = 'icons/obj/custom_items/pocket_watch.dmi' + icon_state = "pocket_watch_close" + item_state = "gold" + desc = "The design of this pocket watch signals its age, however it seems to retain its pristine quality. The cover is gold, and there appears to be an elegant crest on the outside of the lid." + w_class = 2 + +/obj/item/clothing/accessory/fluff/antique_pocket_watch/attack_self(mob/user as mob) + switch(icon_state) + if("pocket_watch_open") + icon_state = "pocket_watch_close" + usr << "You close the [src]." + desc = "The design of this pocket watch signals its age, however it seems to retain its pristine quality. The cover is gold, and there appears to be an elegant crest on the outside of the lid." + if("pocket_watch_close") + icon_state = "pocket_watch_open" + usr << "You open the [src]." + desc = "Inside the pocket watch, there is a collection of numbers, displaying '[worldtime2text()]'. On the inside of the lid, there is another sequence of numbers etched into the lid itself." + + +/obj/item/clothing/head/soft/sec/corp/fluff/mendoza_cap //Mendoza's cap - Chance Mendoza - loow - DONE + name = "Mendoza's corporate security cap" + desc = "A baseball hat in corporate colors.'C. Mendoza' is embroidered in fine print on the bill. On the underside of the cap, in dark ink, the phrase 'Gamble till you're Lucky!' is written in loopy cursive handwriting." + + +/obj/item/clothing/head/fluff/ziva_bandana //Ziva's Bandana - Ziva Ta'Kim - sierrakomodo - DONE + name = "old bandana" + desc = "An old orange-ish-yellow bandana. It has a few stains from engine grease, and the color has been dulled." + icon = 'icons/obj/custom_items/motaki_bandana.dmi' + icon_state = "motaki_bandana" + contained_sprite = 1 + + +/obj/item/clothing/suit/armor/vest/fluff/zubari_jacket //Fancy Jacket - Zubari Akenzua - filthyfrankster - DONE + name = "fancy jacket" + desc = "A well tailored unathi styled armored jacket, fitted for one too." + icon = 'icons/obj/custom_items/zubari_jacket.dmi' + icon_state = "zubari_jacket" + contained_sprite = 1 + + +/obj/item/clothing/suit/unathi/mantle/fluff/yinzr_mantle //Heirloom Unathi Mantle - Sslazhir Yinzr - alberyk - DONE + name = "heirloom unathi mantle" + desc = "A withered mantle sewn from threshbeast's hides, the pauldrons that holds it on the shoulders seems to be the remains of some kind of old armor." + icon = 'icons/obj/custom_items/yinzr_mantle.dmi' + icon_state = "yinzr_mantle" //special thanks to Araskael + species_restricted = list("Unathi") //forged for lizardmen + contained_sprite = 1 + + +/obj/item/clothing/glasses/fluff/nebula_glasses //chich eyewear - Roxy Wallace - nebulaflare - DONE + name = "chic eyewear" + desc = "A stylish pair of glasses. They look custom made." + icon = 'icons/obj/custom_items/nebula_glasses.dmi' + icon_state = "nebula_glasses" + contained_sprite = 1 + +/obj/item/clothing/glasses/fluff/nebula_glasses/var/chip + /obj/item/clothing/glasses/fluff/nebula_glasses/New() + chip = new /obj/item/weapon/disk/fluff/nebula_chip() + ..() + +/obj/item/clothing/glasses/fluff/nebula_glasses/attack_self(mob/user as mob) + if(chip) + user.put_in_hands(chip) + user << "\blue You eject a small, concealed data chip from a small slot in the frames of the [src]." + chip = null + +/obj/item/clothing/glasses/fluff/nebula_glasses/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/disk/fluff/nebula_chip) && !chip) + user.u_equip(W) + W.loc = src + chip = W + W.dropped(user) + W.add_fingerprint(user) + add_fingerprint(user) + user << "You slot the [W] back into its place in the frames of the [src]." + +/obj/item/weapon/disk/fluff/nebula_chip //data chip - Roxy Wallace - nebulaflare - DONE + name = "data chip" + desc = "A small green chip." + icon = 'icons/obj/custom_items/nebula_chip.dmi' + icon_state = "nebula_chip" + w_class = 1 + + +/obj/item/clothing/gloves/swat/fluff/hawk_gloves //Sharpshooter gloves - Hawk Silverstone - nebulaflare - DONE + name = "\improper sharpshooter gloves" + desc = "These tactical gloves are tailor made for a marksman." + icon = 'icons/obj/custom_items/hawk_gloves.dmi' + icon_state = "hawk_gloves" + item_state = "swat_gl" + + +/obj/item/clothing/accessory/fluff/karima_datadrive //Data Drive Pendant - Kyyir'ry'avii Mo'Taki - nebulaflare - DONE + name = "data drive" + desc = "A small necklace, the pendant flips open to reveal a data drive." + icon = 'icons/obj/custom_items/motaki_datadrive.dmi' + icon_state = "motaki_datadrive" + item_state = "holobadge-cord" + slot_flags = SLOT_MASK + + +/obj/item/clothing/ears/skrell/fluff/doompesh_cloth // Skrell Purple Head Cloth - Shkor-Dyet Dom'Pesh - mofo1995 - DONE + name = "male skrell purple head cloth" + desc = "A purple cloth band worn by male skrell around their head tails." + icon = 'icons/obj/custom_items/doompesh_cloth.dmi' + icon_state = "dompesh_cloth" + contained_sprite = 1 + + +/obj/item/weapons/fluff/kiara_altar // Pocket Altar - Kiara Branwen - nursiekitty - DONE + name = "pocket altar" + desc = "A black tin box with a symbol painted over it. It shimmers in the light." + icon = 'icons/obj/custom_items/kiara_altar.dmi' + icon_state = "kiara_altar1" + w_class = 2 + +/obj/item/weapons/fluff/kiara_altar/attack_self(mob/user as mob) + if(src.icon_state == "kiara_altar1") + src.icon_state = "kiara_altar2" + user << "You open the pocket altar, revealing its contents." + desc = "A black tin box, you can see inside; a vial of herbs, a little bag of salt, some epoxy clay runes, a candle with match, a permanent marker and a tiny besom." + else + src.icon_state = "kiara_altar1" + user << "You close the pocket altar." + desc = "A black tin box with a symbol painted over it. It shimmers in the light." + +/obj/item/clothing/head/det_hat/fluff/bell_hat //Brown Hat - Avery Bell - serveris6 - DONE + name = "brown hat" + desc = "A worn mid 20th century brown hat. It seems to have aged very well." + icon = 'icons/obj/custom_items/bell_hat.dmi' + icon_state = "bell_hat" + contained_sprite = 1 + + +/obj/item/clothing/suit/storage/det_suit/fluff/bell_coat //Pinned Brown Coat - Avery Bell - serveris6 - DONE + name = "pinned brown coat" + desc = "A worn mid 20th century brown trenchcoat. If you look closely at the breast, you can see an ID flap stitched into the leather - 'Avery Bell, Silhouette Co.'." + icon = 'icons/obj/custom_items/bell_coat.dmi' + icon_state = "bell_coat" + contained_sprite = 1 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index d0d723a7925..c96e008bcb0 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -473,20 +473,24 @@ var/global/list/damage_icon_parts = list() under_icon = w_uniform.sprite_sheets[species.get_bodytype()] else if(w_uniform.item_icons && w_uniform.item_icons[slot_w_uniform_str]) under_icon = w_uniform.item_icons[slot_w_uniform_str] + else if(w_uniform.contained_sprite) + under_icon = w_uniform.icon else under_icon = INV_W_UNIFORM_DEF_ICON //determine state to use var/under_state if(w_uniform.item_state_slots && w_uniform.item_state_slots[slot_w_uniform_str]) - under_state = w_uniform.item_state_slots[slot_w_uniform_str] + under_state = w_uniform.item_state_slots[slot_w_uniform_str] + "_s" else if(w_uniform.item_state) - under_state = w_uniform.item_state + under_state = w_uniform.item_state + "_s" + else if (w_uniform.contained_sprite) + under_state = w_uniform.icon_state + "_w" else - under_state = w_uniform.icon_state + under_state = w_uniform.icon_state + "_s" //need to append _s to the icon state for legacy compatibility - var/image/standing = image(icon = under_icon, icon_state = "[under_state]_s") + var/image/standing = image(icon = under_icon, icon_state = under_state) //apply blood overlay if(w_uniform.blood_DNA) @@ -512,6 +516,8 @@ var/global/list/damage_icon_parts = list() wear_id.screen_loc = ui_id //TODO if(w_uniform && w_uniform:displays_id) overlays_standing[ID_LAYER] = image("icon" = 'icons/mob/mob.dmi', "icon_state" = "id") + else if(wear_id.contained_sprite) + overlays_standing[ID_LAYER] = image("icon" = wear_id.icon, "icon_state" = "[wear_id.icon_state]_w") else overlays_standing[ID_LAYER] = null else @@ -532,6 +538,8 @@ var/global/list/damage_icon_parts = list() standing = image("icon" = gloves.icon_override, "icon_state" = "[t_state]") else if(gloves.sprite_sheets && gloves.sprite_sheets[species.get_bodytype()]) standing = image("icon" = gloves.sprite_sheets[species.get_bodytype()], "icon_state" = "[t_state]") + else if(gloves.contained_sprite) + standing = image("icon" = gloves.icon, "icon_state" = "[gloves.icon_state]_w") else standing = image("icon" = 'icons/mob/hands.dmi', "icon_state" = "[t_state]") @@ -558,6 +566,8 @@ var/global/list/damage_icon_parts = list() overlays_standing[GLASSES_LAYER] = image("icon" = glasses.icon_override, "icon_state" = "[glasses.icon_state]") else if(glasses.sprite_sheets && glasses.sprite_sheets[species.get_bodytype()]) overlays_standing[GLASSES_LAYER]= image("icon" = glasses.sprite_sheets[species.get_bodytype()], "icon_state" = "[glasses.icon_state]") + else if(glasses.contained_sprite) + overlays_standing[GLASSES_LAYER] = image("icon" = glasses.icon, "icon_state" = "[glasses.icon_state]_w") else overlays_standing[GLASSES_LAYER]= image("icon" = 'icons/mob/eyes.dmi', "icon_state" = "[glasses.icon_state]") @@ -581,6 +591,8 @@ var/global/list/damage_icon_parts = list() else if(l_ear.sprite_sheets && l_ear.sprite_sheets[species.get_bodytype()]) t_type = "[t_type]_l" overlays_standing[EARS_LAYER] = image("icon" = l_ear.sprite_sheets[species.get_bodytype()], "icon_state" = "[t_type]") + else if(l_ear.contained_sprite) + overlays_standing[EARS_LAYER] = image("icon" = l_ear.icon, "icon_state" = "[l_ear.icon_state]_w") else overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[t_type]") @@ -608,6 +620,8 @@ var/global/list/damage_icon_parts = list() standing = image("icon" = shoes.icon_override, "icon_state" = "[shoes.icon_state]") else if(shoes.sprite_sheets && shoes.sprite_sheets[species.get_bodytype()]) standing = image("icon" = shoes.sprite_sheets[species.get_bodytype()], "icon_state" = "[shoes.icon_state]") + else if(shoes.contained_sprite) + standing = image("icon" = shoes.icon, "icon_state" = "[shoes.icon_state]_w") else standing = image("icon" = 'icons/mob/feet.dmi', "icon_state" = "[shoes.icon_state]") @@ -668,6 +682,8 @@ var/global/list/damage_icon_parts = list() var/obj/item/clothing/head/hat = head if(hat.on && light_overlay_cache["[hat.light_overlay]"]) standing.overlays |= light_overlay_cache["[hat.light_overlay]"] + else if(head.contained_sprite) + standing = image("icon" = head.icon, "icon_state" = "[head.icon_state]_w") overlays_standing[HEAD_LAYER] = standing @@ -686,6 +702,8 @@ var/global/list/damage_icon_parts = list() standing.icon = belt.icon_override else if(belt.sprite_sheets && belt.sprite_sheets[species.get_bodytype()]) standing.icon = belt.sprite_sheets[species.get_bodytype()] + else if(belt.contained_sprite) + standing = image("icon" = belt.icon, "icon_state" = "[belt.icon_state]_w") else standing.icon = 'icons/mob/belt.dmi' @@ -712,6 +730,8 @@ var/global/list/damage_icon_parts = list() standing = image("icon" = wear_suit.icon_override, "icon_state" = "[wear_suit.icon_state]") else if(wear_suit.sprite_sheets && wear_suit.sprite_sheets[species.get_bodytype()]) standing = image("icon" = wear_suit.sprite_sheets[species.get_bodytype()], "icon_state" = "[wear_suit.icon_state]") + else if(wear_suit.contained_sprite) + standing = image("icon" = wear_suit.icon, "icon_state" = "[wear_suit.icon_state]_w") else standing = image("icon" = 'icons/mob/suit.dmi', "icon_state" = "[wear_suit.icon_state]") @@ -753,6 +773,8 @@ var/global/list/damage_icon_parts = list() standing = image("icon" = wear_mask.icon_override, "icon_state" = "[wear_mask.icon_state]") else if(wear_mask.sprite_sheets && wear_mask.sprite_sheets[species.get_bodytype()]) standing = image("icon" = wear_mask.sprite_sheets[species.get_bodytype()], "icon_state" = "[wear_mask.icon_state]") + else if(wear_mask.contained_sprite) + standing = image("icon" = wear_mask.icon, "icon_state" = "[wear_mask.icon_state]_w") else standing = image("icon" = 'icons/mob/mask.dmi', "icon_state" = "[wear_mask.icon_state]") @@ -791,6 +813,8 @@ var/global/list/damage_icon_parts = list() overlay_state = back.item_state_slots[slot_back_str] else if(back.item_state) overlay_state = back.item_state + else if(back.contained_sprite) + overlay_icon = image("icon" = back.icon, "icon_state" = "[back.icon_state]_w") else overlay_state = back.icon_state @@ -853,6 +877,9 @@ var/global/list/damage_icon_parts = list() else if(r_hand.icon_override) t_state += "_r" t_icon = r_hand.icon_override + else if(r_hand.contained_sprite) + t_state = "[t_state]_r" + t_icon = image("icon" = r_hand.icon, "icon_state" = "[t_state]") else t_icon = INV_R_HAND_DEF_ICON @@ -885,6 +912,9 @@ var/global/list/damage_icon_parts = list() else if(l_hand.icon_override) t_state += "_l" t_icon = l_hand.icon_override + else if(l_hand.contained_sprite) + t_state = "[t_state]_l" + t_icon = image("icon" = l_hand.icon, "icon_state" = "[t_state]") else t_icon = INV_L_HAND_DEF_ICON diff --git a/icons/obj/custom_items/bell_coat.dmi b/icons/obj/custom_items/bell_coat.dmi new file mode 100644 index 0000000000000000000000000000000000000000..254e0f966bf98b5e4dba7d4fc2095703f796e65c GIT binary patch literal 1713 zcmV;i22S~jP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex7wuvIWN;^NFm z%}mcIfpCgT5=&AQY!#G}Qgd?Rlk*cxl(;xkGK-28Y!wW-IMa#}b5kK~OqKEF2(>0C zYLyjS{ah4Wd_B1U;f5&8uYY1h000H>NklUE7{(t({*Y}c#0d@#$t5wp z=F)#4r@i#xi=hWEG+@))7MJEySb8Xg4GV>^mz1(Ol#-G{pzO7$eqz?eV)#)Mcmz;6`uS#4O^>w`BO?e#d?g;+74)kGl-S?TEK$nQxSKua;7 z)vW9cJMXmZmBqQC<)`PD)IOjJK}3Dxd{GF)_$gcOeg0KzTFRv2%7bty^Jh-tS^oNp9A%yards5e{GBG?)M zMEP>1ig&LX_~%#AR8HoCa;0jj?-WM+Mtfe_CtTEIC~eiUOlhmQsL9m!ZBN4F=AOJ* zu~p9rNbfUV_uZ=o{(U)o!Xx!)L%}HfQap-srHZ-P#K`({vk7YZV+GjVKjO-jswwUK z{43d1M^-u@VM10qC|9bWnTSR~Zl2hG@?r&_ePecnm3^m10kN;NRj6ujWL;J5L20X0 z_HB&-T4y@t{CVl-=I13kXHNQe5JVhI(n9jDTaG7us<%ekA?Haw zw-{%i7AgVyolkIEgdadI;A~y>Sg8B3eF< zP}Lr!L<~w>9lKcT#}@+3OHr!We%}@FFor#dyARZ_Bp)+&Mi*_U4g_F~Zy!ZG6aoPl zu#p+UW;3d5mh;ae2Xb9y>Ro|C?i?8N^ ziRXZenhY^60D!(T*^3=~Q7lfa2_!SyXMZsN!~;IHpbow&@SWFi6T%@)MC0J*8) zXvh2TV?=H$5aYtoZ^xz`>V=pXalXB^sl}op#G)ajlA>p6Xeue< z)-JcbwW;@bW83@!RR|IyA;?WdzfqEl8_V6s!p6+=XHRt5D7s_2m|Nq4F!Mycjic=#=zGb%D_n}A;53FADBRZVa^AD zlamuK9H1F(8nJ5IwBy(-$(_AJPkP_Z-k}D7{$s2ug<61mLm4={az0^a@34p4P}G0; z4JrYYc6Z?L+WCZ?y~AEt?eSJ^@)M8#`+#6`?jt7_z{}NpA@#_;UZ(Xf(XU+$22sOB9{NRz!c^}P_3`IS?J1mTYj4vB|Da?5^>ByuI zgAFwdMVbA0P z2fd3Zdw8Xd6(Q~vif^|h>#UV=-0C=2r%CQQQ-Qof0Opte{7qlsmGCYAYeFDCQWkc+u07(Kab zUDl*vbbtPLcR#zuFnRbf&>NNnEL5;Xd9eTh1D;7lK~#90?c7ak8%G$x@&CR{E6Iv$ z%UN8i)}e$FTzcrGkV7Gde20DkA9CwCf?~+MHy@f0(C?5#ZaxMADWriw(u9-+IkqKP zmR9>RJ-EA-Eyq$K*;$)G){$;Kum(NxDm?>!5Y2l*w(_^143n7FMLI@#*5JCtcgb+dq zA%qY@2qAAL)MO@50#HrQkzpB8(PgbC==9$+~5X<1yM zv+smm#yes{i2tjFy-EJG^0NY{Sl9T?|7Bs%~xE?go$xx^6x3Xzy zZ{Ux#H*dMS0&4a;0DkZmKX?Ox=hV63-U1l83WB7EqZbJ|ng31A%IY12P0B_UfL?Tz zyZIk-dK121f2fwt8nKG-gSSL#z}~>eb58yR<%WAJ3;Zxsvp5Kw6bzT6xJB8h(hS}K zC9|j)C~C;XnO2mTn+jnoE4cc(fDH!#12G(> zO*Uo`0001*Nkl86t#a3%pn3s$#NXq?j^1$J)4|D27ub%tN<|8;L;9kb{G+UWuI0ny8`eiDoj< d*x%32i7((*8t`p1#pwV5002ovPDHLkV1nKUm!1Fs literal 0 HcmV?d00001 diff --git a/icons/obj/custom_items/kiara_altar.dmi b/icons/obj/custom_items/kiara_altar.dmi new file mode 100644 index 0000000000000000000000000000000000000000..dadebe79da17bbb62ac20ff22108104ee5e5f21e GIT binary patch literal 985 zcmV;~119{5P)JwZoEOhY#S;{X5v0d!JM zQvg8b*k%9#0DF2=Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP16fBrmW!V=K^*f018Yl_>&QGfdBvkH%UZ6R7i>Klv{Jt zFc5_++oG0ao7Pbx3)hgi;Is|p;&2PMLjV7d>RG92Vz9ytj|}@@KkS@OyJuHAI{F{~ zWUz=G%*RP`D9s}PSQwGSF$iG<rliAFe5kgs3 z1h5mqILG<0VlYmvpOAi9pJk>oO`Hq~x~vfFDYMV!AP6BN#^ugQ$PrWM>+H-J(<}xA zt#wO)b8GEn{`^HJKp+g`+x!yxi;J2fo0+CDmkAN{eZFlSpzAsyu52fmkdkAZ+~=1F z=vS+{RzRSI=5hf*eh+8~@bbFz0BhkTO5la`Mmqg+2|WRnstviYpc1rxsNmK0>o;BZ z)>`Jn16&ENf_@GCii}kCJG9Wa9=0XG!uKD_kDqKur_(fPk`E?;(D$453O*=DpeAUN zTN5xt{`pJw_3GPq;Q_Rel8fyawC*>apgh5tBuV$ifF(lQ{IEaW>6|t~%H4&~dcD~Z z>YDCjn(i+`L4;d-%bl1P0{Z=3CPLrC2LS4Xx=+)1u!#g<^Es&rfmMtKw+V#a`9OL! zpW;~qB`$AfHtvLoFR+I2~X& z8qRD0>wXfzz`)j(RR6wXlt`oM00001bW%=J06^y0W&i*HdwNt@bVOxyV{&P5bZKvH z004NLQ&wbb zFIAN0Tx^oaS(g6=88&os-Uy3%$WPXuBrq8<#O(pb5~wfHIcDeU0hfz_5UPK;t=(47 zv!f@^)c_?^Slvm)9f+B$9n|;o&AP7cfr$F@Lr_ILO4v44ZA_r0RzSf1z<=u!Ds3*I zhIO#VM3hoVNU?K*ea^};$COfx+lHUc0oSaQa!&EqB#FH%KtMtQ5w>{)-8bQ?jP5h; zBP|b`sMa5+CIWMUv~Vfd&^bUuvFDtf%LN>C^=GRe`WL7}2%Y^)j(e%VgCg&(FA1fF z@V@l^av%n8A{}A=4A5oY2M6#zums)k9_OJwf_-Q}u@ChxqxF-?-$CR!j+5~llP!xh z>koM?vnf@_S0?9-VL93(aQ#uAzrAPpU8|hocXX!#!uZNqd|M67-@1;yZ_?LC`>!-5 n{OH@QeVZqf$z(E_OnxbE;Q|YUGF^fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;Zh zDainGjE%TBGg33tGfE(w;*!LYR3K9+H@_q?J2O5du_Q62D6=e8iHkEOv#1y-Wyr;u zR+N~V3SlcNxca$(Z2$nY4j!ZDHYaZfQi=gSA+84w91wRD^!N8)vu4fl zW5+C}Y9%hc=xlg?-`$td36jn>e70X~76279mIV0)GdMiEkp|>cSA|5BxTF>*7iAWd zWaj5FFjUM54l5`s{r)Am;N#aPTHd-^=gyoD-VkbV(fGk5o%24LCmD)*dUseD2N_>B z_EMPhXws2MAqv5o`lc&Q)D7({l{Y(db{ng1ULm28b>isEuqiWUb0smGE?e?UC9J8X zlxOD@(U`w62h125`mN%F%Ny$GCOM1Agt3IzCBm?9A%opNjRinMRyp%3>$=9+0*zzvboFyt=akR{ E0Q@Cw@Bjb+ literal 0 HcmV?d00001 diff --git a/icons/obj/custom_items/nebula_glasses.dmi b/icons/obj/custom_items/nebula_glasses.dmi new file mode 100644 index 0000000000000000000000000000000000000000..3eb143c232680606f27e840b38c2b9ef59ed5c8c GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^2|((Dd8h0jTky3<{kQ&py|YB}l+`Zd2m1pVW-uKP zVOYjsz}le6@McSvg~z0|`Fd@cQg3I8eqP3YO>AoZ5jIbud1}JD=hxgYiJvv|=Hs_l zv*OO2IkW8NrMNid>V3QK{Ms#&y8D*B<8}V`W@o3Hy*`tBZRYHo*C$7w>9R-Ox!CcRzJS0z7t^XQS;^U7Mrt-aR3-7;QZyT3>$f{P1 z<#MP1)C${an^L HB{Ts5NkRz} literal 0 HcmV?d00001 diff --git a/icons/obj/custom_items/pocket_watch.dmi b/icons/obj/custom_items/pocket_watch.dmi new file mode 100644 index 0000000000000000000000000000000000000000..1fc9bf4853b88cae7be2f2982be434be1f506e5c GIT binary patch literal 962 zcmV;z13mnSP)V=-0C=2r%drlEFce1Nx%Vmlz;0AnyOS{6mi1PsP^QaEYsn{hsnQE;fmB8bAiT< z)RNts&;Cu)&f7mxqZF5vhd4 zJrXkZwSCTg%pK1FH;#(U&EXtzvjJ?j0Drvi*uBRVW%3%oU>za`WD#Wtp=@5Ghr>A& z(fJ|YzYY7y zz_%ya_VH;Z=qq{0eZ<}Gfd4CPSCUZI)s3xjA2A7NHe~x|n+UQAf(>tP@*vq~gN2rt z0atlPM8~5Q;IxwG0hT3I+38@yOO6LYAl>769sm{yQ{JlTB6U}t2$fBR zW+MrL$^Ch}y~zWDAV@jyy6)*e*?N-)V_szdRGG+fK3W0w8at}qWhy3%mz*c?j*I6u zL9nTSKY0$E3me}3exEuYJw6uVG^&7qS-2x{(F&+W$$zH>><;WmRZxwR|E5)-g*~KbQ%^KPO=*A+C-GMntjgR28*!A5Z`}v~0qQe02^Z6Ms@9$cB7L0oU52wY( z{O-WA%=dt3#je+Da&YpH$LqT8=?4I#(I{0BqTK|_X)rGnlwm6QdJQ-_Kpn~T-HM$b z9b+xIykd5T!y%T-C4K{VQP@pTr~=5zEKpytK^`w4_kec04d3_C?RJ&+JQ($W*Edu? zJ`-`g^W-R%zG$QOnS2%McxQvf=_5y%W#9KxcF*%L8!S$|^qDN8Pz3<#E>Diqk)I`O zV8Tnt`VO#xG644-RGN)sGXjvS;OL|qAN2#iCjjQz&*SB*07x=DolaBdfSi5n0Fao? zHrbTO3IbmNMV&X{r68yRL5|xv4;btSsg|c@tp;s)i>?NZmct^#Ibv~rUemT zA_RUss@Cac>8VI{UKTFJE8!M; kz}d4vS-2GMf7}}W0#aULou`lY#sB~S07*qoM6N<$f^u2Fx&QzG literal 0 HcmV?d00001 diff --git a/icons/obj/custom_items/yinzr_mantle.dmi b/icons/obj/custom_items/yinzr_mantle.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b9f8b2e8adda4da6324d02db3f1292dc04fc02be GIT binary patch literal 1616 zcmWMld05m18h#lSa1cdF84ibmx$o=un|pw{I40xXN(mDrRBb4gef zQZZunS+h)h1Os9`kT_DF3gJOfAY{>vU9Q%hKfd>S-uI91eZH$SE+)d0>PH3O85L8xbl+BmqS*3?fK_Ar6FI1cMk_ z9+-a6a$po8M2v6+v}_oSAvUYcEQOW}e{Wb6kVqs_sZ^m<1il721JWQUSdcNWSt`kt z%dA%G`n8BsLq(E29#1BdktC_t>%$4C`S4v0egHIDjb3jMu1AVkw0WZ>bF-XOkru0k z~E6MIeLShu@0g@aQtAFK`#c$ghl`b2cjUzSzyw@4@3+>$fLFzj0TNHD{vZdp=3c4 z2o)Ple<(RH@S$;v1ff=|Xe&Xmq2@v6tiVQ!4Z%(e1~fd7EUT9)v+)`$EfypBHp|gbHC-Aw&X#gFqi>I55dzl0wczh!jdT1axryK`;?20m%m2 zAJIC9oy!u!sszD;jR4mVCONDM1UVaV&Po6Y0|Ev}4lGjGHL$B;kU*{0#D*f#3@d?9 z8EEyR=bZ=PQkW2vh_I&vIZkqTe^P3pHG5aq&fNUM-1qW;z14{+`8#+2_m9N<7c)-; zuZsou?{z0$PL}m3het%+(fr%k`PWabX_N`dKBb*eJyOwLk;F*6s8C+|iWj1mUt)2S zOUsn(D-AT>4o62-O6A{9Q!}%Y1JaMj<(1S`E4iU9xR;QUKeNk4?}2%Ngsh=@x&uqH zqpYT+)FaPRbJP05ydGKB<-Tj{Im4k}rOpgDsFSlA>y}-$$FDweX7A?$_vGmvjXc}Z zj)jnTtLaevuj~GVw_nP_tb2AO1#j-a!{ut9yYg z=Ipxcw)uY+JXI`DYuNsn6RvLTNMpEs_xA7KKDUkPD{CsAxL#X%DK7nO~td3Ta0xBF2^6-@QgS? z(nAY+-=FxyHx+E&i`1~jPlnq*;H*vDo1Zy7sg1qTGn}yfT5Bi95`KX7_ zlGN>;mA9x@5GR=%MSqJ;Uz%tM?QyOm;P$ni~99U)qPI!_2RK$vyk$Dtbz5bHh(n z4~wtQ_dMpt?y4Q1tSb$AJVl!-e7UW()>8Dm<8H>orW;dX3qqf3u6(cepAT4;sBU&_ zi}JTlXD|EkJ-hJHe_D!b#cN!KjNM%XCt~02rQFE#uB)D$sbc5ZhqqKxGQ-o#tHRp? ze{mNb)>WH`!NIlz4l$#Z7n*r;L%)sux^vv|SmC}>M!rMKnyD}QeXM``Mug%+Pnm%QH#rU#yWN7QxFB;FKpBT9ief-A- zH&I>rVp5js$xvg&#h0t(bB!aTpRM+qJ$bOVK|1{|anSo*yibeUKEJ|chAfVf&vLW< zCBjTMe#|8l0i`Vt^J-eGD2Jp_+8zAYf0*!^KP@k9;uiHb^aNzqNTh35JUezQ+c7J6 zc)+Lmpx<$%9dcjJaD7FgxgE_Q$?8o{FH@Ii)Guq56|7hh5oX=>)?&c1IrXFYFPkFP a+=_kMRvLV_M%3hdeni<~tp6})l>8qgl{@bM literal 0 HcmV?d00001 diff --git a/icons/obj/custom_items/zubari_jacket.dmi b/icons/obj/custom_items/zubari_jacket.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8312b4aa131d7bd737750fbe26f6a813887cdb3c GIT binary patch literal 771 zcmV+e1N{7nP)fFDZ*Bkpc$`yKaB_9`^iy#0_2eo` zEh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KBSsx&FFC^J4QF*!T6 zM2U+tC9|j)C~nBbnO2mTn+joLR~=uDP;Y{wURlA_&jsup0ETERK5tx{2mk;9^+`lQ zR9J=WSAkB%APj|8Ti6ul|NpEHZZ{K;j)jXx6J7%6-Rt^F2emjiF){J0@Kis@{}Au^ zGY z)^7v+U7*45QS1@6$SeFIU^B;x`?$UwALfYvROj0$9QO_1rVz&V)ZA%Ty&d(yVqE7-Og zJAVubxV27b(Jh10yB~%FC@mj$iP>6~8%Rn2cxzZ3=t-^dwY#+gxFT>`%xW=wMxZ*7 zvlPj5)wGv_UJAP?4vahWZovH9J2>@z-Dcu%;S&hC6U?^Xub}_{002ovPDHLkV1n|T BQ-A;f literal 0 HcmV?d00001