mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 01:49:19 +00:00
Merge branch 'master' into eye-sprites
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"))
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 = ""
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user