Merge pull request #13472 from timothyteakettle/slime-puddle

the pr that lets slimes turn into useless puddles
This commit is contained in:
silicons
2020-10-10 11:14:25 -07:00
committed by GitHub
15 changed files with 558 additions and 677 deletions

View File

@@ -219,6 +219,8 @@
#define TRAIT_MOBILITY_NOPICKUP "mobility_nopickup"
/// Disallow item use
#define TRAIT_MOBILITY_NOUSE "mobility_nouse"
///Disallow resting/unresting
#define TRAIT_MOBILITY_NOREST "mobility_norest"
#define TRAIT_SWIMMING "swimming" //only applied by /datum/element/swimming, for checking
@@ -311,6 +313,7 @@
#define CLOWNOP_TRAIT "clown-op"
#define MEGAFAUNA_TRAIT "megafauna"
#define DEATHSQUAD_TRAIT "deathsquad"
#define SLIMEPUDDLE_TRAIT "slimepuddle"
/// This trait is added by the active directional block system.
#define ACTIVE_BLOCK_TRAIT "active_block"
/// This trait is added by the parry system.

View File

@@ -25,7 +25,7 @@
RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), .proc/play_squeak)
if(ismovable(parent))
RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), .proc/play_squeak)
RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED), .proc/play_squeak_crossed)
RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED, COMSIG_MOVABLE_CROSS), .proc/play_squeak_crossed)
RegisterSignal(parent, COMSIG_CROSS_SQUEAKED, .proc/delay_squeak)
RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react)
if(isitem(parent))

View File

@@ -515,3 +515,12 @@
/obj/effect/temp_visual/dir_setting/space_wind/Initialize(mapload, set_dir, set_alpha = 255)
. = ..()
alpha = set_alpha
/obj/effect/temp_visual/slime_puddle
icon = 'icons/mob/mob.dmi'
duration = 12
icon_state = "to_puddle"
/obj/effect/temp_visual/slime_puddle/reverse
icon_state = "from_puddle"
duration = 7

View File

@@ -984,10 +984,10 @@
var/obj/item/organ/I = X
I.Insert(src)
/mob/living/carbon/proc/update_disabled_bodyparts()
/mob/living/carbon/proc/update_disabled_bodyparts(silent = FALSE)
for(var/B in bodyparts)
var/obj/item/bodypart/BP = B
BP.update_disabled()
BP.update_disabled(silent)
/mob/living/carbon/vv_get_dropdown()
. = ..()

View File

@@ -101,3 +101,8 @@
if(dna.species.space_move(src))
return TRUE
return ..()
/mob/living/carbon/human/CanPass(atom/movable/mover, turf/target)
if(dna.species.species_pass_check())
return TRUE
return ..()

View File

@@ -1947,6 +1947,14 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(HAS_BONE in species_traits)
. |= BIO_JUST_BONE
//a check for if you should render any overlays or not
/datum/species/proc/should_render(mob/living/carbon/human/H)
return TRUE
//a check for if you want to forcibly make CanPass return TRUE for the mob with this species
/datum/species/proc/species_pass_check()
return FALSE
/////////////
//BREATHING//
/////////////

View File

@@ -16,7 +16,8 @@
exotic_blood_color = "BLOOD_COLOR_SLIME"
damage_overlay_type = ""
var/datum/action/innate/regenerate_limbs/regenerate_limbs
var/datum/action/innate/slime_change/slime_change //CIT CHANGE
var/datum/action/innate/slime_change/slime_change
var/datum/action/innate/slime_puddle/slime_puddle
liked_food = TOXIC | MEAT
disliked_food = null
toxic_food = ANTITOXIC
@@ -35,12 +36,15 @@
desc = "A slimey membranous mass from a slime person"
icon_state = "brain-slime"
/datum/species/jelly/on_species_loss(mob/living/carbon/C)
if(slime_puddle && slime_puddle.is_puddle)
slime_puddle.Activate()
if(regenerate_limbs)
regenerate_limbs.Remove(C)
if(slime_change) //CIT CHANGE
slime_change.Remove(C) //CIT CHANGE
if(slime_change)
slime_change.Remove(C)
if(slime_puddle)
slime_puddle.Remove(C)
C.faction -= "slime"
..()
C.faction -= "slime"
@@ -50,8 +54,10 @@
if(ishuman(C))
regenerate_limbs = new
regenerate_limbs.Grant(C)
slime_change = new //CIT CHANGE
slime_change.Grant(C) //CIT CHANGE
slime_change = new
slime_change.Grant(C)
slime_puddle = new
slime_puddle.Grant(C)
C.faction |= "slime"
/datum/species/jelly/handle_body(mob/living/carbon/human/H)
@@ -59,6 +65,18 @@
//update blood color to body color
exotic_blood_color = "#" + H.dna.features["mcolor"]
/datum/species/jelly/should_render()
if(slime_puddle && slime_puddle.is_puddle)
return FALSE
else
return ..()
/datum/species/jelly/species_pass_check()
if(slime_puddle && slime_puddle.is_puddle)
return TRUE
else
return ..()
/datum/species/jelly/spec_life(mob/living/carbon/human/H)
if(H.stat == DEAD || HAS_TRAIT(H, TRAIT_NOMARROW)) //can't farm slime jelly from a dead slime/jelly person indefinitely, and no regeneration for blooduskers
return
@@ -670,6 +688,88 @@
else
return
/datum/action/innate/slime_puddle
name = "Puddle Transformation"
check_flags = AB_CHECK_CONSCIOUS
button_icon_state = "slimepuddle"
icon_icon = 'icons/mob/actions/actions_slime.dmi'
background_icon_state = "bg_alien"
required_mobility_flags = MOBILITY_STAND
var/is_puddle = FALSE
var/in_transformation_duration = 12
var/out_transformation_duration = 7
var/puddle_into_effect = /obj/effect/temp_visual/slime_puddle
var/puddle_from_effect = /obj/effect/temp_visual/slime_puddle/reverse
var/puddle_icon = 'icons/mob/mob.dmi'
var/puddle_state = "puddle"
var/tracked_overlay
var/datum/component/squeak/squeak
var/transforming = FALSE
var/last_use
/datum/action/innate/slime_puddle/IsAvailable()
if(!transforming)
return ..()
else
return FALSE
/datum/action/innate/slime_puddle/Activate()
if(isjellyperson(owner) && IsAvailable())
transforming = TRUE
UpdateButtonIcon()
var/mob/living/carbon/human/H = owner
var/mutcolor = "#" + H.dna.features["mcolor"]
if(!is_puddle)
if(CHECK_MOBILITY(H, MOBILITY_USE))
is_puddle = TRUE
owner.cut_overlays()
var/obj/effect/puddle_effect = new puddle_into_effect(get_turf(owner), owner.dir)
puddle_effect.color = mutcolor
H.Stun(in_transformation_duration, ignore_canstun = TRUE)
ADD_TRAIT(H, TRAIT_PARALYSIS_L_ARM, SLIMEPUDDLE_TRAIT)
ADD_TRAIT(H, TRAIT_PARALYSIS_R_ARM, SLIMEPUDDLE_TRAIT)
ADD_TRAIT(H, TRAIT_MOBILITY_NOPICKUP, SLIMEPUDDLE_TRAIT)
ADD_TRAIT(H, TRAIT_MOBILITY_NOUSE, SLIMEPUDDLE_TRAIT)
ADD_TRAIT(H, TRAIT_SPRINT_LOCKED, SLIMEPUDDLE_TRAIT)
ADD_TRAIT(H, TRAIT_COMBAT_MODE_LOCKED, SLIMEPUDDLE_TRAIT)
ADD_TRAIT(H, TRAIT_MOBILITY_NOREST, SLIMEPUDDLE_TRAIT)
H.add_movespeed_modifier(/datum/movespeed_modifier/slime_puddle)
H.update_disabled_bodyparts(silent = TRUE)
H.layer -= 1 //go one layer down so people go over you
ENABLE_BITFIELD(H.pass_flags, PASSMOB)
squeak = H.AddComponent(/datum/component/squeak, custom_sounds = list('sound/effects/blobattack.ogg'))
sleep(in_transformation_duration)
var/mutable_appearance/puddle_overlay = mutable_appearance(icon = puddle_icon, icon_state = puddle_state)
puddle_overlay.color = mutcolor
tracked_overlay = puddle_overlay
owner.add_overlay(puddle_overlay)
transforming = FALSE
UpdateButtonIcon()
else
owner.cut_overlay(tracked_overlay)
var/obj/effect/puddle_effect = new puddle_from_effect(get_turf(owner), owner.dir)
puddle_effect.color = mutcolor
H.Stun(out_transformation_duration, ignore_canstun = TRUE)
sleep(out_transformation_duration)
REMOVE_TRAIT(H, TRAIT_PARALYSIS_L_ARM, SLIMEPUDDLE_TRAIT)
REMOVE_TRAIT(H, TRAIT_PARALYSIS_R_ARM, SLIMEPUDDLE_TRAIT)
REMOVE_TRAIT(H, TRAIT_MOBILITY_NOPICKUP, SLIMEPUDDLE_TRAIT)
REMOVE_TRAIT(H, TRAIT_MOBILITY_NOUSE, SLIMEPUDDLE_TRAIT)
REMOVE_TRAIT(H, TRAIT_SPRINT_LOCKED, SLIMEPUDDLE_TRAIT)
REMOVE_TRAIT(H, TRAIT_COMBAT_MODE_LOCKED, SLIMEPUDDLE_TRAIT)
REMOVE_TRAIT(H, TRAIT_MOBILITY_NOREST, SLIMEPUDDLE_TRAIT)
H.update_disabled_bodyparts(silent = TRUE)
H.remove_movespeed_modifier(/datum/movespeed_modifier/slime_puddle)
H.layer += 1 //go one layer back above!
DISABLE_BITFIELD(H.pass_flags, PASSMOB)
is_puddle = FALSE
if(squeak)
squeak.RemoveComponent()
owner.regenerate_icons()
transforming = FALSE
UpdateButtonIcon()
else
to_chat(owner, "<span class='warning'>You need to be standing up to do this!") //just assume they're a slime because it's such a weird edgecase to have it and not be one (it shouldn't even be possible)
///////////////////////////////////LUMINESCENTS//////////////////////////////////////////

View File

@@ -50,14 +50,16 @@ There are several things that need to be remembered:
//HAIR OVERLAY
/mob/living/carbon/human/update_hair()
if(dna.species.should_render())
dna.species.handle_hair(src)
//used when putting/removing clothes that hide certain mutant body parts to just update those and not update the whole body.
/mob/living/carbon/human/proc/update_mutant_bodyparts()
if(dna.species.should_render())
dna.species.handle_mutant_bodyparts(src)
/mob/living/carbon/human/update_body(update_genitals = FALSE)
if(dna.species.should_render())
remove_overlay(BODY_LAYER)
dna.species.handle_body(src)
..()
@@ -71,7 +73,7 @@ There are several things that need to be remembered:
/* --------------------------------------- */
//For legacy support.
/mob/living/carbon/human/regenerate_icons()
if(dna.species.should_render())
if(!..())
icon_render_key = null //invalidate bodyparts cache
update_body(TRUE)
@@ -100,6 +102,7 @@ There are several things that need to be remembered:
//vvvvvv UPDATE_INV PROCS vvvvvv
/mob/living/carbon/human/update_inv_w_uniform()
if(dna.species.should_render())
remove_overlay(UNIFORM_LAYER)
if(client && hud_used)
@@ -150,8 +153,8 @@ There are several things that need to be remembered:
apply_overlay(UNIFORM_LAYER)
update_mutant_bodyparts()
/mob/living/carbon/human/update_inv_wear_id()
if(dna.species.should_render())
remove_overlay(ID_LAYER)
if(client && hud_used)
@@ -176,6 +179,7 @@ There are several things that need to be remembered:
/mob/living/carbon/human/update_inv_gloves()
if(dna.species.should_render())
remove_overlay(GLOVES_LAYER)
if(client && hud_used && hud_used.inv_slots[SLOT_GLOVES])
@@ -209,6 +213,7 @@ There are several things that need to be remembered:
/mob/living/carbon/human/update_inv_glasses()
if(dna.species.should_render())
remove_overlay(GLASSES_LAYER)
if(!get_bodypart(BODY_ZONE_HEAD)) //decapitated
@@ -234,8 +239,8 @@ There are several things that need to be remembered:
overlays_standing[GLASSES_LAYER] = glasses_overlay
apply_overlay(GLASSES_LAYER)
/mob/living/carbon/human/update_inv_ears()
if(dna.species.should_render())
remove_overlay(EARS_LAYER)
if(!get_bodypart(BODY_ZONE_HEAD)) //decapitated
@@ -260,8 +265,8 @@ There are several things that need to be remembered:
overlays_standing[EARS_LAYER] = ears_overlay
apply_overlay(EARS_LAYER)
/mob/living/carbon/human/update_inv_shoes()
if(dna.species.should_render())
remove_overlay(SHOES_LAYER)
if(get_num_legs(FALSE) <2)
@@ -299,6 +304,7 @@ There are several things that need to be remembered:
apply_overlay(SHOES_LAYER)
/mob/living/carbon/human/update_inv_s_store()
if(dna.species.should_render())
remove_overlay(SUIT_STORE_LAYER)
if(client && hud_used)
@@ -321,8 +327,8 @@ There are several things that need to be remembered:
overlays_standing[SUIT_STORE_LAYER] = s_store_overlay
apply_overlay(SUIT_STORE_LAYER)
/mob/living/carbon/human/update_inv_head()
if(dna.species.should_render())
remove_overlay(HEAD_LAYER)
if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated
@@ -362,6 +368,7 @@ There are several things that need to be remembered:
update_mutant_bodyparts()
/mob/living/carbon/human/update_inv_belt()
if(dna.species.should_render())
remove_overlay(BELT_LAYER)
if(client && hud_used)
@@ -382,8 +389,8 @@ There are several things that need to be remembered:
overlays_standing[BELT_LAYER] = belt_overlay
apply_overlay(BELT_LAYER)
/mob/living/carbon/human/update_inv_wear_suit()
if(dna.species.should_render())
remove_overlay(SUIT_LAYER)
if(client && hud_used)
@@ -446,7 +453,6 @@ There are several things that need to be remembered:
apply_overlay(SUIT_LAYER)
/mob/living/carbon/human/update_inv_pockets()
if(client && hud_used)
var/obj/screen/inventory/inv
@@ -471,6 +477,7 @@ There are several things that need to be remembered:
/mob/living/carbon/human/update_inv_wear_mask()
if(dna.species.should_render())
remove_overlay(FACEMASK_LAYER)
if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated
@@ -511,6 +518,7 @@ There are several things that need to be remembered:
update_mutant_bodyparts() //e.g. upgate needed because mask now hides lizard snout
/mob/living/carbon/human/update_inv_back()
if(dna.species.should_render())
..()
var/mutable_appearance/back_overlay = overlays_standing[BACK_LAYER]
if(back_overlay)
@@ -710,8 +718,6 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if
..()
update_hair()
/mob/living/carbon/human/proc/update_observer_view(obj/item/I, inventory)
if(observers && observers.len)
for(var/M in observers)
@@ -729,15 +735,17 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if
// Only renders the head of the human
/mob/living/carbon/human/proc/update_body_parts_head_only()
if (!dna)
if(!dna)
return
if (!dna.species)
if(!dna.species)
return
if(dna.species.should_render())
return
var/obj/item/bodypart/HD = get_bodypart("head")
if (!istype(HD))
if(!istype(HD))
return
HD.update_limb()

View File

@@ -5,12 +5,15 @@
RegisterSignal(src, SIGNAL_TRAIT(TRAIT_MOBILITY_NOMOVE), .proc/update_mobility)
RegisterSignal(src, SIGNAL_TRAIT(TRAIT_MOBILITY_NOPICKUP), .proc/update_mobility)
RegisterSignal(src, SIGNAL_TRAIT(TRAIT_MOBILITY_NOUSE), .proc/update_mobility)
RegisterSignal(src, SIGNAL_TRAIT(TRAIT_MOBILITY_NOREST), .proc/update_mobility)
//Stuff like mobility flag updates, resting updates, etc.
//Force-set resting variable, without needing to resist/etc.
/mob/living/proc/set_resting(new_resting, silent = FALSE, updating = TRUE)
if(new_resting != resting)
if(resting && HAS_TRAIT(src, TRAIT_MOBILITY_NOREST)) //forcibly block resting from all sources - BE CAREFUL WITH THIS TRAIT
return
resting = new_resting
if(!silent)
to_chat(src, "<span class='notice'>You are now [resting? "resting" : "getting up"].</span>")
@@ -87,7 +90,7 @@
var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyze && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) && !(combat_flags & COMBAT_FLAG_HARD_STAMCRIT)
var/canstand = canstand_involuntary && !resting
var/should_be_lying = !canstand
var/should_be_lying = !canstand && !HAS_TRAIT(src, TRAIT_MOBILITY_NOREST)
if(buckled)
if(buckled.buckle_lying != -1)
should_be_lying = buckled.buckle_lying

View File

@@ -18,3 +18,7 @@
blacklisted_movetypes = (FLOATING|CRAWLING)
variable = TRUE
flags = IGNORE_NOSLOW
/datum/movespeed_modifier/slime_puddle
multiplicative_slowdown = 2
flags = IGNORE_NOSLOW

View File

@@ -483,12 +483,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 +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)
if(!last_maxed && !silent)
owner.emote("scream")
last_maxed = TRUE
if(!is_organic_limb() || stamina_dam >= max_damage)

View File

@@ -75,11 +75,11 @@
return BODYPART_DISABLED_PARALYSIS
return ..()
/obj/item/bodypart/l_arm/set_disabled(new_disabled)
/obj/item/bodypart/l_arm/set_disabled(new_disabled, silent = FALSE)
. = ..()
if(!.)
return
if(owner.stat < UNCONSCIOUS)
if(owner.stat < UNCONSCIOUS && !silent)
switch(disabled)
if(BODYPART_DISABLED_DAMAGE)
owner.emote("scream")
@@ -136,11 +136,11 @@
return BODYPART_DISABLED_PARALYSIS
return ..()
/obj/item/bodypart/r_arm/set_disabled(new_disabled)
/obj/item/bodypart/r_arm/set_disabled(new_disabled, silent = FALSE)
. = ..()
if(!.)
return
if(owner.stat < UNCONSCIOUS)
if(owner.stat < UNCONSCIOUS && !silent)
switch(disabled)
if(BODYPART_DISABLED_DAMAGE)
owner.emote("scream")
@@ -196,10 +196,11 @@
return BODYPART_DISABLED_PARALYSIS
return ..()
/obj/item/bodypart/l_leg/set_disabled(new_disabled)
/obj/item/bodypart/l_leg/set_disabled(new_disabled, silent = FALSE)
. = ..()
if(!. || owner.stat >= UNCONSCIOUS)
return
if(!silent)
switch(disabled)
if(BODYPART_DISABLED_DAMAGE)
owner.emote("scream")
@@ -253,10 +254,11 @@
return BODYPART_DISABLED_PARALYSIS
return ..()
/obj/item/bodypart/r_leg/set_disabled(new_disabled)
/obj/item/bodypart/r_leg/set_disabled(new_disabled, silent = FALSE)
. = ..()
if(!. || owner.stat >= UNCONSCIOUS)
return
if(!silent)
switch(disabled)
if(BODYPART_DISABLED_DAMAGE)
owner.emote("scream")

View File

@@ -324,272 +324,11 @@
</ul>
<h2 class="date">12 September 2020</h2>
<h2 class="date">01 October 2020</h2>
<h3 class="author">BlueWildrose updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">The Polychromic winter coat's hoodie will now polychrome, alongside any other new polychromic items with toggleable headwear.</li>
<li class="bugfix">Minesweeper will no longer blow up the player's ears when they select "Play on the same board"</li>
<li class="rscadd">Slimepeople will find warm donk pockets among other toxin healing items even more repulsive, as they are anti-toxic.</li>
<li class="tweak">Slimepeople are now neutral to gross foods.</li>
</ul>
<h3 class="author">DeltaFire15 updated:</h3>
<ul class="changes bgimages16">
<li class="balance">AIs can no longer qdel() the gravity generator</li>
</ul>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="code_imp">Added some unit tests for reactions.</li>
<li class="refactor">replaced handle_changeling and handle_bloodsucker with signal registration</li>
</ul>
<h3 class="author">Sonic121x updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Fixed pill button on chemical press</li>
</ul>
<h3 class="author">TheObserver-sys updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Brass now has a proper datum. Aspiring Forgetenders rejoice!</li>
</ul>
<h3 class="author">Trilbyspaceclone updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Race based drinks will no longer stay inside your blood for ever.</li>
</ul>
<h3 class="author">Tupinambis updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Redid Cogstation atmos pipes to make it less cluttered.</li>
<li class="tweak">Removed a few doors from the main hallway to mitigate chokepoint issues</li>
<li class="bugfix">All belt hell conveyers are now on by default, so that belt hell actually works.</li>
<li class="bugfix">IDs for poddoors and belts and the like. Everything is now properly hooked and should work as expected (except for the pressure triggered mass drivers)</li>
<li class="bugfix">addresses most if not all roundstart active turfs.</li>
<li class="bugfix">Issue where wires were connected to the SMES improperly, and SMES were not properly precharged, resulting in power failure earlier than intended.</li>
<li class="bugfix">various rogue turfs and wirings.</li>
<li class="bugfix">security office APC being hooked to maintenance for some reason.</li>
<li class="bugfix">TEG is now directly wired to the SMES.</li>
<li class="code_imp">adds a subtype of mass drivers that is triggered by things being on it. TODO: Make these mass drivers trigger poddoors, to make belt hell fully functional.</li>
</ul>
<h3 class="author">lolman360 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">glaives now work again</li>
</ul>
<h3 class="author">zeroisthebiggay updated:</h3>
<ul class="changes bgimages16">
<li class="balance">Revolver is now poplocked down to fifteen people.</li>
</ul>
<h2 class="date">11 September 2020</h2>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="balance">Superconducting turfs now can't go below 0 celsius.</li>
</ul>
<h2 class="date">09 September 2020</h2>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Made superconductivity work for the first time literally ever.</li>
</ul>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">accents work better</li>
</ul>
<h2 class="date">08 September 2020</h2>
<h3 class="author">Ghommie updated:</h3>
<ul class="changes bgimages16">
<li class="spellcheck">fixed names of the Electrical Toolbox goodie pack and green croptop christmas suit.</li>
<li class="bugfix">Fixed turf visuals for real. Original PR by AnturK on tgstation.</li>
</ul>
<h3 class="author">KeRSedChaplain updated:</h3>
<ul class="changes bgimages16">
<li class="soundadd">added borg_deathsound.ogg and android_scream.ogg</li>
</ul>
<h3 class="author">silicons updated:</h3>
<ul class="changes bgimages16">
<li class="balance">meteor waves now have a static 5 minute timer.</li>
</ul>
<h2 class="date">07 September 2020</h2>
<h3 class="author">DeltaFire15 updated:</h3>
<ul class="changes bgimages16">
<li class="spellcheck">fixed a typo causing a span not to show.</li>
</ul>
<h3 class="author">Putnam for debugging ammo loading! Thx!! updated:</h3>
<ul class="changes bgimages16">
<li class="rscdel">Removed spell blade, diamond picaxe, and fire wand from lava land loot tables</li>
<li class="tweak">Each mini boss now has its own type of crate.</li>
<li class="tweak">Each spike has its own type of crate that it pulls its now smaller loot table from</li>
<li class="balance">Moved god eye from spike loot table to hard spawn collosses fight</li>
<li class="balance">Moved holoparasight from spike loot table to bubble gum</li>
<li class="balance">Moved magic meat hook from spike loot table to drake</li>
<li class="rscadd">2 more crates to Arena Shuttle as well as 4-4-4 of each new type of chest</li>
<li class="balance">Replaced the diamond pick loot with a better one</li>
<li class="tweak">Replaced the cursted katana with a non cursted verson that deals half the damage and has less block!</li>
<li class="rscadd">Three new potions, blue heals the mind like a mama potion, Green heals the soul aka the organs! Lastly Red heals the body, by 100 damage of each main types. Best not to waste them!</li>
<li class="rscadd">Four more "wands" Spellbooks! These fun little guys shoot out its own pages to do the affect, one will set the target on fire like a bullet, one will harm them a bit, one will heal the target a small bit - How nice! Last one will give them a few statis affects like a taser bolt but without as much power or tasing affect</li>
</ul>
<h2 class="date">06 September 2020</h2>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="rscdel">Dynamic no longer pushes events.</li>
<li class="balance">Made spontaneous brain trauma a good deal less annoying.</li>
</ul>
<h3 class="author">lolman360, NecromancerAnne updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">The ancient art of blacksmithing, now in pixels.</li>
<li class="imageadd">cool swords and shit (thanks anne)</li>
</ul>
<h3 class="author">raspy-on-osu updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">thermomachine examine text</li>
</ul>
<h2 class="date">05 September 2020</h2>
<h3 class="author">Bhijn updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Readded the old method of temperature notifications in the form of a new pair of shivering/sweating notifications.</li>
</ul>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Hilbert hotel flavor text for one particular snowflake hotel changed.</li>
<li class="admin">admins can now actually reduce threat level in dynamic</li>
<li class="tweak">Made owo.ogg smaller.</li>
<li class="tweak">Character saving unit test is now more verbose on failure.</li>
<li class="refactor">Added an extools proc hook alternative to rust_g logging.</li>
</ul>
<h3 class="author">raspy-on-osu updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">supermatter shard examine text</li>
<li class="tweak">protolathe item categories</li>
</ul>
<h2 class="date">04 September 2020</h2>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">ipcs can speak</li>
</ul>
<h2 class="date">03 September 2020</h2>
<h3 class="author">Ghommie updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Jaunters should now work with magic mirror chasming.</li>
<li class="bugfix">The photocopier can now print more than one copy at a time.</li>
<li class="bugfix">Alkali perspiration infos don't crash the Pandemic UI anymore.</li>
<li class="bugfix">Windoors can be actually tinted now.</li>
</ul>
<h2 class="date">02 September 2020</h2>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="code_imp">Added a unit test for character saving.</li>
<li class="balance">Plastitanium rapier no longer silently sleeps with no chance at counterplay when used by pacifists.</li>
<li class="bugfix">Fusion scan is now actually useful.</li>
</ul>
<h3 class="author">Tupinambis updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">moved the dakis, genital growth pills, and genital autosurgeons out of the maintenance loot table and into kinkmates.</li>
</ul>
<h3 class="author">raspy-on-osu updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">pyroclastic anomaly client spam</li>
</ul>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">you can hide your ckey now from the roundend report</li>
</ul>
<h2 class="date">01 September 2020</h2>
<h3 class="author">BlueWildrose updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">fixed slimes starting off hungry</li>
</ul>
<h2 class="date">31 August 2020</h2>
<h3 class="author">Arturlang updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Slimes can now damage structures, don't leave them unfed!</li>
</ul>
<h3 class="author">Chiirno updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Moves pill_bottles/dice to box/dice on CogStation.</li>
</ul>
<h3 class="author">Couls, ported by NecromancerAnne updated:</h3>
<ul class="changes bgimages16">
<li class="code_imp">cleans up mech backstabbing code</li>
</ul>
<h3 class="author">DeltaFire15 updated:</h3>
<ul class="changes bgimages16">
<li class="rscdel">teleport-to-ark ability of the eminence, commented out</li>
<li class="rscadd">teleport-to-obelisk ability for the eminence</li>
</ul>
<h3 class="author">Detective-Google updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">plasmamen have no more slowdown</li>
<li class="rscadd">object reskins now use very nice and cool radials</li>
</ul>
<h3 class="author">EmeraldSundisk updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds a pool to MetaStation</li>
<li class="tweak">Slight readjustments to the surrounding area</li>
<li class="bugfix">Fixes a handful of external airlocks</li>
</ul>
<h3 class="author">ForrestWick updated:</h3>
<ul class="changes bgimages16">
<li class="balance">removes wall walking boots from nukie uplink</li>
</ul>
<h3 class="author">Ghommie updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">e-gun overlays and some floor decals should have been fixed.</li>
</ul>
<h3 class="author">LetterN updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">tgchat</li>
</ul>
<h3 class="author">Lynxless updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Changed anatomic panacea into a direct buff, instead of a chem injection</li>
<li class="balance">Changed the values of anatomic panacea</li>
<li class="imageadd">Added a new icon for panacea's buff alert</li>
</ul>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Pref for genital/vore examine text</li>
<li class="bugfix">Fixed a couple events having ghost roles eligible.</li>
<li class="balance">Buffed slaughter demon: gets stronger as it eats people</li>
<li class="balance">Nerfed slaughter demon: no longer permanently round-removes all who are eaten by it, instead releasing their now-heartless bodies</li>
<li class="bugfix">Dynamic storytellers now calculate property weights properly.</li>
</ul>
<h3 class="author">Sonic121x updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Fix the four type of new tea that will stuck inside your vein.</li>
<li class="rscadd">drinking glass sprite for those tea.</li>
</ul>
<h3 class="author">kappa-sama updated:</h3>
<ul class="changes bgimages16">
<li class="balance">miners can no longer acquire funny antag item</li>
</ul>
<h3 class="author">lolman360 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">shuttle engine/heater sprites now face the right way</li>
</ul>
<h3 class="author">raspy-on-osu updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">TEG power output</li>
<li class="tweak">tesla movement priorities</li>
<li class="rscadd">tesla counterplay</li>
<li class="rscadd">tesla containment check (containment variable now usable)</li>
</ul>
<h3 class="author">silicons updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">brooms now sweep objects on MOVABLE_PRE_MOVE rather than MOVABLE_MOVED</li>
<li class="balance">firedoors no longer automatically open on touch when there's no pressure differences.</li>
</ul>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">buzz, buzz2 and ping are now all unrestricted emotes and can be used by anyone</li>
<li class="imagedel">the drake credit and pickle credit sprites have been removed</li>
<li class="refactor">tongue speech handling is now done by accent datums</li>
</ul>
<h3 class="author">zeroisthebiggay updated:</h3>
<ul class="changes bgimages16">
<li class="rscdel">waffleco</li>
<li class="soundadd">Slimepeople are given unique laughs and screams.</li>
<li class="tweak">Adds "warbles", "chimpers", and "puffs" to the customizable speech verbs for character.</li>
</ul>
<h2 class="date">30 August 2020</h2>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 KiB

After

Width:  |  Height:  |  Size: 287 KiB