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 00000000000..254e0f966bf Binary files /dev/null and b/icons/obj/custom_items/bell_coat.dmi differ diff --git a/icons/obj/custom_items/bell_hat.dmi b/icons/obj/custom_items/bell_hat.dmi new file mode 100644 index 00000000000..ff65fcabe3c Binary files /dev/null and b/icons/obj/custom_items/bell_hat.dmi differ diff --git a/icons/obj/custom_items/doompesh_cloth.dmi b/icons/obj/custom_items/doompesh_cloth.dmi new file mode 100644 index 00000000000..d9dfe4fe423 Binary files /dev/null and b/icons/obj/custom_items/doompesh_cloth.dmi differ diff --git a/icons/obj/custom_items/hawk_gloves.dmi b/icons/obj/custom_items/hawk_gloves.dmi new file mode 100644 index 00000000000..9c9929382e3 Binary files /dev/null and b/icons/obj/custom_items/hawk_gloves.dmi differ diff --git a/icons/obj/custom_items/kiara_altar.dmi b/icons/obj/custom_items/kiara_altar.dmi new file mode 100644 index 00000000000..dadebe79da1 Binary files /dev/null and b/icons/obj/custom_items/kiara_altar.dmi differ diff --git a/icons/obj/custom_items/motaki_bandana.dmi b/icons/obj/custom_items/motaki_bandana.dmi new file mode 100644 index 00000000000..7ab64be94a3 Binary files /dev/null and b/icons/obj/custom_items/motaki_bandana.dmi differ diff --git a/icons/obj/custom_items/motaki_datadrive.dmi b/icons/obj/custom_items/motaki_datadrive.dmi new file mode 100644 index 00000000000..2396b1b5b4c Binary files /dev/null and b/icons/obj/custom_items/motaki_datadrive.dmi differ diff --git a/icons/obj/custom_items/nebula_chip.dmi b/icons/obj/custom_items/nebula_chip.dmi new file mode 100644 index 00000000000..1cc415ff449 Binary files /dev/null and b/icons/obj/custom_items/nebula_chip.dmi differ diff --git a/icons/obj/custom_items/nebula_glasses.dmi b/icons/obj/custom_items/nebula_glasses.dmi new file mode 100644 index 00000000000..3eb143c2326 Binary files /dev/null and b/icons/obj/custom_items/nebula_glasses.dmi differ diff --git a/icons/obj/custom_items/pocket_watch.dmi b/icons/obj/custom_items/pocket_watch.dmi new file mode 100644 index 00000000000..1fc9bf4853b Binary files /dev/null and b/icons/obj/custom_items/pocket_watch.dmi differ diff --git a/icons/obj/custom_items/yinzr_mantle.dmi b/icons/obj/custom_items/yinzr_mantle.dmi new file mode 100644 index 00000000000..b9f8b2e8add Binary files /dev/null and b/icons/obj/custom_items/yinzr_mantle.dmi differ diff --git a/icons/obj/custom_items/zubari_jacket.dmi b/icons/obj/custom_items/zubari_jacket.dmi new file mode 100644 index 00000000000..8312b4aa131 Binary files /dev/null and b/icons/obj/custom_items/zubari_jacket.dmi differ