diff --git a/_maps/RandomZLevels/away_mission/SnowCabin.dmm b/_maps/RandomZLevels/away_mission/SnowCabin.dmm
index 249cb68b5d..844a134d27 100644
--- a/_maps/RandomZLevels/away_mission/SnowCabin.dmm
+++ b/_maps/RandomZLevels/away_mission/SnowCabin.dmm
@@ -428,7 +428,7 @@
/area/awaymission/cabin)
"bm" = (
/obj/machinery/door/airlock/wood{
- id_tag = "snowdinbutworse5";
+ id_tag = "snowdorm5";
name = "Cabin 5"
},
/obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto,
@@ -3318,7 +3318,7 @@
/area/awaymission/cabin)
"iV" = (
/obj/machinery/door/airlock/wood{
- id_tag = "snowdinbutworse1";
+ id_tag = "snowdorm1";
name = "Cabin 1"
},
/obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto,
@@ -3326,7 +3326,7 @@
/area/awaymission/cabin)
"iW" = (
/obj/machinery/door/airlock/wood{
- id_tag = "snowdinbutworse2";
+ id_tag = "snowdorm2";
name = "Cabin 2"
},
/obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto,
@@ -3334,7 +3334,7 @@
/area/awaymission/cabin)
"iX" = (
/obj/machinery/door/airlock/wood{
- id_tag = "snowdinbutworse3";
+ id_tag = "snowdorm3";
name = "Cabin 3"
},
/obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto,
@@ -3342,7 +3342,7 @@
/area/awaymission/cabin)
"iY" = (
/obj/machinery/door/airlock/wood{
- id_tag = "snowdinbutworse4";
+ id_tag = "snowdorm4";
name = "Cabin 4"
},
/obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto,
@@ -3419,31 +3419,37 @@
/area/awaymission/cabin)
"jg" = (
/obj/machinery/button/door{
- id = "snowdinbutworse2";
- name = "airlock button";
- pixel_y = -27
+ id = "snowdorm2";
+ name = "Dorm Bolt Control";
+ normaldoorcontrol = 1;
+ pixel_y = -25;
+ specialfunctions = 4
},
/turf/open/floor/wood,
/area/awaymission/cabin)
"jh" = (
/obj/machinery/button/door{
- id = "snowdinbutworse1";
- name = "airlock button";
- pixel_y = -27
+ id = "snowdorm1";
+ name = "Dorm Bolt Control";
+ normaldoorcontrol = 1;
+ pixel_y = -25;
+ specialfunctions = 4
},
/turf/open/floor/wood,
/area/awaymission/cabin)
"ji" = (
/obj/machinery/button/door{
- id = "snowdinbutworse3";
- name = "airlock button";
- pixel_y = -27
+ id = "snowdorm3";
+ name = "Dorm Bolt Control";
+ normaldoorcontrol = 1;
+ pixel_y = -25;
+ specialfunctions = 4
},
/turf/open/floor/wood,
/area/awaymission/cabin)
"jj" = (
/obj/machinery/button/door{
- id = "snowdinbutworse4";
+ id = "snowdorm4";
name = "airlock button";
pixel_y = -27
},
@@ -3451,7 +3457,7 @@
/area/awaymission/cabin)
"jk" = (
/obj/machinery/button/door{
- id = "snowdinbutworse5";
+ id = "snowdorm5";
name = "airlock button";
pixel_y = -27
},
@@ -4024,8 +4030,8 @@
pixel_y = -2
},
/obj/item/clothing/head/christmashatg{
- pixel_y = 12;
- pixel_x = 3
+ pixel_x = 3;
+ pixel_y = 12
},
/turf/open/floor/plating/asteroid/snow,
/area/awaymission/cabin/caves)
diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm
index 58125b5497..0bdf27452b 100644
--- a/code/__DEFINES/citadel_defines.dm
+++ b/code/__DEFINES/citadel_defines.dm
@@ -105,3 +105,6 @@
//belly sound pref things
#define NORMIE_HEARCHECK 4
+
+//special species definitions
+#define MINIMUM_MUTANT_COLOR "#202020" //this is how dark players mutant parts and skin can be
diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm
index a6c7bf10ea..ae0f5201f9 100644
--- a/code/_globalvars/lists/flavor_misc.dm
+++ b/code/_globalvars/lists/flavor_misc.dm
@@ -284,3 +284,6 @@ GLOBAL_LIST_INIT(greyscale_limb_types, list("human","moth","lizard","pod","plant
//body ids that have prosthetic sprites
GLOBAL_LIST_INIT(prosthetic_limb_types, list("xion","bishop","cybersolutions","grayson","hephaestus","nanotrasen","talon"))
+
+//body ids that have non-gendered bodyparts
+GLOBAL_LIST_INIT(nongendered_limb_types, list("fly", "zombie" ,"synth", "shadow", "cultgolem", "agent", "plasmaman", "clockgolem", "clothgolem"))
diff --git a/code/game/mecha/combat/neovgre.dm b/code/game/mecha/combat/neovgre.dm
index 1bd68546c8..584a2d007e 100644
--- a/code/game/mecha/combat/neovgre.dm
+++ b/code/game/mecha/combat/neovgre.dm
@@ -64,6 +64,8 @@
/obj/mecha/combat/neovgre/process()
..()
+ if(!obj_integrity) //Integrity is zero but we would heal out of that state if we went into this before it recognises it being zero
+ return
if(GLOB.ratvar_awakens) // At this point only timley intervention by lord singulo could hope to stop the superweapon
cell.charge = INFINITY
max_integrity = INFINITY
diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
index 9a8f1214f0..9bc20565a6 100644
--- a/code/game/objects/items/plushes.dm
+++ b/code/game/objects/items/plushes.dm
@@ -150,6 +150,7 @@
if(squeak_override)
var/datum/component/squeak/S = GetComponent(/datum/component/squeak)
S?.override_squeak_sounds = squeak_override
+ snowflake_id = id
/obj/item/toy/plush/handle_atom_del(atom/A)
if(A == grenade)
@@ -827,12 +828,16 @@ GLOBAL_LIST_INIT(valid_plushie_paths, valid_plushie_paths())
if(!victim)
return
visible_message("[src] gruesomely mutilliates [victim], leaving nothing more than dust!")
- name = victim.name
- desc = victim.desc + " Wait, did it just move..?"
- icon_state = victim.icon_state
- item_state = victim.item_state
- squeak_override = victim.squeak_override
- attack_verb = victim.attack_verb
+ if(victim.snowflake_id) //Snowflake code for snowflake plushies.
+ set_snowflake_from_config(victim.snowflake_id)
+ desc += " Wait, did it just move..?"
+ else
+ name = victim.name
+ desc = victim.desc + " Wait, did it just move..?"
+ icon_state = victim.icon_state
+ item_state = victim.item_state
+ squeak_override = victim.squeak_override
+ attack_verb = victim.attack_verb
new /obj/effect/decal/cleanable/ash(get_turf(victim))
qdel(victim)
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index 758685ede7..fa6bab0fcc 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -163,7 +163,7 @@
var/custom_tone = input(user, "Choose your custom skin tone:", "Race change", default) as color|null
if(custom_tone)
var/temp_hsv = RGBtoHSV(new_s_tone)
- if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
+ if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3])
to_chat(H,"Invalid color. Your color is not bright enough.")
else
H.skin_tone = custom_tone
@@ -177,7 +177,7 @@
if(new_mutantcolor)
var/temp_hsv = RGBtoHSV(new_mutantcolor)
- if(ReadHSV(temp_hsv)[3] >= ReadHSV("#7F7F7F")[3]) // mutantcolors must be bright
+ if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) // mutantcolors must be bright
H.dna.features["mcolor"] = sanitize_hexcolor(new_mutantcolor)
else
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm b/code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm
index 27868a3e3e..a7330cd93a 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm
@@ -247,7 +247,8 @@
if(LH.target && LH.target.stat == DEAD)
to_chat(carbon_user,"Your patrons accepts your offer...")
var/mob/living/carbon/human/H = LH.target
- H.become_husk()
+ H.become_husk("burn") //Husks the target with removable husking, but causes a bunch of additional burn damage to prevent it from being 'too easy' to do
+ H.adjustFireLoss(200)
LH.target = null
var/datum/antagonist/heretic/EC = carbon_user.mind.has_antag_datum(/datum/antagonist/heretic)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 7a2c8156d4..1435e90193 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1630,7 +1630,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/temp_hsv = RGBtoHSV(new_mutantcolor)
if(new_mutantcolor == "#000000")
features["mcolor"] = pref_species.default_color
- else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin
+ else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) // mutantcolors must be bright, but only if they affect the skin
features["mcolor"] = sanitize_hexcolor(new_mutantcolor, 6)
else
to_chat(user, "Invalid color. Your color is not bright enough.")
@@ -1641,7 +1641,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/temp_hsv = RGBtoHSV(new_mutantcolor)
if(new_mutantcolor == "#000000")
features["mcolor2"] = pref_species.default_color
- else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin
+ else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) // mutantcolors must be bright, but only if they affect the skin
features["mcolor2"] = sanitize_hexcolor(new_mutantcolor, 6)
else
to_chat(user, "Invalid color. Your color is not bright enough.")
@@ -1652,7 +1652,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/temp_hsv = RGBtoHSV(new_mutantcolor)
if(new_mutantcolor == "#000000")
features["mcolor3"] = pref_species.default_color
- else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin
+ else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) // mutantcolors must be bright, but only if they affect the skin
features["mcolor3"] = sanitize_hexcolor(new_mutantcolor, 6)
else
to_chat(user, "Invalid color. Your color is not bright enough.")
@@ -1968,7 +1968,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/temp_hsv = RGBtoHSV(new_cockcolor)
if(new_cockcolor == "#000000")
features["cock_color"] = pref_species.default_color
- else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
+ else if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3])
features["cock_color"] = sanitize_hexcolor(new_cockcolor, 6)
else
to_chat(user,"Invalid color. Your color is not bright enough.")
@@ -2008,7 +2008,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/temp_hsv = RGBtoHSV(new_ballscolor)
if(new_ballscolor == "#000000")
features["balls_color"] = pref_species.default_color
- else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
+ else if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3])
features["balls_color"] = sanitize_hexcolor(new_ballscolor, 6)
else
to_chat(user,"Invalid color. Your color is not bright enough.")
@@ -2035,7 +2035,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/temp_hsv = RGBtoHSV(new_breasts_color)
if(new_breasts_color == "#000000")
features["breasts_color"] = pref_species.default_color
- else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
+ else if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3])
features["breasts_color"] = sanitize_hexcolor(new_breasts_color, 6)
else
to_chat(user,"Invalid color. Your color is not bright enough.")
@@ -2057,7 +2057,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/temp_hsv = RGBtoHSV(new_vagcolor)
if(new_vagcolor == "#000000")
features["vag_color"] = pref_species.default_color
- else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
+ else if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3])
features["vag_color"] = sanitize_hexcolor(new_vagcolor, 6)
else
to_chat(user,"Invalid color. Your color is not bright enough.")
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
index 38f3111a23..a2c3248c6a 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -274,7 +274,17 @@
\"steps out\" of [H.p_them()].",
"...and after a moment of disorentation, \
you're besides yourself!")
-
+ if(H != spare && isslimeperson(spare) && isslimeperson(H))
+ // transfer the swap-body ui if it's open
+ var/datum/action/innate/swap_body/this_swap = origin_datum.swap_body
+ var/datum/action/innate/swap_body/other_swap = spare_datum.swap_body
+ var/datum/tgui/ui = SStgui.get_open_ui(H, this_swap, "main") || SStgui.get_open_ui(spare, this_swap, "main")
+ if(ui)
+ SStgui.on_close(ui) // basically removes it from lists is all this proc does.
+ ui.user = spare
+ ui.src_object = other_swap
+ SStgui.on_open(ui) // stick it back on the lists
+ ui.process(force = TRUE)
/datum/action/innate/swap_body
name = "Swap Body"
@@ -327,6 +337,8 @@
stat = "Conscious"
if(UNCONSCIOUS)
stat = "Unconscious"
+ if(SOFT_CRIT)
+ stat = "Barely Conscious"
if(DEAD)
stat = "Dead"
var/occupied
@@ -373,7 +385,6 @@
var/mob/living/carbon/human/selected = locate(params["ref"]) in SS.bodies
if(!can_swap(selected))
return
- SStgui.close_uis(src)
swap_to_dupe(H.mind, selected)
/datum/action/innate/swap_body/proc/can_swap(mob/living/carbon/human/dupe)
@@ -407,6 +418,7 @@
/datum/action/innate/swap_body/proc/swap_to_dupe(datum/mind/M, mob/living/carbon/human/dupe)
if(!can_swap(dupe)) //sanity check
return
+ var/mob/living/carbon/human/old = M.current
if(M.current.stat == CONSCIOUS)
M.current.visible_message("[M.current] \
stops moving and starts staring vacantly into space.",
@@ -418,7 +430,20 @@
dupe.visible_message("[dupe] blinks and looks \
around.",
"...and move this one instead.")
-
+ if(old != M.current && dupe == M.current && isslimeperson(dupe))
+ var/datum/species/jelly/slime/other_spec = dupe.dna.species
+ var/datum/action/innate/swap_body/other_swap = other_spec.swap_body
+ // theoretically the transfer_to proc is supposed to transfer the ui from the mob.
+ // so I try to get the UI from one of the two mobs and schlump it over to the new action button
+ var/datum/tgui/ui = SStgui.get_open_ui(old, src, "main") || SStgui.get_open_ui(dupe, src, "main")
+ if(ui)
+ // transfer the UI over. This code is slightly hacky but it fixes the problem
+ // I'd use SStgui.on_transfer but that doesn't let you transfer the src_object as well s
+ SStgui.on_close(ui) // basically removes it from lists is all this proc does.
+ ui.user = dupe
+ ui.src_object = other_swap
+ SStgui.on_open(ui) // stick it back on the lists
+ ui.process(force = TRUE)
////////////////////////////////////////////////////////Round Start Slimes///////////////////////////////////////////////////////////////////
@@ -466,7 +491,7 @@
var/new_color = input(owner, "Choose your skin color:", "Race change","#"+H.dna.features["mcolor"]) as color|null
if(new_color)
var/temp_hsv = RGBtoHSV(new_color)
- if(ReadHSV(temp_hsv)[3] >= ReadHSV("#7F7F7F")[3]) // mutantcolors must be bright
+ if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) // mutantcolors must be bright
H.dna.features["mcolor"] = sanitize_hexcolor(new_color, 6)
H.update_body()
H.update_hair()
diff --git a/code/modules/mob/living/living_active_parry.dm b/code/modules/mob/living/living_active_parry.dm
index b6706d0548..10dece1ffc 100644
--- a/code/modules/mob/living/living_active_parry.dm
+++ b/code/modules/mob/living/living_active_parry.dm
@@ -244,7 +244,14 @@
if((return_list[BLOCK_RETURN_MITIGATION_PERCENT] >= 100) || (damage <= 0))
. |= BLOCK_SUCCESS
var/list/effect_text
- if(efficiency >= data.parry_efficiency_to_counterattack)
+ var/pacifist_counter_check = TRUE
+ if(HAS_TRAIT(src, TRAIT_PACIFISM))
+ switch(parrying)
+ if(ITEM_PARRY)
+ pacifist_counter_check = (!active_parry_item.force || active_parry_item.damtype == STAMINA)
+ else
+ pacifist_counter_check = FALSE //Both martial and unarmed counter attacks generally are harmful, so no need to have the same line twice.
+ if(efficiency >= data.parry_efficiency_to_counterattack && pacifist_counter_check)
effect_text = run_parry_countereffects(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list, efficiency)
if(data.parry_flags & PARRY_DEFAULT_HANDLE_FEEDBACK)
handle_parry_feedback(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list, efficiency, effect_text)
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 418062ce92..0d3e9a4139 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -565,7 +565,7 @@
var/diff_len = length(GLOB.skin_tones - GLOB.nonstandard_skin_tones)
H.skin_tone = GLOB.skin_tones[min(diff_len, GLOB.skin_tones.Find(H.skin_tone) + 1)]
else
- H.skin_tone = H.dna.skin_tone_override = tan_mutant_color(H.dna.skin_tone_override, "#202020")
+ H.skin_tone = H.dna.skin_tone_override = tan_mutant_color(H.dna.skin_tone_override, MINIMUM_MUTANT_COLOR)
if(MUTCOLORS in H.dna.species.species_traits) //take current alien color and darken it slightly
H.dna.features["mcolor"] = tan_mutant_color(H.dna.features["mcolor"])
H.update_body()
@@ -576,7 +576,7 @@
return ..()
-/datum/reagent/spraytan/proc/tan_mutant_color(color, limit = "#7F7F7F")
+/datum/reagent/spraytan/proc/tan_mutant_color(color, limit = MINIMUM_MUTANT_COLOR)
var/newcolor = ""
var/len = length(color)
var/char = ""
diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm
index 421c3bccca..77eb5c654f 100644
--- a/code/modules/surgery/bodyparts/_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/_bodyparts.dm
@@ -619,7 +619,10 @@
skin_tone = ""
body_gender = H.dna.features["body_model"]
- should_draw_gender = S.sexes
+ if(GLOB.nongendered_limb_types[species_id])
+ should_draw_gender = FALSE
+ else
+ should_draw_gender = S.sexes
var/mut_colors = (MUTCOLORS in S.species_traits)
if(mut_colors)
diff --git a/html/changelogs/AutoChangeLog-pr-13482.yml b/html/changelogs/AutoChangeLog-pr-13482.yml
new file mode 100644
index 0000000000..4b2808f754
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-13482.yml
@@ -0,0 +1,4 @@
+author: "DeltaFire15"
+delete-after: True
+changes:
+ - tweak: "Heretic sacrifices now husk with the reason of burn, and deal some additional damage."
diff --git a/html/changelogs/AutoChangeLog-pr-13484.yml b/html/changelogs/AutoChangeLog-pr-13484.yml
new file mode 100644
index 0000000000..69271b260b
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-13484.yml
@@ -0,0 +1,4 @@
+author: "DeltaFire15"
+delete-after: True
+changes:
+ - bugfix: "Plushlings no longer break when absorbing snowflake plushies."
diff --git a/html/changelogs/AutoChangeLog-pr-13485.yml b/html/changelogs/AutoChangeLog-pr-13485.yml
new file mode 100644
index 0000000000..3dd03a4782
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-13485.yml
@@ -0,0 +1,4 @@
+author: "DeltaFire15"
+delete-after: True
+changes:
+ - bugfix: "Neovgre can no longer become invincible on clock tiles."
diff --git a/html/changelogs/AutoChangeLog-pr-13488.yml b/html/changelogs/AutoChangeLog-pr-13488.yml
new file mode 100644
index 0000000000..dae9dfd444
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-13488.yml
@@ -0,0 +1,4 @@
+author: "DeltaFire15"
+delete-after: True
+changes:
+ - bugfix: "Pacifists no longer counterattack on parries if that attack would be harmful."
diff --git a/html/changelogs/AutoChangeLog-pr-13489.yml b/html/changelogs/AutoChangeLog-pr-13489.yml
new file mode 100644
index 0000000000..4780b3fadb
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-13489.yml
@@ -0,0 +1,4 @@
+author: "timothyteakettle"
+delete-after: True
+changes:
+ - tweak: "the minimum brightness of mutant parts is now a define"
diff --git a/html/changelogs/AutoChangeLog-pr-13493.yml b/html/changelogs/AutoChangeLog-pr-13493.yml
new file mode 100644
index 0000000000..12c10047b9
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-13493.yml
@@ -0,0 +1,4 @@
+author: "timothyteakettle"
+delete-after: True
+changes:
+ - bugfix: "limb id entry in mutant bodyparts now supports switching to/from species with gendered body parts"
diff --git a/html/changelogs/AutoChangeLog-pr-13494.yml b/html/changelogs/AutoChangeLog-pr-13494.yml
new file mode 100644
index 0000000000..c167bdd067
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-13494.yml
@@ -0,0 +1,4 @@
+author: "monster860"
+delete-after: True
+changes:
+ - tweak: "The slimeperson swap-body UI stays open when you switch bodies"
diff --git a/html/changelogs/AutoChangeLog-pr-13495.yml b/html/changelogs/AutoChangeLog-pr-13495.yml
new file mode 100644
index 0000000000..33798eec3c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-13495.yml
@@ -0,0 +1,4 @@
+author: "Detective-Google"
+delete-after: True
+changes:
+ - bugfix: "the snow cabin doors actually bolt now"