diff --git a/code/game/objects/items/toys/balls_vr.dm b/code/game/objects/items/toys/balls_vr.dm
index 6c0b1c25a84..30f2c56d15c 100644
--- a/code/game/objects/items/toys/balls_vr.dm
+++ b/code/game/objects/items/toys/balls_vr.dm
@@ -48,4 +48,23 @@
name = "purple tennis ball"
desc = "A purple tennis ball. Now you've seen everything. Purple, seriously?"
icon_state = "tennis_purple"
- item_state = "tennis_purple"
\ No newline at end of file
+ item_state = "tennis_purple"
+
+/obj/item/toy/baseball
+ name = "baseball"
+ desc = "A classic baseball; a rubber core surrounded by yarn and covered by faux leather. Getting hit with one is akin to getting punched."
+ icon = 'icons/obj/balls_vr.dmi'
+ icon_state = "baseball"
+ item_icons = list(
+ slot_l_hand_str = 'icons/mob/items/righthand_balls_vr.dmi',
+ slot_r_hand_str = 'icons/mob/items/lefthand_balls_vr.dmi',
+ slot_wear_mask_str = 'icons/mob/mouthball_vr.dmi',
+ )
+ item_state = "baseball"
+ slot_flags = SLOT_MASK
+ throw_range = 16
+ force = 2.0
+ throwforce = 5.0
+ throw_speed = 5
+ throw_range = 5
+ w_class = ITEMSIZE_SMALL
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index 579e8a7419a..8feb3b2c92b 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -23,6 +23,7 @@
var/hitcost = 240
var/use_external_power = FALSE //only used to determine if it's a cyborg baton
var/grip_safety = TRUE
+ var/taped_safety = FALSE
/obj/item/weapon/melee/baton/New()
..()
@@ -100,7 +101,7 @@
/obj/item/weapon/melee/baton/dropped()
..()
- if(status && grip_safety)
+ if(status && grip_safety && !taped_safety)
status = 0
visible_message("\The [src]'s grip safety engages!")
update_icon()
@@ -109,6 +110,8 @@
. = ..()
if(Adjacent(user))
+ if(taped_safety)
+ . += "Someone has wrapped tape around the grip!"
if(bcell)
. += "The baton is [round(bcell.percent())]% charged."
if(!bcell)
@@ -129,6 +132,17 @@
to_chat(user, "[src] already has a cell.")
else
to_chat(user, "This cell is not fitted for [src].")
+ if(istype(W, /obj/item/weapon/tape_roll) || istype(W, /obj/item/taperoll))
+ if(grip_safety && !taped_safety) //no point letting people wrap tape around the grips of batons without a safety
+ to_chat(user, "You firmly wrap tape around the baton's grip, disabling the safety system.")
+ playsound(src, 'sound/effects/tape.ogg',25)
+ taped_safety = TRUE
+ else if(grip_safety && taped_safety)
+ to_chat(user, "The grip safety has already been taped down.")
+ if(istype(W, /obj/item/weapon/tool/screwdriver))
+ if(taped_safety)
+ to_chat(user, "You painstakingly scrape away the tape over the grip safety.")
+ taped_safety = FALSE
/obj/item/weapon/melee/baton/attack_hand(mob/user as mob)
if(user.get_inactive_hand() == src)
diff --git a/code/game/objects/random/maintenance.dm b/code/game/objects/random/maintenance.dm
index a6bc8c7d34e..56366d7cdd9 100644
--- a/code/game/objects/random/maintenance.dm
+++ b/code/game/objects/random/maintenance.dm
@@ -111,6 +111,7 @@ something, make sure it's not in one of the other lists.*/
prob(2);/obj/item/toy/tennis/cyan,
prob(2);/obj/item/toy/tennis/blue,
prob(2);/obj/item/toy/tennis/purple,
+ prob(1);/obj/item/toy/baseball,
prob(1);/obj/item/pizzavoucher
/* VOREStation Edit End */
)
diff --git a/code/game/objects/random/mapping_vr.dm b/code/game/objects/random/mapping_vr.dm
index 3075c404154..732d6146017 100644
--- a/code/game/objects/random/mapping_vr.dm
+++ b/code/game/objects/random/mapping_vr.dm
@@ -156,5 +156,6 @@
prob(2);/obj/item/toy/tennis/blue,
prob(2);/obj/item/toy/tennis/purple,
prob(2);/obj/item/clothing/ears/earmuffs,
- prob(2);/obj/item/clothing/ears/earmuffs/headphones
+ prob(2);/obj/item/clothing/ears/earmuffs/headphones,
+ prob(2);/obj/item/toy/baseball
)
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index f6194179384..36b00526a85 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -13,6 +13,7 @@
/obj/item/clothing/under/rank/chief_engineer/skirt,
/obj/item/clothing/under/rank/neo_chiefengi,
/obj/item/clothing/under/rank/neo_chiefengi_skirt,
+ /obj/item/clothing/under/rank/neo_ce_gorka,
/obj/item/clothing/head/hardhat/white,
///obj/item/clothing/head/welding, //VOREStation Removal: Locker bloat, grr. They get fancy goggles or can raid the welding supplies locker for one of these.
/obj/item/clothing/gloves/heavy_engineer, //VOREStation Edit: chief gets the good shit
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index 8760a702383..8a9bb829995 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -141,6 +141,7 @@
/obj/item/clothing/under/rank/neo_cmo_skirt,
/obj/item/clothing/under/rank/neo_cmo_turtle,
/obj/item/clothing/under/rank/neo_cmo_turtle_skirt,
+ /obj/item/clothing/under/rank/neo_cmo_gorka,
/obj/item/device/radio/headset/heads/cmo,
/obj/item/device/radio/headset/heads/cmo/alt,
/obj/item/device/flash,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
index 0acf27a536d..81f2911baae 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
@@ -39,6 +39,7 @@
/obj/item/clothing/under/rank/neo_rd_turtle_skirt,
/obj/item/clothing/under/rank/neo_rd_suit,
/obj/item/clothing/under/rank/neo_rd_suit_skirt,
+ /obj/item/clothing/under/rank/neo_rd_gorka,
/obj/item/weapon/cartridge/rd,
/obj/item/clothing/shoes/white,
/obj/item/clothing/shoes/laceup/brown,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index b2c4591218a..9f9336c739e 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -55,6 +55,7 @@
/obj/item/clothing/under/rank/neo_hop_parade_fem,
/obj/item/clothing/under/rank/neo_hop_turtle,
/obj/item/clothing/under/rank/neo_hop_turtle_skirt,
+ /obj/item/clothing/under/rank/neo_cmd_gorka,
/obj/item/clothing/suit/storage/toggle/labcoat/neo_hopformal,
/obj/item/clothing/suit/storage/toggle/labcoat/neo_civ_dep,
/obj/item/clothing/shoes/brown,
@@ -147,6 +148,9 @@
/obj/item/clothing/suit/storage/vest/wardencoat/neo_armsco_trench,
/obj/item/clothing/suit/storage/vest/wardencoat/neo_bluewarden,
/obj/item/clothing/suit/storage/vest/wardencoat/neo_warden_heavy,
+ /obj/item/clothing/under/rank/neo_sec_gorka,
+ /obj/item/clothing/suit/neo_armsco_trench,
+ /obj/item/clothing/suit/neo_warden_heavy,
/obj/item/weapon/cartridge/security,
/obj/item/device/radio/headset/headset_sec,
/obj/item/device/radio/headset/headset_sec/alt,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm b/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm
index 065258e4916..3ab22cc1f4c 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm
@@ -24,6 +24,7 @@
/obj/item/clothing/under/rank/neo_hos_blackblue_skirt,
/obj/item/clothing/under/rank/neo_hos_parade_blue,
/obj/item/clothing/under/rank/neo_hos_parade_blue_fem,
+ /obj/item/clothing/under/rank/neo_hos_gorka,
/obj/item/clothing/suit/storage/toggle/labcoat/neo_hos_parade,
/obj/item/clothing/suit/storage/toggle/labcoat/neo_hosformal_blue,
/obj/item/clothing/suit/storage/vest/wardencoat/neo_armsco_trench,
diff --git a/code/game/objects/structures/trash_pile_vr.dm b/code/game/objects/structures/trash_pile_vr.dm
index 054da3a31dc..1da8e0a1596 100644
--- a/code/game/objects/structures/trash_pile_vr.dm
+++ b/code/game/objects/structures/trash_pile_vr.dm
@@ -242,6 +242,7 @@
prob(2);/obj/item/toy/tennis/cyan,
prob(2);/obj/item/toy/tennis/blue,
prob(2);/obj/item/toy/tennis/purple,
+ prob(1);/obj/item/toy/baseball,
prob(1);/obj/item/weapon/storage/box/brainzsnax,
prob(1);/obj/item/weapon/storage/box/brainzsnax/red,
prob(1);/obj/item/clothing/glasses/sunglasses,
diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm
index 13d2f7e50d3..156b5a4c87a 100644
--- a/code/modules/client/preference_setup/loadout/loadout_suit.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm
@@ -313,6 +313,26 @@
..()
gear_tweaks += gear_tweak_free_color_choice
+/datum/gear/suit/ranger_poncho
+ display_name = "ranger poncho selection"
+ path = /obj/item/clothing/accessory/poncho/roles/ranger
+ cost = 1
+
+/datum/gear/suit/ranger_poncho/New()
+ ..()
+ var/list/ranger_ponchos = list(
+ "red ranger poncho" = /obj/item/clothing/accessory/poncho/roles/ranger,
+ "tan ranger poncho" = /obj/item/clothing/accessory/poncho/roles/ranger/tan,
+ "gray ranger poncho" = /obj/item/clothing/accessory/poncho/roles/ranger/gray,
+ "green ranger poncho" = /obj/item/clothing/accessory/poncho/roles/ranger/green,
+ "blue ranger poncho" = /obj/item/clothing/accessory/poncho/roles/ranger/blue,
+ "purple ranger poncho" = /obj/item/clothing/accessory/poncho/roles/ranger/purple,
+ "orange ranger poncho" = /obj/item/clothing/accessory/poncho/roles/ranger/orange,
+ "charcoal ranger poncho" = /obj/item/clothing/accessory/poncho/roles/ranger/charcoal,
+ "white ranger poncho" = /obj/item/clothing/accessory/poncho/roles/ranger/snow
+ )
+ gear_tweaks += new/datum/gear_tweak/path(ranger_ponchos)
+
/datum/gear/suit/unathi_robe
display_name = "roughspun robe"
path = /obj/item/clothing/suit/unathi/robe
diff --git a/code/modules/client/preference_setup/loadout/loadout_uni_selector.dm b/code/modules/client/preference_setup/loadout/loadout_uni_selector.dm
new file mode 100644
index 00000000000..91a819b6433
--- /dev/null
+++ b/code/modules/client/preference_setup/loadout/loadout_uni_selector.dm
@@ -0,0 +1,580 @@
+//template for quickly making more, if it's ever needed
+/*
+
+/datum/gear/uniform/BLANK_selector
+ display_name = "DEPT - BLANK's Uniforms"
+ description = "Select from a range of outfits available to all BLANK personnel."
+ allowed_roles = list("")
+ path =
+ slot = slot_w_uniform
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/BLANK_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+*/
+
+//Command/Specific
+
+/datum/gear/uniform/site_manager_selector
+ display_name = "Command - Site Manager's Uniforms"
+ description = "Select from a range of outfits available to all Site Managers."
+ allowed_roles = list("Site Manager")
+ path = /obj/item/clothing/under/rank/neo_captain
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/site_manager_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "uniform w/ dress"=/obj/item/clothing/under/dress/dress_cap,
+ "KHI uniform"=/obj/item/clothing/under/rank/khi/cmd,
+ "ST: Original Series Command"=/obj/item/clothing/under/rank/trek/command,
+ "ST: Next Generation Command"=/obj/item/clothing/under/rank/trek/command/next,
+ "ST: Voyager Command"=/obj/item/clothing/under/rank/trek/command/voy,
+ "ST: DS9 Command"=/obj/item/clothing/under/rank/trek/command/ds9,
+ "ST: Enterprise Command"=/obj/item/clothing/under/rank/trek/command/ent,
+ "voidsuit underlayer"=/obj/item/clothing/under/undersuit/command,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_captain,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_captain_skirt,
+ "TG&C utility suit"=/obj/item/clothing/under/rank/neo_commandutil,
+ "TG&C black suit"=/obj/item/clothing/under/rank/neo_captain_blacksuit,
+ "TG&C parade uniform"=/obj/item/clothing/under/rank/neo_captain_parade,
+ "TG&C jumpkilt"=/obj/item/clothing/under/rank/neo_captain_kilt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/head_of_personnel_selector
+ display_name = "Command - Head of Personnel's Uniforms"
+ description = "Select from a range of outfits available to all Heads of Personnel."
+ allowed_roles = list("Head of Personnel")
+ path = /obj/item/clothing/under/rank/neo_hop
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/head_of_personnel_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "uniform w/ dress"=/obj/item/clothing/under/dress/dress_hop,
+ "HR director"=/obj/item/clothing/under/dress/dress_hr,
+ "KHI uniform"=/obj/item/clothing/under/rank/khi/cmd,
+ "ST: Original Series Command"=/obj/item/clothing/under/rank/trek/command,
+ "ST: Next Generation Command"=/obj/item/clothing/under/rank/trek/command/next,
+ "ST: Voyager Command"=/obj/item/clothing/under/rank/trek/command/voy,
+ "ST: DS9 Command"=/obj/item/clothing/under/rank/trek/command/ds9,
+ "ST: Enterprise Command"=/obj/item/clothing/under/rank/trek/command/ent,
+ "voidsuit underlayer"=/obj/item/clothing/under/undersuit/command,
+ "TG&C command utility"=/obj/item/clothing/under/rank/neo_commandutil,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_hop,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_hop_skirt,
+ "TG&C parade uniform"=/obj/item/clothing/under/rank/neo_hop_parade_masc,
+ "TG&C parade dress"=/obj/item/clothing/under/rank/neo_hop_parade_fem,
+ "TG&C turtleneck"=/obj/item/clothing/under/rank/neo_hop_turtle,
+ "TG&C turtleneck w/ skirt"=/obj/item/clothing/under/rank/neo_hop_turtle_skirt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/pilot_uniform_selector
+ display_name = "Civilian - Pilot's Uniforms"
+ description = "Select from a range of outfits available to all Pilots."
+ allowed_roles = list("Pilot")
+ path = /obj/item/clothing/under/rank/neo_pilot
+ sort_category = "Uniform Selectors"
+ cost = 1
+
+/datum/gear/uniform/pilot_uniform_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_pilot,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_pilot_skirt,
+ "Major Bill's flightsuit"=/obj/item/clothing/under/mbill_flight
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/janitor_uniform_selector
+ display_name = "Civilian - Janitor's Uniforms"
+ description = "Select from a range of outfits available to all Janitorial personnel."
+ allowed_roles = list("Janitor")
+ path = /obj/item/clothing/under/rank/neo_janitor
+ sort_category = "Uniform Selectors"
+ cost = 1
+
+/datum/gear/uniform/janitor_uniform_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "TG&C janitor's uniform"=/obj/item/clothing/under/rank/neo_janitor,
+ "TG&C janitor's uniform w/ skirt"=/obj/item/clothing/under/rank/neo_janitor_skirt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/civvie_uniform_selector
+ display_name = "Civilian - Basic Uniforms"
+ description = "Select from a range of uniforms available to all personnel. Includes miscellaneous corporate contractor uniforms."
+ path = /obj/item/clothing/under/utility/grey
+ sort_category = "Uniform Selectors"
+ cost = 1
+
+/datum/gear/uniform/civvie_uniform_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "KHI uniform"=/obj/item/clothing/under/rank/khi/civ,
+ "TG&C plain turtleneck"=/obj/item/clothing/under/rank/neo_suspect_turtleneck,
+ "TG&C plain turtleneck w/ skirt"=/obj/item/clothing/under/rank/neo_suspect_turtleskirt,
+ "TG&C blue turtleneck"=/obj/item/clothing/under/rank/neo_suspect_turtleneck_blue,
+ "TG&C blue turtleneck w/ skirt"=/obj/item/clothing/under/rank/neo_suspect_turtleskirt_blue,
+ "TG&C red turtleneck"=/obj/item/clothing/under/rank/neo_suspicious_turtleneck,
+ "TG&C red turtleneck w/ skirt"=/obj/item/clothing/under/rank/neo_suspicious_turtleskirt,
+ "TG&C comfy overalls"=/obj/item/clothing/under/rank/neo_suspect_overalls,
+ "TG&C comfy overalls w/ skirt"=/obj/item/clothing/under/rank/neo_suspect_overalls_skirt,
+ "TG&C contractor's suit"=/obj/item/clothing/under/rank/neo_contract,
+ "Corporate, Major Bill's uniform"=/obj/item/clothing/under/mbill,
+ "Corporate, Aether Atmospherics uniform"=/obj/item/clothing/under/corp/aether,
+ "Corporate, Focal Point Energistics uniform"=/obj/item/clothing/under/corp/focal,
+ "Corporate, Grayson Manufactories uniform"=/obj/item/clothing/under/corp/grayson,
+ "Corporate, Grayson Manufactories jumpsuit"=/obj/item/clothing/under/corp/grayson_jump,
+ "Corporate, Ward-Takahashi uniform"=/obj/item/clothing/under/corp/wardt,
+ "Corporate, Hephaestus Arms uniform"=/obj/item/clothing/under/corp/hephaestus,
+ "Corporate, Centauri Provisions uniform"=/obj/item/clothing/under/corp/centauri,
+ "Corporate, Morpheus Cyberkinetics uniform"=/obj/item/clothing/under/corp/morpheus,
+ "Corporate, Wulf Aeronautics uniform"=/obj/item/clothing/under/corp/wulf,
+ "Corporate, Zeng-Hu uniform"=/obj/item/clothing/under/corp/zenghu,
+ "Corporate, Xion Manufacturing uniform"=/obj/item/clothing/under/corp/xion,
+ "Galactic Survey utility uniform"=/obj/item/clothing/under/gsa,
+ "Galactic Survey reinforced uniform"=/obj/item/clothing/under/gsa_work,
+ "Utility uniform, black"=/obj/item/clothing/under/utility,
+ "Utility uniform, navy"=/obj/item/clothing/under/utility/blue,
+ "Utility uniform, grey"=/obj/item/clothing/under/utility/grey,
+ "Utility uniform, tan"=/obj/item/clothing/under/utility/tan,
+ "Utility uniform, green"=/obj/item/clothing/under/utility/green
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+//Security
+
+/datum/gear/uniform/security_selector
+ display_name = "Security - Basic Uniforms"
+ description = "Select from a range of outfits available to all Security personnel."
+ allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer")
+ path = /obj/item/clothing/under/rank/security/corp
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/security_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "undersuit, modernized"=/obj/item/clothing/under/rank/security/modern,
+ "KHI uniform"=/obj/item/clothing/under/rank/khi/sec,
+ "voidsuit underlayer"=/obj/item/clothing/under/undersuit/sec,
+ "skirt"=/obj/item/clothing/under/rank/security/skirt,
+ "turtleneck"=/obj/item/clothing/under/rank/security/turtleneck,
+ "corporate"=/obj/item/clothing/under/rank/security/corp,
+ "formal, navy"=/obj/item/clothing/under/rank/security/navyblue,
+ "formal, tan"=/obj/item/clothing/under/rank/security/tan,
+ "Proxima Centauri Risk Control"=/obj/item/clothing/under/corp/pcrc,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_sec_red,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_sec_red_skirt,
+ "TG&C blue jumpsuit"=/obj/item/clothing/under/rank/neo_sec_blue,
+ "TG&C white"=/obj/item/clothing/under/rank/neo_sec_suit,
+ "TG&C blue"=/obj/item/clothing/under/rank/neo_sec_suit_blue,
+ "TG&C turtleneck"=/obj/item/clothing/under/rank/neo_sec_turtle_red,
+ "TG&C turtleneck & skirt"=/obj/item/clothing/under/rank/neo_sec_turtle_red_skirt,
+ "TG&C blue turtleneck"=/obj/item/clothing/under/rank/neo_sec_turtle_blue,
+ "TG&C blue turtleneck & skirt"=/obj/item/clothing/under/rank/neo_sec_turtle_blue_skirt,
+ "corrections officer"=/obj/item/clothing/under/rank/neo_corrections,
+ "corrections officer w/ skirt"=/obj/item/clothing/under/rank/neo_corrections_skirt,
+ "runner's turtleneck"=/obj/item/clothing/under/rank/neo_runner,
+ "ST: Original Series Ops"=/obj/item/clothing/under/rank/trek/engsec,
+ "ST: Next Generation Ops"=/obj/item/clothing/under/rank/trek/engsec/next,
+ "ST: Voyager Ops"=/obj/item/clothing/under/rank/trek/engsec/voy,
+ "ST: DS9 Ops"=/obj/item/clothing/under/rank/trek/engsec/ds9,
+ "ST: Enterprise Ops"=/obj/item/clothing/under/rank/trek/engsec/ent,
+ "TG&C bodyguard's suit"=/obj/item/clothing/under/rank/bodyguard_suit,
+ "TG&C bodyguard's skirt"=/obj/item/clothing/under/rank/bodyguard_skirt,
+ "TG&C bodyguard's turtleneck"=/obj/item/clothing/under/rank/bodyguard_turtleneck,
+ "TG&C bodyguard's turtleneck w/ skirt"=/obj/item/clothing/under/rank/bodyguard_turtleskirt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/security_warden_selector
+ display_name = "Security - Warden's Uniforms"
+ description = "Select from a range of outfits available to Wardens."
+ allowed_roles = list("Head of Security","Warden")
+ path = /obj/item/clothing/under/rank/warden/corp
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/security_warden_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "skirt"=/obj/item/clothing/under/rank/warden/skirt,
+ "corporate"=/obj/item/clothing/under/rank/warden/corp,
+ "formal, navy"=/obj/item/clothing/under/rank/warden/navyblue,
+ "formal, tan"=/obj/item/clothing/under/rank/warden/navyblue,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_warden_red,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_warden_red_skirt,
+ "TG&C blue jumpsuit"=/obj/item/clothing/under/rank/neo_warden_blue
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/security_detective_selector
+ display_name = "Security - Detective's Uniforms"
+ description = "Select from a range of outfits available to all Detectives."
+ allowed_roles = list("Head of Security","Detective")
+ path = /obj/item/clothing/under/det/corporate
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/security_detective_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "skirt"=/obj/item/clothing/under/det/skirt,
+ "corporate"=/obj/item/clothing/under/det/corporate
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/security_head_selector
+ display_name = "Security - Head's Uniforms"
+ description = "Select from a range of outfits available to all Heads of Security."
+ allowed_roles = list("Head of Security")
+ path = /obj/item/clothing/under/rank/head_of_security/corp
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/security_head_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "skirt"=/obj/item/clothing/under/rank/head_of_security/skirt,
+ "corporate"=/obj/item/clothing/under/rank/head_of_security/corp,
+ "formal, navy"=/obj/item/clothing/under/rank/head_of_security/navyblue,
+ "formal, tan"=/obj/item/clothing/under/rank/head_of_security/tan,
+ "voidsuit underlayer"=/obj/item/clothing/under/undersuit/sec/hos,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_hos_red,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_hos_red_skirt,
+ "TG&C turtleneck"=/obj/item/clothing/under/rank/neo_hos_blackred,
+ "TG&C turtleneck & skirt"=/obj/item/clothing/under/rank/neo_hos_blackred_skirt,
+ "TG&C parade uniform"=/obj/item/clothing/under/rank/neo_hos_parade,
+ "TG&C parade uniform, feminine"=/obj/item/clothing/under/rank/neo_hos_parade_fem,
+ "TG&C blue"=/obj/item/clothing/under/rank/neo_hos_blue,
+ "TG&C blue turtleneck"=/obj/item/clothing/under/rank/neo_hos_blackblue,
+ "TG&C blue turtleneck & skirt"=/obj/item/clothing/under/rank/neo_hos_blackblue_skirt,
+ "TG&C blue parade uniform"=/obj/item/clothing/under/rank/neo_hos_parade_blue,
+ "TG&C blue parade uniform, feminine"=/obj/item/clothing/under/rank/neo_hos_parade_blue_fem,
+ "KHI uniform, command"=/obj/item/clothing/under/rank/khi/cmd,
+ "ST: Original Series Command"=/obj/item/clothing/under/rank/trek/command,
+ "ST: Next Generation Command"=/obj/item/clothing/under/rank/trek/command/next,
+ "ST: Voyager Command"=/obj/item/clothing/under/rank/trek/command/voy,
+ "ST: DS9 Command"=/obj/item/clothing/under/rank/trek/command/ds9,
+ "ST: Enterprise Command"=/obj/item/clothing/under/rank/trek/command/ent
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+//Cargo
+
+/datum/gear/uniform/quartermaster_selector
+ display_name = "Cargo - Quartermaster's Uniforms"
+ description = "Select from a range of outfits available to all Quartermasters."
+ allowed_roles = list("Quartermaster")
+ path = /obj/item/clothing/under/rank/cargo/jeans
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/quartermaster_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "skirt"=/obj/item/clothing/under/rank/cargo/skirt,
+ "jeans"=/obj/item/clothing/under/rank/cargo/jeans,
+ "jeans, feminine cut"=/obj/item/clothing/under/rank/cargo/jeans/female,
+ "KHI uniform, command"=/obj/item/clothing/under/rank/khi/cmd,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_qm,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_qm_skirt,
+ "TG&C casualwear"=/obj/item/clothing/under/rank/neo_qm_jacket,
+ "TG&C button-up"=/obj/item/clothing/under/rank/neo_qm_white,
+ "TG&C button-up w/ skirt"=/obj/item/clothing/under/rank/neo_qm_white_skirt,
+ "TG&C turtleneck"=/obj/item/clothing/under/rank/neo_qm_turtle,
+ "TG&C turtleneck w/ skirt"=/obj/item/clothing/under/rank/neo_qm_turtle_skirt,
+ "TG&C gorka suit"=/obj/item/clothing/under/rank/neo_qm_gorka,
+ "ST: Original Series Command"=/obj/item/clothing/under/rank/trek/command,
+ "ST: Next Generation Command"=/obj/item/clothing/under/rank/trek/command/next,
+ "ST: Voyager Command"=/obj/item/clothing/under/rank/trek/command/voy,
+ "ST: DS9 Command"=/obj/item/clothing/under/rank/trek/command/ds9,
+ "ST: Enterprise Command"=/obj/item/clothing/under/rank/trek/command/ent
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/cargo_general_selector
+ display_name = "Cargo - Basic Uniforms"
+ description = "Select from a range of outfits available to all Cargo personnel."
+ allowed_roles = list("Cargo Technician","Shaft Miner","Quartermaster")
+ path = /obj/item/clothing/under/rank/cargotech/jeans
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/cargo_general_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "skirt"=/obj/item/clothing/under/rank/cargotech/skirt,
+ "jeans"=/obj/item/clothing/under/rank/cargotech/jeans,
+ "jeans, feminine cut"=/obj/item/clothing/under/rank/cargotech/jeans/female,
+ "KHI uniform"=/obj/item/clothing/under/rank/khi/crg,
+ "TG&C shorts"=/obj/item/clothing/under/rank/neo_cargo_shorts,
+ "TG&C skirt"=/obj/item/clothing/under/rank/neo_cargo_skirt,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_cargo,
+ "TG&C utility uniform"=/obj/item/clothing/under/rank/neo_util_cargo,
+ "TG&C dark"=/obj/item/clothing/under/rank/neo_cargo_dark,
+ "TG&C casual"=/obj/item/clothing/under/rank/neo_cargo_casual,
+ "TG&C turtleneck"=/obj/item/clothing/under/rank/neo_cargo_turtle,
+ "TG&C turtleneck w/ skirt"=/obj/item/clothing/under/rank/neo_cargo_turtle_skirt,
+ "TG&C gorka suit"=/obj/item/clothing/under/rank/neo_cargo_gorka,
+ "customs officer"=/obj/item/clothing/under/rank/neo_cargo_customs
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/cargo_miner_selector
+ display_name = "Cargo - Miner's Uniforms"
+ description = "Select from a range of outfits available to all Mining personnel."
+ allowed_roles = list("Shaft Miner","Quartermaster")
+ path = /obj/item/clothing/under/rank/neo_miner
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/cargo_miner_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "TG&C miner's uniform"=/obj/item/clothing/under/rank/neo_miner,
+ "TG&C hunter's uniform"=/obj/item/clothing/under/rank/neo_miner_fauna
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+//Engineering
+
+/datum/gear/uniform/engineering_chief_selector
+ display_name = "Engineering - Chief Engineer's Uniforms"
+ description = "Select from a range of outfits available to all Chief Engineers."
+ allowed_roles = list("Chief Engineer")
+ path = /obj/item/clothing/under/rank/neo_chiefengi
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/engineering_chief_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "skirt"=/obj/item/clothing/under/rank/chief_engineer/skirt,
+ "KHI uniform, command"=/obj/item/clothing/under/rank/khi/cmd,
+ "ST: Original Series Command"=/obj/item/clothing/under/rank/trek/command,
+ "ST: Next Generation Command"=/obj/item/clothing/under/rank/trek/command/next,
+ "ST: Voyager Command"=/obj/item/clothing/under/rank/trek/command/voy,
+ "ST: DS9 Command"=/obj/item/clothing/under/rank/trek/command/ds9,
+ "ST: Enterprise Command"=/obj/item/clothing/under/rank/trek/command/ent,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_chiefengi,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_chiefengi_skirt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/engineer_selector
+ display_name = "Engineering - Basic Uniforms"
+ description = "Select from a range of outfits available to all Engineering personnel."
+ allowed_roles = list("Chief Engineer","Engineer","Atmospheric Technician")
+ path = /obj/item/clothing/under/rank/neo_engi
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/engineer_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "skirt"=/obj/item/clothing/under/rank/engineer/skirt,
+ "turtleneck"=/obj/item/clothing/under/rank/engineer/turtleneck,
+ "KHI uniform"=/obj/item/clothing/under/rank/khi/eng,
+ "ST: Original Series Ops"=/obj/item/clothing/under/rank/trek/engsec,
+ "ST: Next Generation Ops"=/obj/item/clothing/under/rank/trek/engsec/next,
+ "ST: Voyager Ops"=/obj/item/clothing/under/rank/trek/engsec/voy,
+ "ST: DS9 Ops"=/obj/item/clothing/under/rank/trek/engsec/ds9,
+ "ST: Enterprise Ops"=/obj/item/clothing/under/rank/trek/engsec/ent,
+ "voidsuit underlayer"=/obj/item/clothing/under/undersuit/hazard,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_engi,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_engi_skirt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/engi_atmos_selector
+ display_name = "Engineering - Atmos Tech's Uniforms"
+ description = "Select from a range of outfits available to all Atmospherics Technicians."
+ allowed_roles = list("Chief Engineer","Atmospheric Technician")
+ path = /obj/item/clothing/under/rank/atmospheric_technician/skirt
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/engi_atmos_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "skirt"=/obj/item/clothing/under/rank/atmospheric_technician/skirt,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_atmos,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_atmos_skirt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+//Medical
+
+/datum/gear/uniform/medical_selector
+ display_name = "Medical - Basic Uniforms"
+ description = "Select from a range of outfits available to all Medical personnel."
+ allowed_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Psychiatrist","Paramedic")
+ path = /obj/item/clothing/under/rank/neo_med
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/medical_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "skirt"=/obj/item/clothing/under/rank/medical/skirt,
+ "virologist skirt"=/obj/item/clothing/under/rank/virologist/skirt,
+ "turtleneck"=/obj/item/clothing/under/rank/medical/turtleneck,
+ "vey-medical jumpsuit"=/obj/item/clothing/under/corp/veymed,
+ "KHI uniform"=/obj/item/clothing/under/rank/khi/med,
+ "ST: Original Series Med-Sci"=/obj/item/clothing/under/rank/trek/medsci,
+ "ST: Next Generation Med-Sci"=/obj/item/clothing/under/rank/trek/medsci/next,
+ "ST: Voyager Med-Sci"=/obj/item/clothing/under/rank/trek/medsci/voy,
+ "ST: DS9 Med-Sci"=/obj/item/clothing/under/rank/trek/medsci/ds9,
+ "ST: Enterprise Med-Sci"=/obj/item/clothing/under/rank/trek/medsci/ent,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_med,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_med_skirt,
+ "TG&C virology jumpsuit"=/obj/item/clothing/under/rank/neo_viro,
+ "TG&C virology jumpskirt"=/obj/item/clothing/under/rank/neo_viro_skirt,
+ "TG&C dark jumpsuit"=/obj/item/clothing/under/rank/neo_med_dark,
+ "TG&C dark jumpskirt"=/obj/item/clothing/under/rank/neo_med_dark_skirt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/chemist_selector
+ display_name = "Medical - Chemist's Uniforms"
+ description = "Select from a range of outfits available to all Chemists."
+ allowed_roles = list("Chief Medical Officer","Chemist")
+ path = /obj/item/clothing/under/rank/neo_chem
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/chemist_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "skirt"=/obj/item/clothing/under/rank/chemist/skirt,
+ "TG&C chemist's jumpsuit"=/obj/item/clothing/under/rank/neo_chem,
+ "TG&C chemist's jumpskirt"=/obj/item/clothing/under/rank/neo_chem_skirt,
+ "TG&C pharmacy jumpsuit"=/obj/item/clothing/under/rank/neo_pharma,
+ "TG&C pharmacy jumpskirt"=/obj/item/clothing/under/rank/neo_pharma_skirt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/paramedic_selector
+ display_name = "Medical - Paramedic's Uniforms"
+ description = "Select from a range of outfits available to all Paramedics."
+ allowed_roles = list("Medical Doctor","Chief Medical Officer","Paramedic")
+ path = /obj/item/clothing/under/rank/paramedunidark
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/paramedic_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "dark"=/obj/item/clothing/under/rank/paramedunidark,
+ "dark w/ skirt"=/obj/item/clothing/under/rank/parameduniskirtdark,
+ "light"=/obj/item/clothing/under/rank/paramedunilight,
+ "light w/ skirt"=/obj/item/clothing/under/rank/parameduniskirtlight,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_para,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_para_skirt,
+ "TG&C light jumpsuit"=/obj/item/clothing/under/rank/neo_para_light,
+ "TG&C light jumpskirt"=/obj/item/clothing/under/rank/neo_para_light_skirt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/chief_medical_selector
+ display_name = "Medical - Chief Medical Officer's Uniforms"
+ description = "Select from a range of outfits available to all Chief Medical Officers."
+ allowed_roles = list("Chief Medical Officer")
+ path = /obj/item/clothing/under/rank/neo_cmo
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/chief_medical_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "skirt"=/obj/item/clothing/under/rank/chief_medical_officer/skirt,
+ "KHI uniform, command"=/obj/item/clothing/under/rank/khi/cmd,
+ "ST: Original Series Command"=/obj/item/clothing/under/rank/trek/command,
+ "ST: Next Generation Command"=/obj/item/clothing/under/rank/trek/command/next,
+ "ST: Voyager Command"=/obj/item/clothing/under/rank/trek/command/voy,
+ "ST: DS9 Command"=/obj/item/clothing/under/rank/trek/command/ds9,
+ "ST: Enterprise Command"=/obj/item/clothing/under/rank/trek/command/ent,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_cmo,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_cmo_skirt,
+ "TG&C turtleneck"=/obj/item/clothing/under/rank/neo_cmo_turtle,
+ "TG&C turtleneck w/ skirt"=/obj/item/clothing/under/rank/neo_cmo_turtle_skirt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+//Science
+
+/datum/gear/uniform/research_director_selector
+ display_name = "Science - Research Director's Uniforms"
+ description = "Select from a range of outfits available to all Research Directors."
+ allowed_roles = list("Research Director")
+ path = /obj/item/clothing/under/rank/neo_rd_suit
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/research_director_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "KHI uniform, command"=/obj/item/clothing/under/rank/khi/cmd,
+ "ST: Original Series Command"=/obj/item/clothing/under/rank/trek/command,
+ "ST: Next Generation Command"=/obj/item/clothing/under/rank/trek/command/next,
+ "ST: Voyager Command"=/obj/item/clothing/under/rank/trek/command/voy,
+ "ST: DS9 Command"=/obj/item/clothing/under/rank/trek/command/ds9,
+ "ST: Enterprise Command"=/obj/item/clothing/under/rank/trek/command/ent,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_rd_suit,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_rd_suit_skirt,
+ "TG&C turtleneck"=/obj/item/clothing/under/rank/neo_rd_turtle,
+ "TG&C turtleneck w/ skirt"=/obj/item/clothing/under/rank/neo_rd_turtle_skirt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/science_dept_selector
+ display_name = "Science - Basic Uniforms"
+ description = "Select from a range of outfits available to all Science personnel."
+ allowed_roles = list("Scientist","Research Director","Roboticist","Xenobiologist","Xenobotanist")
+ path = /obj/item/clothing/under/rank/neo_science
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/science_dept_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_science,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_science_skirt,
+ "TG&C utility"=/obj/item/clothing/under/rank/neo_util_sci,
+ "KHI uniform"=/obj/item/clothing/under/rank/khi/sci,
+ "ST: Original Series Med-Sci"=/obj/item/clothing/under/rank/trek/medsci,
+ "ST: Next Generation Med-Sci"=/obj/item/clothing/under/rank/trek/medsci/next,
+ "ST: Voyager Med-Sci"=/obj/item/clothing/under/rank/trek/medsci/voy,
+ "ST: DS9 Med-Sci"=/obj/item/clothing/under/rank/trek/medsci/ds9,
+ "ST: Enterprise Med-Sci"=/obj/item/clothing/under/rank/trek/medsci/ent
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
+
+/datum/gear/uniform/science_robotics_selector
+ display_name = "Science - Roboticist's Uniforms"
+ description = "Select from a range of outfits available to all Roboticists."
+ allowed_roles = list("Research Director","Roboticist")
+ path = /obj/item/clothing/under/rank/neo_robo
+ sort_category = "Uniform Selectors"
+ cost = 2
+
+/datum/gear/uniform/science_robotics_selector/New()
+ ..()
+ var/list/selector_uniforms = list(
+ "skirt"=/obj/item/clothing/under/rank/roboticist/skirt,
+ "TG&C jumpsuit"=/obj/item/clothing/under/rank/neo_robo,
+ "TG&C jumpskirt"=/obj/item/clothing/under/rank/neo_robo_skirt
+ )
+ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(selector_uniforms))
\ No newline at end of file
diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index f1385484783..28a7dab8264 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -602,3 +602,51 @@
/obj/item/clothing/accessory/pride/vore
name = "vore pride pin"
icon_state = "pride_vore"
+
+// ranger ponchos
+
+/obj/item/clothing/accessory/poncho/roles/ranger
+ name = "red ranger poncho"
+ desc = "A rugged all-weather poncho, perfectly coloured to match a popular line of neck gaiters. You could probably use it as a tent in a pinch!"
+ icon_state = "rangerponcho_red"
+ item_state = "rangerponcho_red"
+
+/obj/item/clothing/accessory/poncho/roles/ranger/tan
+ name = "tan ranger poncho"
+ icon_state = "rangerponcho_tan"
+ item_state = "rangerponcho_tan"
+
+/obj/item/clothing/accessory/poncho/roles/ranger/gray
+ name = "gray ranger poncho"
+ icon_state = "rangerponcho_gray"
+ item_state = "rangerponcho_gray"
+
+/obj/item/clothing/accessory/poncho/roles/ranger/green
+ name = "green ranger poncho"
+ icon_state = "rangerponcho_green"
+ item_state = "rangerponcho_green"
+
+/obj/item/clothing/accessory/poncho/roles/ranger/blue
+ name = "blue ranger poncho"
+ icon_state = "rangerponcho_blue"
+ item_state = "rangerponcho_blue"
+
+/obj/item/clothing/accessory/poncho/roles/ranger/purple
+ name = "purple ranger poncho"
+ icon_state = "rangerponcho_purple"
+ item_state = "rangerponcho_purple"
+
+/obj/item/clothing/accessory/poncho/roles/ranger/orange
+ name = "orange ranger poncho"
+ icon_state = "rangerponcho_orange"
+ item_state = "rangerponcho_orange"
+
+/obj/item/clothing/accessory/poncho/roles/ranger/charcoal
+ name = "charcoal ranger poncho"
+ icon_state = "rangerponcho_charcoal"
+ item_state = "rangerponcho_charcoal"
+
+/obj/item/clothing/accessory/poncho/roles/ranger/snow
+ name = "white ranger poncho"
+ icon_state = "rangerponcho_snow"
+ item_state = "rangerponcho_snow"
\ No newline at end of file
diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm
index a49a604b0bc..a001d5aa7cd 100644
--- a/code/modules/clothing/under/jobs/security.dm
+++ b/code/modules/clothing/under/jobs/security.dm
@@ -190,3 +190,28 @@
icon_state = "wardenblueclothes"
item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit")
rolled_sleeves = 0
+
+/*
+ * Tan uniforms
+ */
+/obj/item/clothing/under/rank/security/tan
+ name = "security officer's uniform"
+ desc = "The latest in fashionable security outfits."
+ icon_state = "officertanclothes"
+ item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit")
+ rolled_sleeves = 0
+
+/obj/item/clothing/under/rank/head_of_security/tan
+ desc = "The insignia on this uniform tells you that this uniform belongs to the Head of Security."
+ name = "head of security's uniform"
+ icon_state = "hostanclothes"
+ item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit")
+ rolled_sleeves = 0
+
+/obj/item/clothing/under/rank/warden/tan
+ desc = "The insignia on this uniform tells you that this uniform belongs to the Warden."
+ name = "warden's uniform"
+ icon_state = "wardentanclothes"
+ item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit")
+ rolled_sleeves = 0
+
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index 4393be1bfd6..3c3ba740499 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -239,6 +239,7 @@
name = "sleek overalls"
desc = "A set of modern pleather reinforced overalls."
icon_state = "overalls_sleek"
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS
/obj/item/clothing/under/pirate
name = "pirate outfit"
diff --git a/code/modules/clothing/under/neounder.dm b/code/modules/clothing/under/neounder.dm
index 2e0c9ae1dcc..59a939987e8 100644
--- a/code/modules/clothing/under/neounder.dm
+++ b/code/modules/clothing/under/neounder.dm
@@ -95,6 +95,13 @@ this file deals with uniforms/under. */
rolled_sleeves = -1
rolled_down = -1
+/obj/item/clothing/under/rank/neo_civvie_gorka
+ name = "civilan gorka"
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. For those who appreciate durable clothing. It has a tag denoting it's made by Total Gear & Co."
+ icon_state = "neo_civvie_gorka"
+ rolled_sleeves = -1
+ rolled_down = -1
+
// Command
/obj/item/clothing/under/rank/neo_captain
@@ -195,6 +202,20 @@ this file deals with uniforms/under. */
rolled_sleeves = -1
rolled_down = -1
+/obj/item/clothing/under/rank/neo_cmd_gorka
+ name = "CO's gorka"
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. Who said command-wear can't look slick? It has a tag denoting it's made by Total Gear & Co."
+ icon_state = "neo_cmd_gorka"
+ rolled_sleeves = -1
+ rolled_down = -1
+
+/obj/item/clothing/under/rank/neo_pilot_gorka
+ name = "pilot's gorka"
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. In the pipe, five by five. It has a tag denoting it's made by Total Gear & Co."
+ icon_state = "neo_pilot_gorka"
+ rolled_sleeves = -1
+ rolled_down = -1
+
//'Suspicious'
/obj/item/clothing/under/rank/neo_suspect_turtleneck
@@ -572,6 +593,26 @@ this file deals with uniforms/under. */
icon_state = "neo_runner"
rolled_sleeves = -1
rolled_down = -1
+ armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ siemens_coefficient = 0.9
+
+/obj/item/clothing/under/rank/neo_hos_gorka
+ name = "head of security's gorka"
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. Favoured by the Head of Security who wants to stay dry no matter what. It has a tag denoting it's made by Total Gear & Co."
+ icon_state = "neo_hos_gorka"
+ rolled_sleeves = -1
+ rolled_down = -1
+ armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ siemens_coefficient = 0.9
+
+/obj/item/clothing/under/rank/neo_sec_gorka
+ name = "security officer's gorka"
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. For officers who expect to be patrolling in harsh conditions. It has a tag denoting it's made by Total Gear & Co."
+ icon_state = "neo_sec_gorka"
+ rolled_sleeves = -1
+ rolled_down = -1
+ armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ siemens_coefficient = 0.9
// Cargo
@@ -655,7 +696,7 @@ this file deals with uniforms/under. */
/obj/item/clothing/under/rank/neo_qm_gorka
name = "QM's gorka"
- desc = "it has a tag denoting it's made by Total Gear & Co."
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. Preferred by quartermasters who do heavy lifting as well as paperwork. It has a tag denoting it's made by Total Gear & Co."
icon_state = "neo_qm_gorka"
rolled_sleeves = -1
rolled_down = -1
@@ -704,7 +745,7 @@ this file deals with uniforms/under. */
/obj/item/clothing/under/rank/neo_cargo_gorka
name = "cargo tech's gorka"
- desc = "it has a tag denoting it's made by Total Gear & Co."
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. No need to worry about improperly packaged goods ripping your jumpsuit with this. It has a tag denoting it's made by Total Gear & Co."
icon_state = "neo_cargo_gorka"
rolled_sleeves = -1
rolled_down = -1
@@ -765,6 +806,22 @@ this file deals with uniforms/under. */
rolled_down = -1
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
+/obj/item/clothing/under/rank/neo_ce_gorka
+ name = "chief engineer's gorka"
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. For the chief engineer who values style and safety. It has a tag denoting it's made by Total Gear & Co."
+ icon_state = "neo_ce_gorka"
+ rolled_sleeves = -1
+ rolled_down = -1
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
+
+/obj/item/clothing/under/rank/neo_engi_gorka
+ name = "engineer's gorka"
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. Not rated for high-power electrical shocks. It has a tag denoting it's made by Total Gear & Co."
+ icon_state = "neo_engi_gorka"
+ rolled_sleeves = -1
+ rolled_down = -1
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
+
// Sci
/obj/item/clothing/under/rank/neo_rd_turtle
@@ -844,6 +901,20 @@ this file deals with uniforms/under. */
rolled_sleeves = -1
rolled_down = -1
+/obj/item/clothing/under/rank/neo_rd_gorka
+ name = "research director's gorka"
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. For research directors who like to get their hands dirty. It has a tag denoting it's made by Total Gear & Co."
+ icon_state = "neo_rd_gorka"
+ rolled_sleeves = -1
+ rolled_down = -1
+
+/obj/item/clothing/under/rank/neo_sci_gorka
+ name = "scientist's gorka"
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. A favourite of mountaineering archaeologists. It has a tag denoting it's made by Total Gear & Co."
+ icon_state = "neo_sci_gorka"
+ rolled_sleeves = -1
+ rolled_down = -1
+
// Med
/obj/item/clothing/under/rank/neo_med
@@ -1007,3 +1078,21 @@ this file deals with uniforms/under. */
rolled_down = -1
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+
+/obj/item/clothing/under/rank/neo_cmo_gorka
+ name = "chief medical officer's gorka"
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. Why worry about stains when everything slides right off? It has a tag denoting it's made by Total Gear & Co."
+ icon_state = "neo_cmo_gorka"
+ rolled_sleeves = -1
+ rolled_down = -1
+ permeability_coefficient = 0.50
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+
+/obj/item/clothing/under/rank/neo_med_gorka
+ name = "medical staff gorka"
+ desc = "A rugged weather-resistant uniform made of ripstop fabric. A popular choice among paramedical personnel. It has a tag denoting it's made by Total Gear & Co."
+ icon_state = "neo_med_gorka"
+ rolled_sleeves = -1
+ rolled_down = -1
+ permeability_coefficient = 0.50
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
diff --git a/code/modules/clothing/under/solgov.dm b/code/modules/clothing/under/solgov.dm
index 82386c97697..228c22b0951 100644
--- a/code/modules/clothing/under/solgov.dm
+++ b/code/modules/clothing/under/solgov.dm
@@ -63,6 +63,18 @@
icon_state = "greyutility"
worn_state = "greyutility"
+/obj/item/clothing/under/utility/tan
+ name = "utility uniform"
+ desc = "A comfortable tan utility jumpsuit."
+ icon_state = "tanutility"
+ worn_state = "tanutility"
+
+/obj/item/clothing/under/utility/green
+ name = "utility uniform"
+ desc = "A comfortable green utility jumpsuit."
+ icon_state = "greenutility"
+ worn_state = "greenutility"
+
//Here's the real ones
/obj/item/clothing/under/solgov/utility/sifguard
name = "\improper SifGuard uniform"
diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm
index 7563290b0ba..0011b4fbcc2 100644
--- a/code/modules/economy/vending_machines.dm
+++ b/code/modules/economy/vending_machines.dm
@@ -301,7 +301,7 @@
/obj/item/toy/tennis = 15)
//VOREStation Edit End
- contraband = list(/obj/item/weapon/reagent_containers/syringe/steroid = 4, /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteanshake = 2) // VOREStation Add - Slurpable blobs.
+ contraband = list(/obj/item/weapon/reagent_containers/syringe/steroid = 4, /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteanshake = 2, /obj/item/toy/baseball = 2) // VOREStation Add - Slurpable blobs.
/obj/machinery/vending/cart
name = "PTech"
@@ -1225,6 +1225,7 @@
/obj/item/clothing/under/rank/neo_corrections = 5,
/obj/item/clothing/under/rank/neo_corrections_skirt = 5,
/obj/item/clothing/under/rank/neo_runner = 5,
+ /obj/item/clothing/under/rank/neo_sec_gorka = 5,
/obj/item/clothing/suit/neo_runner_coat = 5,
/obj/item/clothing/shoes/boots/jackboots/silver = 5,
/obj/item/clothing/shoes/boots/jackboots/white = 5,
@@ -1292,6 +1293,7 @@
/obj/item/clothing/under/rank/neo_para_light_skirt = 5,
/obj/item/clothing/under/rank/neo_med_dark = 5,
/obj/item/clothing/under/rank/neo_med_dark_skirt = 5,
+ /obj/item/clothing/under/rank/neo_med_gorka = 5,
/obj/item/clothing/suit/storage/toggle/labcoat/neo_emt = 5,
/obj/item/clothing/suit/storage/toggle/labcoat/neo_labcoat = 5,
/obj/item/clothing/suit/storage/toggle/labcoat/neo_highvis = 5,
@@ -1398,6 +1400,7 @@
/obj/item/clothing/under/rank/neo_science = 5,
/obj/item/clothing/under/rank/neo_science_skirt = 5,
/obj/item/clothing/under/rank/neo_util_sci = 5,
+ /obj/item/clothing/under/rank/neo_sci_gorka = 5,
/obj/item/clothing/suit/storage/toggle/labcoat/neo_sci_dep = 5,
/obj/item/clothing/suit/storage/toggle/labcoat/neo_labcoat = 5,
/obj/item/clothing/suit/storage/hooded/wintercoat/science = 5,
@@ -1478,6 +1481,7 @@
/obj/item/clothing/mask/bandana/gold = 5,
/obj/item/clothing/under/rank/neo_engi = 5,
/obj/item/clothing/under/rank/neo_engi_skirt = 5,
+ /obj/item/clothing/under/rank/neo_engi_gorka = 5,
/obj/item/clothing/suit/storage/toggle/labcoat/neo_engi_dep = 5,
/obj/item/clothing/suit/storage/hooded/wintercoat/engineering = 5,
/obj/item/clothing/shoes/boots/winter/engineering = 5,
diff --git a/code/modules/economy/vending_machines_vr.dm b/code/modules/economy/vending_machines_vr.dm
index 40c4743de3a..784bbcca65c 100644
--- a/code/modules/economy/vending_machines_vr.dm
+++ b/code/modules/economy/vending_machines_vr.dm
@@ -929,6 +929,7 @@
/obj/item/clothing/under/suit_jacket/checkered/skirt = 5,
/obj/item/clothing/under/suit_jacket/tan = 5,
/obj/item/clothing/under/suit_jacket/tan/skirt = 5,
+ /obj/item/clothing/under/rank/neo_civvie_gorka = 5,
/obj/item/clothing/suit/storage/toggle/labcoat/neo_leather = 5,
/obj/item/clothing/suit/neo_gorka = 5,
/obj/item/clothing/suit/storage/toggle/labcoat/neo_civ_dep = 5,
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm
index ca99f6ec32f..fb761a167bb 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm
@@ -28,6 +28,7 @@
selective_preference = client.prefs_vr.selective_preference
appendage_color = client.prefs_vr.appendage_color
appendage_alt_setting = client.prefs_vr.appendage_alt_setting
+ eating_privacy_global = client.prefs_vr.eating_privacy_global
drop_vore = client.prefs_vr.drop_vore
stumble_vore = client.prefs_vr.stumble_vore
diff --git a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
index 63aa9f57540..9db4b297827 100644
--- a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
@@ -916,4 +916,11 @@
icon_state = "zaprat"
extra_overlay = "zaprat-tips"
do_colouration = 1
- color_blend_mode = ICON_MULTIPLY
\ No newline at end of file
+ color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/ears/kara //SatinIsle Fluff Item
+ name = "Pterokara horn"
+ desc = ""
+ icon = 'icons/mob/vore/ears_vr.dmi'
+ icon_state = "kara_horn"
+ ckeys_allowed = list("satinisle")
\ No newline at end of file
diff --git a/code/modules/mob/new_player/sprite_accessories_extra_vr.dm b/code/modules/mob/new_player/sprite_accessories_extra_vr.dm
index 85bb90c1cba..08c0d4e0152 100644
--- a/code/modules/mob/new_player/sprite_accessories_extra_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_extra_vr.dm
@@ -975,3 +975,9 @@
color_blend_mode = ICON_MULTIPLY
body_parts = list(BP_R_LEG, BP_L_LEG, BP_GROIN)
+/datum/sprite_accessory/marking/vr/nevrean_long
+ name = "Long Snout"
+ icon = 'icons/mob/human_races/markings_vr.dmi'
+ icon_state = "nevrean_long"
+ color_blend_mode = ICON_MULTIPLY
+ body_parts = list(BP_HEAD)
diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
index 8e3e3f7c12a..bc29290da62 100644
--- a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
@@ -1337,6 +1337,12 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
+/datum/sprite_accessory/tail/kara //SatinIsle fluff item
+ name = "Pterokara Tail"
+ icon = 'icons/mob/vore/tails_vr.dmi'
+ icon_state = "kara_tail"
+ ckeys_allowed = list("satinisle")
+
//LONG TAILS ARE NOT TAUR BUTTS >:O
/datum/sprite_accessory/tail/longtail
name = "You should not see this..."
diff --git a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
index aba84d495bd..94db4dee96f 100644
--- a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
@@ -319,3 +319,10 @@
icon_state = "sectdrone_wing"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
+
+/datum/sprite_accessory/wing/kara //SatinIsle Fluff Item
+ name = "Pterokara wings"
+ desc = ""
+ icon = 'icons/mob/vore/wings_vr.dmi'
+ icon_state = "feathered_kara"
+ ckeys_allowed = list("satinisle")
\ No newline at end of file
diff --git a/code/modules/tgui/external.dm b/code/modules/tgui/external.dm
index cfd8db13688..88e7c90a0fb 100644
--- a/code/modules/tgui/external.dm
+++ b/code/modules/tgui/external.dm
@@ -1,7 +1,8 @@
-/**
- * tgui external
+/*!
+ * External tgui definitions, such as src_object APIs.
*
- * Contains all external tgui declarations.
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
*/
/**
diff --git a/code/modules/tgui/states.dm b/code/modules/tgui/states.dm
index 5a66efc090d..ab80a41bd50 100644
--- a/code/modules/tgui/states.dm
+++ b/code/modules/tgui/states.dm
@@ -1,6 +1,9 @@
-/**
+/*!
* Base state and helpers for states. Just does some sanity checks,
* implement a proper state for in-depth checks.
+ *
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
*/
/**
diff --git a/code/modules/tgui/states/admin.dm b/code/modules/tgui/states/admin.dm
index 7009f6f8844..bfa877bc096 100644
--- a/code/modules/tgui/states/admin.dm
+++ b/code/modules/tgui/states/admin.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: admin_state
*
diff --git a/code/modules/tgui/states/always.dm b/code/modules/tgui/states/always.dm
index 30915785442..9095d043505 100644
--- a/code/modules/tgui/states/always.dm
+++ b/code/modules/tgui/states/always.dm
@@ -1,3 +1,7 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
/**
* tgui state: always_state
diff --git a/code/modules/tgui/states/conscious.dm b/code/modules/tgui/states/conscious.dm
index 6bc0c7ec031..7213a99be7f 100644
--- a/code/modules/tgui/states/conscious.dm
+++ b/code/modules/tgui/states/conscious.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: conscious_state
*
diff --git a/code/modules/tgui/states/contained.dm b/code/modules/tgui/states/contained.dm
index c2fbd0b6b06..e16159c5e54 100644
--- a/code/modules/tgui/states/contained.dm
+++ b/code/modules/tgui/states/contained.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: contained_state
*
diff --git a/code/modules/tgui/states/deep_inventory.dm b/code/modules/tgui/states/deep_inventory.dm
index 14419874538..3d0913cf82f 100644
--- a/code/modules/tgui/states/deep_inventory.dm
+++ b/code/modules/tgui/states/deep_inventory.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: deep_inventory_state
*
diff --git a/code/modules/tgui/states/default.dm b/code/modules/tgui/states/default.dm
index 93ba1df55f7..2fe058f3e09 100644
--- a/code/modules/tgui/states/default.dm
+++ b/code/modules/tgui/states/default.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: default_state
*
diff --git a/code/modules/tgui/states/hands.dm b/code/modules/tgui/states/hands.dm
index 0981b5d6ec7..9d742a4ab0b 100644
--- a/code/modules/tgui/states/hands.dm
+++ b/code/modules/tgui/states/hands.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: hands_state
*
diff --git a/code/modules/tgui/states/human_adjacent.dm b/code/modules/tgui/states/human_adjacent.dm
index 8164d5f9cee..845459e0717 100644
--- a/code/modules/tgui/states/human_adjacent.dm
+++ b/code/modules/tgui/states/human_adjacent.dm
@@ -1,3 +1,7 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
/**
* tgui state: human_adjacent_state
diff --git a/code/modules/tgui/states/inventory.dm b/code/modules/tgui/states/inventory.dm
index 92274cc1f2e..042ca7264cc 100644
--- a/code/modules/tgui/states/inventory.dm
+++ b/code/modules/tgui/states/inventory.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: inventory_state
*
diff --git a/code/modules/tgui/states/not_incapacitated.dm b/code/modules/tgui/states/not_incapacitated.dm
index 1185b516478..49f6d0097a8 100644
--- a/code/modules/tgui/states/not_incapacitated.dm
+++ b/code/modules/tgui/states/not_incapacitated.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: not_incapacitated_state
*
diff --git a/code/modules/tgui/states/notcontained.dm b/code/modules/tgui/states/notcontained.dm
index 56b789e3c04..452d0f649bc 100644
--- a/code/modules/tgui/states/notcontained.dm
+++ b/code/modules/tgui/states/notcontained.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: notcontained_state
*
diff --git a/code/modules/tgui/states/observer.dm b/code/modules/tgui/states/observer.dm
index bdfe690dbaa..f20bb1b71ff 100644
--- a/code/modules/tgui/states/observer.dm
+++ b/code/modules/tgui/states/observer.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: observer_state
*
@@ -12,4 +17,3 @@ GLOBAL_DATUM_INIT(tgui_observer_state, /datum/tgui_state/observer_state, new)
if(check_rights(R_ADMIN|R_EVENT, 0, src))
return STATUS_INTERACTIVE
return STATUS_CLOSE
-
diff --git a/code/modules/tgui/states/physical.dm b/code/modules/tgui/states/physical.dm
index 9712090b5da..dc7f93d2ee7 100644
--- a/code/modules/tgui/states/physical.dm
+++ b/code/modules/tgui/states/physical.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: physical_state
*
@@ -72,4 +77,4 @@ GLOBAL_DATUM_INIT(tgui_physical_state_bigscreen, /datum/tgui_state/physical_bigs
return max(STATUS_UPDATE, shared_living_tgui_distance_bigscreen(src_object)) // Silicons can always see.
/mob/living/silicon/ai/physical_can_use_tgui_topic(src_object)
- return STATUS_UPDATE // AIs are not physical.
\ No newline at end of file
+ return STATUS_UPDATE // AIs are not physical.
diff --git a/code/modules/tgui/states/self.dm b/code/modules/tgui/states/self.dm
index 109fd6ae440..064b1b0ce66 100644
--- a/code/modules/tgui/states/self.dm
+++ b/code/modules/tgui/states/self.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: self_state
*
diff --git a/code/modules/tgui/states/zlevel.dm b/code/modules/tgui/states/zlevel.dm
index a589a4b64d7..3e7d84e2621 100644
--- a/code/modules/tgui/states/zlevel.dm
+++ b/code/modules/tgui/states/zlevel.dm
@@ -1,3 +1,8 @@
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
+ */
+
/**
* tgui state: z_state
*
diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm
index 74d16a2e33d..29431c42f3b 100644
--- a/code/modules/tgui/tgui.dm
+++ b/code/modules/tgui/tgui.dm
@@ -1,7 +1,6 @@
-/**
- * tgui
- *
- * /tg/station user interface library
+/*!
+ * Copyright (c) 2020 Aleksej Komarov
+ * SPDX-License-Identifier: MIT
*/
/**
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index 2ae59893136..02960e0a4bd 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -54,6 +54,7 @@
var/emote_active = TRUE // Are we even giving emotes out at all or not?
var/next_emote = 0 // When we're supposed to print our next emote, as a world.time
var/selective_preference = DM_DIGEST // Which type of selective bellymode do we default to?
+ var/eating_privacy_local = "default" //Overrides eating_privacy_global if not "default". Determines if attempt/success messages are subtle/loud
// Generally just used by AI
var/autotransferchance = 0 // % Chance of prey being autotransferred to transfer location
@@ -226,7 +227,8 @@
"belly_fullscreen_color",
"colorization_enabled",
"egg_type",
- "save_digest_mode"
+ "save_digest_mode",
+ "eating_privacy_local"
)
if (save_digest_mode == 1)
@@ -391,16 +393,28 @@
if(!ishuman(owner))
owner.update_icons()
+ //Determines privacy
+ var/privacy_range = world.view
+ var/privacy_volume = 100
+ switch(eating_privacy_local) //Third case of if("loud") not defined, as it'd just leave privacy_range and volume untouched
+ if("default")
+ if(owner.eating_privacy_global)
+ privacy_range = 1
+ privacy_volume = 25
+ if("subtle")
+ privacy_range = 1
+ privacy_volume = 25
+
//Print notifications/sound if necessary
if(!silent && count)
- owner.visible_message("[owner] [release_verb] everything from their [lowertext(name)]!")
+ owner.visible_message("[owner] [release_verb] everything from their [lowertext(name)]!", range = privacy_range)
var/soundfile
if(!fancy_vore)
soundfile = classic_release_sounds[release_sound]
else
soundfile = fancy_release_sounds[release_sound]
if(soundfile)
- playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE)
+ playsound(src, soundfile, vol = privacy_volume, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE)
return count
@@ -459,16 +473,28 @@
if(!ishuman(owner))
owner.update_icons()
+ //Determines privacy
+ var/privacy_range = world.view
+ var/privacy_volume = 100
+ switch(eating_privacy_local) //Third case of if("loud") not defined, as it'd just leave privacy_range and volume untouched
+ if("default")
+ if(owner.eating_privacy_global)
+ privacy_range = 1
+ privacy_volume = 25
+ if("subtle")
+ privacy_range = 1
+ privacy_volume = 25
+
//Print notifications/sound if necessary
if(!silent)
- owner.visible_message("[owner] [release_verb] [M] from their [lowertext(name)]!")
+ owner.visible_message("[owner] [release_verb] [M] from their [lowertext(name)]!",range = privacy_range)
var/soundfile
if(!fancy_vore)
soundfile = classic_release_sounds[release_sound]
else
soundfile = fancy_release_sounds[release_sound]
if(soundfile)
- playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE)
+ playsound(src, soundfile, vol = privacy_volume, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE)
//Should fix your view not following you out of mobs sometimes!
if(ismob(M))
var/mob/ourmob = M
@@ -1187,6 +1213,7 @@
dupe.emote_active = emote_active
dupe.selective_preference = selective_preference
dupe.save_digest_mode = save_digest_mode
+ dupe.eating_privacy_local = eating_privacy_local
//// Object-holding variables
//struggle_messages_outside - strings
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index 9e37b888cea..66739c747b6 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -50,6 +50,7 @@
var/selective_preference = DM_DEFAULT // Preference for selective bellymode
var/appendage_color = "#e03997" //Default pink. Used for the 'long_vore' trait.
var/appendage_alt_setting = FALSE // Dictates if 'long_vore' user pulls prey to them or not. 1 = user thrown towards target.
+ var/eating_privacy_global = FALSE //Makes eating attempt/success messages only reach for subtle range if true, overwritten by belly-specific var
var/regen_sounds = list(
'sound/effects/mob_effects/xenochimera/regen_1.ogg',
'sound/effects/mob_effects/xenochimera/regen_2.ogg',
@@ -286,6 +287,7 @@
P.slip_vore = src.slip_vore
P.throw_vore = src.throw_vore
P.stumble_vore = src.stumble_vore
+ P.eating_privacy_global = src.eating_privacy_global
P.nutrition_message_visible = src.nutrition_message_visible
P.nutrition_messages = src.nutrition_messages
@@ -335,6 +337,7 @@
slip_vore = P.slip_vore
throw_vore = P.throw_vore
stumble_vore = P.stumble_vore
+ eating_privacy_global = P.eating_privacy_global
nutrition_message_visible = P.nutrition_message_visible
nutrition_messages = P.nutrition_messages
@@ -600,6 +603,18 @@
to_chat(user, "They aren't aren't in a state to be devoured.")
return FALSE
+ //Determining vore attempt privacy
+ var/message_range = world.view
+ if(!pred.is_slipping && !prey.is_slipping) //We only care about privacy preference if it's NOT a spontaneous vore.
+ switch(belly.eating_privacy_local) //if("loud") case not added, as it would not modify message_range
+ if("default")
+ if(pred.eating_privacy_global)
+ message_range = 1
+ if("subtle")
+ message_range = 1
+
+
+
// Slipnoms from chompstation downstream, credit to cadyn for the original PR.
// Prepare messages
if(prey.is_slipping)
@@ -616,7 +631,10 @@
success_msg = "[user] manages to make [pred] [lowertext(belly.vore_verb)] [prey] into their [lowertext(belly.name)]!"
// Announce that we start the attempt!
- user.visible_message(attempt_msg)
+
+
+ user.visible_message(attempt_msg, range = message_range)
+
// Now give the prey time to escape... return if they did
var/swallow_time
@@ -633,7 +651,7 @@
return FALSE // Prey escpaed (or user disabled) before timer expired.
// If we got this far, nom successful! Announce it!
- user.visible_message(success_msg)
+ user.visible_message(success_msg, range = message_range)
// Actually shove prey into the belly.
if(istype(prey.loc, /obj/item/weapon/holder))
@@ -1079,6 +1097,7 @@
dispvoreprefs += "Spontaneous transformation: [allow_spontaneous_tf ? "Enabled" : "Disabled"]
"
dispvoreprefs += "Can be stepped on/over: [step_mechanics_pref ? "Allowed" : "Disallowed"]
"
dispvoreprefs += "Can be picked up: [pickup_pref ? "Allowed" : "Disallowed"]
"
+ dispvoreprefs += "Global Vore Privacy is: [eating_privacy_global ? "Subtle" : "Loud"]
"
user << browse("
Vore prefs: [src][dispvoreprefs]", "window=[name]mvp;size=300x400;can_resize=1;can_minimize=0")
onclose(user, "[name]")
return
diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm
index 2228c9cfb68..7911fcc09f1 100644
--- a/code/modules/vore/eating/vore_vr.dm
+++ b/code/modules/vore/eating/vore_vr.dm
@@ -55,6 +55,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
var/allowmobvore = TRUE
var/permit_healbelly = TRUE
var/noisy = FALSE
+ var/eating_privacy_global = FALSE //Makes eating attempt/success messages only reach for subtle range if true, overwritten by belly-specific var
// These are 'modifier' prefs, do nothing on their own but pair with drop_prey/drop_pred settings.
var/drop_vore = TRUE
@@ -192,6 +193,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
nutrition_messages = json_from_file["nutrition_messages"]
weight_message_visible = json_from_file["weight_message_visible"]
weight_messages = json_from_file["weight_messages"]
+ eating_privacy_global = json_from_file["eating_privacy_global"]
//Quick sanitize
if(isnull(digestable))
@@ -246,6 +248,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
nutrition_message_visible = TRUE
if(isnull(weight_message_visible))
weight_message_visible = TRUE
+ if(isnull(eating_privacy_global))
+ eating_privacy_global = FALSE
if(isnull(nutrition_messages))
nutrition_messages = list(
"They are starving! You can hear their stomach snarling from across the room!",
@@ -316,6 +320,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
"nutrition_messages" = nutrition_messages,
"weight_message_visible" = weight_message_visible,
"weight_messages" = weight_messages,
+ "eating_privacy_global" = eating_privacy_global,
)
//List to JSON
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index 54c0dc25a52..4a222d72ce2 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -191,6 +191,7 @@
"belly_fullscreen" = selected.belly_fullscreen,
"belly_fullscreen_color" = selected.belly_fullscreen_color,
"colorization_enabled" = selected.colorization_enabled,
+ "eating_privacy_local" = selected.eating_privacy_local
)
var/list/addons = list()
@@ -284,7 +285,8 @@
"nutrition_message_visible" = host.nutrition_message_visible,
"nutrition_messages" = host.nutrition_messages,
"weight_message_visible" = host.weight_message_visible,
- "weight_messages" = host.weight_messages
+ "weight_messages" = host.weight_messages,
+ "eating_privacy_global" = host.eating_privacy_global
)
return data
@@ -450,6 +452,12 @@
host.client.prefs_vr.digestable = host.digestable
unsaved_changes = TRUE
return TRUE
+ if("toggle_global_privacy")
+ host.eating_privacy_global = !host.eating_privacy_global
+ if(host.client.prefs_vr)
+ host.eating_privacy_global = host.eating_privacy_global
+ unsaved_changes = TRUE
+ return TRUE
if("toggle_devour")
host.devourable = !host.devourable
if(host.client.prefs_vr)
@@ -1101,6 +1109,12 @@
host.vore_selected.release_verb = new_release_verb
. = TRUE
+ if("b_eating_privacy")
+ var/privacy_choice = tgui_input_list(usr, "Choose your belly-specific preference. Default uses global preference!", "Eating message privacy", list("default", "subtle", "loud"), "default")
+ if(privacy_choice == null)
+ return FALSE
+ host.vore_selected.eating_privacy_local = privacy_choice
+ . = TRUE
if("b_fancy_sound")
host.vore_selected.fancy_vore = !host.vore_selected.fancy_vore
host.vore_selected.vore_sound = "Gulp"
diff --git a/code/modules/vore/mouseray.dm b/code/modules/vore/mouseray.dm
index 20ea7baa0be..eb98a0ae762 100644
--- a/code/modules/vore/mouseray.dm
+++ b/code/modules/vore/mouseray.dm
@@ -245,6 +245,7 @@
new_mob.vore_smell = vore_smell
new_mob.nutrition_message_visible = nutrition_message_visible
new_mob.allow_spontaneous_tf = allow_spontaneous_tf
+ new_mob.eating_privacy_global = eating_privacy_global
/////SUBTYPES/////
diff --git a/icons/inventory/accessory/item.dmi b/icons/inventory/accessory/item.dmi
index b17ed5c1e2e..568c866874d 100644
Binary files a/icons/inventory/accessory/item.dmi and b/icons/inventory/accessory/item.dmi differ
diff --git a/icons/inventory/accessory/mob.dmi b/icons/inventory/accessory/mob.dmi
index 8858b2f5805..b5bb6eff556 100644
Binary files a/icons/inventory/accessory/mob.dmi and b/icons/inventory/accessory/mob.dmi differ
diff --git a/icons/inventory/uniform/item.dmi b/icons/inventory/uniform/item.dmi
index 1e765777c7a..0cc9ef154a3 100644
Binary files a/icons/inventory/uniform/item.dmi and b/icons/inventory/uniform/item.dmi differ
diff --git a/icons/inventory/uniform/mob.dmi b/icons/inventory/uniform/mob.dmi
index 2c66bcf61a4..5d36de239b8 100644
Binary files a/icons/inventory/uniform/mob.dmi and b/icons/inventory/uniform/mob.dmi differ
diff --git a/icons/mob/human_races/markings_vr.dmi b/icons/mob/human_races/markings_vr.dmi
index 672985eeec6..755050fe4af 100644
Binary files a/icons/mob/human_races/markings_vr.dmi and b/icons/mob/human_races/markings_vr.dmi differ
diff --git a/icons/mob/items/lefthand_balls_vr.dmi b/icons/mob/items/lefthand_balls_vr.dmi
index 70455d01c20..9c34b823a58 100644
Binary files a/icons/mob/items/lefthand_balls_vr.dmi and b/icons/mob/items/lefthand_balls_vr.dmi differ
diff --git a/icons/mob/items/righthand_balls_vr.dmi b/icons/mob/items/righthand_balls_vr.dmi
index 286540595d5..c1030a143c9 100644
Binary files a/icons/mob/items/righthand_balls_vr.dmi and b/icons/mob/items/righthand_balls_vr.dmi differ
diff --git a/icons/mob/mouthball_vr.dmi b/icons/mob/mouthball_vr.dmi
index f3c605ab56e..3fb8a228208 100644
Binary files a/icons/mob/mouthball_vr.dmi and b/icons/mob/mouthball_vr.dmi differ
diff --git a/icons/mob/vore/ears_vr.dmi b/icons/mob/vore/ears_vr.dmi
index 0da5ddb7266..a9a4980b58d 100644
Binary files a/icons/mob/vore/ears_vr.dmi and b/icons/mob/vore/ears_vr.dmi differ
diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi
index d55293ae14f..a842bfd6ce8 100644
Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ
diff --git a/icons/mob/vore/wings_vr.dmi b/icons/mob/vore/wings_vr.dmi
index cdcac1d4cde..3eb91889e58 100644
Binary files a/icons/mob/vore/wings_vr.dmi and b/icons/mob/vore/wings_vr.dmi differ
diff --git a/icons/obj/balls_vr.dmi b/icons/obj/balls_vr.dmi
index e85f4cab05d..6900c2df12f 100644
Binary files a/icons/obj/balls_vr.dmi and b/icons/obj/balls_vr.dmi differ
diff --git a/maps/groundbase/gb-centcomm.dmm b/maps/groundbase/gb-centcomm.dmm
index e078f40080d..4fa63e3b8b4 100644
--- a/maps/groundbase/gb-centcomm.dmm
+++ b/maps/groundbase/gb-centcomm.dmm
@@ -7852,6 +7852,12 @@
/obj/effect/floor_decal/corner/paleblue/bordercorner2,
/turf/simulated/floor/tiled/white,
/area/centcom/medical)
+"Af" = (
+/obj/machinery/item_bank{
+ pixel_y = 25
+ },
+/turf/simulated/floor/tiled,
+/area/centcom/living)
"Ai" = (
/obj/structure/sign/department/armory,
/turf/simulated/floor/tiled,
@@ -9121,6 +9127,17 @@
/obj/machinery/door/firedoor,
/turf/simulated/floor/tiled,
/area/centcom/command)
+"ET" = (
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals9,
+/obj/machinery/item_bank{
+ dir = 8;
+ pixel_x = 25
+ },
+/turf/simulated/floor/tiled,
+/area/centcom/living)
"EV" = (
/obj/item/weapon/storage/box/evidence,
/obj/item/weapon/folder/red,
@@ -29034,7 +29051,7 @@ dR
Fo
Fo
Fo
-Fo
+ET
Fo
Fo
Fo
@@ -33696,7 +33713,7 @@ Lu
bm
qE
wc
-vd
+Af
vd
vd
vd
diff --git a/maps/stellar_delight/ship_centcom.dmm b/maps/stellar_delight/ship_centcom.dmm
index f20a4ce113e..a29f00e50f2 100644
--- a/maps/stellar_delight/ship_centcom.dmm
+++ b/maps/stellar_delight/ship_centcom.dmm
@@ -2394,6 +2394,12 @@
},
/turf/simulated/floor/tiled/dark,
/area/centcom/control)
+"hK" = (
+/obj/machinery/item_bank{
+ pixel_y = 28
+ },
+/turf/simulated/floor/tiled,
+/area/centcom/living)
"hL" = (
/obj/machinery/door/airlock/centcom{
name = "Special Operations";
@@ -4050,6 +4056,17 @@
},
/turf/simulated/floor/tiled/dark,
/area/centcom/security)
+"of" = (
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals9,
+/obj/machinery/item_bank{
+ dir = 8;
+ pixel_x = 28
+ },
+/turf/simulated/floor/tiled,
+/area/centcom/living)
"oj" = (
/obj/structure/bed/chair/sofa/bench/left{
dir = 4;
@@ -29072,7 +29089,7 @@ vu
Zy
Zy
Zy
-Zy
+of
Zy
Zy
Zy
@@ -33734,7 +33751,7 @@ Ll
OA
Xf
as
-VH
+hK
VH
VH
VH
diff --git a/maps/stellar_delight/stellar_delight1.dmm b/maps/stellar_delight/stellar_delight1.dmm
index 4938e34bf91..9b433defd3d 100644
--- a/maps/stellar_delight/stellar_delight1.dmm
+++ b/maps/stellar_delight/stellar_delight1.dmm
@@ -10741,6 +10741,7 @@
/turf/simulated/floor/tiled/dark,
/area/security/security_lockerroom)
"wf" = (
+/obj/machinery/alarm/angled,
/turf/simulated/floor,
/area/maintenance/security_port)
"wg" = (
diff --git a/maps/tether/submaps/tether_centcom.dmm b/maps/tether/submaps/tether_centcom.dmm
index 85049a7f99c..65e216ed525 100644
--- a/maps/tether/submaps/tether_centcom.dmm
+++ b/maps/tether/submaps/tether_centcom.dmm
@@ -3500,6 +3500,12 @@
},
/turf/simulated/floor/tiled/white,
/area/centcom/control)
+"lB" = (
+/obj/machinery/item_bank{
+ pixel_y = 28
+ },
+/turf/simulated/floor/tiled,
+/area/centcom/living)
"lC" = (
/obj/effect/floor_decal/industrial/warning{
dir = 1
@@ -5470,6 +5476,17 @@
},
/turf/simulated/floor/tiled,
/area/centcom/terminal)
+"vF" = (
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals9,
+/obj/machinery/item_bank{
+ dir = 8;
+ pixel_x = 28
+ },
+/turf/simulated/floor/tiled,
+/area/centcom/living)
"vG" = (
/obj/item/modular_computer/console/preset/civilian{
dir = 8
@@ -29101,7 +29118,7 @@ vu
Zy
Zy
Zy
-Zy
+vF
Zy
Zy
Zy
@@ -33763,7 +33780,7 @@ Ll
OA
Xf
as
-VH
+lB
VH
VH
VH
diff --git a/tgui/packages/tgui/interfaces/VorePanel.js b/tgui/packages/tgui/interfaces/VorePanel.js
index cdd511d6873..f4cb7514193 100644
--- a/tgui/packages/tgui/interfaces/VorePanel.js
+++ b/tgui/packages/tgui/interfaces/VorePanel.js
@@ -451,6 +451,7 @@ const VoreSelectedBellyOptions = (props, context) => {
egg_type,
selective_preference,
save_digest_mode,
+ eating_privacy_local,
} = belly;
return (
@@ -512,6 +513,12 @@ const VoreSelectedBellyOptions = (props, context) => {
content={display_absorbed_examine ? 'True' : 'False'}
/>
+
+