diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index 82601523e2..6da36e0b95 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -54570,8 +54570,8 @@
id = "xenoigniter";
luminosity = 2
},
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 8
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
},
/turf/open/floor/engine,
/area/science/xenobiology)
@@ -55511,7 +55511,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
+/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
"hVx" = (
@@ -55933,6 +55933,7 @@
id = "xenoigniter";
luminosity = 2
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/engine,
/area/science/xenobiology)
"iPz" = (
@@ -59509,6 +59510,7 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/engine,
/area/science/xenobiology)
"qAx" = (
@@ -60730,6 +60732,7 @@
/area/maintenance/department/science)
"tfP" = (
/obj/item/beacon,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/engine,
/area/science/xenobiology)
"tfZ" = (
@@ -114792,13 +114795,13 @@ abI
aby
aaa
xKc
-blX
+lCN
qAk
iPj
tfP
geN
qAk
-blX
+uzB
xKc
aaa
aby
diff --git a/auxmos.dll b/auxmos.dll
index afa082e4cd..971c817098 100644
Binary files a/auxmos.dll and b/auxmos.dll differ
diff --git a/auxmos.pdb b/auxmos.pdb
index fe3600d146..3a1ae46adf 100644
Binary files a/auxmos.pdb and b/auxmos.pdb differ
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 6f7e13f388..717c17ba6c 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -891,7 +891,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
/obj/item/MouseEntered(location, control, params)
SEND_SIGNAL(src, COMSIG_ITEM_MOUSE_ENTER, location, control, params)
- if((item_flags & IN_INVENTORY || item_flags & IN_STORAGE) && usr.client.prefs.enable_tips && !QDELETED(src) || isobserver(usr))
+ if((item_flags & IN_INVENTORY || item_flags & IN_STORAGE) && usr.client.prefs.enable_tips && !QDELETED(src))
var/timedelay = usr.client.prefs.tip_delay/100
var/user = usr
tip_timer = addtimer(CALLBACK(src, .proc/openTip, location, control, params, user), timedelay, TIMER_STOPPABLE)//timer takes delay in deciseconds, but the pref is in milliseconds. dividing by 100 converts it.
@@ -912,7 +912,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
remove_outline()
/obj/item/proc/apply_outline(colour = null)
- if(!(item_flags & IN_INVENTORY || item_flags & IN_STORAGE) || QDELETED(src))
+ if(!(item_flags & IN_INVENTORY || item_flags & IN_STORAGE) || QDELETED(src) || isobserver(usr))
return
if(usr.client)
if(!usr.client.prefs.outline_enabled)
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 1d23903d03..cd10f9209c 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -7,7 +7,7 @@
new /obj/item/clothing/neck/petcollar(src) //I considered removing the pet stuff too but eh, who knows. We might get Renault back. Plus I guess you could use that collar for... other means. Aren't you supposed to be guarding the disk?
new /obj/item/pet_carrier(src)
new /obj/item/clothing/suit/armor/vest/capcarapace(src)
- new /obj/item/clothing/suit/armor/vest/capcarapace/alt(src)
+ new /obj/item/clothing/suit/toggle/captains_parade(src)
new /obj/item/clothing/head/crown/fancy(src)
new /obj/item/cartridge/captain(src)
new /obj/item/storage/box/silver_ids(src)
@@ -56,6 +56,7 @@
/obj/structure/closet/secure_closet/hos/PopulateContents()
..()
new /obj/item/clothing/neck/cloak/hos(src)
+ new /obj/item/clothing/suit/toggle/armor/hos/hos_formal(src)
new /obj/item/cartridge/hos(src)
new /obj/item/radio/headset/heads/hos(src)
new /obj/item/clothing/under/rank/security/head_of_security/parade/female(src)
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 254ed60c03..c245a30b92 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -136,11 +136,18 @@
icon_state = "syndievest"
mutantrace_variation = STYLE_DIGITIGRADE
-/obj/item/clothing/suit/armor/vest/capcarapace/alt
+/obj/item/clothing/suit/toggle/captains_parade
name = "captain's parade jacket"
desc = "For when an armoured vest isn't fashionable enough."
icon_state = "capformal"
item_state = "capspacesuit"
+ body_parts_covered = CHEST|GROIN|ARMS
+ armor = list("melee" = 50, "bullet" = 40, "laser" = 50, "energy" = 50, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 90, "wound" = 10)
+ togglename = "buttons"
+
+/obj/item/clothing/suit/toggle/captains_parade/Initialize()
+ . = ..()
+ allowed = GLOB.security_wintercoat_allowed
/obj/item/clothing/suit/armor/riot
name = "riot suit"
@@ -319,3 +326,29 @@
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
armor = list("melee" = 25, "bullet" = 20, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 50, "rad" = 20, "fire" = -10, "acid" = 50, "wound" = 10)
+
+/obj/item/clothing/suit/toggle/armor/vest/centcom_formal
+ name = "\improper CentCom formal coat"
+ desc = "A stylish coat given to CentCom Commanders. Perfect for sending ERTs to suicide missions with style!"
+ icon_state = "centcom_formal"
+ item_state = "centcom"
+ body_parts_covered = CHEST|GROIN|ARMS
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 35, "bio" = 10, "rad" = 10, "fire" = 10, "acid" = 60)
+ togglename = "buttons"
+
+/obj/item/clothing/suit/toggle/armor/vest/centcom_formal/Initialize()
+ . = ..()
+ allowed = GLOB.security_wintercoat_allowed
+
+/obj/item/clothing/suit/toggle/armor/hos/hos_formal
+ name = "\improper Head of Security's parade jacket"
+ desc = "For when an armoured vest isn't fashionable enough."
+ icon_state = "hosformal"
+ item_state = "hostrench"
+ body_parts_covered = CHEST|GROIN|ARMS
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 90, "wound" = 10)
+ togglename = "buttons"
+
+/obj/item/clothing/suit/toggle/armor/hos/hos_formal/Initialize()
+ . = ..()
+ allowed = GLOB.security_wintercoat_allowed
diff --git a/code/modules/mob/living/simple_animal/gremlin/gremlin.dm b/code/modules/mob/living/simple_animal/gremlin/gremlin.dm
index 003afad4f2..61436cea1c 100644
--- a/code/modules/mob/living/simple_animal/gremlin/gremlin.dm
+++ b/code/modules/mob/living/simple_animal/gremlin/gremlin.dm
@@ -147,6 +147,7 @@ GLOBAL_LIST(bad_gremlin_items)
/mob/living/simple_animal/hostile/gremlin/death(gibbed)
walk(src,0)
+ QDEL_NULL(access_card)
return ..()
/mob/living/simple_animal/hostile/gremlin/Life()
diff --git a/html/changelog.html b/html/changelog.html
index 084c252488..92938fdb92 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -5,7 +5,7 @@