diff --git a/code/datums/components/crafting/glassware/glassware.dm b/code/datums/components/crafting/glassware/glassware.dm
index 50137733ee..f37efedc8a 100644
--- a/code/datums/components/crafting/glassware/glassware.dm
+++ b/code/datums/components/crafting/glassware/glassware.dm
@@ -39,7 +39,7 @@
name = "tea cup"
desc = "A glass cup made for sipping tea!"
icon = 'icons/obj/glass_ware.dmi'
- icon_state = "tea_plate"
+ icon_state = "tea_cup"
//////////////////////Chem Disk/////////////////////
//Two Steps //
@@ -145,7 +145,7 @@
qdel(src)
/obj/item/glasswork/glass_base/glass_lens_part5
- name = "unpolished glass lens"
+ name = "unpolished glass (lens)"
desc = "An unpolished glass lens. It needs to be polished with some dry cloth."
icon = 'icons/obj/glass_ware.dmi'
icon_state = "glass_optics"
@@ -159,7 +159,7 @@
qdel(src)
/obj/item/glasswork/glass_base/glass_lens_part6
- name = "unrefined glass lens"
+ name = "unrefined glass (lens)"
desc = "A polished glass lens. It needs to be refined with some sandstone."
icon = 'icons/obj/glass_ware.dmi'
icon_state = "glass_optics"
@@ -179,7 +179,7 @@
/obj/item/glasswork/glass_base/spouty
name = "Glass fodder sheet (spout)"
- desc = "A set of glass sheets set aside for glass working. This one is ideal for a spouty flask. It needs to heated with something very hot."
+ desc = "A set of glass sheets set aside for glass working. This one is ideal for a spouty flask. It needs to be cut with some glassworking tools."
next_step = /obj/item/glasswork/glass_base/spouty_part2
/obj/item/glasswork/glass_base/spouty/attackby(obj/item/I, mob/user, params)
@@ -413,7 +413,7 @@
qdel(src)
qdel(I)
-/obj/item/glasswork/glass_base/tea_cupe2
+/obj/item/glasswork/glass_base/tea_cup2
name = "glassblowing rod (tea cup)"
desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools."
icon_state = "blowing_rods_inuse"
@@ -433,7 +433,7 @@
icon_state = "glass_base_half"
next_step = /obj/item/glasswork/glass_base/tea_cup4
-/obj/item/glasswork/glass_base/cup3/attackby(obj/item/I, mob/user, params)
+/obj/item/glasswork/glass_base/tea_cup3/attackby(obj/item/I, mob/user, params)
..()
if(istype(I, /obj/item/stack/sheet/cloth))
if(do_after(user,10, target = src))
@@ -446,7 +446,7 @@
icon_state = "glass_base_half"
next_step = /obj/item/tea_cup
-/obj/item/glasswork/glass_base/cup4/attackby(obj/item/I, mob/user, params)
+/obj/item/glasswork/glass_base/tea_cup4/attackby(obj/item/I, mob/user, params)
..()
if(istype(I, /obj/item/stack/sheet/glass))
if(do_after(user,10, target = src))
diff --git a/code/datums/components/storage/ui.dm b/code/datums/components/storage/ui.dm
index 820d7067d4..d41d82ae75 100644
--- a/code/datums/components/storage/ui.dm
+++ b/code/datums/components/storage/ui.dm
@@ -63,6 +63,8 @@
if(QDELETED(O))
continue
var/atom/movable/screen/storage/item_holder/D = new(null, src, O)
+ // SNOWFLAKE: make O opaque too, pending storage rewrite
+ O.mouse_opacity = MOUSE_OPACITY_OPAQUE
D.mouse_opacity = MOUSE_OPACITY_OPAQUE //This is here so storage items that spawn with contents correctly have the "click around item to equip"
D.screen_loc = "[cx]:[screen_pixel_x],[cy]:[screen_pixel_y]"
O.maptext = ""
@@ -138,6 +140,8 @@
I = i
var/percent = percentage_by_item[I]
var/atom/movable/screen/storage/volumetric_box/center/B = new /atom/movable/screen/storage/volumetric_box/center(null, src, I)
+ // SNOWFLAKE: force it to icon until we unfuck storage/click passing
+ I.mouse_opacity = MOUSE_OPACITY_ICON
var/pixels_to_use = overrun? MINIMUM_PIXELS_PER_ITEM : max(using_horizontal_pixels * percent, MINIMUM_PIXELS_PER_ITEM)
var/addrow = FALSE
if(CEILING(pixels_to_use, 1) >= FLOOR(horizontal_pixels - current_pixel - VOLUMETRIC_STORAGE_EDGE_PADDING, 1))
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index ece4d6bae2..bea05f6ef1 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -22,8 +22,8 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
new/datum/stack_recipe("spout flask", /obj/item/glasswork/glass_base/spouty, 20), \
new/datum/stack_recipe("small bulb flask", /obj/item/glasswork/glass_base/flask_small, 5), \
new/datum/stack_recipe("large bottle flask", /obj/item/glasswork/glass_base/flask_large, 15), \
- new/datum/stack_recipe("tea cup", /obj/item/glasswork/glass_base/tea_plate, 5), \
- new/datum/stack_recipe("tea plate", /obj/item/glasswork/glass_base/tea_cup, 5), \
+ new/datum/stack_recipe("tea cup", /obj/item/glasswork/glass_base/tea_cup, 5), \
+ new/datum/stack_recipe("tea plate", /obj/item/glasswork/glass_base/tea_plate, 5), \
)), \
))
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 02ee466376..d96ad3b0d6 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -64,6 +64,7 @@
new /obj/item/clothing/under/rank/security/officer/blueshirt/seccorp/hoscorp(src)
new /obj/item/clothing/suit/armor/vest/leather(src)
new /obj/item/clothing/suit/armor/hos(src)
+ new /obj/item/clothing/suit/armor/hos/platecarrier(src)
new /obj/item/clothing/under/rank/security/head_of_security/skirt(src)
new /obj/item/clothing/under/rank/security/head_of_security/alt(src)
new /obj/item/clothing/under/rank/security/head_of_security/alt/skirt(src)
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 2fb372c2dd..4793eb84ea 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -70,6 +70,7 @@ GLOBAL_PROTECT(admin_verbs_admin)
/client/proc/cmd_admin_man_up, //CIT CHANGE - adds man up verb
/client/proc/cmd_admin_man_up_global, //CIT CHANGE - ditto
/client/proc/cmd_admin_create_centcom_report,
+ /client/proc/cmd_admin_make_priority_announcement, //CIT CHANGE
/client/proc/cmd_change_command_name,
/client/proc/cmd_admin_check_player_exp, /* shows players by playtime */
/client/proc/toggle_combo_hud, // toggle display of the combination pizza antag and taco sci/med/eng hud
diff --git a/code/modules/antagonists/changeling/changeling_power.dm b/code/modules/antagonists/changeling/changeling_power.dm
index aa45c56892..6ea97b0595 100644
--- a/code/modules/antagonists/changeling/changeling_power.dm
+++ b/code/modules/antagonists/changeling/changeling_power.dm
@@ -16,7 +16,7 @@
var/req_stat = CONSCIOUS // CONSCIOUS, UNCONSCIOUS or DEAD
var/always_keep = 0 // important for abilities like revive that screw you if you lose them.
var/ignores_fakedeath = FALSE // usable with the FAKEDEATH flag
- var/loudness = 0 //Determines how much having this ability will affect changeling blood tests. At 4, the blood will react violently and turn to ash, creating a unique message in the process. At 10, the blood will explode when heated.
+ var/loudness = 0.5 //Determines how much having this ability will affect changeling blood tests. This is averaged with other purchased abilities. Above 1, the blood will react violently and turn to ash, creating a unique message in the process. Above 2, the blood will explode when heated.
/obj/effect/proc_holder/changeling/proc/on_purchase(mob/user, is_respec)
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index e5b3dfe427..c13a8bfa66 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -84,6 +84,23 @@
"Cloak" = "trenchcloak"
)
+/obj/item/clothing/suit/armor/hos/platecarrier
+ name = "plate carrier"
+ desc = "An armor vest with attached pockets for holding and sorting equipment or ammo."
+ icon_state = "platecarrier"
+ item_state = "platecarrier"
+ body_parts_covered = CHEST|GROIN|ARMS
+ armor = list (MELEE = 30, BULLET = 40, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 70, WOUND = 10)
+ cold_protection = CHEST|ARMS
+ heat_protection = CHEST|ARMS
+ strip_delay = 80
+ mutantrace_variation = STYLE_DIGITIGRADE
+
+/obj/item/clothing/suit/armor/hos/platecarrier/ComponentInitialize()
+ . = ..()
+ var/datum/component/storage/concrete/storage = AddComponent(/datum/component/storage/concrete)
+ storage.max_items = 5
+
/obj/item/clothing/suit/armor/vest/warden
name = "warden's jacket"
desc = "A navy-blue armored jacket with blue shoulder designations and '/Warden/' stitched into one of the chest pockets."
diff --git a/code/modules/holiday/dynamic.dm b/code/modules/holiday/dynamic.dm
index f75dd37542..69208d91ea 100644
--- a/code/modules/holiday/dynamic.dm
+++ b/code/modules/holiday/dynamic.dm
@@ -6,5 +6,4 @@
return lowertext(ddd) in days
/datum/holiday/dynamic/celebrate()
- GLOB.dynamic_forced_threat_level = rand(90, 100)
- CONFIG_SET(string/force_gamemode, "dynamic") // prevents the round vote, which prevents extended
+ GLOB.dynamic_forced_threat_level = rand(50, 100)
diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm
index 1882d5fe97..7771d24e16 100644
--- a/code/modules/hydroponics/grown/cannabis.dm
+++ b/code/modules/hydroponics/grown/cannabis.dm
@@ -11,8 +11,8 @@
growthstages = 1
instability = 40
growing_icon = 'goon/icons/obj/hydroponics.dmi'
- icon_grow = "cannabis-grow" // Uses one growth icons set for all the subtypes
- icon_dead = "cannabis-dead" // Same for the dead icon
+ icon_grow = "cannabis-grow"
+ icon_dead = "cannabis-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/cannabis/rainbow,
/obj/item/seeds/cannabis/death)
@@ -26,6 +26,8 @@
species = "megacannabis"
plantname = "Rainbow Weed"
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow
+ icon_grow = "megacannabis-grow"
+ icon_dead = "megacannabis-dead"
mutatelist = list(/obj/item/seeds/cannabis/ultimate)
reagents_add = list(/datum/reagent/toxin/mindbreaker = 0.15, /datum/reagent/toxin/lipolicide = 0.35)
rarity = 40
@@ -37,6 +39,8 @@
species = "blackcannabis"
plantname = "Deathweed"
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/death
+ icon_grow = "blackcannabis-grow"
+ icon_dead = "blackcannabis-dead"
mutatelist = list(/obj/item/seeds/cannabis/white)
reagents_add = list(/datum/reagent/toxin/cyanide = 0.35, /datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.15)
rarity = 40
@@ -48,6 +52,8 @@
species = "whitecannabis"
plantname = "Lifeweed"
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/white
+ icon_grow = "whitecannabis-grow"
+ icon_dead = "whitecannabis-dead"
mutatelist = list()
reagents_add = list(/datum/reagent/medicine/omnizine = 0.35, /datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.15)
rarity = 40
@@ -60,6 +66,8 @@
species = "ocannabis"
plantname = "Omega Weed"
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate
+ icon_grow = "ocannabis-grow"
+ icon_dead = "ocannabis-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/green)
mutatelist = list()
reagents_add = list(/datum/reagent/drug/space_drugs = 0.3,
diff --git a/code/modules/mob/living/carbon/human/innate_abilities/coiling.dm b/code/modules/mob/living/carbon/human/innate_abilities/coiling.dm
index 52e2a87a7d..2cfbf9fb73 100644
--- a/code/modules/mob/living/carbon/human/innate_abilities/coiling.dm
+++ b/code/modules/mob/living/carbon/human/innate_abilities/coiling.dm
@@ -30,6 +30,10 @@
currently_coiled.pixel_x = 12
/datum/action/innate/ability/coiling/proc/coil_mob(var/mob/living/carbon/human/H)
+ if(currently_coiling)
+ to_chat(owner, span_warning("You are already coiling someone!"))
+ return
+
// begin the coiling action
H.visible_message("[owner] coils [H] with their tail!", \
"[owner] coils you with their tail!")
@@ -58,6 +62,9 @@
/datum/action/innate/ability/coiling/proc/cancel_coil()
var/mob/living/carbon/human/H = owner
+
+ if(!currently_coiling)
+ return
// cancel the coiling action by removing the overlay
currently_coiled.pixel_x = 0
diff --git a/html/changelogs/AutoChangeLog-pr-15676.yml b/html/changelogs/AutoChangeLog-pr-15676.yml
new file mode 100644
index 0000000000..018f4d577e
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-15676.yml
@@ -0,0 +1,4 @@
+author: "TrojanCoyote"
+delete-after: True
+changes:
+ - rscadd: "Adds a plate carrier to HoS loadout, sprites for such"
diff --git a/html/changelogs/AutoChangeLog-pr-15692.yml b/html/changelogs/AutoChangeLog-pr-15692.yml
new file mode 100644
index 0000000000..2d034a027f
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-15692.yml
@@ -0,0 +1,4 @@
+author: "Bhijn & Myr"
+delete-after: True
+changes:
+ - balance: "Ling abilities now have a default loudness of 0.5. This change applies to every single ability that used to have 0 loudness."
diff --git a/html/changelogs/archive/2022-06.yml b/html/changelogs/archive/2022-06.yml
index a07e2fcde4..a80b7a446a 100644
--- a/html/changelogs/archive/2022-06.yml
+++ b/html/changelogs/archive/2022-06.yml
@@ -164,3 +164,14 @@
2022-06-13:
Bhijn & Myr:
- bugfix: Jukebox audio is now audible within closets, crates, etc!
+2022-06-19:
+ IHOPMommyLich:
+ - rscdel: Removed the forced dynamic, allowing the standard game mode vote.
+ TripleShades:
+ - bugfix: Cannabis mutation variants now use the proper growth state icons
+ - bugfix: Picking to make tea cups will now give the right starting glasswork base
+ - bugfix: Picking to make tea plates will now give the right starting glasswork
+ base
+ - spellcheck: Fixed a state typo in tea cup glassworking
+ - spellcheck: Fixed an incorrect step displayed on spout glassworking
+ - code_imp: Enables the make priority announcement admin verb for admin use
diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi
index 8be696eb45..e99623dfc6 100644
Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ
diff --git a/icons/mob/clothing/suit_digi.dmi b/icons/mob/clothing/suit_digi.dmi
index 13840507a6..a7d419545c 100644
Binary files a/icons/mob/clothing/suit_digi.dmi and b/icons/mob/clothing/suit_digi.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index 5493361129..a6e5e1f037 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ