From ba998786d77d4ef5b39b0cf17976a688cc0c112b Mon Sep 17 00:00:00 2001 From: Nadyr Date: Tue, 22 Oct 2024 21:19:23 -0400 Subject: [PATCH 01/53] grindable ores, more grindable stacks, blacklisted slag --- code/__defines/chemistry.dm | 1 + .../objects/items/weapons/storage/bags.dm | 4 +- code/modules/reagents/machinery/grinder.dm | 89 +++++++++++++++---- 3 files changed, 74 insertions(+), 20 deletions(-) diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 63ea0e136f6..8213aa200f5 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -41,6 +41,7 @@ #define CE_DARKSIGHT "darksight" // Gives perfect vision in dark #define REAGENTS_PER_SHEET 20 +#define REAGENTS_PER_ORE 20 // Attached to CE_ANTIBIOTIC #define ANTIBIO_NORM 1 diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index e27d9ade0cc..d4aecf02793 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -141,7 +141,7 @@ to_chat(user, span_notice("\the [src] is too full to possibly fit anything else inside of it.")) return - if (istype(W, /obj/item/ore)) + if (istype(W, /obj/item/ore) && !istype(W, /obj/item/ore/slag)) var/obj/item/ore/ore = W stored_ore[ore.material]++ current_capacity++ @@ -178,6 +178,8 @@ if(current_pickup >= max_pickup) max_pickup_reached = 1 break + if(istype(O, /obj/item/ore/slag)) + continue var/obj/item/ore/ore = O stored_ore[ore.material]++ current_capacity++ diff --git a/code/modules/reagents/machinery/grinder.dm b/code/modules/reagents/machinery/grinder.dm index 096e89a9434..a20920fc7eb 100644 --- a/code/modules/reagents/machinery/grinder.dm +++ b/code/modules/reagents/machinery/grinder.dm @@ -1,3 +1,55 @@ +// Don't need a new list for every grinder in the game +var/global/list/sheet_reagents = list( //have a number of reagents divisible by REAGENTS_PER_SHEET (default 20) unless you like decimals. + /obj/item/stack/material/plastic = list("carbon","carbon","oxygen","chlorine","sulfur"), + /obj/item/stack/material/copper = list("copper"), + /obj/item/stack/material/wood = list("carbon","woodpulp","nitrogen","potassium","sodium"), + /obj/item/stack/material/stick = list("carbon","woodpulp","nitrogen","potassium","sodium"), + /obj/item/stack/material/log = list("carbon","woodpulp","nitrogen","potassium","sodium"), + /obj/item/stack/material/algae = list("carbon","nitrogen","nitrogen","phosphorus","phosphorus"), + /obj/item/stack/material/graphite = list("carbon"), + /obj/item/stack/material/aluminium = list("aluminum"), // The material is aluminium, but the reagent is aluminum... + /obj/item/stack/material/glass/reinforced = list("silicon","silicon","silicon","iron","carbon"), + /obj/item/stack/material/leather = list("carbon","carbon","protein","protein","triglyceride"), + /obj/item/stack/material/cloth = list("carbon","carbon","carbon","protein","sodium"), + /obj/item/stack/material/fiber = list("carbon","carbon","carbon","protein","sodium"), + /obj/item/stack/material/fur = list("carbon","carbon","carbon","sulfur","sodium"), + /obj/item/stack/material/deuterium = list("hydrogen"), + /obj/item/stack/material/glass/phoronrglass = list("silicon","silicon","silicon","phoron","phoron"), + /obj/item/stack/material/diamond = list("carbon"), + /obj/item/stack/material/durasteel = list("iron","iron","carbon","carbon","platinum"), + /obj/item/stack/material/wax = list("ethanol","triglyceride"), + /obj/item/stack/material/iron = list("iron"), + /obj/item/stack/material/uranium = list("uranium"), + /obj/item/stack/material/phoron = list("phoron"), + /obj/item/stack/material/gold = list("gold"), + /obj/item/stack/material/silver = list("silver"), + /obj/item/stack/material/platinum = list("platinum"), + /obj/item/stack/material/mhydrogen = list("hydrogen"), + /obj/item/stack/material/steel = list("iron", "carbon"), + /obj/item/stack/material/plasteel = list("iron", "iron", "carbon", "carbon", "platinum"), //8 iron, 8 carbon, 4 platinum, + /obj/item/stack/material/snow = list("water"), + /obj/item/stack/material/sandstone = list("silicon", "oxygen"), + /obj/item/stack/material/glass = list("silicon"), + /obj/item/stack/material/glass/phoronglass = list("platinum", "silicon", "silicon", "silicon"), //5 platinum, 15 silicon, + /obj/item/stack/material/supermatter = list("supermatter") + ) +var/global/list/ore_reagents = list( //have a number of reageents divisible by REAGENTS_PER_ORE (default 20) unless you like decimals. + /obj/item/ore/glass = list("silicon"), + /obj/item/ore/iron = list("iron"), + /obj/item/ore/coal = list("carbon"), + /obj/item/ore/phoron = list("phoron"), + /obj/item/ore/silver = list("silver"), + /obj/item/ore/gold = list("gold"), + /obj/item/ore/marble = list("silicon","aluminum","aluminum","sodium","calcium"), // Some nice variety here + /obj/item/ore/uranium = list("uranium"), + /obj/item/ore/diamond = list("carbon"), + /obj/item/ore/osmium = list("platinum"), // should contain osmium + /obj/item/ore/lead = list("lead"), + /obj/item/ore/hydrogen = list("hydrogen"), + /obj/item/ore/verdantium = list("radium","phoron","nitrogen","phosphorus","sodium"), // Some fun stuff to be useful with + /obj/item/ore/rutile = list("tungsten","oxygen") // Should be titanium +) + /obj/machinery/reagentgrinder name = "All-In-One Grinder" @@ -14,22 +66,6 @@ var/obj/item/reagent_containers/beaker = null var/limit = 10 var/list/holdingitems = list() - var/list/sheet_reagents = list( //have a number of reageents divisible by REAGENTS_PER_SHEET (default 20) unless you like decimals, - /obj/item/stack/material/iron = list("iron"), - /obj/item/stack/material/uranium = list("uranium"), - /obj/item/stack/material/phoron = list("phoron"), - /obj/item/stack/material/gold = list("gold"), - /obj/item/stack/material/silver = list("silver"), - /obj/item/stack/material/platinum = list("platinum"), - /obj/item/stack/material/mhydrogen = list("hydrogen"), - /obj/item/stack/material/steel = list("iron", "carbon"), - /obj/item/stack/material/plasteel = list("iron", "iron", "carbon", "carbon", "platinum"), //8 iron, 8 carbon, 4 platinum, - /obj/item/stack/material/snow = list("water"), - /obj/item/stack/material/sandstone = list("silicon", "oxygen"), - /obj/item/stack/material/glass = list("silicon"), - /obj/item/stack/material/glass/phoronglass = list("platinum", "silicon", "silicon", "silicon"), //5 platinum, 15 silicon, - /obj/item/stack/material/supermatter = list("supermatter") - ) var/static/radial_examine = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_examine") var/static/radial_eject = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_eject") @@ -137,7 +173,7 @@ return 0 - if(!sheet_reagents[O.type] && (!O.reagents || !O.reagents.total_volume)) + if(!global.sheet_reagents[O.type] && !global.ore_reagents[O.type] && (!O.reagents || !O.reagents.total_volume)) to_chat(user, "\The [O] is not suitable for blending.") return 1 @@ -228,10 +264,10 @@ if(remaining_volume <= 0) break - if(sheet_reagents[O.type]) + if(global.sheet_reagents[O.type]) var/obj/item/stack/stack = O if(istype(stack)) - var/list/sheet_components = sheet_reagents[stack.type] + var/list/sheet_components = global.sheet_reagents[stack.type] var/amount_to_take = max(0,min(stack.get_amount(),round(remaining_volume/REAGENTS_PER_SHEET))) if(amount_to_take) stack.use(amount_to_take) @@ -245,6 +281,21 @@ beaker.reagents.add_reagent(sheet_components, (amount_to_take*REAGENTS_PER_SHEET)) continue + if(global.ore_reagents[O.type]) + var/obj/item/ore/R = O + if(istype(R)) + var/list/ore_components = global.ore_reagents[R.type] + if(remaining_volume >= REAGENTS_PER_ORE) + holdingitems -= R + qdel(R) + if(islist(ore_components)) + var/amount_to_take = (REAGENTS_PER_ORE/(ore_components.len)) + for(var/i in ore_components) + beaker.reagents.add_reagent(i, amount_to_take) + else + beaker.reagents.add_reagent(ore_components, REAGENTS_PER_ORE) + continue + if(O.reagents) O.reagents.trans_to_obj(beaker, min(O.reagents.total_volume, remaining_volume)) if(O.reagents.total_volume == 0) From 48695958550d9630450cd9eaf7458ae1d8c63ec6 Mon Sep 17 00:00:00 2001 From: Killian Date: Tue, 29 Oct 2024 00:23:23 +0000 Subject: [PATCH 02/53] 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 Date: Tue, 29 Oct 2024 01:00:54 +0000 Subject: [PATCH 03/53] Update mob.dmi --- icons/inventory/accessory/mob.dmi | Bin 169760 -> 170195 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/inventory/accessory/mob.dmi b/icons/inventory/accessory/mob.dmi index 8b67d7d7decfa6b73633f5377250880492c85f5e..9c30c1c501d3e522274be1a0418177053dc61709 100644 GIT binary patch delta 11081 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 xU6WPF{%{{usJd9eTh delta 10643 zcmb8VWmr^Q)G$1hbc-}7Augn-g1jS5J2*P*++yHly5K~fqC=`QJR2EH-w z@44PT@AW?W$2o_+*4iufs=bG?uUMJoSdpYa8^!|=2&7KR`vwHUc;uq|-cHQG_LGgV zm7TGr1qkGnnwBygPRWPYJ-k)$!f;4kKYCza$3|WM%l8i(B&hLX31sg+`YFb(3czXl z<{d5^GUaS{9(d4(WHSU`uj=C8U#+(4-o0|WJL&J}Ru%7G9$Q|8E(kX9y)!yG+&Wwa z;2kO7IeTjFl_7c}mT;iX(%u!IUUB0)UBFn-w z$G7dbsy=Ew{yy>ML3Hx9IfNDJNstr|(C*U3a6fz_q|0bNXE_vJ@1lzR0>{nc=Qs>v ziuHcn(Pqzat(2M9QtRg1oH??27K4`7hOqn3n89F$gT|uB{!r<8PV9>?^)1K1xDiNf zz2!4oD_{94jtf_A+r&{UgM1IwCe)n^`Eg~+7eIOHI~V`yXV?}ApA*xpY`!lV1K(GT zzi&zl*@*tEG!-b+!jM#nr3k9ez3Vj6NqaWXHbZaxsbflAsqK5A6nZa=rf)h*CcNja zL6v9sCeO=y)Yl6;kbLr0a7&zr#gmdKVO=IHF8(nR$^6Ohjrj>JJ<-+mTyin7S8%dB z&DQFfZ)`AYa|=$v3$Ekvr^ieqhQ#E1_IcKw&CMEps;=J`|C1a0h^XHlhA zWe44d9x%a<8=sY2zh}V;TkMv`X9=c+^Sa8+ftq!wV7N3zT|I7bOK5#v1?u`{cdYzR z-Zn$b^EL_2iaJuiTI@dAl0j3<7YFn=#Q4>=`2vhQ4>u16jdGISiZVtGF#sZ6SJ-C- z`^2~;_Hw6mdC-XrqryjSz8Bgqt;NrxnI{~i++olr*NdB{d4yj|Uyg}4vF#KM8)iLE zxfI$u6WB6Xok>+l@-jJ>^$s%Mbuht$Y$%udE^H_QOzB0{NaBJ37dKB~k>hh^ zUfC;$Dw97Zw3hptLFpb*D1)}62xpDIFD03 z2gUQdpT_DT;k=QZ-tiBg04Q~g8tY2if_7r`7Z1aYDZ;>SDIY#xxXsKZBF8t$udZ~h zmAzkcSQZcMVQ>xYc^USGBo7zsk)?-xWe?d8r%LkFqc}m{b?%}p9&_TC)7D97^i>a; zxqf-0hbi_O)ehnqN)#uA8sHZv?4E1mbbnkAoU~o>q;3#@DU?Q_jOhLb= zj;*`q--X{Ko(}l4%{q$XEACSf+m>LvUc?2z+yj>K6Q!@wA3<&lyYqr+Bjx+s)OW)! z8shtm3rU1*9_b|_kTr98*`!QFKQ&5Py9flMU$Y&KQUSW4S;+WAXOlHl+L4ICZ(&(? zvI(dDpd9niQqpP>2oLfy+3*iXGf8M0id?^YozeT!*g9!fnahg7ZJqS#<5;yzBaLKG zv;BJBxM7Kep~r-s^mxYc?vv6=OV9>4{geeR3*O5dBc03>e`x}T@X--9nUIGtNyQf& z+j(h+2qFGxo%l-qTTxSkA+0QB$ukD_itF|;3!9TRU! z--72H{4{gFWL(Q7-a599E1XzoZQOJ{y75bnkenqo5jt;l*PY|YfjD$pKyM+n&|C|% z)+$bPuc|Hjxr{Qd1Ri9Oj8=#D(Dz}3g`ozy{J6<6`wUk3r3s~!ly1j98%pz{Rktqe z2g(L*MsVmcN=6}?Q>j%CT|Q}yr$AXuo5eP?WcC{x*%beD=v$z*vP$del2n?MUVs^s z1E+Nws)O3wPbG5zUF~WL#UYk&v~UXJ+b~Gh$`^?cK#td4lkqIWpmmA*Qpr1k^AMfj zp2>%;NvHU-k!PuCJQkDBCji{e-8;Qv=zPL`(~|NgTpH zsjoiQ95o9lyxI_P*Ydz%M85^e!&7=pqPyQ8c%Ilpk+PzL!+eDd2y(% z^M&MNVi6H!shCJR${9PR3wRD6q`=a`G5J*RVnH@tZlY`i)*)DMASD7^FS`zHy~A8| z6UwljlG4&ewcZl?JX3Al*IsxyN9oVbR+JpOY9hS5(wYlx0wCuX{vD_ zecpI~L;k?!rpH%WW=D4v@uk!b^TX~B>yV{0B6_XWFwD$~%>ZQ|++171mut;VGv61s z*gNHobH&}2AG?+p+WY?@93Q<2FvC@6;FFpI+`H9n3pxX zQj@wrFj>Qkud2p$8b1z6D-UJ}J`Jtx?*%UF&#ez%4r%YoIS51Wr2!XUND+{Rg~AmXC>HjZZGJO$ zFfmAsA^F_a=Eq_8hrP}`8s8i^bH#M;p$x$)U4Uh_E)(0?RPBSglMpqd0@*YXP0iWF z$gQg`mg?Ht+StRvgA2-lw9Yf}U$OhPCMG6|;G^BsZit$xxw$!ppU9gf5-dL|+(p!@ zg?@KTKM^Cq)KsZ~u)`0VbYyWcq9XvGQUU;=Y+CYMXftL8Ox2Z@oDWG!DJ9g^lPZgI zr1yaX8TjFH$5fLum#02K7AJ;@r6nYv%3`63JOH1z8-CEt=O97h$9tEPzjAq_yWqdb z3b(zzHNEfP^?;oYF9Xgg^n0^{cf?pro<9g=eF4k6B;B`V-c`MA*b$~E>;mOsof@ne zTme?cSy7#mCjjq)Ow{_#YibvIuTHT1QRTS-82m-z=?YVFA zv(wJL1eN<9)xCm}{jDj#?1wuRb_xmeo}wn|`&1$>TMVWOl+A~>7zNo_vI}mnZ`F4L z!3UvW@ZuUS`L09l`UUUov8!4K9+5jN{7eTNk_ zTc~0xnVQQfdH@0*kghuLBsCb!OSsWHrq!jabfi%3rbK>c@8~G1jMhNXf{8Ga{V(G# zs`jEn?-+yS(5x;#14-dNASym&e7(^H__hwiugs zWSF72|D%J0APMbyA0%#BS5uR6W@bhU5laXxWwI?l&>DNgOBpIz7^~(qrukqpcV7o- zeRF>P(^B=S?zm!h&sFx-%gu|+O|8n8?;pylqgYtImjNzgjWu%KCzQS$d=qLMlqQ*` z==-9b-OT!oa-kGsIhK2gPM+&7DW5yozPB^kN|w+xlh1&G5N57~-WbZT!o0jHDI$Xr z^LLHhTrsKHtw8RP)M!Ztv)S=)Y(ZjljBe5lwCVvK>8 zWeTP59`I6vSQ9zu4Is)B?czeSJoaB=njXw`v5)U|C;t&fdLeBL^J5h{Q$2Nqdeo$+ ztqDXG=7Z0!Zda|X`SPw{+R%XMrOFNvY7nvt4PMP?HA~{!HbhH(3|>~QKuHKHK3i-W z8pPs#t=wLugU&`gkwWMcmqKFYUFfUSjHmUq7(#ythOjK5Dqt44P}fN-m)&pJTd1~S zW)sPty|PLw)VLqqnJe`q7Gq4^wqN2@sJTm-tXD^33N(2>vD0RdZ32f>*fs#j;eke+ zUkrYf$7;)`X%m^^OqjOj)vjxur6lC3w$=Cd5`6F7hOnO~9{$qDSkp&LJ2N{eH=m~r z{GN_sS=wDdI@91IN9I$9Zy3lbw;B9LVw;W3rdd4c5yPhq-%znoZX+aI=a*A!ixWIa z^C6hpxEad|`f z*c5O-tB`COGA2?gtF-lwy)A*24V&DmD7OLbLNCr`nlY|Rk)b8S83PFL{1fnE-!#k0c>x zw`YdAq`c=%;qf6v^?bnArFNMTr0MuN?9Qz5Q3&IrvRH!ax-1Y$ zPd(toszzj4yyeO~PPd!wMfXM9)d~c8gageuvavUQ34p!#S1Pm$t=>9gF}9}5gH{Cd zHG+WwFz}n0P3dN<@UO^NEK7lb<=R7x@3Q7os*@#PJB!bnnVj3ZrX4>*#@Xdka@MYY z^e@M5FR ztB5Z0bhL0?wK?v^8u)oIcwvAC(w$w`6j~bzf4*J5xdUIbEg_-?IVh5@FWsrQR5ZcAAv9tWnmCUOOrc1 z=68quEsUS~k61sWK4{&3l$3I%bHmoD=iG?QP-9f$&LmB(8~1V4g|1CqYO3U)ot{3! z_7c0~albz02)Jzm53}oJAxh*sz?ib$$ken0(auT-8NMIR?uqmK@?x`sa1hbT! zY}odCfX-0T6uDgHpq8Vge)w5VEo<9Q8GX_S(BDBTg z;wGF=_z2~3PtS7@&0lS32W`5CcuawZh73FP!By|``O7JBWp(v5NCt71maQqw{KLpm z#_o@Jp?ef<53{?}qkk)PYFMdm4sIfQK-)owU6JM=xSh8PCQe6x%k^K+{ z5h(x0!;c^dv410%0EPEIBsxDbMA7*-m^(q?{}D(&d0_PyA3(gYI6Ue9BT)=QqWX^_ zO5}gdLzy?K)z0Ngp!s(js>Msyy-P2X%-T#L;kY;GqOPvqS05k$==rOeeaRbG^LZ%^ z27nsc6D5iI?QE9Hcs67YrS0(Wg^(6(I!dT?u2F^k*)vJL%~Qe5B2y`Ngk9@m#Kp(v zx>?=e_s{)_?JHiL*D%dQbbTbCoj0Nd1qUOpl9hcUTJIghJr3Z*8TURyFJJm*Wjz5| z-O>>J(Mr1n6U_<^hZ`9idr`HYU0eX4YR%^Gs!-0T&1xnk}(qj;r zr3X4Xdf29r(-+z46yYClo<9;*QzHd~!B+coe6g{yyrV6Tb)cZY#}@kfV)j-3QBj0} zAU2|)&@JL9tX5$Eb@QAWMr-RsadC0s=j6gj!j5oy7c~Jd%~~q?b2t;M6#|Tg)wJw< zfsBUPdrgN|TRv@vJifaAJlVW80JM!mvvW$@jWm7#ZI%vC7N~rq3JI62%~+UpGZmw4 ztyV)rBeX|Wr6uUgX4fIf?t4yj(9+4(;l(D~@<9lF-|WHG*6YUvo{I+(Dk>zP%;I7! zgt@=IANZB=){&-g64)F_`Xt~$58Bz=6SubJ@caRKL4dI|gmTtEjKm-#c;B*)1TVmD zc>qczj6eZ3tYFgnYG^7VgQn^b0L@`|`+3D{+Z(xoL?qu1r))PQLr~u=X?$~&)IIBi zA0*^${=r=!PsE|U+^PNRz2{ai6NmvgzjhO9vMxedZxI2WyE?}#9F9A9+!O!ap(rNf zBlm+%JFlo3$6p|;weGHG{I};5R<@WP;YPVSgg9^W1G|S^Y+aXJ|5hiaKL4#up1i{ zdCF?#Igrkll7CC1+yqk*C;oO^(JrDqo;D;7Xe^rY;ckc?%~!=@L0fXgdt+8$@TCQwn+|!z!8eIr!&Tv17O8tH;q$MVWuYb8}R!6kJ#1SgLA9JGMkDv1$9aa3Ta^(?FfiPinb@jvF zv)o|?gczuy9)%{h*)$DDPc`>_v?sHIqB_{WZcMRg1HOqCe2x1udvWDZis7zRYeWR- zP4}mmkwa`RABDXMJH(Z|lSbG<_$37zXm%E&si_mh)JIxJ(Sp>*s)=V*VFxD^KIVoh zw17IKqV=FU?RGIa2Wl!AeMx zBvrEmi?YCoJB*Iacd9fk+RYdUP*G`_mbQiY`M5psl%L7F50N8oO_tgd+qU9a(W`ZF zwd89bC1KoW|0rBHL}A+2nLsc?{6UCZj8IeIX!4y22!uN!CH7i*(qks>P^QkHAE~Sy zUQH-O^e4?YtIHzIE#U5)8iWVn6##ogBm>@6OO zMD2_G^9XlsjDU_>m8_uiuGleuprF=tt7TYjyt$ZLphlY#;lv{&k(FTHBRFYDSEfx_ zy_x$?y{^&M_c$ObOq!rS738UjNXiS09f#csp;T=6Wa}OG_V%{?__(iqn*4eGF0gkC zoe8kbT68-ZEUc*LfwjWT^Y+yF6fTONI#7`ydx5-nV0=F#@M%iNfKCdtm9I+X{Xh4n zO7@)h)SC+m(5nmwMJz2VM!A}mE$73V%L71bEtcujqb*x3iZ**zys0W} z@Ul&hEO+eQ8jAk@esg1fnur2vKI(|~q_U-$pJ9l7Eo^WoucHM27+1O+sd@z(7ob1} zp;|)Q7cuiA+XFIy=Icf)n_J==-a93!Wk8quo|b`@NyvV`nXJCzaHr-KNTA{Q)g^GS zd2z3-czHOz)_UI`4Mk{h^7+;lYYC)>xFmCqfR;nJxj*Ege3g|RwemmL$X;qckHZ7fjc;j)JIDflaUz)^xXqyO8ju!Y1m!HACaqxlW;yCLln)X_*Uo2}#L|eE5 zWvckx46S6uHx_-%oA*XvV&$@;$0*959;~z}8b|Fq-^*BnBk0wJn* zIcw#rh`Po!CT`juUM=sVjtm9aMQkQ-Av*R%qrzOeP!lJU#?kEtEgW22_40^K|Mmcr zu=`Z0wZo7q?a3r80s9JvNwO^Y7Xkf1F6ukBfVb%mHOH*gjZX{O#@J?leSea0?;qvE z2oq&wAFEJpLE`2^ORp`8x^r{In?%efh%(9%ceFCW5ZH}K^bgw$__QRk;^*+&F9pCg;S;(K_eC;6uFj=lWRbxsDTJk~P0XRL%SrIMI z5B;?~Q0TFbHd5ryYekx)(PpdY38`QL<-%C5vbL=#?sPQ8RgIMuf-(ST_DZgnEvkONm;_lUs20j8<8RaWC;y6x{V%&l#Crd4O(WQ@5#>MbF=+?OjdT0R^?@Y+`WXZS z_Z?twX;UPyKG$RMYN-u%u4fVWg6gbuiPhx zvvmCZ+scP#lVx09r;R2H4_RMA^x;$(j*$&x08QMeh}VAom2=WmO{1wjpMrukmvE_!Nw)+bDEzAEhjwvo8Zl1(RZeem9+*+&bNPa z?lXYHv!9sGt>|U*7HOw*J?Eh8#z@CpEpG*~vONip7XNw7KKE^_&xkRYP^^3X0wJUS1ZaLWiB;E9n@6pNBp% zW9^zb;8^2#R(IUcT*|)906oL>7W>68!vo+35|myII5&-vRdSOyy z_b8u;_@55zV+4b6rvsm*#6Dpac%i94G4v+p>sp;ph(3l+eMT` za$@9Zg&=)AT~0Lo;}h1hy;?Pqpb?2u$O8t^9_cYo6;oq#$o0tRjK!&p3Zts~na!S) zX(OB570CcnruGFi<%T7qvG}leJH4Fd`N)V9QV){g{N|LoF|dlZ$D0}QHC~thugw)+ zA>2y%B&n*K(*39#@pG7WAHiEZiZ#$cvAZ*P?W-O}NlC)&D7rINz82aubX(cz5~TI5 zK!;WfE<#Y!Z~he? zU{Qncs9&LiE_c3FOlcr7wARClJvfP%<;!1tQn>`xu19R}Al0M@Q(^mmK}3?KMl+TD zw>67In-tj!q^B1pEiU!`-PleA9I?BTnGHhkWvU+X=Oh>SY|v@fF{8U5J5gS|Mw+-d z)nGMm%48MyS`V+**X99q8O_PtpxV=Ps_d*OO=6;oZaOKQt}wmEe?6 z*Ej5Lg$^RX2dib#ng%!O#v9(GK-btEK_*0cIc^wMV|CoUpkkWsQxQ6gn~Sq19S4|O zN>SR1RZ23O&t{p`=2uAU!+OEhW)QJ2uIQs?JfB`vpcpznR+@BDhBf57S*A|8E6#;T zS8!?To`kts4(_yI%I;kz$z8n6xPJTF3bA3sY5?ox=b_Y~yE_kQsGaiGK|^*~=N-NC z5x+e`ESK5~zs5{ibMk^riZR*6>oWSZtO2pExTc-_B;rO67xNwo{z<{cc%J!kJ4G2h z_pBv1d{-D3A}|>FIE!)Zm7b z8`y?)MmF@nC?ZmJ%$=>jy4PQWC*PI=cB?{hlWz1jAx@tX>aH*MTw5X#20+}js^K%u zCh$$SJpXzhxFI&H3jfl8FY5nQrg1f{Wja}b72oyZ}>o8HA z1ExY>6ND^<6nV)i7le_v1@=9I@N!ctnprKWY}6p{Dc2l6__WPhviPsBsO$l;$py}n zjQK%}3(yR!8tHw=4-ggChjq+$P}f!mkM?gt3v3ETqS6Lpq>&!i%c=P3oFtuS-Gu#J z#K@bhZ9U3P#Yz^9-U22!P52}=P01z#O_b`>-{PB%Il6MQ;Mj<77q(3iv3-0hQs6@f zn~{T+6i|ko6qs^Nrb#q^XQ}9Afq!S9y_WnF^!tZ`ZV9v6k4gXMzDrR!6lrd}oB6-2 f@PF%T?rAx&&fus)q0WeZy#z^#%ZinY=z0HtJqDVe From 555ef7619781c557a79c1fa053f7104172ee49b7 Mon Sep 17 00:00:00 2001 From: Killian Date: Tue, 29 Oct 2024 01:09:42 +0000 Subject: [PATCH 04/53] Update drgnplateu.dmm --- maps/submaps/surface_submaps/wilderness/drgnplateu.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maps/submaps/surface_submaps/wilderness/drgnplateu.dmm b/maps/submaps/surface_submaps/wilderness/drgnplateu.dmm index 2f202bffdac..7043f0230ea 100644 --- a/maps/submaps/surface_submaps/wilderness/drgnplateu.dmm +++ b/maps/submaps/surface_submaps/wilderness/drgnplateu.dmm @@ -41,7 +41,7 @@ /obj/structure/flora/grass/green{ pixel_x = -8 }, -/obj/item/clothing/gloves/ring/material/gold, +/obj/item/clothing/accessory/ring/material/gold, /obj/item/clothing/ears/earring/stud/gold, /obj/item/gun/projectile/deagle/gold{ pixel_x = -11; From f865da7a6f5d216334abbfb3bc56bb17c0a45bd3 Mon Sep 17 00:00:00 2001 From: Killian Date: Tue, 29 Oct 2024 01:35:28 +0000 Subject: [PATCH 05/53] Update rings.dm --- code/modules/clothing/accessories/rings.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/clothing/accessories/rings.dm b/code/modules/clothing/accessories/rings.dm index 855cce0212a..e7eb623f4ce 100644 --- a/code/modules/clothing/accessories/rings.dm +++ b/code/modules/clothing/accessories/rings.dm @@ -45,8 +45,8 @@ flags = OPENCONTAINER origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 4) -/obj/item/clothing/accessory/ring/reagent/New() - ..() +/obj/item/clothing/accessory/ring/reagent/Initialize() + . = ..() create_reagents(15) /obj/item/clothing/accessory/ring/reagent/equipped(var/mob/living/carbon/human/H) @@ -68,8 +68,8 @@ icon_state = "material" origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5) -/obj/item/clothing/accessory/ring/reagent/sleepy/New() - ..() +/obj/item/clothing/accessory/ring/reagent/sleepy/Initialize() + . = ..() reagents.add_reagent("chloralhydrate", 15) // Less than a sleepy-pen, but still enough to knock someone out ///////////////////////////////////////// From 878bab8abb23443b3b2d13f5c617b6c37e1c59a1 Mon Sep 17 00:00:00 2001 From: Killian Date: Fri, 1 Nov 2024 07:06:17 +0000 Subject: [PATCH 06/53] climbing/swimming trait tweak --- .../mob/living/carbon/human/species/species.dm | 3 +++ .../human/species/station/traits_vr/negative.dm | 4 ++-- .../human/species/station/traits_vr/positive.dm | 12 ++++++------ code/modules/multiz/ladders.dm | 7 ++++++- code/modules/multiz/movement.dm | 15 +++++++++++---- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 72b4396d61a..863e6cd0a99 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -212,6 +212,9 @@ var/can_space_freemove = FALSE // Can we freely move in space? var/can_zero_g_move = FALSE // What about just in zero-g non-space? + var/swim_mult = 1 //multiplier to our z-movement rate for swimming + var/climb_mult = 1 //multiplier to our z-movement rate for lattices/catwalks + var/item_slowdown_mod = 1 // How affected by item slowdown the species is. var/primitive_form // Lesser form, if any (ie. monkey for humans) var/greater_form // Greater form, if any, ie. human for monkeys. diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm index 84fba1d1cba..27dfcf63073 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm @@ -188,7 +188,7 @@ /datum/trait/negative/bad_swimmer name = "Bad Swimmer" - desc = "You can't swim very well, all water slows you down a lot and you drown in deep water." + desc = "You can't swim very well, all water slows you down a lot and you drown in deep water. You also swim up and down 25% slower." cost = -1 custom_only = FALSE - var_changes = list("bad_swimmer" = 1, "water_movement" = 4) + var_changes = list("bad_swimmer" = 1, "water_movement" = 4, "swim_mult" = 1.25) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index 7551915c9dc..7457f9d6872 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -246,7 +246,7 @@ /datum/trait/positive/wall_climber name = "Climber, Amateur" - desc = "You can climb certain walls without tools! This is likely a personal skill you developed." + desc = "You can climb certain walls without tools! This is likely a personal skill you developed. You can also climb lattices and ladders a little bit faster than everyone else." tutorial = "You must approach a wall and right click it and select the \ 'climb wall' verb to climb it. You suffer from a movement delay of 1.5 with this trait.\n \ Your total climb time is expected to be 17.5 seconds. Tools may reduce this. \n\n \ @@ -255,12 +255,12 @@ cost = 1 custom_only = FALSE banned_species = list(SPECIES_TAJ, SPECIES_VASILISSAN) // They got unique climbing delay. - var_changes = list("can_climb" = TRUE) + var_changes = list("can_climb" = TRUE, "climb_mult" = 0.9) excludes = list(/datum/trait/positive/wall_climber_pro, /datum/trait/positive/wall_climber_natural) /datum/trait/positive/wall_climber_natural name = "Climber, Natural" - desc = "You can climb certain walls without tools! This is likely due to the unique anatomy of your species. CUSTOM AND XENOCHIM ONLY" + desc = "You can climb certain walls without tools! This is likely due to the unique anatomy of your species. You can climb lattices and ladders slightly faster than everyone else. CUSTOM AND XENOCHIM ONLY" tutorial = "You must approach a wall and right click it and select the \ 'climb wall' verb to climb it. You suffer from a movement delay of 1.5 with this trait.\n \ Your total climb time is expected to be 17.5 seconds. Tools may reduce this. \n\n \ @@ -268,13 +268,13 @@ a climbable wall. To climbe like so, use the verb 'Climb Down Wall' in IC tab!" cost = 0 custom_only = FALSE - var_changes = list("can_climb" = TRUE) + var_changes = list("can_climb" = TRUE, "climb_mult" = 0.8) allowed_species = list(SPECIES_XENOCHIMERA, SPECIES_CUSTOM) //So that we avoid needless bloat for xenochim excludes = list(/datum/trait/positive/wall_climber_pro, /datum/trait/positive/wall_climber) /datum/trait/positive/wall_climber_pro name = "Climber, Professional" - desc = "You can climb certain walls without tools! You are a professional rock climber at this, letting you climb almost twice as fast!" + desc = "You can climb certain walls without tools! You are a professional rock climber at this, letting you climb almost twice as fast! You can also climb lattices and ladders a fair bit faster than everyone else!" tutorial = "You must approach a wall and right click it and select the \ 'climb wall' verb to climb it. Your movement delay is just 1.25 with this trait.\n \ Your climb time is expected to be 9 seconds. Tools may reduce this. \n\n \ @@ -282,7 +282,7 @@ a climbable wall. To climbe like so, use the verb 'Climb Down Wall' in IC tab!" cost = 2 custom_only = FALSE - var_changes = list("climbing_delay" = 1.25) + var_changes = list("climbing_delay" = 1.25, "climb_mult" = 0.6) varchange_type = TRAIT_VARCHANGE_LESS_BETTER excludes = list(/datum/trait/positive/wall_climber,/datum/trait/positive/wall_climber_natural) diff --git a/code/modules/multiz/ladders.dm b/code/modules/multiz/ladders.dm index db56742c036..7822a87d80f 100644 --- a/code/modules/multiz/ladders.dm +++ b/code/modules/multiz/ladders.dm @@ -107,7 +107,12 @@ target_ladder.audible_message(span_notice("You hear something coming [direction] \the [src]"), runemessage = "clank clank") - if(do_after(M, climb_time, src)) + var/climb_modifier = 1 + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/MS = M + climb_modifier = MS.species.climb_mult + + if(do_after(M, (climb_time * climb_modifier), src)) var/turf/T = get_turf(target_ladder) for(var/atom/A in T) if(!A.CanPass(M, M.loc, 1.5, 0)) diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index 66fe8d90efe..c43a57a17a7 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -19,6 +19,13 @@ var/obj/mecha/mech = loc return mech.relaymove(src,direction) + var/swim_modifier = 1 + var/climb_modifier = 1 + if(istype(src,/mob/living/carbon/human)) + var/mob/living/carbon/human/MS = src + swim_modifier = MS.species.swim_mult + climb_modifier = MS.species.climb_mult + if(!can_ztravel()) to_chat(src, span_warning("You lack means of travel in that direction.")) return @@ -49,7 +56,7 @@ if(direction == DOWN) var/turf/simulated/floor/water/deep/ocean/diving/sink = start if(istype(sink) && !destination.density) - var/pull_up_time = max(3 SECONDS + (src.movement_delay() * 10), 1) + var/pull_up_time = max((3 SECONDS + (src.movement_delay() * 10) * swim_modifier), 1) to_chat(src, span_notice("You start diving underwater...")) src.audible_message(span_notice("[src] begins to dive under the water."), runemessage = "splish splosh") if(do_after(src, pull_up_time)) @@ -75,7 +82,7 @@ var/turf/simulated/floor/water/deep/ocean/diving/surface = destination if(lattice) - var/pull_up_time = max(5 SECONDS + (src.movement_delay() * 10), 1) + var/pull_up_time = max((5 SECONDS + (src.movement_delay() * 10) * climb_modifier), 1) to_chat(src, span_notice("You grab \the [lattice] and start pulling yourself upward...")) src.audible_message(span_notice("[src] begins climbing up \the [lattice]."), runemessage = "clank clang") if(do_after(src, pull_up_time)) @@ -85,7 +92,7 @@ return 0 else if(istype(surface)) - var/pull_up_time = max(5 SECONDS + (src.movement_delay() * 10), 1) + var/pull_up_time = max((5 SECONDS + (src.movement_delay() * 10) * swim_modifier), 1) to_chat(src, span_notice("You start swimming upwards...")) src.audible_message(span_notice("[src] begins to swim towards the surface."), runemessage = "splish splosh") if(do_after(src, pull_up_time)) @@ -95,7 +102,7 @@ return 0 else if(catwalk?.hatch_open) - var/pull_up_time = max(5 SECONDS + (src.movement_delay() * 10), 1) + var/pull_up_time = max((5 SECONDS + (src.movement_delay() * 10) * climb_modifier), 1) to_chat(src, span_notice("You grab the edge of \the [catwalk] and start pulling yourself upward...")) var/old_dest = destination destination = get_step(destination, dir) // mob's dir From 1c730349403b47f4af5bcd1d1f44b3d9bc24ca78 Mon Sep 17 00:00:00 2001 From: Killian Date: Fri, 1 Nov 2024 07:38:52 +0000 Subject: [PATCH 07/53] pro swimmer trait --- .../carbon/human/species/station/traits_vr/negative.dm | 2 ++ .../carbon/human/species/station/traits_vr/positive.dm | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm index 27dfcf63073..ffd9f10b88b 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm @@ -192,3 +192,5 @@ cost = -1 custom_only = FALSE var_changes = list("bad_swimmer" = 1, "water_movement" = 4, "swim_mult" = 1.25) + varchange_type = TRAIT_VARCHANGE_LESS_BETTER + excludes = list(/datum/trait/positive/good_swimmer) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index 7457f9d6872..4dc4a6f47c2 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -292,3 +292,13 @@ /datum/trait/positive/wall_climber_pro/apply(var/datum/species/S,var/mob/living/carbon/human/H) ..() S.can_climb = TRUE + +/datum/trait/positive/good_swimmer + name = "Pro Swimmer" + desc = "You were top of your group in swimming class! This is of questionable usefulness on most planets, but hey, maybe you'll get to visit a nice beach world someday?" + tutorial = "You move faster in water, and can move up and down z-levels faster than other swimmers!" + cost = 1 + custom_only = FALSE + var_changes = list("water_movement" = -0.5, "swim_mult" = 0.5) + varchange_type = TRAIT_VARCHANGE_LESS_BETTER + excludes = list(/datum/trait/negative/bad_swimmer) From 7fd0fba5559e169b523ca2445c00bae34622097c Mon Sep 17 00:00:00 2001 From: Killian Date: Fri, 1 Nov 2024 07:47:51 +0000 Subject: [PATCH 08/53] Update positive.dm --- .../living/carbon/human/species/station/traits_vr/positive.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index 4dc4a6f47c2..c002ee0a886 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -299,6 +299,6 @@ tutorial = "You move faster in water, and can move up and down z-levels faster than other swimmers!" cost = 1 custom_only = FALSE - var_changes = list("water_movement" = -0.5, "swim_mult" = 0.5) + var_changes = list("water_movement" = -2, "swim_mult" = 0.5) varchange_type = TRAIT_VARCHANGE_LESS_BETTER excludes = list(/datum/trait/negative/bad_swimmer) From f214bde20c24a1cb96403463979582d0dbded5a3 Mon Sep 17 00:00:00 2001 From: Killian Date: Fri, 1 Nov 2024 07:52:41 +0000 Subject: [PATCH 09/53] Update station_vr.dm --- .../mob/living/carbon/human/species/station/station_vr.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/species/station/station_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_vr.dm index e623591f576..6532e7c7492 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_vr.dm @@ -110,6 +110,7 @@ water_breather = TRUE water_movement = -4 //Negates shallow. Halves deep. + swim_mult = 0.5 flesh_color = "#AFA59E" base_color = "#777777" From 6507d7d2318859f042b6e09d969246f313bc2617 Mon Sep 17 00:00:00 2001 From: Killian Date: Fri, 1 Nov 2024 07:54:34 +0000 Subject: [PATCH 10/53] Update positive.dm --- .../living/carbon/human/species/station/traits_vr/positive.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index c002ee0a886..b53ef1d7782 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -302,3 +302,4 @@ var_changes = list("water_movement" = -2, "swim_mult" = 0.5) varchange_type = TRAIT_VARCHANGE_LESS_BETTER excludes = list(/datum/trait/negative/bad_swimmer) + banned_species = list(SPECIES_AKULA) // They already swim better than this From a0a2bb27ea8113e8d6ba5ac1d415d3dc0a846e9f Mon Sep 17 00:00:00 2001 From: Killian Date: Mon, 4 Nov 2024 02:34:23 +0000 Subject: [PATCH 11/53] speed tweaks --- .../mob/living/carbon/human/species/station/station.dm | 2 ++ .../carbon/human/species/station/station_special_vr.dm | 2 ++ .../carbon/human/species/station/traits_vr/positive.dm | 9 +++------ 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index c2d52b273b9..cce23f93615 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -242,6 +242,8 @@ reagent_tag = IS_TAJARA allergens = ALLERGEN_STIMULANT + climb_mult = 0.75 + move_trail = /obj/effect/decal/cleanable/blood/tracks/paw heat_discomfort_level = 292 diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm index e2a346158a3..997aac129f9 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm @@ -384,6 +384,8 @@ silk_reserve = 500 silk_max_reserve = 1000 + climb_mult = 0.75 + /datum/species/spider/handle_environment_special(var/mob/living/carbon/human/H) if(H.stat == DEAD) // If they're dead they won't need anything. return diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index b53ef1d7782..2647603e8fb 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -241,9 +241,6 @@ cost = 1 var_changes = list("throwforce_absorb_threshold" = 10) - - - /datum/trait/positive/wall_climber name = "Climber, Amateur" desc = "You can climb certain walls without tools! This is likely a personal skill you developed. You can also climb lattices and ladders a little bit faster than everyone else." @@ -255,7 +252,7 @@ cost = 1 custom_only = FALSE banned_species = list(SPECIES_TAJ, SPECIES_VASILISSAN) // They got unique climbing delay. - var_changes = list("can_climb" = TRUE, "climb_mult" = 0.9) + var_changes = list("can_climb" = TRUE, "climb_mult" = 0.75) excludes = list(/datum/trait/positive/wall_climber_pro, /datum/trait/positive/wall_climber_natural) /datum/trait/positive/wall_climber_natural @@ -268,7 +265,7 @@ a climbable wall. To climbe like so, use the verb 'Climb Down Wall' in IC tab!" cost = 0 custom_only = FALSE - var_changes = list("can_climb" = TRUE, "climb_mult" = 0.8) + var_changes = list("can_climb" = TRUE, "climb_mult" = 0.75) allowed_species = list(SPECIES_XENOCHIMERA, SPECIES_CUSTOM) //So that we avoid needless bloat for xenochim excludes = list(/datum/trait/positive/wall_climber_pro, /datum/trait/positive/wall_climber) @@ -282,7 +279,7 @@ a climbable wall. To climbe like so, use the verb 'Climb Down Wall' in IC tab!" cost = 2 custom_only = FALSE - var_changes = list("climbing_delay" = 1.25, "climb_mult" = 0.6) + var_changes = list("climbing_delay" = 1.25, "climb_mult" = 0.5) varchange_type = TRAIT_VARCHANGE_LESS_BETTER excludes = list(/datum/trait/positive/wall_climber,/datum/trait/positive/wall_climber_natural) From 9fff34e6ad0bb045c56ffa8083bb1fc847ac9955 Mon Sep 17 00:00:00 2001 From: Killian Date: Thu, 7 Nov 2024 03:06:56 +0000 Subject: [PATCH 12/53] attachable knuckledusters and force transfer --- code/datums/autolathe/arms.dm | 2 +- .../game/objects/items/weapons/material/shards.dm | 3 +-- code/game/objects/random/misc.dm | 2 +- code/game/objects/random/mob_vr.dm | 2 +- code/game/objects/structures/trash_pile_vr.dm | 2 +- code/modules/clothing/accessories/accessory.dm | 9 +++++++++ code/modules/clothing/accessories/hands.dm | 13 +++++++++++++ code/modules/clothing/accessories/rings.dm | 2 ++ code/modules/clothing/gloves/miscellaneous.dm | 15 --------------- maps/redgate/cybercity.dmm | 2 +- maps/redgate/fantasy.dmm | 2 +- maps/submaps/admin_use_vr/kk_mercship.dmm | 4 ++-- maps/submaps/depreciated_vr/mercbase.dmm | 10 +++++----- vorestation.dme | 1 + 14 files changed, 39 insertions(+), 30 deletions(-) create mode 100644 code/modules/clothing/accessories/hands.dm diff --git a/code/datums/autolathe/arms.dm b/code/datums/autolathe/arms.dm index 9bceaf27e6d..41caf5a74d9 100644 --- a/code/datums/autolathe/arms.dm +++ b/code/datums/autolathe/arms.dm @@ -443,7 +443,7 @@ /datum/category_item/autolathe/arms/knuckledusters name = "knuckle dusters" - path =/obj/item/clothing/gloves/knuckledusters + path =/obj/item/clothing/accessory/knuckledusters hidden = 1 /datum/category_item/autolathe/arms/tacknife diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm index ecd8df84568..3095bce5845 100644 --- a/code/game/objects/items/weapons/material/shards.dm +++ b/code/game/objects/items/weapons/material/shards.dm @@ -65,8 +65,7 @@ var/light_glove_d = rand(2, 4) var/no_glove_d = rand(4, 6) var/list/forbidden_gloves = list( - /obj/item/clothing/gloves/sterile, - /obj/item/clothing/gloves/knuckledusters + /obj/item/clothing/gloves/sterile ) if(src == user.l_hand) diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index adc52260937..51c745c1cec 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -263,7 +263,7 @@ prob(6);/obj/item/material/butterflyblade, prob(6);/obj/item/material/butterflyhandle, prob(2);/obj/item/material/butterfly/switchblade, - prob(2);/obj/item/clothing/gloves/knuckledusters, + prob(2);/obj/item/clothing/accessory/knuckledusters, prob(1);/obj/item/material/knife/tacknife, prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc, prob(1);/obj/item/beartrap, diff --git a/code/game/objects/random/mob_vr.dm b/code/game/objects/random/mob_vr.dm index 6b7dfa39679..e13801e1497 100644 --- a/code/game/objects/random/mob_vr.dm +++ b/code/game/objects/random/mob_vr.dm @@ -154,7 +154,7 @@ prob(4);/obj/item/storage/pill_bottle/zoom, prob(4);/obj/item/material/butterfly, prob(2);/obj/item/material/butterfly/switchblade, - prob(2);/obj/item/clothing/gloves/knuckledusters, + prob(2);/obj/item/clothing/accessory/knuckledusters, prob(2);/obj/item/reagent_containers/syringe/drugs, prob(1);/obj/item/material/knife/tacknife, prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc, diff --git a/code/game/objects/structures/trash_pile_vr.dm b/code/game/objects/structures/trash_pile_vr.dm index 26d9b82066c..c53a14b659b 100644 --- a/code/game/objects/structures/trash_pile_vr.dm +++ b/code/game/objects/structures/trash_pile_vr.dm @@ -292,7 +292,7 @@ prob(3);/obj/item/cracker, prob(3);/obj/item/material/butterfly, prob(3);/obj/item/material/butterfly/switchblade, - prob(3);/obj/item/clothing/gloves/knuckledusters, + prob(3);/obj/item/clothing/accessory/knuckledusters, prob(3);/obj/item/clothing/gloves/heavy_engineer, prob(3);/obj/item/reagent_containers/syringe/drugs, prob(2);/obj/item/implanter/sizecontrol, diff --git a/code/modules/clothing/accessories/accessory.dm b/code/modules/clothing/accessories/accessory.dm index 7c4b968b093..29721f42af5 100644 --- a/code/modules/clothing/accessories/accessory.dm +++ b/code/modules/clothing/accessories/accessory.dm @@ -82,6 +82,11 @@ src.forceMove(S) has_suit.add_overlay(get_inv_overlay()) + has_suit.force += force + if(istype(S,/obj/item/clothing/gloves)) + var/obj/item/clothing/gloves/has_gloves = S + has_gloves.punch_force += force + if(user) to_chat(user, span_notice("You attach \the [src] to \the [has_suit].")) add_fingerprint(user) @@ -90,6 +95,10 @@ if(!has_suit) return has_suit.cut_overlay(get_inv_overlay()) + has_suit.force = initial(has_suit.force) + if(istype(has_suit,/obj/item/clothing/gloves)) + var/obj/item/clothing/gloves/has_gloves = has_suit + has_gloves.punch_force = initial(has_gloves.punch_force) has_suit = null if(user) usr.put_in_hands(src) diff --git a/code/modules/clothing/accessories/hands.dm b/code/modules/clothing/accessories/hands.dm new file mode 100644 index 00000000000..433dac69c26 --- /dev/null +++ b/code/modules/clothing/accessories/hands.dm @@ -0,0 +1,13 @@ +/obj/item/clothing/accessory/knuckledusters + name = "knuckle dusters" + desc = "A pair of brass knuckles. Generally used to enhance the user's punches." + icon_state = "knuckledusters" + slot = ACCESSORY_SLOT_RING + slot_flags = SLOT_GLOVES + matter = list(MAT_STEEL = 500) + attack_verb = list("punched", "beaten", "struck") + siemens_coefficient = 1 + force = 5 + icon = 'icons/inventory/hands/item.dmi' + drop_sound = 'sound/items/drop/metalboots.ogg' + pickup_sound = 'sound/items/pickup/toolbox.ogg' diff --git a/code/modules/clothing/accessories/rings.dm b/code/modules/clothing/accessories/rings.dm index e7eb623f4ce..2be023e1295 100644 --- a/code/modules/clothing/accessories/rings.dm +++ b/code/modules/clothing/accessories/rings.dm @@ -16,6 +16,8 @@ icon = 'icons/inventory/hands/item.dmi' drop_sound = 'sound/items/drop/ring.ogg' pickup_sound = 'sound/items/pickup/ring.ogg' + force = 2 + siemens_coefficient = 1 ///////////////////////////////////////// //Standard Rings diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index cb5e214fd68..31e641348a5 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -121,21 +121,6 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE -/obj/item/clothing/gloves/knuckledusters - name = "knuckle dusters" - desc = "A pair of brass knuckles. Generally used to enhance the user's punches." - icon_state = "knuckledusters" - matter = list(MAT_STEEL = 500) - attack_verb = list("punched", "beaten", "struck") - flags = THICKMATERIAL // Stops rings from increasing hit strength - siemens_coefficient = 1 - fingerprint_chance = 100 - overgloves = 1 - force = 5 - punch_force = 5 - drop_sound = 'sound/items/drop/metalboots.ogg' - pickup_sound = 'sound/items/pickup/toolbox.ogg' - /obj/item/clothing/gloves/ranger var/glovecolor = "white" name = "ranger gloves" diff --git a/maps/redgate/cybercity.dmm b/maps/redgate/cybercity.dmm index b6ee0422167..f805c026d89 100644 --- a/maps/redgate/cybercity.dmm +++ b/maps/redgate/cybercity.dmm @@ -9085,7 +9085,7 @@ /turf/simulated/floor/tiled/white, /area/redgate/city/supermarket) "lXc" = ( -/obj/item/clothing/gloves/knuckledusters, +/obj/item/clothing/accessory/knuckledusters, /turf/simulated/floor/wood/alt/tile, /area/redgate/city/fightclub) "lXi" = ( diff --git a/maps/redgate/fantasy.dmm b/maps/redgate/fantasy.dmm index 55252e07c65..3ab8fa68a0e 100644 --- a/maps/redgate/fantasy.dmm +++ b/maps/redgate/fantasy.dmm @@ -5126,7 +5126,7 @@ /area/redgate/fantasy/house) "FQ" = ( /obj/structure/table/woodentable, -/obj/item/clothing/gloves/knuckledusters, +/obj/item/clothing/accessory/knuckledusters, /turf/simulated/floor/wood/alt, /area/redgate/fantasy/house) "FS" = ( diff --git a/maps/submaps/admin_use_vr/kk_mercship.dmm b/maps/submaps/admin_use_vr/kk_mercship.dmm index 79a61b4b31e..ae2921fbf7d 100644 --- a/maps/submaps/admin_use_vr/kk_mercship.dmm +++ b/maps/submaps/admin_use_vr/kk_mercship.dmm @@ -9996,8 +9996,8 @@ /obj/machinery/recharger/wallcharger{ pixel_y = 20 }, -/obj/item/clothing/gloves/knuckledusters, -/obj/item/clothing/gloves/knuckledusters, +/obj/item/clothing/accessory/knuckledusters, +/obj/item/clothing/accessory/knuckledusters, /obj/item/flash, /obj/item/flash, /obj/item/laser_pointer/upgraded, diff --git a/maps/submaps/depreciated_vr/mercbase.dmm b/maps/submaps/depreciated_vr/mercbase.dmm index 097b6bf8a43..1c3ea488ffc 100644 --- a/maps/submaps/depreciated_vr/mercbase.dmm +++ b/maps/submaps/depreciated_vr/mercbase.dmm @@ -2463,11 +2463,11 @@ }, /area/antag/antag_base) "dM" = ( -/obj/item/clothing/gloves/knuckledusters, -/obj/item/clothing/gloves/knuckledusters, -/obj/item/clothing/gloves/knuckledusters, -/obj/item/clothing/gloves/knuckledusters, -/obj/item/clothing/gloves/knuckledusters, +/obj/item/clothing/accessory/knuckledusters, +/obj/item/clothing/accessory/knuckledusters, +/obj/item/clothing/accessory/knuckledusters, +/obj/item/clothing/accessory/knuckledusters, +/obj/item/clothing/accessory/knuckledusters, /obj/structure/table/steel, /obj/effect/floor_decal/borderfloorblack{ dir = 6 diff --git a/vorestation.dme b/vorestation.dme index 0d08bb68dca..b356b34d550 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2137,6 +2137,7 @@ #include "code\modules\clothing\accessories\badges_vr.dm" #include "code\modules\clothing\accessories\clothing.dm" #include "code\modules\clothing\accessories\clothing_vr.dm" +#include "code\modules\clothing\accessories\hands.dm" #include "code\modules\clothing\accessories\holster.dm" #include "code\modules\clothing\accessories\holster_vr.dm" #include "code\modules\clothing\accessories\lockets.dm" From 7c0942e8b05b718692ca2ce5e3d248a104206870 Mon Sep 17 00:00:00 2001 From: Killian Date: Fri, 8 Nov 2024 10:49:57 +0000 Subject: [PATCH 13/53] restore bonus damage w/o gloves --- code/__defines/items_clothing.dm | 2 +- code/modules/clothing/accessories/accessory.dm | 2 ++ code/modules/clothing/accessories/hands.dm | 5 +++++ code/modules/clothing/accessories/rings.dm | 1 + code/modules/mob/living/carbon/human/human_attackhand.dm | 8 ++++++-- 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/code/__defines/items_clothing.dm b/code/__defines/items_clothing.dm index 8ecdb1326c0..2a0b2ce9dea 100644 --- a/code/__defines/items_clothing.dm +++ b/code/__defines/items_clothing.dm @@ -40,7 +40,7 @@ #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_RING 0x20000 //rings, knuckledusters #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. diff --git a/code/modules/clothing/accessories/accessory.dm b/code/modules/clothing/accessories/accessory.dm index 29721f42af5..56234bb5bbd 100644 --- a/code/modules/clothing/accessories/accessory.dm +++ b/code/modules/clothing/accessories/accessory.dm @@ -12,6 +12,8 @@ var/image/inv_overlay = null // Overlay used when attached to clothing. var/image/mob_overlay = null var/overlay_state = null + var/punch_force = 0 // added melee damage + var/punch_damtype = BRUTE // added melee damage type var/concealed_holster = 0 var/mob/living/carbon/human/wearer = null // To check if the wearer changes, so species spritesheets change properly. var/list/on_rolled = list() // Used when jumpsuit sleevels are rolled ("rolled" entry) or it's rolled down ("down"). Set to "none" to hide in those states. diff --git a/code/modules/clothing/accessories/hands.dm b/code/modules/clothing/accessories/hands.dm index 433dac69c26..8422e5e7862 100644 --- a/code/modules/clothing/accessories/hands.dm +++ b/code/modules/clothing/accessories/hands.dm @@ -7,7 +7,12 @@ matter = list(MAT_STEEL = 500) attack_verb = list("punched", "beaten", "struck") siemens_coefficient = 1 + punch_force = 5 force = 5 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', + ) drop_sound = 'sound/items/drop/metalboots.ogg' pickup_sound = 'sound/items/pickup/toolbox.ogg' diff --git a/code/modules/clothing/accessories/rings.dm b/code/modules/clothing/accessories/rings.dm index 2be023e1295..15f52a6b1ca 100644 --- a/code/modules/clothing/accessories/rings.dm +++ b/code/modules/clothing/accessories/rings.dm @@ -17,6 +17,7 @@ drop_sound = 'sound/items/drop/ring.ogg' pickup_sound = 'sound/items/pickup/ring.ogg' force = 2 + punch_force = 2 siemens_coefficient = 1 ///////////////////////////////////////// diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 542dafb6f68..7911b330397 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -272,8 +272,12 @@ var/obj/item/clothing/gloves/G = H.gloves real_damage += G.punch_force hit_dam_type = G.punch_damtype - if(H.pulling_punches && !attack.sharp && !attack.edge) //SO IT IS DECREED: PULLING PUNCHES WILL PREVENT THE ACTUAL DAMAGE FROM RINGS AND KNUCKLES, BUT NOT THE ADDED PAIN, BUT YOU CAN'T "PULL" A KNIFE - hit_dam_type = AGONY + else if(istype(H.gloves, /obj/item/clothing/accessory)) + var/obj/item/clothing/accessory/G = H.gloves + real_damage += G.punch_force + hit_dam_type = G.punch_damtype + if(H.pulling_punches && !attack.sharp && !attack.edge) //SO IT IS DECREED: PULLING PUNCHES WILL PREVENT THE ACTUAL DAMAGE FROM RINGS AND KNUCKLES, BUT NOT THE ADDED PAIN, BUT YOU CAN'T "PULL" A KNIFE + hit_dam_type = AGONY real_damage *= damage_multiplier rand_damage *= damage_multiplier if(HULK in H.mutations) From 26503760bf63f1c6161e2315cf76b17c6d5c0500 Mon Sep 17 00:00:00 2001 From: Killian Date: Fri, 8 Nov 2024 11:06:49 +0000 Subject: [PATCH 14/53] melee damage adjustments --- code/modules/clothing/accessories/accessory.dm | 2 +- code/modules/clothing/accessories/hands.dm | 4 ++-- code/modules/clothing/accessories/rings.dm | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/clothing/accessories/accessory.dm b/code/modules/clothing/accessories/accessory.dm index 56234bb5bbd..e005048399f 100644 --- a/code/modules/clothing/accessories/accessory.dm +++ b/code/modules/clothing/accessories/accessory.dm @@ -87,7 +87,7 @@ has_suit.force += force if(istype(S,/obj/item/clothing/gloves)) var/obj/item/clothing/gloves/has_gloves = S - has_gloves.punch_force += force + has_gloves.punch_force = has_gloves.punch_force + punch_force if(user) to_chat(user, span_notice("You attach \the [src] to \the [has_suit].")) diff --git a/code/modules/clothing/accessories/hands.dm b/code/modules/clothing/accessories/hands.dm index 8422e5e7862..26533291f18 100644 --- a/code/modules/clothing/accessories/hands.dm +++ b/code/modules/clothing/accessories/hands.dm @@ -7,8 +7,8 @@ matter = list(MAT_STEEL = 500) attack_verb = list("punched", "beaten", "struck") siemens_coefficient = 1 - punch_force = 5 - force = 5 + force = 10 //base punch strength is 5 + punch_force = 5 //added to base punch strength when added as a glove accessory icon = 'icons/inventory/hands/item.dmi' item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_gloves.dmi', diff --git a/code/modules/clothing/accessories/rings.dm b/code/modules/clothing/accessories/rings.dm index 15f52a6b1ca..361c87c854d 100644 --- a/code/modules/clothing/accessories/rings.dm +++ b/code/modules/clothing/accessories/rings.dm @@ -16,8 +16,8 @@ icon = 'icons/inventory/hands/item.dmi' drop_sound = 'sound/items/drop/ring.ogg' pickup_sound = 'sound/items/pickup/ring.ogg' - force = 2 - punch_force = 2 + force = 7 //base punch strength is 5 + punch_force = 2 //added to base punch strength when added as a glove accessory siemens_coefficient = 1 ///////////////////////////////////////// From 361effe064d52a13539f12a2190612b552d66ecf Mon Sep 17 00:00:00 2001 From: Killian Date: Sun, 10 Nov 2024 15:11:05 +0000 Subject: [PATCH 15/53] bracelet refactor --- .../loadout/loadout_accessories.dm | 16 +- .../modules/clothing/accessories/accessory.dm | 151 ------------------ code/modules/clothing/accessories/hands.dm | 123 ++++++++++++++ code/modules/economy/vending_machines_vr.dm | 28 ++-- icons/inventory/hands/item.dmi | Bin 34196 -> 35895 bytes icons/inventory/hands/mob.dmi | Bin 31060 -> 31054 bytes 6 files changed, 145 insertions(+), 173 deletions(-) diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories.dm b/code/modules/client/preference_setup/loadout/loadout_accessories.dm index d22bdcc20e9..dcd8cf03c38 100644 --- a/code/modules/client/preference_setup/loadout/loadout_accessories.dm +++ b/code/modules/client/preference_setup/loadout/loadout_accessories.dm @@ -360,18 +360,18 @@ /datum/gear/accessory/wristband_collection display_name = "wristbands (selection)" - path = /obj/item/clothing/accessory/wristbandcollection + path = /obj/item/clothing/accessory/wristband/collection /datum/gear/accessory/wristband_collection/New() ..() var/list/wristband_lists = list( - "Green, Blue and Yellow" = /obj/item/clothing/accessory/wristbandcollection, - "Pink, Black and Red" = /obj/item/clothing/accessory/wristbandcollection/pink, - "Red and Orange" = /obj/item/clothing/accessory/wristbandcollection/les, - "White, Pink and Blue" = /obj/item/clothing/accessory/wristbandcollection/trans, - "Blue, Purple and Pink" = /obj/item/clothing/accessory/wristbandcollection/bi, - "Black, White and Grey" = /obj/item/clothing/accessory/wristbandcollection/ace, - "Spiked" = /obj/item/clothing/accessory/wristband_spiked + "Green, Blue and Yellow" = /obj/item/clothing/accessory/wristband/collection, + "Pink, Black and Red" = /obj/item/clothing/accessory/wristband/collection/pink, + "Red and Orange" = /obj/item/clothing/accessory/wristband/collection/les, + "White, Pink and Blue" = /obj/item/clothing/accessory/wristband/collection/trans, + "Blue, Purple and Pink" = /obj/item/clothing/accessory/wristband/collection/bi, + "Black, White and Grey" = /obj/item/clothing/accessory/wristband/collection/ace, + "Spiked" = /obj/item/clothing/accessory/wristband/spiked ) gear_tweaks += new/datum/gear_tweak/path(wristband_lists) diff --git a/code/modules/clothing/accessories/accessory.dm b/code/modules/clothing/accessories/accessory.dm index e005048399f..7610687a9a0 100644 --- a/code/modules/clothing/accessories/accessory.dm +++ b/code/modules/clothing/accessories/accessory.dm @@ -387,85 +387,6 @@ icon_state = "tesh_neckscarf" species_restricted = list(SPECIES_TESHARI) -//bracelets - -/obj/item/clothing/accessory/bracelet - name = "bracelet" - desc = "A simple silver bracelet with a clasp." - icon = 'icons/inventory/accessory/item.dmi' - icon_state = "bracelet" - w_class = ITEMSIZE_TINY - slot_flags = SLOT_TIE - slot = ACCESSORY_SLOT_DECOR - -/obj/item/clothing/accessory/bracelet/friendship - name = "friendship bracelet" - desc = "A beautiful friendship bracelet in all the colors of the rainbow." - icon_state = "friendbracelet" - -/obj/item/clothing/accessory/bracelet/friendship/verb/dedicate_bracelet() - set name = "Dedicate Bracelet" - set category = "Object" - set desc = "Dedicate your friendship bracelet to a special someone." - var/mob/M = usr - if(!M.mind) - return 0 - - var/input = sanitizeSafe(input(usr, "Who do you want to dedicate the bracelet to?", ,""), MAX_NAME_LEN) - - if(src && input && !M.stat && in_range(M,src)) - desc = "A beautiful friendship bracelet in all the colors of the rainbow. It's dedicated to [input]." - to_chat(M, "You dedicate the bracelet to [input], remembering the times you've had together.") - return 1 - - -/obj/item/clothing/accessory/bracelet/material - icon_state = "materialbracelet" - -/obj/item/clothing/accessory/bracelet/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] bracelet" - desc = "A bracelet made from [material.display_name]." - color = material.icon_colour - -/obj/item/clothing/accessory/bracelet/material/get_material() - return material - -/obj/item/clothing/accessory/bracelet/material/wood/New(var/newloc) - ..(newloc, "wood") - -/obj/item/clothing/accessory/bracelet/material/plastic/New(var/newloc) - ..(newloc, "plastic") - -/obj/item/clothing/accessory/bracelet/material/iron/New(var/newloc) - ..(newloc, "iron") - -/obj/item/clothing/accessory/bracelet/material/steel/New(var/newloc) - ..(newloc, "steel") - -/obj/item/clothing/accessory/bracelet/material/silver/New(var/newloc) - ..(newloc, "silver") - -/obj/item/clothing/accessory/bracelet/material/gold/New(var/newloc) - ..(newloc, "gold") - -/obj/item/clothing/accessory/bracelet/material/platinum/New(var/newloc) - ..(newloc, "platinum") - -/obj/item/clothing/accessory/bracelet/material/phoron/New(var/newloc) - ..(newloc, "phoron") - -/obj/item/clothing/accessory/bracelet/material/glass/New(var/newloc) - ..(newloc, "glass") - - ..() - /obj/item/clothing/accessory/halfcape name = "half cape" desc = "A tasteful half-cape, suitible for European nobles and retro anime protagonists." @@ -484,78 +405,6 @@ icon_state = "sash" slot = ACCESSORY_SLOT_OVER -/obj/item/clothing/accessory/wristband - name = "wristband" - desc = "A simple plastic wristband." - icon = 'icons/inventory/accessory/item.dmi' - icon_state = "wristband" - w_class = ITEMSIZE_TINY - slot_flags = SLOT_TIE - slot = ACCESSORY_SLOT_DECOR - -/obj/item/clothing/accessory/wristbandcollection - name = "wristband collection" - desc = "A mix of colourable plastic wristbands." - icon = 'icons/inventory/accessory/item.dmi' - icon_state = "wristband_collection" - w_class = ITEMSIZE_TINY - slot_flags = SLOT_TIE - slot = ACCESSORY_SLOT_DECOR - -/obj/item/clothing/accessory/wristbandcollection/pink - name = "wristband collection" - desc = "A mix of colourable plastic wristbands." - icon = 'icons/inventory/accessory/item.dmi' - icon_state = "wristband_collection2" - w_class = ITEMSIZE_TINY - slot_flags = SLOT_TIE - slot = ACCESSORY_SLOT_DECOR - -/obj/item/clothing/accessory/wristbandcollection/les - name = "wristband collection" - desc = "A mix of colourable plastic wristbands." - icon = 'icons/inventory/accessory/item.dmi' - icon_state = "wristband_collection3" - w_class = ITEMSIZE_TINY - slot_flags = SLOT_TIE - slot = ACCESSORY_SLOT_DECOR - -/obj/item/clothing/accessory/wristbandcollection/trans - name = "wristband collection" - desc = "A mix of colourable plastic wristbands." - icon = 'icons/inventory/accessory/item.dmi' - icon_state = "wristband_collection4" - w_class = ITEMSIZE_TINY - slot_flags = SLOT_TIE - slot = ACCESSORY_SLOT_DECOR - -/obj/item/clothing/accessory/wristbandcollection/bi - name = "wristband collection" - desc = "A mix of colourable plastic wristbands." - icon = 'icons/inventory/accessory/item.dmi' - icon_state = "wristband_collection5" - w_class = ITEMSIZE_TINY - slot_flags = SLOT_TIE - slot = ACCESSORY_SLOT_DECOR - -/obj/item/clothing/accessory/wristbandcollection/ace - name = "wristband collection" - desc = "A mix of colourable plastic wristbands." - icon = 'icons/inventory/accessory/item.dmi' - icon_state = "wristband_collection6" - w_class = ITEMSIZE_TINY - slot_flags = SLOT_TIE - slot = ACCESSORY_SLOT_DECOR - -/obj/item/clothing/accessory/wristband_spiked - name = "wristband (spiked)" - desc = "A black wristband with short spikes around it." - icon = 'icons/inventory/accessory/item.dmi' - icon_state = "wristband_spiked" - w_class = ITEMSIZE_TINY - slot_flags = SLOT_TIE - slot = ACCESSORY_SLOT_DECOR - //Gaiter scarves /obj/item/clothing/accessory/gaiter name = "red neck gaiter" diff --git a/code/modules/clothing/accessories/hands.dm b/code/modules/clothing/accessories/hands.dm index 26533291f18..befe128fc71 100644 --- a/code/modules/clothing/accessories/hands.dm +++ b/code/modules/clothing/accessories/hands.dm @@ -16,3 +16,126 @@ ) drop_sound = 'sound/items/drop/metalboots.ogg' pickup_sound = 'sound/items/pickup/toolbox.ogg' + +//bracelets + +/obj/item/clothing/accessory/bracelet + name = "bracelet" + desc = "A simple silver bracelet with a clasp." + icon = 'icons/inventory/accessory/item.dmi' + icon_state = "bracelet" + w_class = ITEMSIZE_TINY + slot_flags = SLOT_GLOVES + slot = ACCESSORY_SLOT_WRIST + +/obj/item/clothing/accessory/bracelet/friendship + name = "friendship bracelet" + desc = "A beautiful friendship bracelet in all the colors of the rainbow." + icon_state = "friendbracelet" + +/obj/item/clothing/accessory/bracelet/friendship/verb/dedicate_bracelet() + set name = "Dedicate Bracelet" + set category = "Object" + set desc = "Dedicate your friendship bracelet to a special someone." + var/mob/M = usr + if(!M.mind) + return 0 + + var/input = sanitizeSafe(input(usr, "Who do you want to dedicate the bracelet to?", ,""), MAX_NAME_LEN) + + if(src && input && !M.stat && in_range(M,src)) + desc = "A beautiful friendship bracelet in all the colors of the rainbow. It's dedicated to [input]." + to_chat(M, "You dedicate the bracelet to [input], remembering the times you've had together.") + return 1 + + +/obj/item/clothing/accessory/bracelet/material + icon_state = "materialbracelet" + +/obj/item/clothing/accessory/bracelet/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] bracelet" + desc = "A bracelet made from [material.display_name]." + color = material.icon_colour + +/obj/item/clothing/accessory/bracelet/material/get_material() + return material + +/obj/item/clothing/accessory/bracelet/material/wood/New(var/newloc) + ..(newloc, "wood") + +/obj/item/clothing/accessory/bracelet/material/plastic/New(var/newloc) + ..(newloc, "plastic") + +/obj/item/clothing/accessory/bracelet/material/iron/New(var/newloc) + ..(newloc, "iron") + +/obj/item/clothing/accessory/bracelet/material/steel/New(var/newloc) + ..(newloc, "steel") + +/obj/item/clothing/accessory/bracelet/material/silver/New(var/newloc) + ..(newloc, "silver") + +/obj/item/clothing/accessory/bracelet/material/gold/New(var/newloc) + ..(newloc, "gold") + +/obj/item/clothing/accessory/bracelet/material/platinum/New(var/newloc) + ..(newloc, "platinum") + +/obj/item/clothing/accessory/bracelet/material/phoron/New(var/newloc) + ..(newloc, "phoron") + +/obj/item/clothing/accessory/bracelet/material/glass/New(var/newloc) + ..(newloc, "glass") + +//wristbands + +/obj/item/clothing/accessory/wristband + name = "wristband" + desc = "A simple plastic wristband." + icon = 'icons/inventory/accessory/item.dmi' + icon_state = "wristband" + w_class = ITEMSIZE_TINY + slot_flags = SLOT_GLOVES + slot = ACCESSORY_SLOT_WRIST + +/obj/item/clothing/accessory/wristband/spiked + name = "wristband (spiked)" + desc = "A black wristband with short spikes around it." + icon_state = "wristband_spiked" + +/obj/item/clothing/accessory/wristband/collection + name = "wristband collection" + desc = "A mix of colourable plastic wristbands." + icon_state = "wristband_collection" + +/obj/item/clothing/accessory/wristband/collection/pink + name = "wristband collection" + desc = "A mix of colourable plastic wristbands." + icon_state = "wristband_collection2" + +/obj/item/clothing/accessory/wristband/collection/les + name = "wristband collection" + desc = "A mix of colourable plastic wristbands." + icon_state = "wristband_collection3" + +/obj/item/clothing/accessory/wristband/collection/trans + name = "wristband collection" + desc = "A mix of colourable plastic wristbands." + icon_state = "wristband_collection4" + +/obj/item/clothing/accessory/wristband/collection/bi + name = "wristband collection" + desc = "A mix of colourable plastic wristbands." + icon_state = "wristband_collection5" + +/obj/item/clothing/accessory/wristband/collection/ace + name = "wristband collection" + desc = "A mix of colourable plastic wristbands." + icon_state = "wristband_collection6" diff --git a/code/modules/economy/vending_machines_vr.dm b/code/modules/economy/vending_machines_vr.dm index cc917731284..47f4a765d47 100644 --- a/code/modules/economy/vending_machines_vr.dm +++ b/code/modules/economy/vending_machines_vr.dm @@ -614,13 +614,13 @@ /obj/item/clothing/accessory/wcoat/swvest/blue = 5, /obj/item/clothing/accessory/wcoat/swvest/red = 5, /obj/item/clothing/accessory/wristband = 5, - /obj/item/clothing/accessory/wristbandcollection = 5, - /obj/item/clothing/accessory/wristbandcollection/pink = 5, - /obj/item/clothing/accessory/wristbandcollection/les = 5, - /obj/item/clothing/accessory/wristbandcollection/bi = 5, - /obj/item/clothing/accessory/wristbandcollection/trans = 5, - /obj/item/clothing/accessory/wristbandcollection/ace = 5, - /obj/item/clothing/accessory/wristband_spiked = 5, + /obj/item/clothing/accessory/wristband/collection = 5, + /obj/item/clothing/accessory/wristband/collection/pink = 5, + /obj/item/clothing/accessory/wristband/collection/les = 5, + /obj/item/clothing/accessory/wristband/collection/bi = 5, + /obj/item/clothing/accessory/wristband/collection/trans = 5, + /obj/item/clothing/accessory/wristband/collection/ace = 5, + /obj/item/clothing/accessory/wristband/spiked = 5, /obj/item/clothing/accessory/belt = 5, /obj/item/clothing/accessory/belt/thick = 5, /obj/item/clothing/accessory/belt/strap = 5, @@ -759,13 +759,13 @@ /obj/item/clothing/accessory/wcoat/swvest/blue = 50, /obj/item/clothing/accessory/wcoat/swvest/red = 50, /obj/item/clothing/accessory/wristband = 10, - /obj/item/clothing/accessory/wristbandcollection = 30, - /obj/item/clothing/accessory/wristbandcollection/pink = 30, - /obj/item/clothing/accessory/wristbandcollection/les = 30, - /obj/item/clothing/accessory/wristbandcollection/bi = 30, - /obj/item/clothing/accessory/wristbandcollection/trans = 30, - /obj/item/clothing/accessory/wristbandcollection/ace = 30, - /obj/item/clothing/accessory/wristband_spiked = 20, + /obj/item/clothing/accessory/wristband/collection = 30, + /obj/item/clothing/accessory/wristband/collection/pink = 30, + /obj/item/clothing/accessory/wristband/collection/les = 30, + /obj/item/clothing/accessory/wristband/collection/bi = 30, + /obj/item/clothing/accessory/wristband/collection/trans = 30, + /obj/item/clothing/accessory/wristband/collection/ace = 30, + /obj/item/clothing/accessory/wristband/spiked = 20, /obj/item/clothing/accessory/belt = 50, /obj/item/clothing/accessory/belt/thick = 50, /obj/item/clothing/accessory/belt/strap = 50, diff --git a/icons/inventory/hands/item.dmi b/icons/inventory/hands/item.dmi index 228d79992399d2312e0fc5b7fa9aa30564bc98a1..3adca7d964f9c13efb0c51408af303840ead6739 100644 GIT binary patch literal 35895 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%0DbtUpI@cD5E7eXd#O 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

OzVa@`3h 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 WN+w=Bz9;z*_)?HjmM)Sq4*DO4eJ)P` diff --git a/icons/inventory/hands/mob.dmi b/icons/inventory/hands/mob.dmi index 3b8fdbf6ac480667548e0f7785ba66392b875659..bf041c8a0236c7e463a1c73fbf8ddd11126363ba 100644 GIT binary patch literal 31054 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 z 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 z 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 From d0aa7c266dbb5c08f13d5a06cad56c00ea16d728 Mon Sep 17 00:00:00 2001 From: Killian Date: Sun, 10 Nov 2024 15:21:18 +0000 Subject: [PATCH 16/53] redgate map fixes --- maps/redgate/cybercity.dmm | 2 +- maps/redgate/fantasy.dmm | 16 ++++++++-------- maps/redgate/fantasy_dungeon.dmm | 2 +- maps/redgate/hotsprings.dmm | 2 +- maps/redgate/islands_underwater.dmm | 2 +- maps/redgate/train_upper.dmm | 4 ++-- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/maps/redgate/cybercity.dmm b/maps/redgate/cybercity.dmm index a82478c9526..b5b094ca1b1 100644 --- a/maps/redgate/cybercity.dmm +++ b/maps/redgate/cybercity.dmm @@ -9484,7 +9484,7 @@ /obj/structure/closet/wardrobe, /obj/random/maintenance/cargo, /obj/item/clothing/glasses/goggles, -/obj/item/clothing/gloves/ring/material/plastic, +/obj/item/clothing/accessory/ring/material/plastic, /obj/item/clothing/under/cuttop/red, /turf/simulated/floor/wood, /area/redgate/city/apartments) diff --git a/maps/redgate/fantasy.dmm b/maps/redgate/fantasy.dmm index 3ab8fa68a0e..072d62751c1 100644 --- a/maps/redgate/fantasy.dmm +++ b/maps/redgate/fantasy.dmm @@ -550,7 +550,7 @@ /area/redgate/fantasy/butcher) "dw" = ( /obj/structure/table/woodentable, -/obj/item/clothing/gloves/ring/material/silver, +/obj/item/clothing/accessory/ring/material/silver, /obj/structure/window/basic{ dir = 4 }, @@ -2067,7 +2067,7 @@ /area/redgate/fantasy/redgate) "mW" = ( /obj/structure/table/woodentable, -/obj/item/clothing/gloves/ring/material/diamond, +/obj/item/clothing/accessory/ring/material/diamond, /obj/structure/window/basic{ dir = 4 }, @@ -2507,7 +2507,7 @@ /area/redgate/fantasy/grocery) "pq" = ( /obj/structure/table/woodentable, -/obj/item/clothing/gloves/ring/material/gold, +/obj/item/clothing/accessory/ring/material/gold, /obj/structure/window/basic{ dir = 4 }, @@ -2906,7 +2906,7 @@ /area/redgate/fantasy/church) "rO" = ( /obj/structure/table/woodentable, -/obj/item/clothing/gloves/ring/material/wood, +/obj/item/clothing/accessory/ring/material/wood, /turf/simulated/floor/wood/alt, /area/redgate/fantasy/jewler) "rP" = ( @@ -3465,7 +3465,7 @@ /area/redgate/fantasy/butcher) "vl" = ( /obj/structure/table/rack/shelf/wood, -/obj/item/clothing/gloves/ring/material/silver, +/obj/item/clothing/accessory/ring/material/silver, /obj/machinery/light/small/torch{ dir = 8 }, @@ -3489,7 +3489,7 @@ /area/redgate/fantasy/castle) "vp" = ( /obj/structure/table/woodentable, -/obj/item/clothing/gloves/ring/material/void_opal, +/obj/item/clothing/accessory/ring/material/void_opal, /obj/structure/window/basic{ dir = 4 }, @@ -7836,7 +7836,7 @@ /area/redgate/fantasy/butcher) "WW" = ( /obj/structure/table/rack/shelf/wood, -/obj/item/clothing/gloves/ring/material/gold, +/obj/item/clothing/accessory/ring/material/gold, /turf/simulated/floor/wood/alt, /area/redgate/fantasy/jewler) "WZ" = ( @@ -8255,7 +8255,7 @@ /area/redgate/fantasy/bard) "ZP" = ( /obj/structure/table/woodentable, -/obj/item/clothing/gloves/ring/material/iron, +/obj/item/clothing/accessory/ring/material/iron, /turf/simulated/floor/wood/alt, /area/redgate/fantasy/jewler) "ZS" = ( diff --git a/maps/redgate/fantasy_dungeon.dmm b/maps/redgate/fantasy_dungeon.dmm index 64436653a2a..44cc56930bf 100644 --- a/maps/redgate/fantasy_dungeon.dmm +++ b/maps/redgate/fantasy_dungeon.dmm @@ -209,7 +209,7 @@ /turf/simulated/floor/concrete, /area/redgate/fantasy/castle) "ez" = ( -/obj/item/clothing/gloves/ring/material/gold, +/obj/item/clothing/accessory/ring/material/gold, /turf/simulated/mineral/floor/ignore_cavegen/cave, /area/redgate/fantasy/caves) "eP" = ( diff --git a/maps/redgate/hotsprings.dmm b/maps/redgate/hotsprings.dmm index 725aafba2a2..4a8eaccc540 100644 --- a/maps/redgate/hotsprings.dmm +++ b/maps/redgate/hotsprings.dmm @@ -1209,7 +1209,7 @@ /obj/random/mouseray, /obj/random/cash/huge, /obj/item/clothing/ears/earring/dangle/diamond, -/obj/item/clothing/gloves/ring/material/diamond, +/obj/item/clothing/accessory/ring/material/diamond, /obj/structure/closet/grave/dirthole, /obj/random/coin, /turf/simulated/floor/outdoors/dirt{ diff --git a/maps/redgate/islands_underwater.dmm b/maps/redgate/islands_underwater.dmm index 834ec9585ae..5f25f246f3c 100644 --- a/maps/redgate/islands_underwater.dmm +++ b/maps/redgate/islands_underwater.dmm @@ -848,7 +848,7 @@ /turf/simulated/floor/water/underwater/sand, /area/redgate/islands/ruins) "qY" = ( -/obj/item/clothing/gloves/ring/material/gold, +/obj/item/clothing/accessory/ring/material/gold, /turf/simulated/floor/water/underwater/sand, /area/redgate/islands/ruins) "rk" = ( diff --git a/maps/redgate/train_upper.dmm b/maps/redgate/train_upper.dmm index f5921a71d0a..56b08472297 100644 --- a/maps/redgate/train_upper.dmm +++ b/maps/redgate/train_upper.dmm @@ -3121,8 +3121,8 @@ /obj/structure/closet/cabinet, /obj/item/clothing/under/suit_jacket, /obj/item/clothing/shoes/dress, -/obj/item/clothing/gloves/ring/wedding, -/obj/item/clothing/gloves/ring/wedding, +/obj/item/clothing/accessory/ring/wedding, +/obj/item/clothing/accessory/ring/wedding, /obj/item/clothing/accessory/bowtie/black, /turf/simulated/floor/wood, /area/redgate/train/dorm6) From 7c3788f095b9567a7748fb8085268001872e63f4 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Sun, 10 Nov 2024 17:42:08 +0100 Subject: [PATCH 17/53] initial --- .../mob/living/silicon/robot/drone/drone.dm | 3 - .../modules/mob/living/silicon/robot/login.dm | 7 +- .../modules/mob/living/silicon/robot/robot.dm | 103 ++--------------- .../silicon/robot/robot_modules/station.dm | 3 +- .../living/silicon/robot/robot_ui_module.dm | 106 ++++++++++++++++++ vorestation.dme | 1 + 6 files changed, 119 insertions(+), 104 deletions(-) create mode 100644 code/modules/mob/living/silicon/robot/robot_ui_module.dm diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index fd1132d05a8..c7c1a1a2fbc 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -203,9 +203,6 @@ var/list/mob_hat_cache = list() can_pick_shell = FALSE update_icon() -/mob/living/silicon/robot/drone/choose_icon() - return - /mob/living/silicon/robot/drone/pick_module() return diff --git a/code/modules/mob/living/silicon/robot/login.dm b/code/modules/mob/living/silicon/robot/login.dm index 89a136223e2..ef25b1bece0 100644 --- a/code/modules/mob/living/silicon/robot/login.dm +++ b/code/modules/mob/living/silicon/robot/login.dm @@ -11,11 +11,6 @@ repick_laws() // Forces synths to select an icon relevant to their module - if(!icon_selected) - icon_selection_tries = SSrobot_sprites.get_module_sprites_len(modtype, src) + 1 - choose_icon(icon_selection_tries) - - if(sprite_datum && module) - sprite_datum.do_equipment_glamour(module) + pick_module() plane_holder.set_vis(VIS_AUGMENTED, TRUE) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index a79310c02be..4e7ea7bd00e 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -31,8 +31,7 @@ //Icon stuff var/datum/robot_sprite/sprite_datum // Sprite datum, holding all our sprite data - var/icon_selected = 1 // If icon selection has been completed yet - var/icon_selection_tries = 0 // Remaining attempts to select icon before a selection is forced + var/icon_selected = 0 // If icon selection has been completed yet var/list/sprite_extra_customization = list() var/rest_style = "Default" var/notransform @@ -336,46 +335,17 @@ return module_sprites */ /mob/living/silicon/robot/proc/pick_module() - if(module) + if(icon_selected) return - var/list/modules = list() - //VOREStatation Edit Start: shell restrictions - if(shell) - if(restrict_modules_to.len > 0) - modules.Add(restrict_modules_to) - else - modules.Add(shell_module_types) - else - if(restrict_modules_to.len > 0) - modules.Add(restrict_modules_to) - else - modules.Add(robot_module_types) - if(crisis || security_level == SEC_LEVEL_RED || crisis_override) - to_chat(src, span_red("Crisis mode active. Combat module available.")) - modules |= emergency_module_types - for(var/module_name in whitelisted_module_types) - if(is_borg_whitelisted(src, module_name)) - modules |= module_name - //VOREStatation Edit End: shell restrictions - modtype = tgui_input_list(usr, "Please, select a module!", "Robot module", modules) - if(module) - return - if(!(modtype in robot_modules)) - return - if(!is_borg_whitelisted(src, modtype)) - return - - var/module_type = robot_modules[modtype] - transform_with_anim() //VOREStation edit: sprite animation - new module_type(src) + var/list/module_sprites = SSrobot_sprites.get_module_sprites(module, src) + if(module_sprites.len == 1 || !client) + sprite_datum = module_sprites[1] + return + new/datum/tgui_module/robot_ui_module(src) + if(sprite_datum && module) + sprite_datum.do_equipment_glamour(module) - hands.icon_state = get_hud_module_icon() - feedback_inc("cyborg_[lowertext(modtype)]",1) - updatename() - hud_used.update_robot_modules_display() - notify_ai(ROBOT_NOTIFICATION_NEW_MODULE, module.name) - robotact?.update_static_data_for_all_viewers() /mob/living/silicon/robot/proc/update_braintype() if(istype(mmi, /obj/item/mmi/digital/posibrain)) @@ -796,6 +766,7 @@ notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, module.name) module.Reset(src) qdel(module) + icon_selected = 0 module = null updatename("Default") has_recoloured = FALSE @@ -1088,60 +1059,6 @@ return -/mob/living/silicon/robot/proc/choose_icon(var/triesleft) - var/robot_species = null - if(!SSrobot_sprites) - to_chat(src, "Robot Sprites have not been initialized yet. How are you choosing a sprite? Harass a coder.") - return - - var/list/module_sprites = SSrobot_sprites.get_module_sprites(modtype, src) - if(!module_sprites || !module_sprites.len) - to_chat(src, "Your module appears to have no sprite options. Harass a coder.") - return - - icon_selected = 0 - icon_selection_tries = triesleft - if(module_sprites.len == 1 || !client) - if(!(sprite_datum in module_sprites)) - sprite_datum = module_sprites[1] - else - var/selection = tgui_input_list(src, "Select an icon! [triesleft ? "You have [triesleft] more chance\s." : "This is your last try."]", "Robot Icon", module_sprites) - if(selection) - sprite_datum = selection - else - sprite_datum = module_sprites[1] - if(!istype(src,/mob/living/silicon/robot/drone)) - robot_species = sprite_datum.name - if(notransform) - to_chat(src, "Your current transformation has not finished yet!") - choose_icon(icon_selection_tries) - return - else - transform_with_anim() - - var/tempheight = vis_height - update_icon() - // This is bad but I dunno other way to 'reset' our resize offset based on vis_height changes other than resizing to normal and back. - if(tempheight != vis_height) - var/tempsize = size_multiplier - resize(1) - resize(tempsize) - - - if (module_sprites.len > 1 && triesleft >= 1 && client) - icon_selection_tries-- - var/choice = tgui_alert(usr, "Look at your icon - is this what you want?", "Icon Choice", list("Yes","No")) - if(choice == "No") - choose_icon(icon_selection_tries) - return - - icon_selected = 1 - icon_selection_tries = 0 - sprite_type = robot_species - if(hands) - update_hud() - to_chat(src, span_filter_notice("Your icon has been set. You now require a module reset to change it.")) - /mob/living/silicon/robot/proc/set_default_module_icon() if(!SSrobot_sprites) return diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index 8f8c0757e0c..5764989ecff 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -73,7 +73,6 @@ var/global/list/robot_modules = list( R.radio.recalculateChannels() R.set_default_module_icon() - R.choose_icon(SSrobot_sprites.get_module_sprites_len(R.modtype, R) + 1) if(!R.client) R.icon_selected = FALSE // It wasnt a player selecting icon? Let them do it later! @@ -93,7 +92,7 @@ var/global/list/robot_modules = list( if(R.radio) R.radio.recalculateChannels() - R.choose_icon(0) + R.set_default_module_icon() R.scrubbing = FALSE diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm new file mode 100644 index 00000000000..addf1bf6ef1 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -0,0 +1,106 @@ +// Robot module selection +/datum/tgui_module/robot_ui_module + name = "Robot Module Configurator" + tgui_id = "RobotChoose" + var/selected_module + var/datum/robot_sprite/sprite_datum + +/datum/tgui_module/robot_ui_module/tgui_state(mob/user) + return GLOB.tgui_self_state + +/datum/tgui_module/robot_ui_module/tgui_static_data() + var/list/data = ..() + + var/mob/living/silicon/robot/R = host + + var/list/modules = list() + if(R.module) + modules = list(R.module) + selected_module = R.module + else + if(LAZYLEN(R.restrict_modules_to) > 0) + modules.Add(R.restrict_modules_to) + else if(R.shell) + modules.Add(shell_module_types) + else + modules.Add(robot_module_types) + if(R.crisis || security_level == SEC_LEVEL_RED || R.crisis_override) + to_chat(R, span_red("Crisis mode active. Combat module available.")) + modules |= emergency_module_types + for(var/module_name in whitelisted_module_types) + if(is_borg_whitelisted(R, module_name)) + modules |= module_name + data["possible_modules"] = modules + + return data + +/datum/tgui_module/robot_ui_module/tgui_data() + var/list/data = ..() + + var/mob/living/silicon/robot/R = host + + if(selected_module) + if(!SSrobot_sprites) + to_chat(R, span_warning("Robot Sprites have not been initialized yet. How are you choosing a sprite? Harass a coder.")) + selected_module = null + return + + var/list/module_sprites = SSrobot_sprites.get_module_sprites(selected_module, R) + if(!module_sprites || !module_sprites.len) + to_chat(R, span_warning("Your module appears to have no sprite options. Harass a coder.")) + selected_module = null + return + + data["possible_sprites"] = module_sprites + + return data + +/datum/tgui_module/robot_ui_module/tgui_act(action, params) + . = ..() + if(.) + return + + var/mob/living/silicon/robot/R = host + + switch(action) + if("pick_module") + if(R.module) + return + var/new_module = params["value"] + if(!(new_module in robot_modules)) + return + if(!is_borg_whitelisted(R, new_module)) + return + selected_module = new_module + . = TRUE + if("pick_icon") + var/sprite = params["value"] + if(!sprite) + return + var/list/module_sprites = SSrobot_sprites.get_module_sprites(selected_module, R) + sprite_datum = module_sprites[sprite] + . = TRUE + if("confirm") + R.icon_selected = 1 + var/module_type = robot_modules[selected_module] + R.module = new module_type(R) + R.hands.icon_state = R.get_hud_module_icon() + feedback_inc("cyborg_[lowertext(selected_module)]",1) + R.updatename() + R.hud_used.update_robot_modules_display() + R.notify_ai(ROBOT_NOTIFICATION_NEW_MODULE, R.module.name) + R.robotact?.update_static_data_for_all_viewers() + if(!istype(R,/mob/living/silicon/robot/drone)) + R.sprite_type = sprite_datum.name + R.transform_with_anim() + var/tempheight = R.vis_height + R.update_icon() + // This is bad but I dunno other way to 'reset' our resize offset based on vis_height changes other than resizing to normal and back. + if(tempheight != R.vis_height) + var/tempsize = R.size_multiplier + R.resize(1) + R.resize(tempsize) + if(R.hands) + R.update_hud() + to_chat(R, span_filter_notice("Your icon has been set. You now require a module reset to change it.")) + tgui_close() diff --git a/vorestation.dme b/vorestation.dme index 07be19acdd6..576a9c1f1b3 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3163,6 +3163,7 @@ #include "code\modules\mob\living\silicon\robot\robot_movement.dm" #include "code\modules\mob\living\silicon\robot\robot_remote_control.dm" #include "code\modules\mob\living\silicon\robot\robot_ui.dm" +#include "code\modules\mob\living\silicon\robot\robot_ui_module.dm" #include "code\modules\mob\living\silicon\robot\dogborg\dog_modules_vr.dm" #include "code\modules\mob\living\silicon\robot\dogborg\dog_sleeper_vr.dm" #include "code\modules\mob\living\silicon\robot\drone\drone.dm" From dafcd12ecd83e15a76fc17b9f63cdb0df801db20 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Sun, 10 Nov 2024 17:45:14 +0100 Subject: [PATCH 18/53] . --- code/modules/mob/living/silicon/robot/robot_modules/station.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index 5764989ecff..bc54a72e638 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -73,6 +73,7 @@ var/global/list/robot_modules = list( R.radio.recalculateChannels() R.set_default_module_icon() + R.pick_module() if(!R.client) R.icon_selected = FALSE // It wasnt a player selecting icon? Let them do it later! From 48e75791fbbe43d05f0eb3a0cafd81fa91b95bdb Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Sun, 10 Nov 2024 17:56:32 +0100 Subject: [PATCH 19/53] . --- code/modules/mob/living/silicon/robot/robot.dm | 4 +--- code/modules/mob/living/silicon/robot/robot_ui_module.dm | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 4e7ea7bd00e..4b1bb55aec1 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -341,11 +341,9 @@ var/list/module_sprites = SSrobot_sprites.get_module_sprites(module, src) if(module_sprites.len == 1 || !client) sprite_datum = module_sprites[1] + sprite_datum.do_equipment_glamour(module) return new/datum/tgui_module/robot_ui_module(src) - if(sprite_datum && module) - sprite_datum.do_equipment_glamour(module) - /mob/living/silicon/robot/proc/update_braintype() if(istype(mmi, /obj/item/mmi/digital/posibrain)) diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index addf1bf6ef1..708c3c23316 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -90,6 +90,7 @@ R.hud_used.update_robot_modules_display() R.notify_ai(ROBOT_NOTIFICATION_NEW_MODULE, R.module.name) R.robotact?.update_static_data_for_all_viewers() + R.sprite_datum = sprite_datum if(!istype(R,/mob/living/silicon/robot/drone)) R.sprite_type = sprite_datum.name R.transform_with_anim() @@ -102,5 +103,6 @@ R.resize(tempsize) if(R.hands) R.update_hud() + R.sprite_datum.do_equipment_glamour(module) to_chat(R, span_filter_notice("Your icon has been set. You now require a module reset to change it.")) tgui_close() From 0601585dd71924ae47cf6c3b88dc7f84c4934a76 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:48:21 +0100 Subject: [PATCH 20/53] make the basics work --- .../modules/mob/living/silicon/robot/robot.dm | 5 +- .../mob/living/silicon/robot/robot_ui.dm | 4 ++ .../living/silicon/robot/robot_ui_module.dm | 18 +++++-- .../silicon/robot/subtypes/gravekeeper.dm | 1 + .../silicon/robot/subtypes/lost_drone.dm | 1 + .../silicon/robot/subtypes/syndicate.dm | 1 + tgui/packages/tgui/interfaces/RobotChoose.tsx | 52 +++++++++++++++++++ .../tgui/interfaces/Robotact/index.tsx | 2 +- .../tgui/interfaces/Robotact/types.ts | 1 + 9 files changed, 79 insertions(+), 6 deletions(-) create mode 100644 tgui/packages/tgui/interfaces/RobotChoose.tsx diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 4b1bb55aec1..cf978597b2f 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -46,6 +46,8 @@ var/shown_robot_modules = 0 //Used to determine whether they have the module menu shown or not var/obj/screen/robot_modules_background + var/ui_theme + //3 Modules can be activated at any one time. var/obj/item/robot_module/module = null var/module_active = null @@ -343,7 +345,8 @@ sprite_datum = module_sprites[1] sprite_datum.do_equipment_glamour(module) return - new/datum/tgui_module/robot_ui_module(src) + var/datum/tgui_module/robot_ui_module/ui = new(src) + ui.tgui_interact(src) /mob/living/silicon/robot/proc/update_braintype() if(istype(mmi, /obj/item/mmi/digital/posibrain)) diff --git a/code/modules/mob/living/silicon/robot/robot_ui.dm b/code/modules/mob/living/silicon/robot/robot_ui.dm index 7262f45364a..7499fb198ea 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui.dm @@ -63,6 +63,10 @@ data["health"] = R.health data["max_health"] = R.getMaxHealth() data["light_color"] = R.robot_light_col + if(R.emagged) + data["theme"] = "syndicate" + else if (R.ui_theme) + data["theme"] = R.ui_theme data["weapon_lock"] = R.weapon_lock diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 708c3c23316..e861cbabb84 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -31,6 +31,10 @@ if(is_borg_whitelisted(R, module_name)) modules |= module_name data["possible_modules"] = modules + if(R.emagged) + data["theme"] = "syndicate" + else if (R.ui_theme) + data["theme"] = R.ui_theme return data @@ -40,6 +44,7 @@ var/mob/living/silicon/robot/R = host if(selected_module) + data["selected_module"] = selected_module if(!SSrobot_sprites) to_chat(R, span_warning("Robot Sprites have not been initialized yet. How are you choosing a sprite? Harass a coder.")) selected_module = null @@ -52,6 +57,8 @@ return data["possible_sprites"] = module_sprites + if(sprite_datum) + data["sprite_datum"] = sprite_datum return data @@ -78,13 +85,16 @@ if(!sprite) return var/list/module_sprites = SSrobot_sprites.get_module_sprites(selected_module, R) - sprite_datum = module_sprites[sprite] + for(var/datum/robot_sprite/S in module_sprites) + if(S.name == sprite) + sprite_datum = S + break . = TRUE if("confirm") R.icon_selected = 1 var/module_type = robot_modules[selected_module] + R.modtype = selected_module R.module = new module_type(R) - R.hands.icon_state = R.get_hud_module_icon() feedback_inc("cyborg_[lowertext(selected_module)]",1) R.updatename() R.hud_used.update_robot_modules_display() @@ -103,6 +113,6 @@ R.resize(tempsize) if(R.hands) R.update_hud() - R.sprite_datum.do_equipment_glamour(module) + R.sprite_datum.do_equipment_glamour(R.module) to_chat(R, span_filter_notice("Your icon has been set. You now require a module reset to change it.")) - tgui_close() + close_ui() diff --git a/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm b/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm index 73357c10711..ccf1908c166 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/gravekeeper.dm @@ -9,6 +9,7 @@ icon_selected = FALSE can_be_antagged = FALSE restrict_modules_to = list("Gravekeeper") + ui_theme = "malfunction" /mob/living/silicon/robot/gravekeeper/init() aiCamera = new/obj/item/camera/siliconcam/robot_camera(src) diff --git a/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm b/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm index 24e449c411c..9f0aa11446c 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm @@ -9,6 +9,7 @@ icon_selected = FALSE restrict_modules_to = list("Lost") var/law_retries = 5 + ui_theme = "malfunction" /mob/living/silicon/robot/lost/init() aiCamera = new/obj/item/camera/siliconcam/robot_camera(src) diff --git a/code/modules/mob/living/silicon/robot/subtypes/syndicate.dm b/code/modules/mob/living/silicon/robot/subtypes/syndicate.dm index 5dd72332e44..15a8257a499 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/syndicate.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/syndicate.dm @@ -8,6 +8,7 @@ idcard_type = /obj/item/card/id/syndicate icon_selected = FALSE restrict_modules_to = list("Protector", "Mechanist", "Combat Medic") + ui_theme = "syndicate" /mob/living/silicon/robot/syndicate/init() aiCamera = new/obj/item/camera/siliconcam/robot_camera(src) diff --git a/tgui/packages/tgui/interfaces/RobotChoose.tsx b/tgui/packages/tgui/interfaces/RobotChoose.tsx new file mode 100644 index 00000000000..670fba547cd --- /dev/null +++ b/tgui/packages/tgui/interfaces/RobotChoose.tsx @@ -0,0 +1,52 @@ +import { useBackend } from 'tgui/backend'; +import { Window } from 'tgui/layouts'; +import { Button, Dropdown, Stack } from 'tgui-core/components'; + +type Data = { + possible_modules: string[]; + possible_sprites: string[]; + theme?: string; + selected_module?: string; + sprite_datum?: string; +}; + +export const RobotChoose = (props) => { + const { act, data } = useBackend(); + + const { + possible_modules, + possible_sprites, + selected_module, + sprite_datum, + theme, + } = data; + + return ( + + + + + act('pick_module', { value })} + selected={selected_module} + /> + + + act('pick_icon', { value })} + selected={sprite_datum} + /> + + + + + + ); +}; diff --git a/tgui/packages/tgui/interfaces/Robotact/index.tsx b/tgui/packages/tgui/interfaces/Robotact/index.tsx index 94b97253342..1ab5ea486aa 100644 --- a/tgui/packages/tgui/interfaces/Robotact/index.tsx +++ b/tgui/packages/tgui/interfaces/Robotact/index.tsx @@ -18,7 +18,7 @@ export const Robotact = (props) => { } return ( - + {content} ); diff --git a/tgui/packages/tgui/interfaces/Robotact/types.ts b/tgui/packages/tgui/interfaces/Robotact/types.ts index bd33676d99d..b4232ff6e43 100644 --- a/tgui/packages/tgui/interfaces/Robotact/types.ts +++ b/tgui/packages/tgui/interfaces/Robotact/types.ts @@ -31,6 +31,7 @@ export type Data = { max_health: number; light_color: string; + theme?: string; // Modules modules_static: Module[]; From 890548b14ffc69cbc3c4133aa0ec5f2671a11a12 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Sun, 10 Nov 2024 22:07:17 +0100 Subject: [PATCH 21/53] =?UTF-8?q?=C2=B4some=20ui=20basics?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../living/silicon/robot/robot_ui_module.dm | 12 +++-- tgui/packages/tgui/interfaces/RobotChoose.tsx | 52 ------------------- .../interfaces/RobotChoose/ModuleSection.tsx | 47 +++++++++++++++++ .../RobotChoose/SelectorElement.tsx | 36 +++++++++++++ .../interfaces/RobotChoose/SpriteSection.tsx | 48 +++++++++++++++++ .../tgui/interfaces/RobotChoose/index.tsx | 46 ++++++++++++++++ .../tgui/interfaces/RobotChoose/types.ts | 9 ++++ 7 files changed, 195 insertions(+), 55 deletions(-) delete mode 100644 tgui/packages/tgui/interfaces/RobotChoose.tsx create mode 100644 tgui/packages/tgui/interfaces/RobotChoose/ModuleSection.tsx create mode 100644 tgui/packages/tgui/interfaces/RobotChoose/SelectorElement.tsx create mode 100644 tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx create mode 100644 tgui/packages/tgui/interfaces/RobotChoose/index.tsx create mode 100644 tgui/packages/tgui/interfaces/RobotChoose/types.ts diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index e861cbabb84..8e8fbcb6aaf 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -15,8 +15,8 @@ var/list/modules = list() if(R.module) - modules = list(R.module) - selected_module = R.module + modules = list(R.modtype) + selected_module = R.modtype else if(LAZYLEN(R.restrict_modules_to) > 0) modules.Add(R.restrict_modules_to) @@ -55,8 +55,11 @@ to_chat(R, span_warning("Your module appears to have no sprite options. Harass a coder.")) selected_module = null return + var/list/available_sprites = list() + for(var/datum/robot_sprite/S in module_sprites) + available_sprites += list(list("sprite" = S.name, "belly" = S.has_vore_belly_sprites)) - data["possible_sprites"] = module_sprites + data["possible_sprites"] = available_sprites if(sprite_datum) data["sprite_datum"] = sprite_datum @@ -79,6 +82,9 @@ if(!is_borg_whitelisted(R, new_module)) return selected_module = new_module + var/list/module_sprites = SSrobot_sprites.get_module_sprites(selected_module, R) + if(!R.sprite_datum in module_sprites) + sprite_datum = null . = TRUE if("pick_icon") var/sprite = params["value"] diff --git a/tgui/packages/tgui/interfaces/RobotChoose.tsx b/tgui/packages/tgui/interfaces/RobotChoose.tsx deleted file mode 100644 index 670fba547cd..00000000000 --- a/tgui/packages/tgui/interfaces/RobotChoose.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { useBackend } from 'tgui/backend'; -import { Window } from 'tgui/layouts'; -import { Button, Dropdown, Stack } from 'tgui-core/components'; - -type Data = { - possible_modules: string[]; - possible_sprites: string[]; - theme?: string; - selected_module?: string; - sprite_datum?: string; -}; - -export const RobotChoose = (props) => { - const { act, data } = useBackend(); - - const { - possible_modules, - possible_sprites, - selected_module, - sprite_datum, - theme, - } = data; - - return ( - - - - - act('pick_module', { value })} - selected={selected_module} - /> - - - act('pick_icon', { value })} - selected={sprite_datum} - /> - - - - - - ); -}; diff --git a/tgui/packages/tgui/interfaces/RobotChoose/ModuleSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/ModuleSection.tsx new file mode 100644 index 00000000000..2a7fafc3718 --- /dev/null +++ b/tgui/packages/tgui/interfaces/RobotChoose/ModuleSection.tsx @@ -0,0 +1,47 @@ +import { createSearch } from 'common/string'; +import { useState } from 'react'; +import { Input, Section, Stack } from 'tgui-core/components'; + +import { SelectorElement } from './SelectorElement'; + +export const ModuleSection = (props: { + title: string; + sortable?: string[]; + selected?: string; +}) => { + const { title, sortable, selected } = props; + + const [searchText, setSearchText] = useState(''); + + const searcher = createSearch(searchText, (element: string) => { + return element; + }); + + const filtered = sortable?.filter(searcher); + + return ( +

+ + setSearchText(value)} + /> + + + + {filtered && + filtered.map((filter) => ( + + ))} + + +
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/RobotChoose/SelectorElement.tsx b/tgui/packages/tgui/interfaces/RobotChoose/SelectorElement.tsx new file mode 100644 index 00000000000..3335fa8192d --- /dev/null +++ b/tgui/packages/tgui/interfaces/RobotChoose/SelectorElement.tsx @@ -0,0 +1,36 @@ +import { useBackend } from 'tgui/backend'; +import { Button, Flex, Icon, Stack } from 'tgui-core/components'; + +export const SelectorElement = (props: { + option: string; + action: string; + selected?: string; + belly?: boolean; +}) => { + const { act } = useBackend(); + const { option, action, selected, belly } = props; + + return ( + + + + ); +}; diff --git a/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx new file mode 100644 index 00000000000..7c8782aa231 --- /dev/null +++ b/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx @@ -0,0 +1,48 @@ +import { createSearch } from 'common/string'; +import { useState } from 'react'; +import { Input, Section, Stack } from 'tgui-core/components'; + +import { SelectorElement } from './SelectorElement'; +import { spriteOption } from './types'; + +export const SpriteSection = (props: { + title: string; + sortable?: { sprite: string; belly: boolean }[]; + selected?: string; +}) => { + const { title, sortable, selected } = props; + + const [searchText, setSearchText] = useState(''); + + const searcher = createSearch(searchText, (element: spriteOption) => { + return element.sprite; + }); + + const filtered = sortable?.filter(searcher); + return ( +
+ + setSearchText(value)} + /> + + + + {filtered && + filtered.map((filter) => ( + + ))} + + +
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/RobotChoose/index.tsx b/tgui/packages/tgui/interfaces/RobotChoose/index.tsx new file mode 100644 index 00000000000..fcb6e5c408d --- /dev/null +++ b/tgui/packages/tgui/interfaces/RobotChoose/index.tsx @@ -0,0 +1,46 @@ +import { useBackend } from 'tgui/backend'; +import { Window } from 'tgui/layouts'; +import { Button, Stack } from 'tgui-core/components'; + +import { ModuleSection } from './ModuleSection'; +import { SpriteSection } from './SpriteSection'; +import { Data } from './types'; + +export const RobotChoose = (props) => { + const { act, data } = useBackend(); + + const { + possible_modules, + possible_sprites, + selected_module, + sprite_datum, + theme, + } = data; + + return ( + + + + + + + + + + + + ); +}; diff --git a/tgui/packages/tgui/interfaces/RobotChoose/types.ts b/tgui/packages/tgui/interfaces/RobotChoose/types.ts new file mode 100644 index 00000000000..ac06afe56de --- /dev/null +++ b/tgui/packages/tgui/interfaces/RobotChoose/types.ts @@ -0,0 +1,9 @@ +export type Data = { + possible_modules: string[]; + possible_sprites?: spriteOption[]; + theme?: string; + selected_module?: string; + sprite_datum?: string; +}; + +export type spriteOption = { sprite: string; belly: boolean }; From 9b24439eac848a586e327d6e84873db1838202b7 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Sun, 10 Nov 2024 22:18:05 +0100 Subject: [PATCH 22/53] . --- code/modules/mob/living/silicon/robot/robot_ui_module.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 8e8fbcb6aaf..8f2e4bbe93c 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -83,7 +83,7 @@ return selected_module = new_module var/list/module_sprites = SSrobot_sprites.get_module_sprites(selected_module, R) - if(!R.sprite_datum in module_sprites) + if(!sprite_datum in module_sprites) sprite_datum = null . = TRUE if("pick_icon") From 6b88488c55d165facbc567474b37702d234df9ad Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Sun, 10 Nov 2024 23:10:29 +0100 Subject: [PATCH 23/53] divide by sprite type --- .../living/silicon/robot/robot_ui_module.dm | 7 ++- .../RobotChoose/SelectorElement.tsx | 1 - .../interfaces/RobotChoose/SpriteSection.tsx | 50 +++++++++++++++---- .../tgui/interfaces/RobotChoose/functions.ts | 47 +++++++++++++++++ .../tgui/interfaces/RobotChoose/types.ts | 2 +- 5 files changed, 95 insertions(+), 12 deletions(-) create mode 100644 tgui/packages/tgui/interfaces/RobotChoose/functions.ts diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 8f2e4bbe93c..7ea6049d0ee 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -57,7 +57,12 @@ return var/list/available_sprites = list() for(var/datum/robot_sprite/S in module_sprites) - available_sprites += list(list("sprite" = S.name, "belly" = S.has_vore_belly_sprites)) + var/model_type = "def" + if(istype(S, /datum/robot_sprite/dogborg)) + model_type = "wide" + if(istype(S, /datum/robot_sprite/dogborg/tall)) + model_type = "tall" + available_sprites += list(list("sprite" = S.name, "belly" = S.has_vore_belly_sprites, "type" = model_type)) data["possible_sprites"] = available_sprites if(sprite_datum) diff --git a/tgui/packages/tgui/interfaces/RobotChoose/SelectorElement.tsx b/tgui/packages/tgui/interfaces/RobotChoose/SelectorElement.tsx index 3335fa8192d..d1beda36d0f 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/SelectorElement.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/SelectorElement.tsx @@ -15,7 +15,6 @@ export const SelectorElement = (props: { + } + > + {!!sprite && !!module && ( + <> + + + + + + + + + + + + + + )} + + ); +}; diff --git a/tgui/packages/tgui/interfaces/RobotChoose/ModuleSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/ModuleSection.tsx index 2a7fafc3718..c90dbbe7be5 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/ModuleSection.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/ModuleSection.tsx @@ -31,7 +31,7 @@ export const ModuleSection = (props: { - {filtered && + {!!filtered && filtered.map((filter) => ( - {' '} diff --git a/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx index 31fb410700d..13cba8fc052 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx @@ -63,7 +63,7 @@ export const SpriteSection = (props: { - {filtered && + {!!filtered && filtered.map((filter) => ( { - const { act, data } = useBackend(); + const { data } = useBackend(); const { possible_modules, @@ -31,14 +32,7 @@ export const RobotChoose = (props) => { sortable={possible_sprites} selected={sprite_datum} /> - - - + From b09bdf0397c9ce8c3420dd97262342a61c28a5a9 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 00:21:24 +0100 Subject: [PATCH 27/53] . --- code/modules/mob/living/silicon/robot/robot_ui_module.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 5dc30cfdbcf..6037834bf14 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -92,7 +92,7 @@ return selected_module = new_module var/list/module_sprites = SSrobot_sprites.get_module_sprites(selected_module, R) - if(!sprite_datum in module_sprites) + if(!(sprite_datum in module_sprites)) sprite_datum = null . = TRUE if("pick_icon") From b563c08d04b2efe32cf86561c91125384701b5d9 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 00:31:32 +0100 Subject: [PATCH 28/53] . --- code/modules/asset_cache/asset_list_items.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index c2296302211..699e48e99cf 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -445,7 +445,6 @@ for(var/datum/robot_sprite/S as anything in typesof(/datum/robot_sprite)) if(!S.name) continue - to_world("[S.name]]") var/icon/I_S = icon(S.sprite_icon, S.sprite_icon_state, SOUTH) var/icon/I_N = icon(S.sprite_icon, S.sprite_icon_state, NORTH) var/icon/I_W = icon(S.sprite_icon, S.sprite_icon_state, WEST) From e6e6449c79b8ea6580b26a207d3eea2ea3ae1814 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 01:25:24 +0100 Subject: [PATCH 29/53] we only need out own asset --- code/modules/mob/living/silicon/robot/robot_ui_module.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 6037834bf14..435c5241460 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -10,7 +10,9 @@ /datum/tgui_module/robot_ui_module/ui_assets(mob/user) - . += get_asset_datum(/datum/asset/spritesheet/robot_icons) + return list( + get_asset_datum(/datum/asset/spritesheet/robot_icons) + ) /datum/tgui_module/robot_ui_module/tgui_static_data() var/list/data = ..() From bbff768a4650bc2309775a1df0102fd2aafee215 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 01:27:51 +0100 Subject: [PATCH 30/53] we need sprite and module for it anyway --- code/modules/asset_cache/asset_list_items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 699e48e99cf..911dd62fb06 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -443,7 +443,7 @@ /datum/asset/spritesheet/robot_icons/create_spritesheets() for(var/datum/robot_sprite/S as anything in typesof(/datum/robot_sprite)) - if(!S.name) + if(!S.name || !S.module_type) continue var/icon/I_S = icon(S.sprite_icon, S.sprite_icon_state, SOUTH) var/icon/I_N = icon(S.sprite_icon, S.sprite_icon_state, NORTH) From 1ca37e1ad73ee9c317dbf8f4be1fa38c105600b4 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 02:05:08 +0100 Subject: [PATCH 31/53] some Ui things --- code/_helpers/text.dm | 5 +++++ code/modules/asset_cache/asset_list_items.dm | 11 ++++++----- .../mob/living/silicon/robot/robot_ui_module.dm | 4 +++- .../tgui/interfaces/RobotChoose/IconSection.tsx | 14 +++++++------- .../interfaces/RobotChoose/SelectorElement.tsx | 2 +- .../tgui/interfaces/RobotChoose/SpriteSection.tsx | 2 +- .../packages/tgui/interfaces/RobotChoose/index.tsx | 3 ++- tgui/packages/tgui/interfaces/RobotChoose/types.ts | 3 ++- 8 files changed, 27 insertions(+), 17 deletions(-) diff --git a/code/_helpers/text.dm b/code/_helpers/text.dm index 520b98d39ad..3357116d308 100644 --- a/code/_helpers/text.dm +++ b/code/_helpers/text.dm @@ -620,3 +620,8 @@ return json_decode(data) catch return null + +/// Removes all non-alphanumerics from the text, keep in mind this can lead to id conflicts +/proc/sanitize_css_class_name(name) + var/static/regex/regex = new(@"[^a-zA-Z0-9]","g") + return replacetext(name, regex, "") diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 911dd62fb06..b0dc6223e6b 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -443,7 +443,7 @@ /datum/asset/spritesheet/robot_icons/create_spritesheets() for(var/datum/robot_sprite/S as anything in typesof(/datum/robot_sprite)) - if(!S.name || !S.module_type) + if(!S.name) continue var/icon/I_S = icon(S.sprite_icon, S.sprite_icon_state, SOUTH) var/icon/I_N = icon(S.sprite_icon, S.sprite_icon_state, NORTH) @@ -461,10 +461,11 @@ var/icon/I_EE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", EAST) if(I_EE) I_E.Blend(I_EE, ICON_OVERLAY) - Insert(S.module_type + S.name + "_S", I_S) - Insert(S.module_type + S.name + "_N", I_N) - Insert(S.module_type + S.name + "_W", I_W) - Insert(S.module_type + S.name + "_E", I_E) + var/imgid = sanitize_css_class_name("[S.type]") + Insert(imgid + "_S", I_S) + Insert(imgid + "_N", I_N) + Insert(imgid + "_W", I_W) + Insert(imgid + "_E", I_E) //Cloning pod sprites for UIs diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 435c5241460..1c3973d5dc6 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -71,8 +71,10 @@ available_sprites += list(list("sprite" = S.name, "belly" = S.has_vore_belly_sprites, "type" = model_type)) data["possible_sprites"] = available_sprites + data["sprite_datum"] = sprite_datum + data["asset"] = null if(sprite_datum) - data["sprite_datum"] = sprite_datum + data["asset"] = sanitize_css_class_name("[sprite_datum.type]") return data diff --git a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx index f066f1b5071..8f18137ea19 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx @@ -2,9 +2,9 @@ import { resolveAsset } from 'tgui/assets'; import { useBackend } from 'tgui/backend'; import { Button, Image, Section, Stack } from 'tgui-core/components'; -export const IconSection = (props: { module?: string; sprite?: string }) => { +export const IconSection = (props: { sprite?: string | null }) => { const { act } = useBackend(); - const { module, sprite } = props; + const { sprite } = props; return (
{ } > - {!!sprite && !!module && ( + {!!sprite && ( <> { { { { const { act } = useBackend(); diff --git a/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx index 13cba8fc052..b9906e252e7 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx @@ -7,8 +7,8 @@ import { spriteOption } from './types'; export const SpriteSection = (props: { title: string; + selected?: string | null; sortable?: spriteOption[]; - selected?: string; }) => { const { title, sortable, selected } = props; diff --git a/tgui/packages/tgui/interfaces/RobotChoose/index.tsx b/tgui/packages/tgui/interfaces/RobotChoose/index.tsx index 999b0c687fb..3f04b68e772 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/index.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/index.tsx @@ -16,6 +16,7 @@ export const RobotChoose = (props) => { selected_module, sprite_datum, theme, + asset, } = data; return ( @@ -32,7 +33,7 @@ export const RobotChoose = (props) => { sortable={possible_sprites} selected={sprite_datum} /> - + diff --git a/tgui/packages/tgui/interfaces/RobotChoose/types.ts b/tgui/packages/tgui/interfaces/RobotChoose/types.ts index 1fa9774eb9a..60bab5ac9de 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/types.ts +++ b/tgui/packages/tgui/interfaces/RobotChoose/types.ts @@ -3,7 +3,8 @@ export type Data = { possible_sprites?: spriteOption[]; theme?: string; selected_module?: string; - sprite_datum?: string; + sprite_datum?: string | null; + asset?: string | null; }; export type spriteOption = { sprite: string; belly: boolean; type: string }; From f80786eb9d9b72ef4fb19e5ea1872a73ed97d6a6 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 02:38:48 +0100 Subject: [PATCH 32/53] getting there, thanks Shadow --- code/modules/asset_cache/asset_list_items.dm | 16 ++++---- .../living/silicon/robot/robot_ui_module.dm | 6 ++- .../interfaces/RobotChoose/IconSection.tsx | 41 ++++++------------- .../tgui/interfaces/RobotChoose/index.tsx | 5 ++- .../tgui/interfaces/RobotChoose/types.ts | 3 +- 5 files changed, 29 insertions(+), 42 deletions(-) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index b0dc6223e6b..09cb6d2af95 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -445,16 +445,16 @@ for(var/datum/robot_sprite/S as anything in typesof(/datum/robot_sprite)) if(!S.name) continue - var/icon/I_S = icon(S.sprite_icon, S.sprite_icon_state, SOUTH) var/icon/I_N = icon(S.sprite_icon, S.sprite_icon_state, NORTH) + var/icon/I_S = icon(S.sprite_icon, S.sprite_icon_state, SOUTH) var/icon/I_W = icon(S.sprite_icon, S.sprite_icon_state, WEST) var/icon/I_E = icon(S.sprite_icon, S.sprite_icon_state, EAST) - var/icon/I_SE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", SOUTH) - if(I_SE) - I_S.Blend(I_SE, ICON_OVERLAY) var/icon/I_NE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", NORTH) if(I_NE) I_N.Blend(I_NE, ICON_OVERLAY) + var/icon/I_SE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", SOUTH) + if(I_SE) + I_S.Blend(I_SE, ICON_OVERLAY) var/icon/I_WE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", WEST) if(I_WE) I_W.Blend(I_WE, ICON_OVERLAY) @@ -462,10 +462,10 @@ if(I_EE) I_E.Blend(I_EE, ICON_OVERLAY) var/imgid = sanitize_css_class_name("[S.type]") - Insert(imgid + "_S", I_S) - Insert(imgid + "_N", I_N) - Insert(imgid + "_W", I_W) - Insert(imgid + "_E", I_E) + Insert(imgid + "N", I_N) + Insert(imgid + "S", I_S) + Insert(imgid + "W", I_W) + Insert(imgid + "E", I_E) //Cloning pod sprites for UIs diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 1c3973d5dc6..1090c527140 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -48,6 +48,7 @@ var/list/data = ..() var/mob/living/silicon/robot/R = host + var/datum/asset/spritesheet/robot_icons/spritesheet = get_asset_datum(/datum/asset/spritesheet/robot_icons) if(selected_module) data["selected_module"] = selected_module @@ -72,9 +73,10 @@ data["possible_sprites"] = available_sprites data["sprite_datum"] = sprite_datum - data["asset"] = null + data["sprite_datum_class"] = null if(sprite_datum) - data["asset"] = sanitize_css_class_name("[sprite_datum.type]") + data["sprite_datum_class"] = sanitize_css_class_name("[sprite_datum.type]") + data["sprite_datum_size"] = spritesheet.icon_size_id(data["sprite_datum_class"] + "S") // just get the south icon's size, the rest will be the same return data diff --git a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx index 8f18137ea19..ac61e464a13 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx @@ -1,10 +1,13 @@ -import { resolveAsset } from 'tgui/assets'; import { useBackend } from 'tgui/backend'; -import { Button, Image, Section, Stack } from 'tgui-core/components'; +import { Box, Button, Section, Stack } from 'tgui-core/components'; +import { classes } from 'tgui-core/react'; -export const IconSection = (props: { sprite?: string | null }) => { +export const IconSection = (props: { + sprite?: string | null; + size?: string; +}) => { const { act } = useBackend(); - const { sprite } = props; + const { sprite, size } = props; return (
{ } > - {!!sprite && ( + {!!sprite && !!size && ( <> - + - + - + - + )} diff --git a/tgui/packages/tgui/interfaces/RobotChoose/index.tsx b/tgui/packages/tgui/interfaces/RobotChoose/index.tsx index 3f04b68e772..e3fe8f5a0f9 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/index.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/index.tsx @@ -16,7 +16,8 @@ export const RobotChoose = (props) => { selected_module, sprite_datum, theme, - asset, + sprite_datum_class, + sprite_datum_size, } = data; return ( @@ -33,7 +34,7 @@ export const RobotChoose = (props) => { sortable={possible_sprites} selected={sprite_datum} /> - + diff --git a/tgui/packages/tgui/interfaces/RobotChoose/types.ts b/tgui/packages/tgui/interfaces/RobotChoose/types.ts index 60bab5ac9de..9f5f425e9d6 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/types.ts +++ b/tgui/packages/tgui/interfaces/RobotChoose/types.ts @@ -4,7 +4,8 @@ export type Data = { theme?: string; selected_module?: string; sprite_datum?: string | null; - asset?: string | null; + sprite_datum_class?: string | null; + sprite_datum_size?: string; }; export type spriteOption = { sprite: string; belly: boolean; type: string }; From 9157d163bc1b25c8fa5fa194f632d9fec114d816 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 03:23:43 +0100 Subject: [PATCH 33/53] some styling --- code/modules/asset_cache/asset_list_items.dm | 4 +++ .../living/silicon/robot/robot_ui_module.dm | 1 + .../interfaces/RobotChoose/IconSection.tsx | 36 +++++++++++++++---- .../tgui/interfaces/RobotChoose/types.ts | 2 +- 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 09cb6d2af95..88211f7a4dc 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -462,6 +462,10 @@ if(I_EE) I_E.Blend(I_EE, ICON_OVERLAY) var/imgid = sanitize_css_class_name("[S.type]") + I_N.Scale(120,120) + I_S.Scale(120,120) + I_W.Scale(120,120) + I_E.Scale(120,120) Insert(imgid + "N", I_N) Insert(imgid + "S", I_S) Insert(imgid + "W", I_W) diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 1090c527140..78b9c592e40 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -74,6 +74,7 @@ data["possible_sprites"] = available_sprites data["sprite_datum"] = sprite_datum data["sprite_datum_class"] = null + data["sprite_datum_size"] = null if(sprite_datum) data["sprite_datum_class"] = sanitize_css_class_name("[sprite_datum.type]") data["sprite_datum_size"] = spritesheet.icon_size_id(data["sprite_datum_class"] + "S") // just get the south icon's size, the rest will be the same diff --git a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx index ac61e464a13..20a03b5cd09 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx @@ -1,10 +1,10 @@ import { useBackend } from 'tgui/backend'; -import { Box, Button, Section, Stack } from 'tgui-core/components'; +import { Box, Button, Flex, Section, Stack } from 'tgui-core/components'; import { classes } from 'tgui-core/react'; export const IconSection = (props: { sprite?: string | null; - size?: string; + size?: string | null; }) => { const { act } = useBackend(); const { sprite, size } = props; @@ -24,16 +24,40 @@ export const IconSection = (props: { {!!sprite && !!size && ( <> - + + + + + + + - + + + + + + + - + + + + + + + - + + + + + + + )} diff --git a/tgui/packages/tgui/interfaces/RobotChoose/types.ts b/tgui/packages/tgui/interfaces/RobotChoose/types.ts index 9f5f425e9d6..18b57f6ce0d 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/types.ts +++ b/tgui/packages/tgui/interfaces/RobotChoose/types.ts @@ -5,7 +5,7 @@ export type Data = { selected_module?: string; sprite_datum?: string | null; sprite_datum_class?: string | null; - sprite_datum_size?: string; + sprite_datum_size?: string | null; }; export type spriteOption = { sprite: string; belly: boolean; type: string }; From d2bb281b45a1d0e3b243a5345f8eb17b2cfff317 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 03:58:53 +0100 Subject: [PATCH 34/53] fix --- code/modules/asset_cache/asset_list_items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 88211f7a4dc..7e268c77736 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -443,7 +443,7 @@ /datum/asset/spritesheet/robot_icons/create_spritesheets() for(var/datum/robot_sprite/S as anything in typesof(/datum/robot_sprite)) - if(!S.name) + if(!S.name || !S.sprite_icon_state) // snowflake out those customs... they suck continue var/icon/I_N = icon(S.sprite_icon, S.sprite_icon_state, NORTH) var/icon/I_S = icon(S.sprite_icon, S.sprite_icon_state, SOUTH) From acb6f568d5ce8c1343573391dfa15e39ffe3da99 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 04:03:41 +0100 Subject: [PATCH 35/53] ensure eyes --- code/modules/asset_cache/asset_list_items.dm | 28 +++++++++++--------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 7e268c77736..54be950ed54 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -449,18 +449,22 @@ var/icon/I_S = icon(S.sprite_icon, S.sprite_icon_state, SOUTH) var/icon/I_W = icon(S.sprite_icon, S.sprite_icon_state, WEST) var/icon/I_E = icon(S.sprite_icon, S.sprite_icon_state, EAST) - var/icon/I_NE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", NORTH) - if(I_NE) - I_N.Blend(I_NE, ICON_OVERLAY) - var/icon/I_SE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", SOUTH) - if(I_SE) - I_S.Blend(I_SE, ICON_OVERLAY) - var/icon/I_WE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", WEST) - if(I_WE) - I_W.Blend(I_WE, ICON_OVERLAY) - var/icon/I_EE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", EAST) - if(I_EE) - I_E.Blend(I_EE, ICON_OVERLAY) + if(S.has_eye_sprites) + var/icon/I_NE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", NORTH) + if(I_NE) + I_N.Blend(I_NE, ICON_OVERLAY) + if(S.has_eye_sprites) + var/icon/I_SE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", SOUTH) + if(I_SE) + I_S.Blend(I_SE, ICON_OVERLAY) + if(S.has_eye_sprites) + var/icon/I_WE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", WEST) + if(I_WE) + I_W.Blend(I_WE, ICON_OVERLAY) + if(S.has_eye_sprites) + var/icon/I_EE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", EAST) + if(I_EE) + I_E.Blend(I_EE, ICON_OVERLAY) var/imgid = sanitize_css_class_name("[S.type]") I_N.Scale(120,120) I_S.Scale(120,120) From ba9b3e3676abaf83021962a42f133d40bcd0818f Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 08:53:52 +0100 Subject: [PATCH 36/53] include renaming --- code/game/objects/items/antag_spawners.dm | 1 - code/game/objects/items/robot/robot_parts.dm | 1 - .../game/objects/structures/ghost_pods/silicon.dm | 2 -- .../objects/structures/ghost_pods/silicon_vr.dm | 1 - code/modules/mob/living/silicon/robot/robot.dm | 15 ++++++--------- .../mob/living/silicon/robot/robot_ui_module.dm | 11 +++++++++++ code/modules/mob/transform_procs.dm | 1 - .../tgui/interfaces/RobotChoose/IconSection.tsx | 13 +++++++++++-- .../tgui/interfaces/RobotChoose/index.tsx | 7 ++++++- .../packages/tgui/interfaces/RobotChoose/types.ts | 1 + 10 files changed, 35 insertions(+), 18 deletions(-) diff --git a/code/game/objects/items/antag_spawners.dm b/code/game/objects/items/antag_spawners.dm index 8371f5b0175..28817531895 100644 --- a/code/game/objects/items/antag_spawners.dm +++ b/code/game/objects/items/antag_spawners.dm @@ -118,7 +118,6 @@ to speak with your team, and learn what their plan is for today.")) R.key = C.key -// R.Namepick() // Apparnetly making someone a merc lets them pick a name, so this isn't needed. spawn(1) mercs.add_antagonist(R.mind, FALSE, TRUE, FALSE, FALSE, FALSE) diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 32af47b31af..2667b9d3f66 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -225,7 +225,6 @@ feedback_inc("cyborg_birth",1) callHook("borgify", list(O)) - O.namepick() qdel(src) else diff --git a/code/game/objects/structures/ghost_pods/silicon.dm b/code/game/objects/structures/ghost_pods/silicon.dm index 64ac8f5674b..4f50784aed2 100644 --- a/code/game/objects/structures/ghost_pods/silicon.dm +++ b/code/game/objects/structures/ghost_pods/silicon.dm @@ -31,7 +31,6 @@ from the pod is not a crewmember.")) R.ckey = M.ckey visible_message(span_warning("As \the [src] opens, the eyes of the robot flicker as it is activated.")) - R.namepick() log_and_message_admins("successfully opened \a [src] and got a Lost Drone.") ..() @@ -57,7 +56,6 @@ definiton of 'your gravesite' is where your pod is.")) R.ckey = M.ckey visible_message(span_warning("As \the [src] opens, the eyes of the robot flicker as it is activated.")) - R.namepick() ..() /obj/structure/ghost_pod/ghost_activated/swarm_drone diff --git a/code/game/objects/structures/ghost_pods/silicon_vr.dm b/code/game/objects/structures/ghost_pods/silicon_vr.dm index cfc3b781d2f..1039349f2e1 100644 --- a/code/game/objects/structures/ghost_pods/silicon_vr.dm +++ b/code/game/objects/structures/ghost_pods/silicon_vr.dm @@ -21,7 +21,6 @@ from the pod is not a crewmember.")) R.ckey = M.ckey visible_message(span_warning("As \the [src] opens, the eyes of the robot flicker as it is activated.")) - R.namepick() log_and_message_admins("successfully opened \a [src] and got a Lost Drone.") used = TRUE return TRUE diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index cf978597b2f..28e680a0b76 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -407,15 +407,12 @@ to_chat(usr, "You can't pick another custom name. [isshell(src) ? "" : "Go ask for a name change."]") return 0 - spawn(0) - var/newname - newname = sanitizeSafe(tgui_input_text(src,"You are a robot. Enter a name, or leave blank for the default name.", "Name change","", MAX_NAME_LEN), MAX_NAME_LEN) - if (newname) - custom_name = newname - sprite_name = newname - - updatename() - update_icon() + var/newname = sanitizeSafe(tgui_input_text(src,"You are a robot. Enter a name, or leave blank for the default name.", "Name change","", MAX_NAME_LEN), MAX_NAME_LEN) + if (newname) + custom_name = newname + sprite_name = newname + + updatename() /mob/living/silicon/robot/verb/extra_customization() set name = "Customize Appearance" diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 78b9c592e40..883ad8c22c9 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -3,6 +3,7 @@ name = "Robot Module Configurator" tgui_id = "RobotChoose" var/selected_module + var/newName var/datum/robot_sprite/sprite_datum /datum/tgui_module/robot_ui_module/tgui_state(mob/user) @@ -50,6 +51,8 @@ var/mob/living/silicon/robot/R = host var/datum/asset/spritesheet/robot_icons/spritesheet = get_asset_datum(/datum/asset/spritesheet/robot_icons) + data["currentName"] = newName ? newName : R.name + if(selected_module) data["selected_module"] = selected_module if(!SSrobot_sprites) @@ -112,7 +115,15 @@ sprite_datum = S break . = TRUE + if("rename") + var/name = params["value"] + if(name) + newName = sanitizeSafe(name, MAX_NAME_LEN) if("confirm") + if(!R.custom_name) + if (newName) + R.custom_name = newName + R.sprite_name = newName R.icon_selected = 1 var/module_type = robot_modules[selected_module] R.modtype = selected_module diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index a686e35de7b..5d018586f1d 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -190,7 +190,6 @@ O.custom_speech_bubble = B.custom_speech_bubble callHook("borgify", list(O)) - O.namepick() spawn(0) // Mobs still instantly del themselves, thus we need to spawn or O will never be returned qdel(src) diff --git a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx index 20a03b5cd09..5426dac0c15 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx @@ -1,13 +1,14 @@ import { useBackend } from 'tgui/backend'; -import { Box, Button, Flex, Section, Stack } from 'tgui-core/components'; +import { Box, Button, Flex, Input, Section, Stack } from 'tgui-core/components'; import { classes } from 'tgui-core/react'; export const IconSection = (props: { + currentName: string; sprite?: string | null; size?: string | null; }) => { const { act } = useBackend(); - const { sprite, size } = props; + const { currentName, sprite, size } = props; return (
} > + + act('rename', { value })} + maxLength={52} + /> + {!!sprite && !!size && ( <> diff --git a/tgui/packages/tgui/interfaces/RobotChoose/index.tsx b/tgui/packages/tgui/interfaces/RobotChoose/index.tsx index e3fe8f5a0f9..50288a56a69 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/index.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/index.tsx @@ -16,6 +16,7 @@ export const RobotChoose = (props) => { selected_module, sprite_datum, theme, + currentName, sprite_datum_class, sprite_datum_size, } = data; @@ -34,7 +35,11 @@ export const RobotChoose = (props) => { sortable={possible_sprites} selected={sprite_datum} /> - + diff --git a/tgui/packages/tgui/interfaces/RobotChoose/types.ts b/tgui/packages/tgui/interfaces/RobotChoose/types.ts index 18b57f6ce0d..4febf2232a6 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/types.ts +++ b/tgui/packages/tgui/interfaces/RobotChoose/types.ts @@ -1,6 +1,7 @@ export type Data = { possible_modules: string[]; possible_sprites?: spriteOption[]; + currentName: string; theme?: string; selected_module?: string; sprite_datum?: string | null; From dde2880e50f8fb26f73839eab29f979aa7e87755 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 09:52:39 +0100 Subject: [PATCH 37/53] lock state --- code/modules/asset_cache/asset_list_items.dm | 8 ++++---- code/modules/mob/living/silicon/robot/robot.dm | 6 ++++-- .../mob/living/silicon/robot/robot_ui_module.dm | 11 +++++++++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 54be950ed54..564b0879488 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -466,10 +466,10 @@ if(I_EE) I_E.Blend(I_EE, ICON_OVERLAY) var/imgid = sanitize_css_class_name("[S.type]") - I_N.Scale(120,120) - I_S.Scale(120,120) - I_W.Scale(120,120) - I_E.Scale(120,120) + I_N.Scale(120, 120) + I_S.Scale(120, 120) + I_W.Scale(120, 120) + I_E.Scale(120, 120) Insert(imgid + "N", I_N) Insert(imgid + "S", I_S) Insert(imgid + "W", I_W) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 28e680a0b76..7b095cdc495 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -47,6 +47,7 @@ var/obj/screen/robot_modules_background var/ui_theme + var/selecting_module = FALSE //3 Modules can be activated at any one time. var/obj/item/robot_module/module = null @@ -345,8 +346,9 @@ sprite_datum = module_sprites[1] sprite_datum.do_equipment_glamour(module) return - var/datum/tgui_module/robot_ui_module/ui = new(src) - ui.tgui_interact(src) + if(!selecting_module) + var/datum/tgui_module/robot_ui_module/ui = new(src) + ui.tgui_interact(src) /mob/living/silicon/robot/proc/update_braintype() if(istype(mmi, /obj/item/mmi/digital/posibrain)) diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 883ad8c22c9..6b1ea6b2a6e 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -9,6 +9,17 @@ /datum/tgui_module/robot_ui_module/tgui_state(mob/user) return GLOB.tgui_self_state +/datum/tgui_module/robot_ui_module/tgui_close(mob/user) + . = ..() + if(isrobot(user)) + var/mob/living/silicon/robot/R = user + R.selecting_module = FALSE + +/datum/tgui_module/robot_ui_module/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui) + . = ..() + if(isrobot(user)) + var/mob/living/silicon/robot/R = user + R.selecting_module = TRUE /datum/tgui_module/robot_ui_module/ui_assets(mob/user) return list( From fbb720a66d4ffbce2470f723cb426d41052f89b6 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 10:14:05 +0100 Subject: [PATCH 38/53] modify robot to spritesheet --- code/modules/admin/modify_robot.dm | 20 +++++++++------ .../ModifyRobotTabs/ModifyRobotComponent.tsx | 24 ++++++++++-------- .../ModifyRobotTabs/ModifyRobotModules.tsx | 25 +++++++++++-------- .../ModifyRobotTabs/ModifyRobotRadio.tsx | 21 ++++++++-------- .../ModifyRobotTabs/ModifyRobotUpgrades.tsx | 21 ++++++++-------- .../tgui/interfaces/ModifyRobot/types.ts | 9 +++---- 6 files changed, 67 insertions(+), 53 deletions(-) diff --git a/code/modules/admin/modify_robot.dm b/code/modules/admin/modify_robot.dm index f2847943f35..64f486824d7 100644 --- a/code/modules/admin/modify_robot.dm +++ b/code/modules/admin/modify_robot.dm @@ -43,9 +43,16 @@ qdel(source) . = ..() +/datum/eventkit/modify_robot/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/robot_icons) + ) + /datum/eventkit/modify_robot/tgui_data(mob/user) . = list() // Target section for general data + var/datum/asset/spritesheet/robot_icons/spritesheet = get_asset_datum(/datum/asset/spritesheet/robot_icons) + if(target) .["target"] = list() .["target"]["name"] = target.name @@ -62,10 +69,8 @@ // Target section for options once a module has been selected if(target.module) .["target"]["active"] = target.icon_selected - .["target"]["front"] = icon2base64(get_flat_icon(target,dir=SOUTH,no_anim=TRUE)) - .["target"]["side"] = icon2base64(get_flat_icon(target,dir=WEST,no_anim=TRUE)) - .["target"]["side_alt"] = icon2base64(get_flat_icon(target,dir=EAST,no_anim=TRUE)) - .["target"]["back"] = icon2base64(get_flat_icon(target,dir=NORTH,no_anim=TRUE)) + .["target"]["sprite"] = sanitize_css_class_name("[target.sprite_datum.type]") + .["target"]["sprite_size"] = spritesheet.icon_size_id(.["target"]["sprite"] + "S") .["target"]["modules"] = get_target_items(user) var/list/module_options = list() for(var/module in robot_modules) @@ -110,7 +115,7 @@ .["access_options"] = access_options // Section for source data for the module we might want to salvage if(source) - .["source"] += get_module_source(user) + .["source"] += get_module_source(user, spritesheet) var/list/all_robots = list() for(var/mob/living/silicon/robot/R in silicon_mob_list) if(!R.loc) @@ -573,10 +578,11 @@ target_items += list(list("name" = item.name, "ref" = "\ref[item]", "icon" = icon2html(item, user, sourceonly=TRUE), "desc" = item.desc)) return target_items -/datum/eventkit/modify_robot/proc/get_module_source(var/mob/user) +/datum/eventkit/modify_robot/proc/get_module_source(var/mob/user, var/datum/asset/spritesheet/robot_icons/spritesheet) var/list/source_list = list() source_list["model"] = source.module - source_list["front"] = icon2base64(get_flat_icon(source,dir=SOUTH,no_anim=TRUE)) + source_list["sprite"] = sanitize_css_class_name("[source.sprite_datum.type]") + source_list["sprite_size"] = spritesheet.icon_size_id(source_list["sprite"] + "S") var/list/source_items = list() for(var/obj/item in (source.module.modules | source.module.emag)) var/exists diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/ModifyRobotTabs/ModifyRobotComponent.tsx b/tgui/packages/tgui/interfaces/ModifyRobot/ModifyRobotTabs/ModifyRobotComponent.tsx index 293db7da7de..165b95af2e7 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/ModifyRobotTabs/ModifyRobotComponent.tsx +++ b/tgui/packages/tgui/interfaces/ModifyRobot/ModifyRobotTabs/ModifyRobotComponent.tsx @@ -2,16 +2,17 @@ import { capitalize } from 'common/string'; import { useState } from 'react'; import { useBackend } from 'tgui/backend'; import { + Box, Button, Divider, Flex, Icon, - Image, Input, Section, Stack, Tabs, } from 'tgui/components'; +import { classes } from 'tgui-core/react'; import { NoSpriteWarning } from '../components'; import { @@ -163,15 +164,18 @@ export const ModifyRobotComponent = (props: { - + + + + + + + diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/ModifyRobotTabs/ModifyRobotModules.tsx b/tgui/packages/tgui/interfaces/ModifyRobot/ModifyRobotTabs/ModifyRobotModules.tsx index 045025ccd56..85ad5a6da4c 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/ModifyRobotTabs/ModifyRobotModules.tsx +++ b/tgui/packages/tgui/interfaces/ModifyRobot/ModifyRobotTabs/ModifyRobotModules.tsx @@ -13,6 +13,7 @@ import { Section, Stack, } from 'tgui/components'; +import { classes } from 'tgui-core/react'; import { NoSpriteWarning } from '../components'; import { prepareSearch } from '../functions'; @@ -47,7 +48,8 @@ export const ModifyRobotModules = (props: { /> {!!source && ( - + + + + + + + { /> - + + + + + + + { /> - + + + + + + + Date: Mon, 11 Nov 2024 10:26:17 +0100 Subject: [PATCH 39/53] returns and ui state --- code/modules/mob/living/silicon/robot/robot_ui_module.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 6b1ea6b2a6e..91cd796c5a0 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -17,7 +17,7 @@ /datum/tgui_module/robot_ui_module/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui) . = ..() - if(isrobot(user)) + if(isrobot(user) && ui) var/mob/living/silicon/robot/R = user R.selecting_module = TRUE @@ -130,6 +130,7 @@ var/name = params["value"] if(name) newName = sanitizeSafe(name, MAX_NAME_LEN) + . = TRUE if("confirm") if(!R.custom_name) if (newName) @@ -160,3 +161,4 @@ R.sprite_datum.do_equipment_glamour(R.module) to_chat(R, span_filter_notice("Your icon has been set. You now require a module reset to change it.")) close_ui() + . = TRUE From ea8ca79712550af533f7a8989d69b42208d19d88 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 11:47:29 +0100 Subject: [PATCH 40/53] update --- .../living/silicon/robot/robot_ui_module.dm | 1 + .../interfaces/RobotChoose/IconSection.tsx | 27 ++++++++++++++----- .../RobotChoose/SelectorElement.tsx | 2 +- .../interfaces/RobotChoose/SpriteSection.tsx | 8 +++--- .../tgui/interfaces/RobotChoose/functions.ts | 4 +-- .../tgui/interfaces/RobotChoose/index.tsx | 2 ++ .../tgui/interfaces/RobotChoose/types.ts | 1 + 7 files changed, 31 insertions(+), 14 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 91cd796c5a0..7d37eca48f6 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -63,6 +63,7 @@ var/datum/asset/spritesheet/robot_icons/spritesheet = get_asset_datum(/datum/asset/spritesheet/robot_icons) data["currentName"] = newName ? newName : R.name + data["isDefaultName"] = !newName if(selected_module) data["selected_module"] = selected_module diff --git a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx index 5426dac0c15..3fd39c36e1a 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx @@ -2,13 +2,16 @@ import { useBackend } from 'tgui/backend'; import { Box, Button, Flex, Input, Section, Stack } from 'tgui-core/components'; import { classes } from 'tgui-core/react'; +import { Tooltip } from '../../components'; + export const IconSection = (props: { currentName: string; + isDefaultName: boolean; sprite?: string | null; size?: string | null; }) => { const { act } = useBackend(); - const { currentName, sprite, size } = props; + const { currentName, isDefaultName, sprite, size } = props; return (
- act('rename', { value })} - maxLength={52} - /> + + + Name: + + + + act('rename', { value })} + maxLength={52} + textColor={isDefaultName ? 'red' : undefined} + /> + + + {!!sprite && !!size && ( <> diff --git a/tgui/packages/tgui/interfaces/RobotChoose/SelectorElement.tsx b/tgui/packages/tgui/interfaces/RobotChoose/SelectorElement.tsx index 7da0a1ad325..3279ce78829 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/SelectorElement.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/SelectorElement.tsx @@ -19,7 +19,7 @@ export const SelectorElement = (props: { > {option} - {belly && ( + {!!belly && ( <> diff --git a/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx index b9906e252e7..d287792d025 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx @@ -14,13 +14,13 @@ export const SpriteSection = (props: { const [searchText, setSearchText] = useState(''); const [includeDefault, setIncludeDefault] = useState(false); - const [includeDog, setInclideDog] = useState(false); + const [includeWide, setInclideDog] = useState(false); const [includeTall, setIncludeTall] = useState(false); const filtered = robotSpriteSearcher( searchText, includeDefault, - includeDog, + includeWide, includeTall, sortable, ); @@ -39,8 +39,8 @@ export const SpriteSection = (props: { Def setInclideDog(!includeDog)} + checked={includeWide} + onClick={() => setInclideDog(!includeWide)} > Wide diff --git a/tgui/packages/tgui/interfaces/RobotChoose/functions.ts b/tgui/packages/tgui/interfaces/RobotChoose/functions.ts index 81b0688ad8e..f42d00d83c2 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/functions.ts +++ b/tgui/packages/tgui/interfaces/RobotChoose/functions.ts @@ -7,7 +7,7 @@ import { spriteOption } from './types'; export function robotSpriteSearcher( searchText: string, includeDefault: boolean, - includeDog: boolean, + includeWide: boolean, includeTall: boolean, sprites?: spriteOption[], ): spriteOption[] { @@ -19,7 +19,7 @@ export function robotSpriteSearcher( if (includeDefault) { subtypes.push('def'); } - if (includeDog) { + if (includeWide) { subtypes.push('wide'); } if (includeTall) { diff --git a/tgui/packages/tgui/interfaces/RobotChoose/index.tsx b/tgui/packages/tgui/interfaces/RobotChoose/index.tsx index 50288a56a69..91d8dcb7d57 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/index.tsx +++ b/tgui/packages/tgui/interfaces/RobotChoose/index.tsx @@ -17,6 +17,7 @@ export const RobotChoose = (props) => { sprite_datum, theme, currentName, + isDefaultName, sprite_datum_class, sprite_datum_size, } = data; @@ -37,6 +38,7 @@ export const RobotChoose = (props) => { /> diff --git a/tgui/packages/tgui/interfaces/RobotChoose/types.ts b/tgui/packages/tgui/interfaces/RobotChoose/types.ts index 4febf2232a6..06d691c5893 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/types.ts +++ b/tgui/packages/tgui/interfaces/RobotChoose/types.ts @@ -2,6 +2,7 @@ export type Data = { possible_modules: string[]; possible_sprites?: spriteOption[]; currentName: string; + isDefaultName: boolean; theme?: string; selected_module?: string; sprite_datum?: string | null; From 455da0a4315e8d21481b3de806ab65422cd9ffec Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 12:08:31 +0100 Subject: [PATCH 41/53] fix ag janitor --- .../living/silicon/robot/robot_ui_module.dm | 8 ++++++-- icons/mob/robot/janitor.dmi | Bin 83218 -> 73403 bytes 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 7d37eca48f6..74c6ad4cda7 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -113,9 +113,13 @@ if(!is_borg_whitelisted(R, new_module)) return selected_module = new_module + var/new_datum var/list/module_sprites = SSrobot_sprites.get_module_sprites(selected_module, R) - if(!(sprite_datum in module_sprites)) - sprite_datum = null + for(var/datum/robot_sprite/S in module_sprites) + if(S.name == sprite_datum.name) + new_datum = S + break + sprite_datum = new_datum . = TRUE if("pick_icon") var/sprite = params["value"] diff --git a/icons/mob/robot/janitor.dmi b/icons/mob/robot/janitor.dmi index 7410b353a75514c1409b0b6109aee0dc6264d34a..3dbaa27a420e85e275ecd9be76fc98b9d7ef21c7 100644 GIT binary patch literal 73403 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 UlAf?)wgiElPMpk=Q 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 From a411368c80c34b4ed3288ccc988bf82420dc3683 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 12:50:04 +0100 Subject: [PATCH 42/53] theme should always be returned --- code/modules/mob/living/silicon/robot/robot_ui.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_ui.dm b/code/modules/mob/living/silicon/robot/robot_ui.dm index 7499fb198ea..11027cc20da 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui.dm @@ -52,6 +52,10 @@ var/mob/living/silicon/robot/R = host data["module_name"] = R.module ? "[R.module]" : null + if(R.emagged) + data["theme"] = "syndicate" + else if (R.ui_theme) + data["theme"] = R.ui_theme if(!R.module) return data @@ -63,10 +67,6 @@ data["health"] = R.health data["max_health"] = R.getMaxHealth() data["light_color"] = R.robot_light_col - if(R.emagged) - data["theme"] = "syndicate" - else if (R.ui_theme) - data["theme"] = R.ui_theme data["weapon_lock"] = R.weapon_lock From e5b47c5e49433f29a950f1f41da7b1b51acecdc2 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 12:51:44 +0100 Subject: [PATCH 43/53] less numbers --- code/modules/mob/living/silicon/robot/robot.dm | 4 ++-- code/modules/mob/living/silicon/robot/robot_ui_module.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 7b095cdc495..f3161e0e090 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -31,7 +31,7 @@ //Icon stuff var/datum/robot_sprite/sprite_datum // Sprite datum, holding all our sprite data - var/icon_selected = 0 // If icon selection has been completed yet + var/icon_selected = FALSE // If icon selection has been completed yet var/list/sprite_extra_customization = list() var/rest_style = "Default" var/notransform @@ -766,7 +766,7 @@ notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, module.name) module.Reset(src) qdel(module) - icon_selected = 0 + icon_selected = FALSE module = null updatename("Default") has_recoloured = FALSE diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm index 74c6ad4cda7..25b199b47c0 100644 --- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm +++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm @@ -141,7 +141,7 @@ if (newName) R.custom_name = newName R.sprite_name = newName - R.icon_selected = 1 + R.icon_selected = TRUE var/module_type = robot_modules[selected_module] R.modtype = selected_module R.module = new module_type(R) From 3fd9c6e3d5477121c5cbaabb12076117238b66ad Mon Sep 17 00:00:00 2001 From: DigitalSquirrel95 <48812209+DigitalSquirrel95@users.noreply.github.com> Date: Mon, 11 Nov 2024 14:59:46 -0500 Subject: [PATCH 44/53] Removes ability for research cyborgs to self-upgrade Port of https://github.com/TS-Rogue-Star/Rogue-Star/pull/335 --- code/modules/mob/living/silicon/robot/robot.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index a79310c02be..d8b8e479668 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -737,6 +737,8 @@ update_icon() else to_chat(user, span_filter_notice("[span_red("Access denied.")]")) + if(user == src) //RS edit: No self-unlocking. + to_chat(user, "You are not allowed to manipulate your own lock.") else if(istype(W, /obj/item/borg/upgrade/)) var/obj/item/borg/upgrade/U = W @@ -744,6 +746,8 @@ to_chat(usr, span_filter_notice("You must access the borgs internals!")) else if(!src.module && U.require_module) to_chat(usr, span_filter_notice("The borg must choose a module before it can be upgraded!")) + else if(user == src) //RS edit: No self-upgrading. + to_chat(user, "You lack the reach to be able to upgrade yourself.") else if(U.locked) to_chat(usr, span_filter_notice("The upgrade is locked and cannot be used yet!")) else @@ -903,7 +907,10 @@ else if(istype(M, /mob/living/silicon/robot)) var/mob/living/silicon/robot/R = M if(check_access(R.get_active_hand()) || istype(R.get_active_hand(), /obj/item/card/robot)) - return 1 + if(R == src) //RS edit: No self-unlocking. + return FALSE + else + return TRUE return 0 /mob/living/silicon/robot/proc/check_access(obj/item/I) From 29577730c2536e8e6c1df0c5d9b4205fbd31bf60 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 11 Nov 2024 21:02:11 +0100 Subject: [PATCH 45/53] early --- tgui/packages/tgui/interfaces/RobotChoose/functions.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tgui/packages/tgui/interfaces/RobotChoose/functions.ts b/tgui/packages/tgui/interfaces/RobotChoose/functions.ts index f42d00d83c2..db60717e88e 100644 --- a/tgui/packages/tgui/interfaces/RobotChoose/functions.ts +++ b/tgui/packages/tgui/interfaces/RobotChoose/functions.ts @@ -15,6 +15,9 @@ export function robotSpriteSearcher( searchText, (sprite: spriteOption) => sprite.sprite, ); + if (!sprites) { + return []; + } let subtypes: string[] = []; if (includeDefault) { subtypes.push('def'); @@ -25,9 +28,6 @@ export function robotSpriteSearcher( if (includeTall) { subtypes.push('tall'); } - if (!sprites) { - return []; - } return flow([ (sprites: spriteOption[]) => { if (!searchText) { From a16b3c7e9eda7f205b90adb9e09be5e2d07decf7 Mon Sep 17 00:00:00 2001 From: DigitalSquirrel95 <48812209+DigitalSquirrel95@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:46:13 -0500 Subject: [PATCH 46/53] Update robot.dm --- code/modules/mob/living/silicon/robot/robot.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index d8b8e479668..c7c56639e95 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -738,7 +738,7 @@ else to_chat(user, span_filter_notice("[span_red("Access denied.")]")) if(user == src) //RS edit: No self-unlocking. - to_chat(user, "You are not allowed to manipulate your own lock.") + to_chat(user, span_filter_notice("You are not allowed to manipulate your own lock.")) else if(istype(W, /obj/item/borg/upgrade/)) var/obj/item/borg/upgrade/U = W @@ -747,7 +747,7 @@ else if(!src.module && U.require_module) to_chat(usr, span_filter_notice("The borg must choose a module before it can be upgraded!")) else if(user == src) //RS edit: No self-upgrading. - to_chat(user, "You lack the reach to be able to upgrade yourself.") + to_chat(user, span_filter_notice("You lack the reach to be able to upgrade yourself.")) else if(U.locked) to_chat(usr, span_filter_notice("The upgrade is locked and cannot be used yet!")) else From 3c12e7f6fca576b5098557872bfe3ebb3918b3bd Mon Sep 17 00:00:00 2001 From: Killian Date: Mon, 11 Nov 2024 20:49:24 +0000 Subject: [PATCH 47/53] salvage tech title --- code/__defines/jobs.dm | 1 + code/game/jobs/job/engineering_vr.dm | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/code/__defines/jobs.dm b/code/__defines/jobs.dm index c20f5e3cd98..70e38c6876d 100644 --- a/code/__defines/jobs.dm +++ b/code/__defines/jobs.dm @@ -201,6 +201,7 @@ #define JOB_ALT_CONSTRUCTION_ENGINEER "Construction Engineer" #define JOB_ALT_ENGINEERING_CONTRACTOR "Engineering Contractor" #define JOB_ALT_COMPUTER_TECHNICIAN "Computer Technician" + #define JOB_ALT_SALVAGE_TECHNICIAN "Salvage Technician" #define JOB_ATMOSPHERIC_TECHNICIAN "Atmospheric Technician" // Atmospheric Technician alt titles diff --git a/code/game/jobs/job/engineering_vr.dm b/code/game/jobs/job/engineering_vr.dm index 17b70731dbd..bb784a8c961 100644 --- a/code/game/jobs/job/engineering_vr.dm +++ b/code/game/jobs/job/engineering_vr.dm @@ -48,6 +48,10 @@ title = JOB_ALT_COMPUTER_TECHNICIAN title_blurb = "A " + JOB_ALT_COMPUTER_TECHNICIAN + " fulfills similar duties to other engineers, but specializes in working with software and computers. They also often deal with integrated circuits." +/datum/alt_title/salvage_tech + title = JOB_ALT_SALVAGE_TECHNICIAN + title_blurb = "A " + JOB_ALT_SALVAGE_TECHNICIAN + " is responsible for breaking down debris and obsolete equipment to recover useful components and materials." + /datum/job/atmos spawn_positions = 3 pto_type = PTO_ENGINEERING From f7a873a3e55127e186a4ab870856d0bb344a76ea Mon Sep 17 00:00:00 2001 From: DigitalSquirrel95 <48812209+DigitalSquirrel95@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:51:09 -0500 Subject: [PATCH 48/53] Update robot.dm --- code/modules/mob/living/silicon/robot/robot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index c7c56639e95..fab9a64f2d5 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -747,7 +747,7 @@ else if(!src.module && U.require_module) to_chat(usr, span_filter_notice("The borg must choose a module before it can be upgraded!")) else if(user == src) //RS edit: No self-upgrading. - to_chat(user, span_filter_notice("You lack the reach to be able to upgrade yourself.")) + to_chat(usr, span_warning("You lack the reach to be able to upgrade yourself.")) else if(U.locked) to_chat(usr, span_filter_notice("The upgrade is locked and cannot be used yet!")) else From 642b9d481e04d64c11008702b9db4a1dcdfcc4db Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Tue, 12 Nov 2024 19:08:40 +0000 Subject: [PATCH 49/53] Fluff item [not approved yet] Do not merge yet, this application has not yet been approved, I will update the commit if/when it is. --- .../loadout/loadout_fluffitems_vr.dm | 7 +++ code/modules/games/tarot.dm | 56 ++++++++++++++++++ icons/obj/playing_cards.dmi | Bin 5738 -> 7317 bytes 3 files changed, 63 insertions(+) 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..6db48e91602 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -1239,6 +1239,13 @@ ckeywhitelist = list("satinisle") character_name = list("Parriz Tavakdavi") +/datum/gear/fluff/dark_tarot + path = /obj/item/deck/dark_tarot + display_name = "dark rose tarot deck" + ckeywhitelist = list("satinisle") + character_name = list("Millie Orlen") + + // T CKEYS /datum/gear/fluff/ascian_medal path = /obj/item/clothing/accessory/medal/silver/unity/tabiranth diff --git a/code/modules/games/tarot.dm b/code/modules/games/tarot.dm index 44407c9ca2d..4ba7b264981 100644 --- a/code/modules/games/tarot.dm +++ b/code/modules/games/tarot.dm @@ -41,3 +41,59 @@ cooldown = world.time else return + +///Fluff item, using a separate item rather than a subitem to customise New() + +/obj/item/deck/dark_tarot + name = "dark rose tarot deck" + desc = "A limited edition tarot deck for the scene-girl inclined!" + icon_state = "dark_tarot" + +/obj/item/deck/dark_tarot/New() + ..() + + var/datum/playingcard/P + for(var/name in list("fool","magician","high priestess","empress","emperor","hierophant","lovers","chariot","strength","hermit","wheel of fortune","justice","hanged man","death","temperance","devil","tower","star","moon","sun","judgement","world","white dragon with blue eyes","charred lizard","dark lotus","bash","reverse","rules","acid","abyss","maw")) + P = new() + P.name = "[name]" + if(name == "high priestess") + P.card_icon = "dark_high_priestess" + else if(name == "wheel of fortune") + P.card_icon = "dark_wheel" + else if(name == "hanged man") + P.card_icon = "dark_hanged" + else if(name == "white dragon with blue eyes") + P.card_icon = "dark_dragon" + else if(name == "charred lizard") + P.card_icon = "dark_lizard" + else if(name == "dark lotus") + P.card_icon = "dark_lotus" + else + P.card_icon = "dark_[name]" + P.back_icon = "dark_back_tarot" + cards += P + for(var/suit in list("wands","pentacles","cups","swords")) + for(var/number in list("ace","two","three","four","five","six","seven","eight","nine","ten","page","knight","queen","king")) + P = new() + P.name = "[number] of [suit]" + P.card_icon = "dark_[suit]" + P.back_icon = "dark_back_tarot" + cards += P + +/obj/item/deck/dark_tarot/shuffle() + var/mob/living/user = usr + if (cooldown < world.time - 10) + var/list/newcards = list() + while(cards.len) + var/datum/playingcard/P = pick(cards) + P.name = replacetext(P.name," reversed","") + if(prob(50)) + P.name += " reversed" + newcards += P + cards -= P + cards = newcards + playsound(src, 'sound/items/cardshuffle.ogg', 50, 1) + user.visible_message("\The [user] shuffles [src].") + cooldown = world.time + else + return diff --git a/icons/obj/playing_cards.dmi b/icons/obj/playing_cards.dmi index 0f2e51923a79205e7a1c29cefe4b17c3819c0bbf..fd1679a3235b1dc4e8ecfce31dacd51fff04cf92 100644 GIT binary patch literal 7317 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 From 35c9c2bf440c529f17429646366310e10bad12fa Mon Sep 17 00:00:00 2001 From: JParker890 <103277253+Mattjpark89@users.noreply.github.com> Date: Thu, 14 Nov 2024 21:13:50 -0700 Subject: [PATCH 50/53] Add Engineering Drake to plushies crate --- code/datums/supplypacks/misc.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/datums/supplypacks/misc.dm b/code/datums/supplypacks/misc.dm index d03ab2b6207..bc1690c7d8c 100644 --- a/code/datums/supplypacks/misc.dm +++ b/code/datums/supplypacks/misc.dm @@ -80,6 +80,7 @@ /obj/item/toy/plushie/slimeplushie, /obj/item/toy/plushie/box, /obj/item/toy/plushie/borgplushie, + /obj/item/toy/plushie/borgplushie/drake/eng, /obj/item/toy/plushie/borgplushie/medihound, /obj/item/toy/plushie/borgplushie/scrubpuppy, /obj/item/toy/plushie/foxbear, From cc6a449af9dc4d394084c1c84dda591ca97980fd Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Fri, 15 Nov 2024 19:31:01 +0000 Subject: [PATCH 51/53] Fixes up shuffle procs --- code/modules/games/cards.dm | 9 ++++----- code/modules/games/tarot.dm | 3 +-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index 448ea34b5f3..df4e50d63ba 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -211,8 +211,8 @@ ..() -/obj/item/deck/attack_self() - shuffle() +/obj/item/deck/attack_self(mob/user) + shuffle(user) /obj/item/deck/verb/verb_shuffle() @@ -220,10 +220,9 @@ set name = "Shuffle" set desc = "Shuffle the cards in the deck." set src in view(1) - shuffle() + shuffle(usr) -/obj/item/deck/proc/shuffle() - var/mob/living/user = usr +/obj/item/deck/proc/shuffle(mob/user) if (cooldown < world.time - 10) // 15 ticks cooldown var/list/newcards = list() while(cards.len) diff --git a/code/modules/games/tarot.dm b/code/modules/games/tarot.dm index 4ba7b264981..5489bb05fd5 100644 --- a/code/modules/games/tarot.dm +++ b/code/modules/games/tarot.dm @@ -80,8 +80,7 @@ P.back_icon = "dark_back_tarot" cards += P -/obj/item/deck/dark_tarot/shuffle() - var/mob/living/user = usr +/obj/item/deck/dark_tarot/shuffle(mob/user) if (cooldown < world.time - 10) var/list/newcards = list() while(cards.len) From 5e393410bae7099a37df8ba8a8a5f3e9346664d7 Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Sat, 16 Nov 2024 15:12:19 +0000 Subject: [PATCH 52/53] Allows non-custom species to take winged flight Changed Winged Flight to allow all species to take it. Seeing as all species have access to wings, there's no real reason to restrict it. --- .../living/carbon/human/species/station/traits_vr/positive.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index 7551915c9dc..f109bd5c9a2 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -121,6 +121,7 @@ name = "Winged Flight" desc = "Allows you to fly by using your wings. Don't forget to bring them!" cost = 0 + custom_only = FALSE has_preferences = list("flight_vore" = list(TRAIT_PREF_TYPE_BOOLEAN, "Flight Vore enabled on spawn", TRAIT_VAREDIT_TARGET_MOB, FALSE)) /datum/trait/positive/winged_flight/apply(var/datum/species/S,var/mob/living/carbon/human/H) From 24e798346f2c6299e0eac927e1c9b8b0b2448160 Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Sun, 17 Nov 2024 10:40:04 +0000 Subject: [PATCH 53/53] Another approved fluff item --- .../preference_setup/loadout/loadout_fluffitems_vr.dm | 6 ++++++ 1 file changed, 6 insertions(+) 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 6db48e91602..9635b17925e 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -694,6 +694,12 @@ ckeywhitelist = list("john.wayne9392") character_name = list("Harmony Pretchl") +/datum/gear/fluff/vox_dylo_pills + path = /obj/item/storage/pill_bottle/dylovene + display_name = "Dylovene pill bottle" + ckeywhitelist = list("jparker890") + character_name = list("Krey-Timinine") + /datum/gear/fluff/koyo_box path = /obj/item/storage/box/fluff/koyoakimomi display_name = "Koyo's Box"