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'} /> + +