From 07f50845b6d6c7bac6e33a50551c4e9b432377cb Mon Sep 17 00:00:00 2001 From: DeltaFire Date: Fri, 25 Sep 2020 23:24:00 +0200 Subject: [PATCH 01/21] no more conditional invincibility --- code/game/mecha/combat/neovgre.dm | 2 ++ 1 file changed, 2 insertions(+) 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 From 178be2b64359e51664ae583aaa1f1767cfbc6085 Mon Sep 17 00:00:00 2001 From: DeltaFire Date: Fri, 25 Sep 2020 23:41:18 +0200 Subject: [PATCH 02/21] fixes plushlings This makes it so the snowflake id is actually set if the plush is a snowflake, and also makes plushlings not become invisible anymore if they absorb a snowflake plush --- code/game/objects/items/plushes.dm | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) 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) From d0247bdb3babbac075d648f5dec283b5efc05da1 Mon Sep 17 00:00:00 2001 From: DeltaFire Date: Sun, 27 Sep 2020 05:35:33 +0200 Subject: [PATCH 03/21] modifies heretic sac husking a bit The husking caused by heretic sacrifices is not healable with synthflesh. In exchange, the sacrificed humanoid suffers 200 additional burn damage, making them ever so slightly harder to immediately restore. --- code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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) From 173ecfaa6cbcc8053eecaa1fc305cb4e059caa12 Mon Sep 17 00:00:00 2001 From: DeltaFire Date: Thu, 1 Oct 2020 17:58:14 +0200 Subject: [PATCH 04/21] prevents pacifists from performing harmful counter attacks --- code/modules/mob/living/living_active_parry.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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) From e1123ad7fe0e135de7fe722c181cb13008227f76 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Thu, 1 Oct 2020 18:55:32 +0100 Subject: [PATCH 05/21] color define --- code/__DEFINES/citadel_defines.dm | 3 +++ code/game/objects/structures/mirror.dm | 4 ++-- code/modules/client/preferences.dm | 14 +++++++------- .../carbon/human/species_types/jellypeople.dm | 2 +- .../reagents/chemistry/reagents/other_reagents.dm | 4 ++-- 5 files changed, 15 insertions(+), 12 deletions(-) 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/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/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..a32c521902 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -466,7 +466,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/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 86f8b341d9..0dec7a4fa2 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -537,7 +537,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() @@ -548,7 +548,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 = "" From 358041c2ef2505c05ea6d8d19da82c40882c66da Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:50:42 +0100 Subject: [PATCH 06/21] gender part support --- code/_globalvars/lists/flavor_misc.dm | 3 +++ code/modules/surgery/bodyparts/_bodyparts.dm | 26 ++++++++++---------- tgstation.dme | 5 ---- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index a6c7bf10ea..e69be3f1fc 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")) \ No newline at end of file diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index 421c3bccca..bc67f7902a 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -71,8 +71,6 @@ var/medium_burn_msg = "blistered" var/heavy_burn_msg = "peeling away" - var/render_like_organic = FALSE // forces limb to render as if it were an organic limb - /// The wounds currently afflicting this body part var/list/wounds @@ -357,7 +355,7 @@ else damage = min(damage, WOUND_MAX_CONSIDERED_DAMAGE) - var/base_roll = rand(max(damage/1.5,25), round(damage ** CONFIG_GET(number/wound_exponent))) + (get_damage()*CONFIG_GET(number/wound_damage_multiplier)) + var/base_roll = rand(max(damage/1.5,25), round(damage ** WOUND_DAMAGE_EXPONENT)) var/injury_roll = base_roll injury_roll += check_woundings_mods(woundtype, damage, wound_bonus, bare_wound_bonus) var/list/wounds_checking = GLOB.global_wound_types[woundtype] @@ -483,12 +481,12 @@ //Checks disabled status thresholds //Checks disabled status thresholds -/obj/item/bodypart/proc/update_disabled() +/obj/item/bodypart/proc/update_disabled(silent = FALSE) if(!owner) return - set_disabled(is_disabled()) + set_disabled(is_disabled(silent), silent) -/obj/item/bodypart/proc/is_disabled() +/obj/item/bodypart/proc/is_disabled(silent = FALSE) if(!owner) return if(HAS_TRAIT(owner, TRAIT_PARALYSIS)) @@ -500,7 +498,7 @@ if(can_dismember() && !HAS_TRAIT(owner, TRAIT_NODISMEMBER)) . = disabled //inertia, to avoid limbs healing 0.1 damage and being re-enabled if(get_damage(TRUE) >= max_damage * (HAS_TRAIT(owner, TRAIT_EASYLIMBDISABLE) ? 0.6 : 1)) //Easy limb disable disables the limb at 40% health instead of 0% - if(!last_maxed) + if(!last_maxed && !silent) owner.emote("scream") last_maxed = TRUE if(!is_organic_limb() || stamina_dam >= max_damage) @@ -557,7 +555,7 @@ if(status == BODYPART_ORGANIC) icon = base_bp_icon || DEFAULT_BODYPART_ICON_ORGANIC else if(status == BODYPART_ROBOTIC) - icon = base_bp_icon || DEFAULT_BODYPART_ICON_ROBOTIC + icon = DEFAULT_BODYPART_ICON_ROBOTIC if(owner) owner.updatehealth() @@ -619,7 +617,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) @@ -671,9 +672,8 @@ if(status == BODYPART_ROBOTIC) dmg_overlay_type = "robotic" - if(!render_like_organic) - body_markings = null - aux_marking = null + body_markings = null + aux_marking = null if(dropping_limb) no_update = TRUE //when attached, the limb won't be affected by the appearance changes of its mob owner. @@ -739,7 +739,7 @@ if((body_zone != BODY_ZONE_HEAD && body_zone != BODY_ZONE_CHEST)) should_draw_gender = FALSE - if(is_organic_limb() || render_like_organic) + if(is_organic_limb()) limb.icon = base_bp_icon || 'icons/mob/human_parts.dmi' if(should_draw_gender) limb.icon_state = "[species_id]_[body_zone]_[icon_gender]" diff --git a/tgstation.dme b/tgstation.dme index 23f262d7a5..9291d1c2b8 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -26,7 +26,6 @@ #include "code\__DEFINES\antagonists.dm" #include "code\__DEFINES\atmospherics.dm" #include "code\__DEFINES\atom_hud.dm" -#include "code\__DEFINES\botany.dm" #include "code\__DEFINES\bsql.config.dm" #include "code\__DEFINES\bsql.dm" #include "code\__DEFINES\callbacks.dm" @@ -1254,7 +1253,6 @@ #include "code\game\objects\structures\noticeboard.dm" #include "code\game\objects\structures\petrified_statue.dm" #include "code\game\objects\structures\plasticflaps.dm" -#include "code\game\objects\structures\railings.dm" #include "code\game\objects\structures\reflector.dm" #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\showcase.dm" @@ -2136,7 +2134,6 @@ #include "code\modules\hydroponics\growninedible.dm" #include "code\modules\hydroponics\hydroitemdefines.dm" #include "code\modules\hydroponics\hydroponics.dm" -#include "code\modules\hydroponics\hydroponics_chemreact.dm" #include "code\modules\hydroponics\plant_genes.dm" #include "code\modules\hydroponics\sample.dm" #include "code\modules\hydroponics\seed_extractor.dm" @@ -3400,8 +3397,6 @@ #include "code\modules\surgery\prosthetic_replacement.dm" #include "code\modules\surgery\remove_embedded_object.dm" #include "code\modules\surgery\repair_puncture.dm" -#include "code\modules\surgery\robot_brain_surgery.dm" -#include "code\modules\surgery\robot_healing.dm" #include "code\modules\surgery\surgery.dm" #include "code\modules\surgery\surgery_step.dm" #include "code\modules\surgery\tools.dm" From 3ba9031fe2622efd3a82242f92c9c1ef60858d29 Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:54:05 +0100 Subject: [PATCH 07/21] Revert "gender part support" This reverts commit 358041c2ef2505c05ea6d8d19da82c40882c66da. --- code/_globalvars/lists/flavor_misc.dm | 3 --- code/modules/surgery/bodyparts/_bodyparts.dm | 26 ++++++++++---------- tgstation.dme | 5 ++++ 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index e69be3f1fc..a6c7bf10ea 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -284,6 +284,3 @@ 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")) \ No newline at end of file diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index bc67f7902a..421c3bccca 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -71,6 +71,8 @@ var/medium_burn_msg = "blistered" var/heavy_burn_msg = "peeling away" + var/render_like_organic = FALSE // forces limb to render as if it were an organic limb + /// The wounds currently afflicting this body part var/list/wounds @@ -355,7 +357,7 @@ else damage = min(damage, WOUND_MAX_CONSIDERED_DAMAGE) - var/base_roll = rand(max(damage/1.5,25), round(damage ** WOUND_DAMAGE_EXPONENT)) + var/base_roll = rand(max(damage/1.5,25), round(damage ** CONFIG_GET(number/wound_exponent))) + (get_damage()*CONFIG_GET(number/wound_damage_multiplier)) var/injury_roll = base_roll injury_roll += check_woundings_mods(woundtype, damage, wound_bonus, bare_wound_bonus) var/list/wounds_checking = GLOB.global_wound_types[woundtype] @@ -481,12 +483,12 @@ //Checks disabled status thresholds //Checks disabled status thresholds -/obj/item/bodypart/proc/update_disabled(silent = FALSE) +/obj/item/bodypart/proc/update_disabled() if(!owner) return - set_disabled(is_disabled(silent), silent) + set_disabled(is_disabled()) -/obj/item/bodypart/proc/is_disabled(silent = FALSE) +/obj/item/bodypart/proc/is_disabled() if(!owner) return if(HAS_TRAIT(owner, TRAIT_PARALYSIS)) @@ -498,7 +500,7 @@ if(can_dismember() && !HAS_TRAIT(owner, TRAIT_NODISMEMBER)) . = disabled //inertia, to avoid limbs healing 0.1 damage and being re-enabled if(get_damage(TRUE) >= max_damage * (HAS_TRAIT(owner, TRAIT_EASYLIMBDISABLE) ? 0.6 : 1)) //Easy limb disable disables the limb at 40% health instead of 0% - if(!last_maxed && !silent) + if(!last_maxed) owner.emote("scream") last_maxed = TRUE if(!is_organic_limb() || stamina_dam >= max_damage) @@ -555,7 +557,7 @@ if(status == BODYPART_ORGANIC) icon = base_bp_icon || DEFAULT_BODYPART_ICON_ORGANIC else if(status == BODYPART_ROBOTIC) - icon = DEFAULT_BODYPART_ICON_ROBOTIC + icon = base_bp_icon || DEFAULT_BODYPART_ICON_ROBOTIC if(owner) owner.updatehealth() @@ -617,10 +619,7 @@ skin_tone = "" body_gender = H.dna.features["body_model"] - if(GLOB.nongendered_limb_types[species_id]) - should_draw_gender = FALSE - else - should_draw_gender = S.sexes + should_draw_gender = S.sexes var/mut_colors = (MUTCOLORS in S.species_traits) if(mut_colors) @@ -672,8 +671,9 @@ if(status == BODYPART_ROBOTIC) dmg_overlay_type = "robotic" - body_markings = null - aux_marking = null + if(!render_like_organic) + body_markings = null + aux_marking = null if(dropping_limb) no_update = TRUE //when attached, the limb won't be affected by the appearance changes of its mob owner. @@ -739,7 +739,7 @@ if((body_zone != BODY_ZONE_HEAD && body_zone != BODY_ZONE_CHEST)) should_draw_gender = FALSE - if(is_organic_limb()) + if(is_organic_limb() || render_like_organic) limb.icon = base_bp_icon || 'icons/mob/human_parts.dmi' if(should_draw_gender) limb.icon_state = "[species_id]_[body_zone]_[icon_gender]" diff --git a/tgstation.dme b/tgstation.dme index 9291d1c2b8..23f262d7a5 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -26,6 +26,7 @@ #include "code\__DEFINES\antagonists.dm" #include "code\__DEFINES\atmospherics.dm" #include "code\__DEFINES\atom_hud.dm" +#include "code\__DEFINES\botany.dm" #include "code\__DEFINES\bsql.config.dm" #include "code\__DEFINES\bsql.dm" #include "code\__DEFINES\callbacks.dm" @@ -1253,6 +1254,7 @@ #include "code\game\objects\structures\noticeboard.dm" #include "code\game\objects\structures\petrified_statue.dm" #include "code\game\objects\structures\plasticflaps.dm" +#include "code\game\objects\structures\railings.dm" #include "code\game\objects\structures\reflector.dm" #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\showcase.dm" @@ -2134,6 +2136,7 @@ #include "code\modules\hydroponics\growninedible.dm" #include "code\modules\hydroponics\hydroitemdefines.dm" #include "code\modules\hydroponics\hydroponics.dm" +#include "code\modules\hydroponics\hydroponics_chemreact.dm" #include "code\modules\hydroponics\plant_genes.dm" #include "code\modules\hydroponics\sample.dm" #include "code\modules\hydroponics\seed_extractor.dm" @@ -3397,6 +3400,8 @@ #include "code\modules\surgery\prosthetic_replacement.dm" #include "code\modules\surgery\remove_embedded_object.dm" #include "code\modules\surgery\repair_puncture.dm" +#include "code\modules\surgery\robot_brain_surgery.dm" +#include "code\modules\surgery\robot_healing.dm" #include "code\modules\surgery\surgery.dm" #include "code\modules\surgery\surgery_step.dm" #include "code\modules\surgery\tools.dm" From 158b1d584ff26f99fdabf2a935edc849dc616450 Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:54:57 +0100 Subject: [PATCH 08/21] woopsy --- code/_globalvars/lists/flavor_misc.dm | 3 +++ code/modules/surgery/bodyparts/_bodyparts.dm | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index a6c7bf10ea..e69be3f1fc 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")) \ No newline at end of file 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) From 318729031cc37905abc32afd36b89be23e1e694f Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:55:39 +0100 Subject: [PATCH 09/21] newlines good for the soul --- code/_globalvars/lists/flavor_misc.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index e69be3f1fc..ae0f5201f9 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -286,4 +286,4 @@ GLOBAL_LIST_INIT(greyscale_limb_types, list("human","moth","lizard","pod","plant 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")) \ No newline at end of file +GLOBAL_LIST_INIT(nongendered_limb_types, list("fly", "zombie" ,"synth", "shadow", "cultgolem", "agent", "plasmaman", "clockgolem", "clothgolem")) From 96d46ca0e41f3689cb67231a6df206f4fbfe35f9 Mon Sep 17 00:00:00 2001 From: Maxim Nikitin Date: Fri, 2 Oct 2020 12:03:24 -0400 Subject: [PATCH 10/21] Makes the slimeperson swap-body UI stay open when you switch bodies --- .../carbon/human/species_types/jellypeople.dm | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) 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..c9add21b3d 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(old, this_swap, "main") || SStgui.get_open_ui(dupe, 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/////////////////////////////////////////////////////////////////// From 64b4abca4bb114ef4b257aa04a7ca71f56b567f1 Mon Sep 17 00:00:00 2001 From: Maxim Nikitin Date: Fri, 2 Oct 2020 12:05:05 -0400 Subject: [PATCH 11/21] oopsie --- .../mob/living/carbon/human/species_types/jellypeople.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 c9add21b3d..4378d4d2eb 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -242,7 +242,8 @@ H.mob_transforming = FALSE -/datum/action/innate/split_body/proc/make_dupe() +/datum/action/innate/split_body/proc/make_ +() var/mob/living/carbon/human/H = owner CHECK_DNA_AND_SPECIES(H) @@ -278,7 +279,7 @@ // 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(old, this_swap, "main") || SStgui.get_open_ui(dupe, this_swap, "main") + 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 From 4b6870ed1b9fdf5c586bfd2187dfb3de92f906f1 Mon Sep 17 00:00:00 2001 From: Maxim Nikitin Date: Fri, 2 Oct 2020 12:07:09 -0400 Subject: [PATCH 12/21] the fuck --- .../mob/living/carbon/human/species_types/jellypeople.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 4378d4d2eb..acf1dc1ef9 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -242,8 +242,7 @@ H.mob_transforming = FALSE -/datum/action/innate/split_body/proc/make_ -() +/datum/action/innate/split_body/proc/make_dupe() var/mob/living/carbon/human/H = owner CHECK_DNA_AND_SPECIES(H) From 86871a92fc41c3131d7d2455be8d7f6a28f03996 Mon Sep 17 00:00:00 2001 From: Detective Google <48196179+Detective-Google@users.noreply.github.com> Date: Fri, 2 Oct 2020 11:41:43 -0500 Subject: [PATCH 13/21] fixes the door bolts on the snow cabin --- .../RandomZLevels/away_mission/SnowCabin.dmm | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) 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) From 11884f6820cea3990cf10adff89d27d5e65cbc9a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 3 Oct 2020 16:20:11 -0500 Subject: [PATCH 14/21] Automatic changelog generation for PR #13488 [ci skip] --- html/changelogs/AutoChangeLog-pr-13488.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13488.yml 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." From 3dc46b88051bcf251919a96a5da6e78ae2a181d7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 3 Oct 2020 16:20:27 -0500 Subject: [PATCH 15/21] Automatic changelog generation for PR #13485 [ci skip] --- html/changelogs/AutoChangeLog-pr-13485.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13485.yml 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." From 3760db079f633a799e253411142b9c25200de4da Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 3 Oct 2020 16:20:36 -0500 Subject: [PATCH 16/21] Automatic changelog generation for PR #13484 [ci skip] --- html/changelogs/AutoChangeLog-pr-13484.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13484.yml 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." From 9ce8bfe8a667ef530453d293e6c9f35303bb7bef Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 3 Oct 2020 16:21:01 -0500 Subject: [PATCH 17/21] Automatic changelog generation for PR #13482 [ci skip] --- html/changelogs/AutoChangeLog-pr-13482.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13482.yml 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." From c8dc75f3b9b6028f6534e527ee07e5f7612ed480 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 3 Oct 2020 16:21:24 -0500 Subject: [PATCH 18/21] Automatic changelog generation for PR #13489 [ci skip] --- html/changelogs/AutoChangeLog-pr-13489.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13489.yml 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" From dd102c04108a011cf59432cda18cb8a1c4d4cf10 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 3 Oct 2020 16:21:52 -0500 Subject: [PATCH 19/21] Automatic changelog generation for PR #13493 [ci skip] --- html/changelogs/AutoChangeLog-pr-13493.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13493.yml 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" From a2a0d3d64744835373ea8f39ac392800bd5209da Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 3 Oct 2020 16:22:13 -0500 Subject: [PATCH 20/21] Automatic changelog generation for PR #13494 [ci skip] --- html/changelogs/AutoChangeLog-pr-13494.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13494.yml 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" From 7eb28041b29b0b9d2034b6b9f7e6fdcc288e1903 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 3 Oct 2020 16:22:26 -0500 Subject: [PATCH 21/21] Automatic changelog generation for PR #13495 [ci skip] --- html/changelogs/AutoChangeLog-pr-13495.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13495.yml 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"