Merge branch 'master' into eye-sprites

This commit is contained in:
Timothy Teakettle
2020-10-04 01:23:03 +01:00
committed by GitHub
20 changed files with 161 additions and 93 deletions

View File

@@ -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)

View File

@@ -110,4 +110,7 @@
#define DEFAULT_EYES_TYPE "normal"
#define DEFAULT_LEFT_EYE_STATE "normal_left_eye"
#define DEFAULT_RIGHT_EYE_STATE "normal_right_eye"
#define DEFAULT_NO_EYE_STATE "no_eye"
#define DEFAULT_NO_EYE_STATE "no_eye"
//special species definitions
#define MINIMUM_MUTANT_COLOR "#202020" //this is how dark players mutant parts and skin can be

View File

@@ -285,5 +285,8 @@ 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"))
//list of eye types, corresponding to a respective left and right icon state for the set of eyes
GLOBAL_LIST_INIT(eye_types, list("normal", "insect", "moth", "double", "double2", "cyclops"))

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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("<span class='warning'>[src] gruesomely mutilliates [victim], leaving nothing more than dust!</span>")
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)

View File

@@ -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,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
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

View File

@@ -247,7 +247,8 @@
if(LH.target && LH.target.stat == DEAD)
to_chat(carbon_user,"<span class='danger'>Your patrons accepts your offer...</span>")
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)

View File

@@ -1642,7 +1642,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, "<span class='danger'>Invalid color. Your color is not bright enough.</span>")
@@ -1653,7 +1653,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, "<span class='danger'>Invalid color. Your color is not bright enough.</span>")
@@ -1664,7 +1664,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, "<span class='danger'>Invalid color. Your color is not bright enough.</span>")
@@ -1980,7 +1980,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,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
@@ -2020,7 +2020,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,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
@@ -2047,7 +2047,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,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
@@ -2069,7 +2069,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,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
@@ -2652,9 +2652,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)

View File

@@ -274,7 +274,17 @@
\"steps out\" of [H.p_them()].</span>",
"<span class='notice'>...and after a moment of disorentation, \
you're besides yourself!</span>")
if(H != spare && isslimeperson(spare) && isslimeperson(H))
// transfer the swap-body ui if it's open
var/datum/action/innate/swap_body/this_swap = origin_datum.swap_body
var/datum/action/innate/swap_body/other_swap = spare_datum.swap_body
var/datum/tgui/ui = SStgui.get_open_ui(H, this_swap, "main") || SStgui.get_open_ui(spare, this_swap, "main")
if(ui)
SStgui.on_close(ui) // basically removes it from lists is all this proc does.
ui.user = spare
ui.src_object = other_swap
SStgui.on_open(ui) // stick it back on the lists
ui.process(force = TRUE)
/datum/action/innate/swap_body
name = "Swap Body"
@@ -327,6 +337,8 @@
stat = "Conscious"
if(UNCONSCIOUS)
stat = "Unconscious"
if(SOFT_CRIT)
stat = "Barely Conscious"
if(DEAD)
stat = "Dead"
var/occupied
@@ -373,7 +385,6 @@
var/mob/living/carbon/human/selected = locate(params["ref"]) in SS.bodies
if(!can_swap(selected))
return
SStgui.close_uis(src)
swap_to_dupe(H.mind, selected)
/datum/action/innate/swap_body/proc/can_swap(mob/living/carbon/human/dupe)
@@ -407,6 +418,7 @@
/datum/action/innate/swap_body/proc/swap_to_dupe(datum/mind/M, mob/living/carbon/human/dupe)
if(!can_swap(dupe)) //sanity check
return
var/mob/living/carbon/human/old = M.current
if(M.current.stat == CONSCIOUS)
M.current.visible_message("<span class='notice'>[M.current] \
stops moving and starts staring vacantly into space.</span>",
@@ -418,7 +430,20 @@
dupe.visible_message("<span class='notice'>[dupe] blinks and looks \
around.</span>",
"<span class='notice'>...and move this one instead.</span>")
if(old != M.current && dupe == M.current && isslimeperson(dupe))
var/datum/species/jelly/slime/other_spec = dupe.dna.species
var/datum/action/innate/swap_body/other_swap = other_spec.swap_body
// theoretically the transfer_to proc is supposed to transfer the ui from the mob.
// so I try to get the UI from one of the two mobs and schlump it over to the new action button
var/datum/tgui/ui = SStgui.get_open_ui(old, src, "main") || SStgui.get_open_ui(dupe, src, "main")
if(ui)
// transfer the UI over. This code is slightly hacky but it fixes the problem
// I'd use SStgui.on_transfer but that doesn't let you transfer the src_object as well s
SStgui.on_close(ui) // basically removes it from lists is all this proc does.
ui.user = dupe
ui.src_object = other_swap
SStgui.on_open(ui) // stick it back on the lists
ui.process(force = TRUE)
////////////////////////////////////////////////////////Round Start Slimes///////////////////////////////////////////////////////////////////
@@ -466,7 +491,7 @@
var/new_color = input(owner, "Choose your skin color:", "Race change","#"+H.dna.features["mcolor"]) as color|null
if(new_color)
var/temp_hsv = RGBtoHSV(new_color)
if(ReadHSV(temp_hsv)[3] >= ReadHSV("#7F7F7F")[3]) // mutantcolors must be bright
if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) // mutantcolors must be bright
H.dna.features["mcolor"] = sanitize_hexcolor(new_color, 6)
H.update_body()
H.update_hair()

View File

@@ -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)

View File

@@ -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)

View File

@@ -565,7 +565,7 @@
var/diff_len = length(GLOB.skin_tones - GLOB.nonstandard_skin_tones)
H.skin_tone = GLOB.skin_tones[min(diff_len, GLOB.skin_tones.Find(H.skin_tone) + 1)]
else
H.skin_tone = H.dna.skin_tone_override = tan_mutant_color(H.dna.skin_tone_override, "#202020")
H.skin_tone = H.dna.skin_tone_override = tan_mutant_color(H.dna.skin_tone_override, MINIMUM_MUTANT_COLOR)
if(MUTCOLORS in H.dna.species.species_traits) //take current alien color and darken it slightly
H.dna.features["mcolor"] = tan_mutant_color(H.dna.features["mcolor"])
H.update_body()
@@ -576,7 +576,7 @@
return ..()
/datum/reagent/spraytan/proc/tan_mutant_color(color, limit = "#7F7F7F")
/datum/reagent/spraytan/proc/tan_mutant_color(color, limit = MINIMUM_MUTANT_COLOR)
var/newcolor = ""
var/len = length(color)
var/char = ""

View File

@@ -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
@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -50,6 +50,37 @@
-->
<div class="commit sansserif">
<h2 class="date">04 October 2020</h2>
<h3 class="author">DeltaFire15 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Synths / IPCs are no longer wound immune.</li>
<li class="bugfix">Husked IPCs / Synths should now be rendered correctly.</li>
<li class="bugfix">Falling vendors now squish synths / IPCs' limbs again.</li>
<li class="bugfix">Synths and IPCs now do not have some fun roundstart oversights anymore.</li>
<li class="bugfix">Regenerate_limbs now works for carbons with the ROBOTIC_LIMBS trait.</li>
<li class="bugfix">Pacifists no longer counterattack on parries if that attack would be harmful.</li>
<li class="tweak">Heretic sacrifices now husk with the reason of burn, and deal some additional damage.</li>
<li class="bugfix">Neovgre can no longer become invincible on clock tiles.</li>
<li class="bugfix">Plushlings no longer break when absorbing snowflake plushies.</li>
</ul>
<h3 class="author">Detective-Google updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">the snow cabin doors actually bolt now</li>
</ul>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Ghosts are no longer incapable of going away.</li>
</ul>
<h3 class="author">monster860 updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">The slimeperson swap-body UI stays open when you switch bodies</li>
</ul>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">limb id entry in mutant bodyparts now supports switching to/from species with gendered body parts</li>
<li class="tweak">the minimum brightness of mutant parts is now a define</li>
</ul>
<h2 class="date">02 October 2020</h2>
<h3 class="author">ArcaneMusic, with minor tweaks by TheObserver-sys updated:</h3>
<ul class="changes bgimages16">
@@ -1171,49 +1202,6 @@
<li class="balance">explosive stand bombs can now be examined from any distance</li>
<li class="code_imp">explosive stand bombs are now a component.</li>
</ul>
<h2 class="date">02 August 2020</h2>
<h3 class="author">Auris456852 updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added B.O.O.P. Remote Control cartridges to the PTech.</li>
</ul>
<h3 class="author">Hatterhat updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Durathread reinforcement kits! Sprites by Toriate, sets jumpsuit armor to durathread levels, craft in the crafting menu.</li>
</ul>
<h3 class="author">KeRSedChaplain updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">The belligerent scripture and a brass multitool, and a new marauder variant which act similar to holoparasites/guardian spirits.</li>
<li class="rscdel">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.</li>
<li class="tweak">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.</li>
<li class="soundadd">added powerloaderstep.ogg for Neovgre</li>
<li class="tweak">changes 'Dread_Ipad.dmi' to 'clockwork_slab.dmi'</li>
</ul>
<h3 class="author">MrJWhit updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Adjusts abductor spawntext</li>
</ul>
<h3 class="author">Seris02 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">fixed replica pods</li>
</ul>
<h3 class="author">dapnee updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">fixed active turfs on wizard ruin and space hermit, fixed missing APC's and added a light on Delta</li>
</ul>
<h3 class="author">ike709 and bobbahbrown updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Admins can now see your bans on (some) other servers.</li>
</ul>
<h3 class="author">kappa-sama updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">chaplain cultists being able to convert people to full clockwork cult status</li>
</ul>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">combat mode now has weaker buffs in terms of damage dealt and took for being or not being in the mode</li>
<li class="tweak">damage debuff for laying down has been decreased from 0.5x to 0.7x</li>
</ul>
</div>
<b>GoonStation 13 Development Team</b>

View File

@@ -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

View File

@@ -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, "<span class='warning'>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.</span>")
SM.client?.change_view(CONFIG_GET(string/default_view))
to_chat(M, "<span class='warning'>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.</span>")
M.visible_message("[M] suddenly shudders, and splits into two identical twins!")
SM.copy_languages(M, LANGUAGE_MIND)