From 48695958550d9630450cd9eaf7458ae1d8c63ec6 Mon Sep 17 00:00:00 2001 From: Killian Date: Tue, 29 Oct 2024 00:23:23 +0000 Subject: [PATCH] ring/watch accessory transfer --- code/__defines/items_clothing.dm | 3 + code/datums/supplypacks/supply.dm | 6 +- code/datums/uplink/stealthy_weapons.dm | 6 - code/game/machinery/computer/arcade_vr.dm | 1 - code/game/objects/items/toys/toys_vr.dm | 29 --- .../crates_lockers/closets/misc_vr.dm | 2 +- .../loadout/loadout_fluffitems_vr.dm | 4 +- .../loadout/loadout_general_vr.dm | 1 - .../loadout/loadout_gloves.dm | 42 ++-- .../loadout/loadout_gloves_vr.dm | 4 +- .../{under => }/accessories/accessory.dm | 0 .../{under => }/accessories/accessory_vr.dm | 0 .../{under => }/accessories/altevian_vr.dm | 0 .../{under => }/accessories/armband.dm | 0 .../clothing/{under => }/accessories/armor.dm | 0 .../{under => }/accessories/badges.dm | 0 .../{under => }/accessories/badges_vr.dm | 0 .../{under => }/accessories/clothing.dm | 0 .../{under => }/accessories/clothing_vr.dm | 0 .../{under => }/accessories/holster.dm | 0 .../{under => }/accessories/holster_vr.dm | 0 .../{under => }/accessories/lockets.dm | 0 .../{under => }/accessories/permits.dm | 0 .../{under => }/accessories/permits_vr.dm | 0 code/modules/clothing/accessories/rings.dm | 201 ++++++++++++++++++ .../{under => }/accessories/shiny_vr.dm | 0 .../{under => }/accessories/storage.dm | 0 .../{under => }/accessories/storage_vr.dm | 0 .../accessories/temperature/poncho.dm | 0 .../clothing/{under => }/accessories/torch.dm | 0 .../{under => }/accessories/torch_vr.dm | 0 code/modules/clothing/accessories/watches.dm | 72 +++++++ code/modules/clothing/clothing.dm | 9 +- code/modules/clothing/gloves/antagonist.dm | 67 ------ code/modules/clothing/gloves/miscellaneous.dm | 62 ------ code/modules/clothing/rings/material.dm | 74 ------- code/modules/clothing/rings/rings.dm | 96 --------- code/modules/clothing/rings/rings_vr.dm | 17 -- code/modules/economy/vending_machines_vr.dm | 56 ++--- .../modules/materials/materials/_materials.dm | 2 +- .../materials/materials/organic/leather.dm | 2 +- .../human/ai_controlled/ai_controlled.dm | 2 +- .../mob/living/carbon/human/examine.dm | 19 +- code/modules/paperwork/paper.dm | 4 +- .../vore/fluffstuff/custom_boxes_vr.dm | 2 +- .../vore/fluffstuff/custom_clothes_vr.dm | 9 +- .../artifacts/replicator_vr.dm | 2 +- .../xenoarcheaology/finds/find_spawning.dm | 2 +- icons/inventory/accessory/mob.dmi | Bin 169683 -> 170119 bytes icons/inventory/hands/mob.dmi | Bin 31020 -> 31060 bytes vorestation.dme | 45 ++-- 51 files changed, 388 insertions(+), 453 deletions(-) rename code/modules/clothing/{under => }/accessories/accessory.dm (100%) rename code/modules/clothing/{under => }/accessories/accessory_vr.dm (100%) rename code/modules/clothing/{under => }/accessories/altevian_vr.dm (100%) rename code/modules/clothing/{under => }/accessories/armband.dm (100%) rename code/modules/clothing/{under => }/accessories/armor.dm (100%) rename code/modules/clothing/{under => }/accessories/badges.dm (100%) rename code/modules/clothing/{under => }/accessories/badges_vr.dm (100%) rename code/modules/clothing/{under => }/accessories/clothing.dm (100%) rename code/modules/clothing/{under => }/accessories/clothing_vr.dm (100%) rename code/modules/clothing/{under => }/accessories/holster.dm (100%) rename code/modules/clothing/{under => }/accessories/holster_vr.dm (100%) rename code/modules/clothing/{under => }/accessories/lockets.dm (100%) rename code/modules/clothing/{under => }/accessories/permits.dm (100%) rename code/modules/clothing/{under => }/accessories/permits_vr.dm (100%) create mode 100644 code/modules/clothing/accessories/rings.dm rename code/modules/clothing/{under => }/accessories/shiny_vr.dm (100%) rename code/modules/clothing/{under => }/accessories/storage.dm (100%) rename code/modules/clothing/{under => }/accessories/storage_vr.dm (100%) rename code/modules/clothing/{under => }/accessories/temperature/poncho.dm (100%) rename code/modules/clothing/{under => }/accessories/torch.dm (100%) rename code/modules/clothing/{under => }/accessories/torch_vr.dm (100%) create mode 100644 code/modules/clothing/accessories/watches.dm delete mode 100644 code/modules/clothing/rings/material.dm delete mode 100644 code/modules/clothing/rings/rings.dm delete mode 100644 code/modules/clothing/rings/rings_vr.dm diff --git a/code/__defines/items_clothing.dm b/code/__defines/items_clothing.dm index a7dba8be88c..8ecdb1326c0 100644 --- a/code/__defines/items_clothing.dm +++ b/code/__defines/items_clothing.dm @@ -40,6 +40,9 @@ #define ACCESSORY_SLOT_ARMOR_M 0x8000 #define ACCESSORY_SLOT_HELM_C 0x10000 //24 bit - higher than 0x80000 will overflow +#define ACCESSORY_SLOT_RING 0x20000 //rings +#define ACCESSORY_SLOT_WRIST 0x40000 //wristwatches, wrist PDA maybe? + // Bitmasks for the /obj/item/var/flags_inv variable. These determine when a piece of clothing hides another, i.e. a helmet hiding glasses. // WARNING: The following flags apply only to the external suit! #define HIDEGLOVES 0x1 diff --git a/code/datums/supplypacks/supply.dm b/code/datums/supplypacks/supply.dm index 0629a55d8ed..96610a68c50 100644 --- a/code/datums/supplypacks/supply.dm +++ b/code/datums/supplypacks/supply.dm @@ -175,7 +175,7 @@ /obj/item/material/knife/tacknife/survival, /obj/item/material/knife/machete, /obj/item/clothing/accessory/holster/machete, - /obj/item/clothing/gloves/watch/survival + /obj/item/clothing/accessory/watch/survival ) cost=25 containertype = /obj/structure/closet/crate/secure/xion @@ -200,7 +200,7 @@ /obj/item/clothing/head/pilot_vr, /obj/item/clothing/under/rank/pilot1, /obj/item/gun/energy/gun/protector/pilotgun/locked, - /obj/item/clothing/gloves/watch/survival + /obj/item/clothing/accessory/watch/survival ) cost=20 containertype = /obj/structure/closet/crate/secure/xion @@ -236,7 +236,7 @@ /obj/item/clothing/accessory/holster/machete, /obj/item/storage/box/explorerkeys, /obj/item/mapping_unit, - /obj/item/clothing/gloves/watch/survival + /obj/item/clothing/accessory/watch/survival ) cost = 75 containertype = /obj/structure/closet/crate/secure/xion diff --git a/code/datums/uplink/stealthy_weapons.dm b/code/datums/uplink/stealthy_weapons.dm index 29c80092113..39cc3bf9ae2 100644 --- a/code/datums/uplink/stealthy_weapons.dm +++ b/code/datums/uplink/stealthy_weapons.dm @@ -58,12 +58,6 @@ item_cost = 20 path = /obj/item/pen/blade/fountain -/datum/uplink_item/item/stealthy_weapons/angrybuzzer - name = "Morphium Shock Ring" - desc = "An enigmatic ring used to create powerful electric shocks when punching. Can be used as a brute-force method of defibrillation." - item_cost = 40 - path = /obj/item/clothing/gloves/ring/buzzer - /datum/uplink_item/item/stealthy_weapons/huntingtrap name = "Camonetted Beartraps" desc = "A box of unique beartraps which will partially cloak when deployed, allowing for more effective hunting." diff --git a/code/game/machinery/computer/arcade_vr.dm b/code/game/machinery/computer/arcade_vr.dm index a1d4ebb069e..80daaceb524 100644 --- a/code/game/machinery/computer/arcade_vr.dm +++ b/code/game/machinery/computer/arcade_vr.dm @@ -22,7 +22,6 @@ /obj/item/toy/redbutton = 2, /obj/item/toy/gnome = 2, /obj/item/toy/AI = 2, - /obj/item/clothing/gloves/ring/buzzer/toy = 2, /obj/item/storage/box/handcuffs/fake = 2, /obj/item/toy/nuke = 2, /obj/item/toy/minigibber = 2, diff --git a/code/game/objects/items/toys/toys_vr.dm b/code/game/objects/items/toys/toys_vr.dm index b6df0bcafd8..6a9b66f0c66 100644 --- a/code/game/objects/items/toys/toys_vr.dm +++ b/code/game/objects/items/toys/toys_vr.dm @@ -556,35 +556,6 @@ /obj/item/toy/AI/proc/cooldownreset() cooldown = 0 -/* - * Hand buzzer - */ -/obj/item/clothing/gloves/ring/buzzer/toy - name = "steel ring" - desc = "Torus shaped finger decoration. It has a small piece of metal on the palm-side." - icon_state = "seal-signet" - drop_sound = 'sound/items/drop/ring.ogg' - -/obj/item/clothing/gloves/ring/buzzer/toy/Touch(var/atom/A, var/proximity) - if(proximity && istype(usr, /mob/living/carbon/human)) - - return zap(usr, A, proximity) - return 0 - -/obj/item/clothing/gloves/ring/buzzer/toy/zap(var/mob/living/carbon/human/user, var/atom/movable/target, var/proximity) - . = FALSE - if(user.a_intent == I_HELP && battery.percent() >= 50) - if(isliving(target)) - var/mob/living/L = target - - to_chat(L, span_warning("You feel a powerful shock!")) - if(!.) - playsound(L, 'sound/effects/sparks7.ogg', 40, 1) - L.electrocute_act(battery.percent() * 0, src) - return . - - return 0 - /* * Toy cuffs */ diff --git a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm index d8ccfd6025f..225f3c463e0 100644 --- a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm @@ -211,7 +211,7 @@ /obj/item/radio, /obj/item/gps/explorer, /obj/item/gun/energy/gun/protector/pilotgun/locked, - /obj/item/clothing/gloves/watch/survival, + /obj/item/clothing/accessory/watch/survival, /obj/item/clothing/accessory/storage/webbing/pilot1, /obj/item/clothing/accessory/storage/webbing/pilot2, /obj/item/emergency_beacon diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm index c63f709505c..74f2b7329b1 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -271,7 +271,7 @@ // C CKEYS /datum/gear/fluff/cappy_watch - path = /obj/item/clothing/accessory/watch + path = /obj/item/clothing/accessory/watch/custom display_name = "Cappy's Pocket Watch" ckeywhitelist = list("cappycat") character_name = list("Cappy Fuzzlyfeathers") @@ -528,7 +528,7 @@ character_name = list("Elizabeth Bayou") /datum/gear/fluff/mercury_vopal_ring - path = /obj/item/clothing/gloves/ring/material/void_opal/fluff/mercury + path = /obj/item/clothing/accessory/ring/material/void_opal/fluff/mercury display_name = "Mercury's Mate Ring" ckeywhitelist = list("haloren") character_name = list("Mercury") diff --git a/code/modules/client/preference_setup/loadout/loadout_general_vr.dm b/code/modules/client/preference_setup/loadout/loadout_general_vr.dm index 3909acf199a..86a89ddfa83 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general_vr.dm @@ -56,7 +56,6 @@ toytype["Big Red Button"] = /obj/item/toy/redbutton toytype["Garden gnome"] = /obj/item/toy/gnome toytype["Toy AI"] = /obj/item/toy/AI - toytype["Hand buzzer"] = /obj/item/clothing/gloves/ring/buzzer/toy toytype["Toy nuke"] = /obj/item/toy/nuke toytype["Toy gibber"] = /obj/item/toy/minigibber toytype["Toy xeno"] = /obj/item/toy/toy_xeno diff --git a/code/modules/client/preference_setup/loadout/loadout_gloves.dm b/code/modules/client/preference_setup/loadout/loadout_gloves.dm index 859d6a0c4cd..fa712ecd276 100644 --- a/code/modules/client/preference_setup/loadout/loadout_gloves.dm +++ b/code/modules/client/preference_setup/loadout/loadout_gloves.dm @@ -74,27 +74,27 @@ /datum/gear/gloves/ring display_name = "ring selection" description = "Choose from a number of rings." - path = /obj/item/clothing/gloves/ring + path = /obj/item/clothing/accessory/ring cost = 1 /datum/gear/gloves/ring/New() ..() var/ringtype = list() - ringtype["CTI ring"] = /obj/item/clothing/gloves/ring/cti - ringtype["Mariner University ring"] = /obj/item/clothing/gloves/ring/mariner - ringtype["engagement ring"] = /obj/item/clothing/gloves/ring/engagement - ringtype["signet ring"] = /obj/item/clothing/gloves/ring/seal/signet - ringtype["masonic ring"] = /obj/item/clothing/gloves/ring/seal/mason - ringtype["ring, glass"] = /obj/item/clothing/gloves/ring/material/glass - ringtype["ring, wood"] = /obj/item/clothing/gloves/ring/material/wood - ringtype["ring, plastic"] = /obj/item/clothing/gloves/ring/material/plastic - ringtype["ring, iron"] = /obj/item/clothing/gloves/ring/material/iron - ringtype["ring, bronze"] = /obj/item/clothing/gloves/ring/material/bronze - ringtype["ring, steel"] = /obj/item/clothing/gloves/ring/material/steel - ringtype["ring, copper"] = /obj/item/clothing/gloves/ring/material/copper - ringtype["ring, silver"] = /obj/item/clothing/gloves/ring/material/silver - ringtype["ring, gold"] = /obj/item/clothing/gloves/ring/material/gold - ringtype["ring, platinum"] = /obj/item/clothing/gloves/ring/material/platinum + ringtype["CTI ring"] = /obj/item/clothing/accessory/ring/cti + ringtype["Mariner University ring"] = /obj/item/clothing/accessory/ring/mariner + ringtype["engagement ring"] = /obj/item/clothing/accessory/ring/engagement + ringtype["signet ring"] = /obj/item/clothing/accessory/ring/seal/signet + ringtype["masonic ring"] = /obj/item/clothing/accessory/ring/seal/mason + ringtype["ring, glass"] = /obj/item/clothing/accessory/ring/material/glass + ringtype["ring, wood"] = /obj/item/clothing/accessory/ring/material/wood + ringtype["ring, plastic"] = /obj/item/clothing/accessory/ring/material/plastic + ringtype["ring, iron"] = /obj/item/clothing/accessory/ring/material/iron + ringtype["ring, bronze"] = /obj/item/clothing/accessory/ring/material/bronze + ringtype["ring, steel"] = /obj/item/clothing/accessory/ring/material/steel + ringtype["ring, copper"] = /obj/item/clothing/accessory/ring/material/copper + ringtype["ring, silver"] = /obj/item/clothing/accessory/ring/material/silver + ringtype["ring, gold"] = /obj/item/clothing/accessory/ring/material/gold + ringtype["ring, platinum"] = /obj/item/clothing/accessory/ring/material/platinum gear_tweaks += new/datum/gear_tweak/path(ringtype) @@ -105,14 +105,14 @@ /datum/gear/gloves/watch display_name = "wristwatch selector" description = "Pick from a range of wristwatches." - path = /obj/item/clothing/gloves/watch + path = /obj/item/clothing/accessory/watch /datum/gear/gloves/watch/New() ..() var/list/selector_watches = list( - "plain plastic"=/obj/item/clothing/gloves/watch, - "silver"=/obj/item/clothing/gloves/watch/silver, - "gold"=/obj/item/clothing/gloves/watch/gold, - "survival"=/obj/item/clothing/gloves/watch/survival + "plain plastic"=/obj/item/clothing/accessory/watch, + "silver"=/obj/item/clothing/accessory/watch/silver, + "gold"=/obj/item/clothing/accessory/watch/gold, + "survival"=/obj/item/clothing/accessory/watch/survival ) gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_watches)) diff --git a/code/modules/client/preference_setup/loadout/loadout_gloves_vr.dm b/code/modules/client/preference_setup/loadout/loadout_gloves_vr.dm index cfc0a6b1053..fd25064e85b 100644 --- a/code/modules/client/preference_setup/loadout/loadout_gloves_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_gloves_vr.dm @@ -1,10 +1,10 @@ /datum/gear/gloves/goldring display_name = "wedding ring, gold" - path = /obj/item/clothing/gloves/ring/wedding + path = /obj/item/clothing/accessory/ring/wedding /datum/gear/gloves/silverring display_name = "wedding ring, silver" - path = /obj/item/clothing/gloves/ring/wedding/silver + path = /obj/item/clothing/accessory/ring/wedding/silver /datum/gear/gloves/colored display_name = "gloves, colorable" diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/accessories/accessory.dm similarity index 100% rename from code/modules/clothing/under/accessories/accessory.dm rename to code/modules/clothing/accessories/accessory.dm diff --git a/code/modules/clothing/under/accessories/accessory_vr.dm b/code/modules/clothing/accessories/accessory_vr.dm similarity index 100% rename from code/modules/clothing/under/accessories/accessory_vr.dm rename to code/modules/clothing/accessories/accessory_vr.dm diff --git a/code/modules/clothing/under/accessories/altevian_vr.dm b/code/modules/clothing/accessories/altevian_vr.dm similarity index 100% rename from code/modules/clothing/under/accessories/altevian_vr.dm rename to code/modules/clothing/accessories/altevian_vr.dm diff --git a/code/modules/clothing/under/accessories/armband.dm b/code/modules/clothing/accessories/armband.dm similarity index 100% rename from code/modules/clothing/under/accessories/armband.dm rename to code/modules/clothing/accessories/armband.dm diff --git a/code/modules/clothing/under/accessories/armor.dm b/code/modules/clothing/accessories/armor.dm similarity index 100% rename from code/modules/clothing/under/accessories/armor.dm rename to code/modules/clothing/accessories/armor.dm diff --git a/code/modules/clothing/under/accessories/badges.dm b/code/modules/clothing/accessories/badges.dm similarity index 100% rename from code/modules/clothing/under/accessories/badges.dm rename to code/modules/clothing/accessories/badges.dm diff --git a/code/modules/clothing/under/accessories/badges_vr.dm b/code/modules/clothing/accessories/badges_vr.dm similarity index 100% rename from code/modules/clothing/under/accessories/badges_vr.dm rename to code/modules/clothing/accessories/badges_vr.dm diff --git a/code/modules/clothing/under/accessories/clothing.dm b/code/modules/clothing/accessories/clothing.dm similarity index 100% rename from code/modules/clothing/under/accessories/clothing.dm rename to code/modules/clothing/accessories/clothing.dm diff --git a/code/modules/clothing/under/accessories/clothing_vr.dm b/code/modules/clothing/accessories/clothing_vr.dm similarity index 100% rename from code/modules/clothing/under/accessories/clothing_vr.dm rename to code/modules/clothing/accessories/clothing_vr.dm diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/accessories/holster.dm similarity index 100% rename from code/modules/clothing/under/accessories/holster.dm rename to code/modules/clothing/accessories/holster.dm diff --git a/code/modules/clothing/under/accessories/holster_vr.dm b/code/modules/clothing/accessories/holster_vr.dm similarity index 100% rename from code/modules/clothing/under/accessories/holster_vr.dm rename to code/modules/clothing/accessories/holster_vr.dm diff --git a/code/modules/clothing/under/accessories/lockets.dm b/code/modules/clothing/accessories/lockets.dm similarity index 100% rename from code/modules/clothing/under/accessories/lockets.dm rename to code/modules/clothing/accessories/lockets.dm diff --git a/code/modules/clothing/under/accessories/permits.dm b/code/modules/clothing/accessories/permits.dm similarity index 100% rename from code/modules/clothing/under/accessories/permits.dm rename to code/modules/clothing/accessories/permits.dm diff --git a/code/modules/clothing/under/accessories/permits_vr.dm b/code/modules/clothing/accessories/permits_vr.dm similarity index 100% rename from code/modules/clothing/under/accessories/permits_vr.dm rename to code/modules/clothing/accessories/permits_vr.dm diff --git a/code/modules/clothing/accessories/rings.dm b/code/modules/clothing/accessories/rings.dm new file mode 100644 index 00000000000..855cce0212a --- /dev/null +++ b/code/modules/clothing/accessories/rings.dm @@ -0,0 +1,201 @@ +//Generic Ring + +/obj/item/clothing/accessory/ring + name = "generic ring" + desc = "Torus shaped finger decoration." + icon_state = "material" + drop_sound = 'sound/items/drop/ring.ogg' + slot = ACCESSORY_SLOT_RING + slot_flags = SLOT_GLOVES + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_gloves.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_gloves.dmi', + ) + gender = PLURAL + w_class = ITEMSIZE_SMALL + icon = 'icons/inventory/hands/item.dmi' + drop_sound = 'sound/items/drop/ring.ogg' + pickup_sound = 'sound/items/pickup/ring.ogg' + +///////////////////////////////////////// +//Standard Rings +/obj/item/clothing/accessory/ring/engagement + name = "engagement ring" + desc = "An engagement ring. It certainly looks expensive." + icon_state = "diamond" + +/obj/item/clothing/accessory/ring/engagement/attack_self(mob/user) + user.visible_message(span_warning("\The [user] gets down on one knee, presenting \the [src]."),span_warning("You get down on one knee, presenting \the [src].")) + +/obj/item/clothing/accessory/ring/cti + name = "CTI ring" + desc = "A ring commemorating graduation from CTI." + icon_state = "cti-grad" + +/obj/item/clothing/accessory/ring/mariner + name = "Mariner University ring" + desc = "A ring commemorating graduation from Mariner University." + icon_state = "mariner-grad" + + +///////////////////////////////////////// +//Reagent Rings + +/obj/item/clothing/accessory/ring/reagent + flags = OPENCONTAINER + origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 4) + +/obj/item/clothing/accessory/ring/reagent/New() + ..() + create_reagents(15) + +/obj/item/clothing/accessory/ring/reagent/equipped(var/mob/living/carbon/human/H) + ..() + if(istype(H) && H.gloves==src) + + if(reagents.total_volume) + to_chat(H, span_danger("You feel a prick as you slip on \the [src].")) + if(H.reagents) + var/contained = reagents.get_reagents() + var/trans = reagents.trans_to_mob(H, 15, CHEM_BLOOD) + add_attack_logs(usr, H, "Injected with [name] containing [contained] transferred [trans] units") + return + +//Sleepy Ring +/obj/item/clothing/accessory/ring/reagent/sleepy + name = "silver ring" + desc = "A ring made from what appears to be silver." + icon_state = "material" + origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5) + +/obj/item/clothing/accessory/ring/reagent/sleepy/New() + ..() + reagents.add_reagent("chloralhydrate", 15) // Less than a sleepy-pen, but still enough to knock someone out + +///////////////////////////////////////// +//Seals and Signet Rings + +/obj/item/clothing/accessory/ring/seal + var/stamptext = null + +/obj/item/clothing/accessory/ring/seal/secgen + name = "Secretary-General's official seal" + desc = "The official seal of the Secretary-General of the Sol Central Government, featured prominently on a silver ring." + icon_state = "seal-secgen" + +/obj/item/clothing/accessory/ring/seal/mason + name = "\improper Masonic ring" + desc = "The Square and Compasses feature prominently on this Masonic ring." + icon_state = "seal-masonic" + +/obj/item/clothing/accessory/ring/seal/signet + name = "signet ring" + desc = "A signet ring, for when you're too sophisticated to sign letters." + icon_state = "seal-signet" + var/nameset = FALSE + +/obj/item/clothing/accessory/ring/seal/signet/attack_self(mob/user) + if(nameset) + to_chat(user, span_notice("The [src] has already been claimed!")) + return + + to_chat(user, span_notice("You claim the [src] as your own!")) + change_name(user) + nameset = TRUE + +/obj/item/clothing/accessory/ring/seal/signet/proc/change_name(var/signet_name = "Unknown") + name = "[signet_name]'s signet ring" + desc = "A signet ring belonging to [signet_name], for when you're too sophisticated to sign letters." + +/obj/item/clothing/accessory/ring/wedding + name = "golden wedding ring" + desc = "For showing your devotion to another person. It has a golden glimmer to it." + icon = 'icons/inventory/hands/item_vr.dmi' + icon_state = "wedring_g" + item_state = "wedring_g" + var/partnername = "" + +/obj/item/clothing/accessory/ring/wedding/attack_self(mob/user) + partnername = copytext(sanitize(input(user, "Would you like to change the holoengraving on the ring?", "Name your spouse", "Bae") as null|text),1,MAX_NAME_LEN) + name = "[initial(name)] - [partnername]" + +/obj/item/clothing/accessory/ring/wedding/silver + name = "silver wedding ring" + desc = "For showing your devotion to another person. It has a silver glimmer to it." + icon_state = "wedring_s" + item_state = "wedring_s" + +///////////////////////////////////////// +//Material Rings +/obj/item/clothing/accessory/ring/material + icon = 'icons/inventory/hands/item.dmi' + icon_state = "material" + +/obj/item/clothing/accessory/ring/material/New(var/newloc, var/new_material) + ..(newloc) + if(!new_material) + new_material = MAT_STEEL + material = get_material_by_name(new_material) + if(!istype(material)) + qdel(src) + return + name = "[material.display_name] ring" + desc = "A ring made from [material.display_name]." + color = material.icon_colour + +/obj/item/clothing/accessory/ring/material/get_material() + return material + +/obj/item/clothing/accessory/ring/material/wood/New(var/newloc) + ..(newloc, MAT_WOOD) + +/obj/item/clothing/accessory/ring/material/plastic/New(var/newloc) + ..(newloc, MAT_PLASTIC) + +/obj/item/clothing/accessory/ring/material/iron/New(var/newloc) + ..(newloc, MAT_IRON) + +/obj/item/clothing/accessory/ring/material/glass/New(var/newloc) + ..(newloc, MAT_GLASS) + +/obj/item/clothing/accessory/ring/material/steel/New(var/newloc) + ..(newloc, MAT_STEEL) + +/obj/item/clothing/accessory/ring/material/silver/New(var/newloc) + ..(newloc, MAT_SILVER) + +/obj/item/clothing/accessory/ring/material/gold/New(var/newloc) + ..(newloc, MAT_GOLD) + +/obj/item/clothing/accessory/ring/material/platinum/New(var/newloc) + ..(newloc, MAT_PLATINUM) + +/obj/item/clothing/accessory/ring/material/phoron/New(var/newloc) + ..(newloc, MAT_PHORON) + +/obj/item/clothing/accessory/ring/material/titanium/New(var/newloc) + ..(newloc, MAT_TITANIUM) + +/obj/item/clothing/accessory/ring/material/copper/New(var/newloc) + ..(newloc, MAT_COPPER) + +/obj/item/clothing/accessory/ring/material/bronze/New(var/newloc) + ..(newloc, MAT_BRONZE) + +/obj/item/clothing/accessory/ring/material/uranium/New(var/newloc) + ..(newloc, MAT_URANIUM) + +/obj/item/clothing/accessory/ring/material/osmium/New(var/newloc) + ..(newloc, MAT_OSMIUM) + +/obj/item/clothing/accessory/ring/material/lead/New(var/newloc) + ..(newloc, MAT_LEAD) + +/obj/item/clothing/accessory/ring/material/diamond/New(var/newloc) + ..(newloc, MAT_DIAMOND) + +/obj/item/clothing/accessory/ring/material/tin/New(var/newloc) + ..(newloc, MAT_TIN) + +/obj/item/clothing/accessory/ring/material/void_opal/New(var/newloc) + ..(newloc, MAT_VOPAL) diff --git a/code/modules/clothing/under/accessories/shiny_vr.dm b/code/modules/clothing/accessories/shiny_vr.dm similarity index 100% rename from code/modules/clothing/under/accessories/shiny_vr.dm rename to code/modules/clothing/accessories/shiny_vr.dm diff --git a/code/modules/clothing/under/accessories/storage.dm b/code/modules/clothing/accessories/storage.dm similarity index 100% rename from code/modules/clothing/under/accessories/storage.dm rename to code/modules/clothing/accessories/storage.dm diff --git a/code/modules/clothing/under/accessories/storage_vr.dm b/code/modules/clothing/accessories/storage_vr.dm similarity index 100% rename from code/modules/clothing/under/accessories/storage_vr.dm rename to code/modules/clothing/accessories/storage_vr.dm diff --git a/code/modules/clothing/under/accessories/temperature/poncho.dm b/code/modules/clothing/accessories/temperature/poncho.dm similarity index 100% rename from code/modules/clothing/under/accessories/temperature/poncho.dm rename to code/modules/clothing/accessories/temperature/poncho.dm diff --git a/code/modules/clothing/under/accessories/torch.dm b/code/modules/clothing/accessories/torch.dm similarity index 100% rename from code/modules/clothing/under/accessories/torch.dm rename to code/modules/clothing/accessories/torch.dm diff --git a/code/modules/clothing/under/accessories/torch_vr.dm b/code/modules/clothing/accessories/torch_vr.dm similarity index 100% rename from code/modules/clothing/under/accessories/torch_vr.dm rename to code/modules/clothing/accessories/torch_vr.dm diff --git a/code/modules/clothing/accessories/watches.dm b/code/modules/clothing/accessories/watches.dm new file mode 100644 index 00000000000..5a93cb94f0e --- /dev/null +++ b/code/modules/clothing/accessories/watches.dm @@ -0,0 +1,72 @@ +/obj/item/clothing/accessory/watch + name = "wristwatch" + desc = "A cheap plastic quartz-based wristwatch. Painfully archaic by modern standards, but there's something charming about it all the same." + icon_state = "wristwatch_basic" + siemens_coefficient = 1 + gender = "neuter" + slot = ACCESSORY_SLOT_WRIST + slot_flags = SLOT_GLOVES + icon = 'icons/inventory/hands/item.dmi' + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_gloves.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_gloves.dmi', + ) + sprite_sheets = list( + SPECIES_TESHARI = 'icons/inventory/hands/mob_teshari.dmi', + SPECIES_VOX = 'icons/inventory/hands/mob_vox.dmi' + ) + +/obj/item/clothing/accessory/watch/examine(mob/user) + . = ..() + + if(Adjacent(user)) + . += span_notice("The current station time is [stationtime2text()].") + +/obj/item/clothing/accessory/watch/silver + name = "silver wristwatch" + desc = "A humble silver (or maybe chrome) plated wristwatch. It's quite archaic, but nonetheless classy in its own way." + icon_state = "wristwatch_silver" + +/obj/item/clothing/accessory/watch/gold + name = "gold wristwatch" + desc = "A very fancy gold-plated wristwatch. For when you want to casually show off just how wealthy you are. It even tells the time!" + icon_state = "wristwatch_gold" + +/obj/item/clothing/accessory/watch/survival + name = "survival watch" + desc = "An overengineered wristwatch that purports to be both space and water proof, and includes a compass, micro GPS beacon, and temperature and pressure sensors. The beacon is off by default, and can only transmit its location: it cannot scan for other signals." + description_fluff = "Hold ALT whilst left-clicking on the survival watch to toggle the status of its micro-beacon." + icon_state = "wristwatch_survival" + + var/obj/item/gps/gps = null + +/obj/item/clothing/accessory/watch/survival/examine(mob/user) + . = ..() + + if(Adjacent(user)) + . += span_notice("You are currently facing [dir2text(user.dir)]. The micro beacon is [gps.tracking ? "on" : "off"].") + var/TB = user.loc + if(istype(TB, /turf/)) //no point returning light level if we're not on a turf (might be *in* someone!) + var/turf/TL = TB + var/light_level = TL.get_lumcount() + if(light_level) + . += span_notice("Light Level: [TL.get_lumcount()]") + else + . += span_notice("It's too dark to see the light level!") + if(istype(TB, /turf/simulated)) //no point returning atmospheric data from unsimulated tiles (they don't track pressure anyway, only temperature) + var/turf/simulated/T = TB + var/datum/gas_mixture/env = T.return_air() + . += span_notice("Pressure: [env.return_pressure()]kPa / Temperature: [env.temperature]K ") + +/obj/item/clothing/accessory/watch/survival/New() + gps = new/obj/item/gps/watch(src) + +/obj/item/gps/watch + gps_tag = "SRV-WTCH" + +/obj/item/clothing/accessory/watch/survival/AltClick(mob/user) + . = ..() + + if(Adjacent(user)) + gps.tracking = !gps.tracking + to_chat(user,span_notice("You turn the micro beacon [gps.tracking ? "on" : "off"].")) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index f45481622aa..c416698a646 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -326,6 +326,13 @@ drop_sound = 'sound/items/drop/gloves.ogg' pickup_sound = 'sound/items/pickup/gloves.ogg' + valid_accessory_slots = (\ + ACCESSORY_SLOT_RING\ + |ACCESSORY_SLOT_WRIST) + restricted_accessory_slots = (\ + ACCESSORY_SLOT_RING\ + |ACCESSORY_SLOT_WRIST) + /obj/item/clothing/proc/set_clothing_index() return @@ -422,8 +429,6 @@ if(special_attack_type && ispath(special_attack_type)) special_attack = new special_attack_type - - ///////////////////////////////////////////////////////////////////// //Rings diff --git a/code/modules/clothing/gloves/antagonist.dm b/code/modules/clothing/gloves/antagonist.dm index 83e595a0ddd..34574e2e538 100644 --- a/code/modules/clothing/gloves/antagonist.dm +++ b/code/modules/clothing/gloves/antagonist.dm @@ -88,70 +88,3 @@ if(proximity && istype(usr, /mob/living/carbon/human) && do_after(usr, 1 SECOND, A)) return pickpocket(usr, A, proximity) return 0 - -// Buzzer Ring - Traitor, Merc. -/obj/item/clothing/gloves/ring/buzzer - name = "ring" - desc = "A plain metal band." - description_antag = "This morphium-alloy ring continually generates an electric field, capable of electrocuting a target while not injuring the wearer.\ - The device is also capable of 'frankenstein'-ing a corpse, long after normal technology would be able to save them. The body will still be tied to the\ - normal damage limits for survival, however, so care must be taken." - icon_state = "material" - var/battery_type = /obj/item/cell/device/weapon/recharge - var/obj/item/cell/battery = null - -/obj/item/clothing/gloves/ring/buzzer/get_cell() - return battery - -/obj/item/clothing/gloves/ring/buzzer/Initialize() - . = ..() - if(!battery) - battery = new battery_type(src) - -/obj/item/clothing/gloves/ring/buzzer/Touch(var/atom/A, var/proximity) - if(proximity && istype(usr, /mob/living/carbon/human)) - return zap(usr, A, proximity) - return 0 - -/obj/item/clothing/gloves/ring/buzzer/proc/zap(var/mob/living/carbon/human/user, var/atom/movable/target, var/proximity) - . = FALSE - if(user.a_intent == I_HURT && battery.percent() >= 50) - if(isliving(target)) - var/mob/living/L = target - - if(ishuman(L) && battery.percent() >= 90) // Silent text-wise, for maximum potential for gimmicks. - var/mob/living/carbon/human/H = L - - if(H.stat == DEAD) - . = TRUE - - do_defib(H) - - to_chat(L, span_warning("You feel a powerful shock!")) - if(!.) - playsound(L, 'sound/effects/sparks7.ogg', 40, 1) - L.electrocute_act(battery.percent() * 0.25, src) - battery.emp_act(2) - return . - - return 0 - -/obj/item/clothing/gloves/ring/buzzer/proc/do_defib(var/mob/living/carbon/human/H = null) - if(!istype(H)) - return 0 - - dead_mob_list.Remove(H) - if((H in living_mob_list) || (H in dead_mob_list)) - WARNING("Mob [H] was ring-defibbed but already in the living or dead list still!") - living_mob_list += H - - H.timeofdeath = 0 - H.set_stat(UNCONSCIOUS) - H.failed_last_breath = 0 - H.reload_fullscreen() - - H.emote("gasp") - H.Weaken(rand(10,25)) - H.updatehealth() - - battery.emp_act(1) diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 3862469c857..cb5e214fd68 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -172,65 +172,3 @@ name = "water wings" desc = "Swim aids designed to help a wearer float in water and learn to swim." icon_state = "waterwings" - -/obj/item/clothing/gloves/watch - name = "wristwatch" - desc = "A cheap plastic quartz-based wristwatch. Painfully archaic by modern standards, but there's something charming about it all the same." - icon_state = "wristwatch_basic" - siemens_coefficient = 1 - gender = "neuter" - -/obj/item/clothing/gloves/watch/examine(mob/user) - . = ..() - - if(Adjacent(user)) - . += span_notice("The current station time is [stationtime2text()].") - -/obj/item/clothing/gloves/watch/silver - name = "silver wristwatch" - desc = "A humble silver (or maybe chrome) plated wristwatch. It's quite archaic, but nonetheless classy in its own way." - icon_state = "wristwatch_silver" - -/obj/item/clothing/gloves/watch/gold - name = "gold wristwatch" - desc = "A very fancy gold-plated wristwatch. For when you want to casually show off just how wealthy you are. It even tells the time!" - icon_state = "wristwatch_gold" - -/obj/item/clothing/gloves/watch/survival - name = "survival watch" - desc = "An overengineered wristwatch that purports to be both space and water proof, and includes a compass, micro GPS beacon, and temperature and pressure sensors. The beacon is off by default, and can only transmit its location: it cannot scan for other signals." - description_fluff = "Hold ALT whilst left-clicking on the survival watch to toggle the status of its micro-beacon." - icon_state = "wristwatch_survival" - - var/obj/item/gps/gps = null - -/obj/item/clothing/gloves/watch/survival/examine(mob/user) - . = ..() - - if(Adjacent(user) && src.loc == user) - . += span_notice("You are currently facing [dir2text(user.dir)]. The micro beacon is [gps.tracking ? "on" : "off"].") - var/TB = src.loc.loc - if(istype(TB, /turf/)) //no point returning light level if we're not on a turf (might be *in* someone!) - var/turf/TL = TB - var/light_level = TL.get_lumcount() - if(light_level) - . += span_notice("Light Level: [TL.get_lumcount()]") - else - . += span_notice("It's too dark to see the light level!") - if(istype(TB, /turf/simulated)) //no point returning atmospheric data from unsimulated tiles (they don't track pressure anyway, only temperature) - var/turf/simulated/T = TB - var/datum/gas_mixture/env = T.return_air() - . += span_notice("Pressure: [env.return_pressure()]kPa / Temperature: [env.temperature]K ") - -/obj/item/clothing/gloves/watch/survival/New() - gps = new/obj/item/gps/watch(src) - -/obj/item/gps/watch - gps_tag = "SRV-WTCH" - -/obj/item/clothing/gloves/watch/survival/AltClick(mob/user) - . = ..() - - if(Adjacent(user)) - gps.tracking = !gps.tracking - to_chat(user,span_notice("You turn the micro beacon [gps.tracking ? "on" : "off"].")) diff --git a/code/modules/clothing/rings/material.dm b/code/modules/clothing/rings/material.dm deleted file mode 100644 index 30242fef66e..00000000000 --- a/code/modules/clothing/rings/material.dm +++ /dev/null @@ -1,74 +0,0 @@ -///////////////////////////////////////// -//Material Rings -/obj/item/clothing/gloves/ring/material - icon = 'icons/inventory/hands/item.dmi' - icon_state = "material" - -/obj/item/clothing/gloves/ring/material/New(var/newloc, var/new_material) - ..(newloc) - if(!new_material) - new_material = MAT_STEEL - material = get_material_by_name(new_material) - if(!istype(material)) - qdel(src) - return - name = "[material.display_name] ring" - desc = "A ring made from [material.display_name]." - color = material.icon_colour - -/obj/item/clothing/gloves/ring/material/get_material() - return material - -/obj/item/clothing/gloves/ring/material/wood/New(var/newloc) - ..(newloc, MAT_WOOD) - -/obj/item/clothing/gloves/ring/material/plastic/New(var/newloc) - ..(newloc, MAT_PLASTIC) - -/obj/item/clothing/gloves/ring/material/iron/New(var/newloc) - ..(newloc, MAT_IRON) - -/obj/item/clothing/gloves/ring/material/glass/New(var/newloc) - ..(newloc, MAT_GLASS) - -/obj/item/clothing/gloves/ring/material/steel/New(var/newloc) - ..(newloc, MAT_STEEL) - -/obj/item/clothing/gloves/ring/material/silver/New(var/newloc) - ..(newloc, MAT_SILVER) - -/obj/item/clothing/gloves/ring/material/gold/New(var/newloc) - ..(newloc, MAT_GOLD) - -/obj/item/clothing/gloves/ring/material/platinum/New(var/newloc) - ..(newloc, MAT_PLATINUM) - -/obj/item/clothing/gloves/ring/material/phoron/New(var/newloc) - ..(newloc, MAT_PHORON) - -/obj/item/clothing/gloves/ring/material/titanium/New(var/newloc) - ..(newloc, MAT_TITANIUM) - -/obj/item/clothing/gloves/ring/material/copper/New(var/newloc) - ..(newloc, MAT_COPPER) - -/obj/item/clothing/gloves/ring/material/bronze/New(var/newloc) - ..(newloc, MAT_BRONZE) - -/obj/item/clothing/gloves/ring/material/uranium/New(var/newloc) - ..(newloc, MAT_URANIUM) - -/obj/item/clothing/gloves/ring/material/osmium/New(var/newloc) - ..(newloc, MAT_OSMIUM) - -/obj/item/clothing/gloves/ring/material/lead/New(var/newloc) - ..(newloc, MAT_LEAD) - -/obj/item/clothing/gloves/ring/material/diamond/New(var/newloc) - ..(newloc, MAT_DIAMOND) - -/obj/item/clothing/gloves/ring/material/tin/New(var/newloc) - ..(newloc, MAT_TIN) - -/obj/item/clothing/gloves/ring/material/void_opal/New(var/newloc) - ..(newloc, MAT_VOPAL) \ No newline at end of file diff --git a/code/modules/clothing/rings/rings.dm b/code/modules/clothing/rings/rings.dm deleted file mode 100644 index 34678198e74..00000000000 --- a/code/modules/clothing/rings/rings.dm +++ /dev/null @@ -1,96 +0,0 @@ -//Generic Ring - -/obj/item/clothing/gloves/ring - name = "generic ring" - desc = "Torus shaped finger decoration." - icon_state = "material" - drop_sound = 'sound/items/drop/ring.ogg' - -///////////////////////////////////////// -//Standard Rings -/obj/item/clothing/gloves/ring/engagement - name = "engagement ring" - desc = "An engagement ring. It certainly looks expensive." - icon_state = "diamond" - -/obj/item/clothing/gloves/ring/engagement/attack_self(mob/user) - user.visible_message(span_warning("\The [user] gets down on one knee, presenting \the [src]."),span_warning("You get down on one knee, presenting \the [src].")) - -/obj/item/clothing/gloves/ring/cti - name = "CTI ring" - desc = "A ring commemorating graduation from CTI." - icon_state = "cti-grad" - -/obj/item/clothing/gloves/ring/mariner - name = "Mariner University ring" - desc = "A ring commemorating graduation from Mariner University." - icon_state = "mariner-grad" - - -///////////////////////////////////////// -//Reagent Rings - -/obj/item/clothing/gloves/ring/reagent - flags = OPENCONTAINER - origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 4) - -/obj/item/clothing/gloves/ring/reagent/New() - ..() - create_reagents(15) - -/obj/item/clothing/gloves/ring/reagent/equipped(var/mob/living/carbon/human/H) - ..() - if(istype(H) && H.gloves==src) - - if(reagents.total_volume) - to_chat(H, span_danger("You feel a prick as you slip on \the [src].")) - if(H.reagents) - var/contained = reagents.get_reagents() - var/trans = reagents.trans_to_mob(H, 15, CHEM_BLOOD) - add_attack_logs(usr, H, "Injected with [name] containing [contained] transferred [trans] units") - return - -//Sleepy Ring -/obj/item/clothing/gloves/ring/reagent/sleepy - name = "silver ring" - desc = "A ring made from what appears to be silver." - icon_state = "material" - origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5) - -/obj/item/clothing/gloves/ring/reagent/sleepy/New() - ..() - reagents.add_reagent("chloralhydrate", 15) // Less than a sleepy-pen, but still enough to knock someone out - -///////////////////////////////////////// -//Seals and Signet Rings - -/obj/item/clothing/gloves/ring/seal - var/stamptext = null -/obj/item/clothing/gloves/ring/seal/secgen - name = "Secretary-General's official seal" - desc = "The official seal of the Secretary-General of the Sol Central Government, featured prominently on a silver ring." - icon_state = "seal-secgen" - -/obj/item/clothing/gloves/ring/seal/mason - name = "\improper Masonic ring" - desc = "The Square and Compasses feature prominently on this Masonic ring." - icon_state = "seal-masonic" - -/obj/item/clothing/gloves/ring/seal/signet - name = "signet ring" - desc = "A signet ring, for when you're too sophisticated to sign letters." - icon_state = "seal-signet" - var/nameset = FALSE - -/obj/item/clothing/gloves/ring/seal/signet/attack_self(mob/user) - if(nameset) - to_chat(user, span_notice("The [src] has already been claimed!")) - return - - to_chat(user, span_notice("You claim the [src] as your own!")) - change_name(user) - nameset = TRUE - -/obj/item/clothing/gloves/ring/seal/signet/proc/change_name(var/signet_name = "Unknown") - name = "[signet_name]'s signet ring" - desc = "A signet ring belonging to [signet_name], for when you're too sophisticated to sign letters." diff --git a/code/modules/clothing/rings/rings_vr.dm b/code/modules/clothing/rings/rings_vr.dm deleted file mode 100644 index 45306a7acc1..00000000000 --- a/code/modules/clothing/rings/rings_vr.dm +++ /dev/null @@ -1,17 +0,0 @@ -/obj/item/clothing/gloves/ring/wedding - name = "golden wedding ring" - desc = "For showing your devotion to another person. It has a golden glimmer to it." - icon = 'icons/inventory/hands/item_vr.dmi' - icon_state = "wedring_g" - item_state = "wedring_g" - var/partnername = "" - -/obj/item/clothing/gloves/ring/wedding/attack_self(mob/user) - partnername = copytext(sanitize(input(user, "Would you like to change the holoengraving on the ring?", "Name your spouse", "Bae") as null|text),1,MAX_NAME_LEN) - name = "[initial(name)] - [partnername]" - -/obj/item/clothing/gloves/ring/wedding/silver - name = "silver wedding ring" - desc = "For showing your devotion to another person. It has a silver glimmer to it." - icon_state = "wedring_s" - item_state = "wedring_s" diff --git a/code/modules/economy/vending_machines_vr.dm b/code/modules/economy/vending_machines_vr.dm index 8af2af81395..f8d5a980322 100644 --- a/code/modules/economy/vending_machines_vr.dm +++ b/code/modules/economy/vending_machines_vr.dm @@ -519,7 +519,7 @@ /obj/item/clothing/under/color/yellow = 5, /obj/item/clothing/shoes/black = 20, /obj/item/clothing/shoes/white = 20, - /obj/item/clothing/gloves/watch = 20 + /obj/item/clothing/accessory/watch = 20 ) prices = list() @@ -636,13 +636,13 @@ /obj/item/clothing/ears/earmuffs/headphones = 5, /obj/item/clothing/ears/earring/stud = 5, /obj/item/clothing/ears/earring/dangle = 5, - /obj/item/clothing/gloves/ring/mariner = 5, - /obj/item/clothing/gloves/ring/engagement = 5, - /obj/item/clothing/gloves/ring/seal/signet = 5, - /obj/item/clothing/gloves/ring/seal/mason = 5, - /obj/item/clothing/gloves/ring/material/plastic = 5, - /obj/item/clothing/gloves/ring/material/steel = 5, - /obj/item/clothing/gloves/ring/material/gold = 5, + /obj/item/clothing/accessory/ring/mariner = 5, + /obj/item/clothing/accessory/ring/engagement = 5, + /obj/item/clothing/accessory/ring/seal/signet = 5, + /obj/item/clothing/accessory/ring/seal/mason = 5, + /obj/item/clothing/accessory/ring/material/plastic = 5, + /obj/item/clothing/accessory/ring/material/steel = 5, + /obj/item/clothing/accessory/ring/material/gold = 5, /obj/item/clothing/glasses/eyepatch = 5, /obj/item/clothing/glasses/gglasses = 5, /obj/item/clothing/glasses/regular/hipster = 5, @@ -670,9 +670,9 @@ /obj/item/clothing/accessory/pride/lesbian = 5, /obj/item/clothing/accessory/pride/intersex = 5, /obj/item/clothing/accessory/pride/vore = 5, - /obj/item/clothing/gloves/watch = 5, - /obj/item/clothing/gloves/watch/silver = 5, - /obj/item/clothing/gloves/watch/gold = 5 + /obj/item/clothing/accessory/watch = 5, + /obj/item/clothing/accessory/watch/silver = 5, + /obj/item/clothing/accessory/watch/gold = 5 ) prices = list(/obj/item/clothing/accessory = 50, /obj/item/clothing/accessory/armband/med/color = 50, @@ -781,13 +781,13 @@ /obj/item/clothing/ears/earmuffs/headphones = 50, /obj/item/clothing/ears/earring/stud = 50, /obj/item/clothing/ears/earring/dangle = 50, - /obj/item/clothing/gloves/ring/mariner = 50, - /obj/item/clothing/gloves/ring/engagement = 50, - /obj/item/clothing/gloves/ring/seal/signet = 50, - /obj/item/clothing/gloves/ring/seal/mason = 50, - /obj/item/clothing/gloves/ring/material/plastic = 50, - /obj/item/clothing/gloves/ring/material/steel = 50, - /obj/item/clothing/gloves/ring/material/gold = 100, + /obj/item/clothing/accessory/ring/mariner = 50, + /obj/item/clothing/accessory/ring/engagement = 50, + /obj/item/clothing/accessory/ring/seal/signet = 50, + /obj/item/clothing/accessory/ring/seal/mason = 50, + /obj/item/clothing/accessory/ring/material/plastic = 50, + /obj/item/clothing/accessory/ring/material/steel = 50, + /obj/item/clothing/accessory/ring/material/gold = 100, /obj/item/clothing/glasses/eyepatch = 50, /obj/item/clothing/glasses/gglasses = 50, /obj/item/clothing/glasses/regular/hipster = 50, @@ -811,9 +811,9 @@ /obj/item/clothing/accessory/pride/lesbian = 50, /obj/item/clothing/accessory/pride/intersex = 50, /obj/item/clothing/accessory/pride/vore = 50, - /obj/item/clothing/gloves/watch = 50, - /obj/item/clothing/gloves/watch/silver = 100, - /obj/item/clothing/gloves/watch/gold = 200 + /obj/item/clothing/accessory/watch = 50, + /obj/item/clothing/accessory/watch/silver = 100, + /obj/item/clothing/accessory/watch/gold = 200 ) premium = list(/obj/item/bedsheet/rainbow = 1) contraband = list(/obj/item/clothing/mask/gas/clown_hat = 1, @@ -1985,13 +1985,13 @@ /obj/item/clothing/ears/earmuffs/headphones = 5, /obj/item/clothing/ears/earring/stud = 5, /obj/item/clothing/ears/earring/dangle = 5, - /obj/item/clothing/gloves/ring/mariner = 5, - /obj/item/clothing/gloves/ring/engagement = 5, - /obj/item/clothing/gloves/ring/seal/signet = 5, - /obj/item/clothing/gloves/ring/seal/mason = 5, - /obj/item/clothing/gloves/ring/material/plastic = 5, - /obj/item/clothing/gloves/ring/material/steel = 5, - /obj/item/clothing/gloves/ring/material/gold = 5, + /obj/item/clothing/accessory/ring/mariner = 5, + /obj/item/clothing/accessory/ring/engagement = 5, + /obj/item/clothing/accessory/ring/seal/signet = 5, + /obj/item/clothing/accessory/ring/seal/mason = 5, + /obj/item/clothing/accessory/ring/material/plastic = 5, + /obj/item/clothing/accessory/ring/material/steel = 5, + /obj/item/clothing/accessory/ring/material/gold = 5, /obj/item/clothing/glasses/eyepatch = 5, /obj/item/clothing/glasses/gglasses = 5, /obj/item/clothing/glasses/regular/hipster = 5, diff --git a/code/modules/materials/materials/_materials.dm b/code/modules/materials/materials/_materials.dm index ca710cb04f1..322e5d7beaf 100644 --- a/code/modules/materials/materials/_materials.dm +++ b/code/modules/materials/materials/_materials.dm @@ -361,7 +361,7 @@ var/list/name_to_material new /datum/stack_recipe("[display_name] armor plate", /obj/item/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), new /datum/stack_recipe("[display_name] armor plate insert", /obj/item/material/armor_plating/insert, 2, time = 40, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), new /datum/stack_recipe("[display_name] grave marker", /obj/item/material/gravemarker, 5, time = 50, supplied_material = "[name]", pass_stack_color = TRUE), - new /datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] ring", /obj/item/clothing/accessory/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), new /datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) ) diff --git a/code/modules/materials/materials/organic/leather.dm b/code/modules/materials/materials/organic/leather.dm index fe291e4d8d5..607361d07e2 100644 --- a/code/modules/materials/materials/organic/leather.dm +++ b/code/modules/materials/materials/organic/leather.dm @@ -33,7 +33,7 @@ new /datum/stack_recipe("pouch, melee", /obj/item/storage/pouch/baton, 10, time = 20 SECONDS, pass_stack_color = FALSE, recycle_material = "[name]"), //vorestation Add new /datum/stack_recipe("crude [display_name] bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), new /datum/stack_recipe("[display_name] net", /obj/item/material/fishing_net, 10, time = 5 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE), - new /datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] ring", /obj/item/clothing/accessory/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), new /datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), new /datum/stack_recipe("[display_name] armor plate", /obj/item/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), new /datum/stack_recipe("empty sandbag", /obj/item/stack/emptysandbag, 2, time = 2 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]"), diff --git a/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm b/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm index 7beb0276635..b1608dc51f8 100644 --- a/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm +++ b/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm @@ -22,7 +22,7 @@ var/to_wear_r_radio = null var/to_wear_uniform = /obj/item/clothing/under/color/grey var/to_wear_suit = /obj/item/clothing/suit/armor/material/makeshift/glass - var/to_wear_gloves = /obj/item/clothing/gloves/ring/material/platinum + var/to_wear_gloves = /obj/item/clothing/accessory/ring/material/platinum var/to_wear_shoes = /obj/item/clothing/shoes/galoshes var/to_wear_belt = /obj/item/storage/belt/utility/full var/to_wear_l_pocket = /obj/item/soap diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 73913ba2951..80dabf789d2 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -107,12 +107,10 @@ if(w_uniform && !(skip_gear & EXAMINE_SKIPJUMPSUIT) && w_uniform.show_examine) //Ties var/tie_msg - var/tie_msg_warn if(istype(w_uniform,/obj/item/clothing/under) && !(skip_gear & EXAMINE_SKIPTIE)) var/obj/item/clothing/under/U = w_uniform if(LAZYLEN(U.accessories)) tie_msg += ". Attached to it is" - tie_msg_warn += "! Attached to it is" var/list/accessory_descs = list() if(skip_gear & EXAMINE_SKIPHOLSTER) for(var/obj/item/clothing/accessory/A in U.accessories) @@ -139,12 +137,10 @@ //suit/armour if(wear_suit) var/tie_msg - var/tie_msg_warn if(istype(wear_suit,/obj/item/clothing/suit)) var/obj/item/clothing/suit/U = wear_suit if(LAZYLEN(U.accessories)) tie_msg += ". Attached to it is" - tie_msg_warn += "! Attached to it is" var/list/accessory_descs = list() for(var/accessory in U.accessories) accessory_descs += "\a [accessory]" @@ -185,10 +181,21 @@ //gloves if(gloves && !(skip_gear & EXAMINE_SKIPGLOVES) && gloves.show_examine) + var/gloves_acc_msg + if(istype(gloves,/obj/item/clothing/gloves)) + var/obj/item/clothing/gloves/G = gloves + if(LAZYLEN(G.accessories)) + gloves_acc_msg += ". Attached to it is" + var/list/accessory_descs = list() + for(var/obj/item/clothing/accessory/A in G.accessories) + accessory_descs += "\a [A]" + + gloves_acc_msg += " [lowertext(english_list(accessory_descs))]." if(gloves.blood_DNA) - msg += span_warning("[T.He] [T.has] [icon2html(gloves,user.client)] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != "#030303") ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands!") + msg += span_warning("[T.He] [T.has] [icon2html(gloves,user.client)] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != "#030303") ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands![gloves_acc_msg]") else - msg += "[T.He] [T.has] [icon2html(gloves,user.client)] \a [gloves] on [T.his] hands." + msg += "[T.He] [T.has] [icon2html(gloves,user.client)] \a [gloves] on [T.his] hands.[gloves_acc_msg]" + else if(blood_DNA && !(skip_body & EXAMINE_SKIPHANDS)) msg += span_warning("[T.He] [T.has] [(hand_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained hands!") diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 0b11efd1303..883a4bd6626 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -597,7 +597,7 @@ user << browse("[name][info_links][stamps]", "window=[name]") return - else if(istype(P, /obj/item/stamp) || istype(P, /obj/item/clothing/gloves/ring/seal)) + else if(istype(P, /obj/item/stamp) || istype(P, /obj/item/clothing/accessory/ring/seal)) if(istype(P, /obj/item/stamp)) var/obj/item/stamp/the_stamp = P if(the_stamp.stamptext) @@ -605,7 +605,7 @@ else stamps += (stamps=="" ? "
" : "
") + span_italics("This paper has been stamped with the [the_stamp.name].") else - var/obj/item/clothing/gloves/ring/seal/the_stamp = P + var/obj/item/clothing/accessory/ring/seal/the_stamp = P if(the_stamp.stamptext) stamps += (stamps=="" ? "
" : "
") + span_italics("[the_stamp.stamptext]") else diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm index 741d3055a12..1ff0dbeada2 100644 --- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm @@ -198,7 +198,7 @@ name = "Phi's Personal Items" has_items = list( /obj/item/clothing/accessory/medal/bronze_heart, - /obj/item/clothing/gloves/ring/seal/signet/fluff/phi) + /obj/item/clothing/accessory/ring/seal/signet/fluff/phi) // Tabiranth: Ascian /obj/item/grenade/spawnergrenade/spirit diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index a4a102ce847..6361637d45d 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -1685,14 +1685,14 @@ Departamental Swimsuits, for general use item_state = "kilanosuit_p_mob" //Mewchild: Phi Vietsi -/obj/item/clothing/gloves/ring/seal/signet/fluff/phi +/obj/item/clothing/accessory/ring/seal/signet/fluff/phi name = "Phi's Bone Signet Ring" desc = "A signet ring belonging to Phi, carved from the bones of something long extinct, as a ward against bad luck." icon = 'icons/vore/custom_clothes_vr.dmi' icon_state = "phi_ring" -/obj/item/clothing/gloves/ring/seal/signet/fluff/phi/change_name(var/signet_name = "Unknown") +/obj/item/clothing/accessory/ring/seal/signet/fluff/phi/change_name(var/signet_name = "Unknown") name = "[signet_name]'s Bone Signet Ring" desc = "A signet ring belonging to [signet_name], carved from the bones of something long extinct, as a ward against bad luck." @@ -1949,12 +1949,13 @@ Departamental Swimsuits, for general use icon_override = 'icons/vore/custom_clothes_vr.dmi' //CappyCat:Cappy Fuzzlyfeathers -/obj/item/clothing/accessory/watch +/obj/item/clothing/accessory/watch/custom name = "silver pocket watch" desc = "A fancy silver-plated digital pocket watch. Looks expensive." icon = 'icons/obj/deadringer.dmi' icon_state = "deadringer" w_class = ITEMSIZE_SMALL + slot = ACCESSORY_SLOT_INSIGNIA slot_flags = SLOT_ID | SLOT_BELT | SLOT_TIE //Pimientopyro:Zaku Fyodorovna @@ -2706,7 +2707,7 @@ Departamental Swimsuits, for general use //Halored: Mercury -/obj/item/clothing/gloves/ring/material/void_opal/fluff/mercury +/obj/item/clothing/accessory/ring/material/void_opal/fluff/mercury name = "Mercury's Mate Ring" desc = "A band of void opal, given to Mercury by Lumen" diff --git a/code/modules/xenoarcheaology/artifacts/replicator_vr.dm b/code/modules/xenoarcheaology/artifacts/replicator_vr.dm index 144f51bd767..e8b1ff662a8 100644 --- a/code/modules/xenoarcheaology/artifacts/replicator_vr.dm +++ b/code/modules/xenoarcheaology/artifacts/replicator_vr.dm @@ -347,7 +347,7 @@ var/list/created_items = list() var/list/tgui_vore_selection = list() var/list/viable_items = list( - /obj/item/clothing/gloves/ring, + /obj/item/clothing/accessory/ring, /obj/item/clothing/gloves/evening, /obj/item/clothing/gloves/black, /obj/item/clothing/under/swimsuit/black, diff --git a/code/modules/xenoarcheaology/finds/find_spawning.dm b/code/modules/xenoarcheaology/finds/find_spawning.dm index 7c262bd3507..af11c748e72 100644 --- a/code/modules/xenoarcheaology/finds/find_spawning.dm +++ b/code/modules/xenoarcheaology/finds/find_spawning.dm @@ -576,7 +576,7 @@ apply_image_decorations = TRUE if(prob(25)) apply_material_decorations = FALSE - new_item = new /obj/item/clothing/gloves/ring/material(src.loc) + new_item = new /obj/item/clothing/accessory/ring/material(src.loc) item_type = new_item.name if(ARCHAEO_CLUB) diff --git a/icons/inventory/accessory/mob.dmi b/icons/inventory/accessory/mob.dmi index 587ec871283cc49f0247c646d0024adc7e2b92ff..9ec056adc92be7c369f6fae1c662d2da5da3a542 100644 GIT binary patch delta 10988 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 delta 10548 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 z zFGl)TNO0gBmABNfX1ynkjflX)P;3?kRYaA-U@+%BhM@-~h&P|?*}h<5AK*A2pC$LY zH*Rl>O!7b|jfnhaCCbvO`*~Zre>`_1I4zgs$e26N;i}ZgFkU3F8 zsuzXv+-sN08cWc#AByFQo9B>Kx$ytg#1%OtzJL(!QCz8u4Ks%3oUCM~c~TqHGgNRi zWoAGT$XM_H& z_3v6D0F$M`DV#BYAkO_5%=}A@ak=@!fva7b7IlvHo5whyNaY=Wdio1G9lbvO?ek^B zX9W;7DM>JpS&gAjsB$iyv0l5a-VeWmLSZkiR@#KES2TTY3Lme<&c*k{%e6l{XD1^X z+!VG?Vm{}vW^g~__)BBbg$v%}5x6a}$1aE$X8LFbLANn%-^a`L1s&(90RfTqhGm{Z zW;1f`$kgw0ZxhD!KcT^w-i@ETC!bsc|68o_OiKvF$ZjQ}DEK)Nide;VF2csdZ8BnY zaoNK_OxPujo3>ceqvCR4$_vWM3~bk!Wx08I?{1^~Pj=Fls;jD6_aM26&@uzCcUQz% zlxEIlk3SmbG6SXzN230r6F|g2cu0+~5k+WG`uimV|COAExzG`A^b8M0{aN$SxuuYs z{QAr4#zSKw4q8YcibXcTqs%cA{juNV1{5{H&DIVfkA~5{ak- zn=?9?+iwKWWk9&hH`12T;Gu-`Wf`)E@_(9efgfau<*vZ35UCK|qesI1b;_ zS>YU9Bg>VElIHvlbA$1Gts6&7!(F9oYnAa|;BSB$I}(<*Ek7;TM;hFj{m<$K`hE@K zua%p3x(DbW_2AOa1y-<6`*DA|H}TgU{^!~d=)b?+#Q5tGy&uo-2iZtCi)C-G(VaVy_q*Pe1QqU?V8O;E0e{zTONBff;@*WKMZE=51g23LD(-3 kcsS|5U*P|6%S^8NSa)^xH6JT5Fib~dhrT-Q(v9E$11=H%9{>OV delta 10410 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 f7bdoMhA(tWVzD-0