From 07f50845b6d6c7bac6e33a50551c4e9b432377cb Mon Sep 17 00:00:00 2001 From: DeltaFire Date: Fri, 25 Sep 2020 23:24:00 +0200 Subject: [PATCH 01/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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 737257552ae2c61b347dbb86775e1cc921b9839a Mon Sep 17 00:00:00 2001 From: Putnam Date: Fri, 2 Oct 2020 23:17:12 -0700 Subject: [PATCH 14/27] Fixes ghost funny + keeps SDGF view fix. --- code/modules/mob/mob.dm | 1 - modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 7e14224e0d..e1a4ac6118 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -491,7 +491,6 @@ mob/visible_message(message, self_message, blind_message, vision_distance = DEFA client.prefs.chat_toggles ^= CHAT_OOC if (!(client.prefs.chat_toggles & CHAT_OOC) && isdead(new_mob)) client.prefs.chat_toggles ^= CHAT_OOC - client.change_view(CONFIG_GET(string/default_view)) new_mob.ckey = ckey if(send_signal) SEND_SIGNAL(src, COMSIG_MOB_KEY_CHANGE, new_mob, src) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm index a6d300631b..60c009bc29 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm @@ -129,6 +129,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING log_reagent("FERMICHEM: [SM] ckey: [SM.key]'s is not bound by [M] ckey [M.key]'s will, and is free to determine their own goals, while respecting and acting as their origin.") to_chat(SM, "You feel a strange sensation building in your mind as you realise there's two of you. Before you get a chance to think about it, you suddenly split from your old body, and find yourself face to face with your original, a perfect clone of your origin.") + SM.client?.change_view(CONFIG_GET(string/default_view)) to_chat(M, "You feel a strange sensation building in your mind as you realise there's two of you. Before you get a chance to think about it, a mass splits from you, and find yourself face to face with yourself.") M.visible_message("[M] suddenly shudders, and splits into two identical twins!") SM.copy_languages(M, LANGUAGE_MIND) From 56ddfae693a0b9c325bf1fb33c5513b26e891418 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 3 Oct 2020 09:28:07 -0500 Subject: [PATCH 15/27] Automatic changelog generation for PR #13502 [ci skip] --- html/changelogs/AutoChangeLog-pr-13502.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13502.yml diff --git a/html/changelogs/AutoChangeLog-pr-13502.yml b/html/changelogs/AutoChangeLog-pr-13502.yml new file mode 100644 index 0000000000..5e10b5c773 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13502.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "Ghosts are no longer incapable of going away." From 79af981467f9921fa30dfedf49578ede999da9b0 Mon Sep 17 00:00:00 2001 From: DeltaFire Date: Sat, 3 Oct 2020 21:51:49 +0200 Subject: [PATCH 16/27] fixes some fun limb code --- code/datums/wounds/_scars.dm | 2 +- code/datums/wounds/_wounds.dm | 2 +- code/modules/client/preferences.dm | 4 ++-- code/modules/surgery/bodyparts/_bodyparts.dm | 2 +- code/modules/vending/_vending.dm | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/datums/wounds/_scars.dm b/code/datums/wounds/_scars.dm index 8cd0d8a047..85589976e6 100644 --- a/code/datums/wounds/_scars.dm +++ b/code/datums/wounds/_scars.dm @@ -79,7 +79,7 @@ /// Used to "load" a persistent scar /datum/scar/proc/load(obj/item/bodypart/BP, version, description, specific_location, severity=WOUND_SEVERITY_SEVERE) - if(!(BP.body_zone in applicable_zones) || !BP.is_organic_limb()) + if(!(BP.body_zone in applicable_zones) || !(BP.is_organic_limb() || BP.render_like_organic)) qdel(src) return diff --git a/code/datums/wounds/_wounds.dm b/code/datums/wounds/_wounds.dm index 29c87b32d4..1ed0d98543 100644 --- a/code/datums/wounds/_wounds.dm +++ b/code/datums/wounds/_wounds.dm @@ -110,7 +110,7 @@ * * smited- If this is a smite, we don't care about this wound for stat tracking purposes (not yet implemented) */ /datum/wound/proc/apply_wound(obj/item/bodypart/L, silent = FALSE, datum/wound/old_wound = null, smited = FALSE) - if(!istype(L) || !L.owner || !(L.body_zone in viable_zones) || isalien(L.owner) || !L.is_organic_limb()) + if(!istype(L) || !L.owner || !(L.body_zone in viable_zones) || isalien(L.owner) || !(L.is_organic_limb() || L.render_like_organic)) qdel(src) return diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 7a2c8156d4..64bce31108 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -2639,9 +2639,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) //limb stuff, only done when initially spawning in if(initial_spawn) - //delete any existing prosthetic limbs to make sure no remnant prosthetics are left over + //delete any existing prosthetic limbs to make sure no remnant prosthetics are left over - But DO NOT delete those that are species-related for(var/obj/item/bodypart/part in character.bodyparts) - if(part.status == BODYPART_ROBOTIC) + if(part.status == BODYPART_ROBOTIC && !part.render_like_organic) qdel(part) character.regenerate_limbs() //regenerate limbs so now you only have normal limbs for(var/modified_limb in modified_limbs) diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index 421c3bccca..c385df1725 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -581,7 +581,7 @@ C = owner no_update = FALSE - if(HAS_TRAIT(C, TRAIT_HUSK) && is_organic_limb()) + if(HAS_TRAIT(C, TRAIT_HUSK) && (is_organic_limb() || render_like_organic)) species_id = "husk" //overrides species_id dmg_overlay_type = "" //no damage overlay shown when husked should_draw_gender = FALSE diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index a115300085..26bee38f7b 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -529,7 +529,7 @@ GLOBAL_LIST_EMPTY(vending_products) if(5) // limb squish! for(var/i in C.bodyparts) var/obj/item/bodypart/squish_part = i - if(squish_part.is_organic_limb()) + if(squish_part.is_organic_limb() || squish_part.render_like_organic) var/type_wound = pick(list(/datum/wound/blunt/critical, /datum/wound/blunt/severe, /datum/wound/blunt/moderate)) squish_part.force_wound_upwards(type_wound) else From c2e6fcb172248113c14d6d4ac944e68fac950617 Mon Sep 17 00:00:00 2001 From: DeltaFire Date: Sat, 3 Oct 2020 22:46:01 +0200 Subject: [PATCH 17/27] modifies regenerate_limbs() This allows it to work for people with the ROBOTIC_LIMBS trait, creating robotic (/ synthetic, or whatever the hell those are considering they're inbetween) limbs for them instead of organic ones --- code/modules/surgery/bodyparts/dismemberment.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index fa003e3f3c..3038e32733 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -434,5 +434,8 @@ var/datum/scar/scaries = new var/datum/wound/loss/phantom_loss = new // stolen valor, really scaries.generate(L, phantom_loss) + if(HAS_TRAIT(src, ROBOTIC_LIMBS)) //Snowflake trait moment, but needed. + L.render_like_organic = TRUE + L.change_bodypart_status(BODYPART_ROBOTIC, FALSE, TRUE) //Haha what if IPC-lings actually regenerated the right limbs instead of organic ones? That'd be pretty cool, right? L.attach_limb(src, 1) return TRUE From 11884f6820cea3990cf10adff89d27d5e65cbc9a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 3 Oct 2020 16:20:11 -0500 Subject: [PATCH 18/27] 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 19/27] 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 20/27] 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 21/27] 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 22/27] 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 23/27] 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 24/27] 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 25/27] 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" From b993681537d23d7d5cd8e36965f740b5b3607480 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 3 Oct 2020 16:32:48 -0500 Subject: [PATCH 26/27] Automatic changelog generation for PR #13508 [ci skip] --- html/changelogs/AutoChangeLog-pr-13508.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13508.yml diff --git a/html/changelogs/AutoChangeLog-pr-13508.yml b/html/changelogs/AutoChangeLog-pr-13508.yml new file mode 100644 index 0000000000..896b9d4ae7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13508.yml @@ -0,0 +1,8 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "Synths / IPCs are no longer wound immune." + - bugfix: "Husked IPCs / Synths should now be rendered correctly." + - bugfix: "Falling vendors now squish synths / IPCs' limbs again." + - bugfix: "Synths and IPCs now do not have some fun roundstart oversights anymore." + - bugfix: "Regenerate_limbs now works for carbons with the ROBOTIC_LIMBS trait." From 971fc35304cd23211914500ee393b747c3166459 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 4 Oct 2020 00:15:37 +0000 Subject: [PATCH 27/27] Automatic changelog compile [ci skip] --- html/changelog.html | 74 +++++++++------------- html/changelogs/.all_changelog.yml | 22 +++++++ html/changelogs/AutoChangeLog-pr-13482.yml | 4 -- html/changelogs/AutoChangeLog-pr-13484.yml | 4 -- html/changelogs/AutoChangeLog-pr-13485.yml | 4 -- html/changelogs/AutoChangeLog-pr-13488.yml | 4 -- html/changelogs/AutoChangeLog-pr-13489.yml | 4 -- html/changelogs/AutoChangeLog-pr-13493.yml | 4 -- html/changelogs/AutoChangeLog-pr-13494.yml | 4 -- html/changelogs/AutoChangeLog-pr-13495.yml | 4 -- html/changelogs/AutoChangeLog-pr-13502.yml | 4 -- html/changelogs/AutoChangeLog-pr-13508.yml | 8 --- 12 files changed, 53 insertions(+), 87 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-13482.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-13484.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-13485.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-13488.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-13489.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-13493.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-13494.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-13495.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-13502.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-13508.yml diff --git a/html/changelog.html b/html/changelog.html index c15fc93e8d..0de57ebe79 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,6 +50,37 @@ -->
+

04 October 2020

+

DeltaFire15 updated:

+
    +
  • Synths / IPCs are no longer wound immune.
  • +
  • Husked IPCs / Synths should now be rendered correctly.
  • +
  • Falling vendors now squish synths / IPCs' limbs again.
  • +
  • Synths and IPCs now do not have some fun roundstart oversights anymore.
  • +
  • Regenerate_limbs now works for carbons with the ROBOTIC_LIMBS trait.
  • +
  • Pacifists no longer counterattack on parries if that attack would be harmful.
  • +
  • Heretic sacrifices now husk with the reason of burn, and deal some additional damage.
  • +
  • Neovgre can no longer become invincible on clock tiles.
  • +
  • Plushlings no longer break when absorbing snowflake plushies.
  • +
+

Detective-Google updated:

+
    +
  • the snow cabin doors actually bolt now
  • +
+

Putnam3145 updated:

+
    +
  • Ghosts are no longer incapable of going away.
  • +
+

monster860 updated:

+
    +
  • The slimeperson swap-body UI stays open when you switch bodies
  • +
+

timothyteakettle updated:

+
    +
  • limb id entry in mutant bodyparts now supports switching to/from species with gendered body parts
  • +
  • the minimum brightness of mutant parts is now a define
  • +
+

02 October 2020

ArcaneMusic, with minor tweaks by TheObserver-sys updated:

    @@ -1171,49 +1202,6 @@
  • explosive stand bombs can now be examined from any distance
  • explosive stand bombs are now a component.
- -

02 August 2020

-

Auris456852 updated:

-
    -
  • Added B.O.O.P. Remote Control cartridges to the PTech.
  • -
-

Hatterhat updated:

-
    -
  • Durathread reinforcement kits! Sprites by Toriate, sets jumpsuit armor to durathread levels, craft in the crafting menu.
  • -
-

KeRSedChaplain updated:

-
    -
  • The belligerent scripture and a brass multitool, and a new marauder variant which act similar to holoparasites/guardian spirits.
  • -
  • Removed the abductor teleport consoles they get, removes abscond for the time being as I've not seen much use for it other than just spamming it and hoping you end up in the armory.
  • -
  • moved around scriptures to make the cult work better as being based around the station, makes the Ark scream more often and work as a summonable object, clockwork armor now has a flat 0 defense up to 10 instead of negatives against laser damage. Makes the Ark work better in a station based setting, as well as the Heralds beacon in case It works for the mode.
  • -
  • added powerloaderstep.ogg for Neovgre
  • -
  • changes 'Dread_Ipad.dmi' to 'clockwork_slab.dmi'
  • -
-

MrJWhit updated:

-
    -
  • Adjusts abductor spawntext
  • -
-

Seris02 updated:

-
    -
  • fixed replica pods
  • -
-

dapnee updated:

-
    -
  • fixed active turfs on wizard ruin and space hermit, fixed missing APC's and added a light on Delta
  • -
-

ike709 and bobbahbrown updated:

-
    -
  • Admins can now see your bans on (some) other servers.
  • -
-

kappa-sama updated:

-
    -
  • chaplain cultists being able to convert people to full clockwork cult status
  • -
-

timothyteakettle updated:

-
    -
  • combat mode now has weaker buffs in terms of damage dealt and took for being or not being in the mode
  • -
  • damage debuff for laying down has been decreased from 0.5x to 0.7x
  • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 08494cb87b..99ffc455c3 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -27502,3 +27502,25 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. as you move from the epicentre zeroisthebiggay: - rscadd: ratvar gf is complete +2020-10-04: + DeltaFire15: + - bugfix: Synths / IPCs are no longer wound immune. + - bugfix: Husked IPCs / Synths should now be rendered correctly. + - bugfix: Falling vendors now squish synths / IPCs' limbs again. + - bugfix: Synths and IPCs now do not have some fun roundstart oversights anymore. + - bugfix: Regenerate_limbs now works for carbons with the ROBOTIC_LIMBS trait. + - bugfix: Pacifists no longer counterattack on parries if that attack would be harmful. + - tweak: Heretic sacrifices now husk with the reason of burn, and deal some additional + damage. + - bugfix: Neovgre can no longer become invincible on clock tiles. + - bugfix: Plushlings no longer break when absorbing snowflake plushies. + Detective-Google: + - bugfix: the snow cabin doors actually bolt now + Putnam3145: + - bugfix: Ghosts are no longer incapable of going away. + monster860: + - tweak: The slimeperson swap-body UI stays open when you switch bodies + timothyteakettle: + - bugfix: limb id entry in mutant bodyparts now supports switching to/from species + with gendered body parts + - tweak: the minimum brightness of mutant parts is now a define diff --git a/html/changelogs/AutoChangeLog-pr-13482.yml b/html/changelogs/AutoChangeLog-pr-13482.yml deleted file mode 100644 index 4b2808f754..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13482.yml +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 69271b260b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13484.yml +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 3dd03a4782..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13485.yml +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index dae9dfd444..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13488.yml +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 4780b3fadb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13489.yml +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 12c10047b9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13493.yml +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index c167bdd067..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13494.yml +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 33798eec3c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13495.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Detective-Google" -delete-after: True -changes: - - bugfix: "the snow cabin doors actually bolt now" diff --git a/html/changelogs/AutoChangeLog-pr-13502.yml b/html/changelogs/AutoChangeLog-pr-13502.yml deleted file mode 100644 index 5e10b5c773..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13502.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - bugfix: "Ghosts are no longer incapable of going away." diff --git a/html/changelogs/AutoChangeLog-pr-13508.yml b/html/changelogs/AutoChangeLog-pr-13508.yml deleted file mode 100644 index 896b9d4ae7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13508.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "DeltaFire15" -delete-after: True -changes: - - bugfix: "Synths / IPCs are no longer wound immune." - - bugfix: "Husked IPCs / Synths should now be rendered correctly." - - bugfix: "Falling vendors now squish synths / IPCs' limbs again." - - bugfix: "Synths and IPCs now do not have some fun roundstart oversights anymore." - - bugfix: "Regenerate_limbs now works for carbons with the ROBOTIC_LIMBS trait."