diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index 0dea00071e3..ca05c8bc3bf 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -321,6 +321,7 @@ mob/living/carbon/human/updateappearance(icon_update=1, mutcolor_update=0, mutat
var/num = rand(1, DNA_UNI_IDENTITY_BLOCKS)
var/newdna = setblock(M.dna.uni_identity, num, random_string(DNA_BLOCK_SIZE, hex_characters))
M.dna.uni_identity = newdna
+ M.updateappearance(mutations_overlay_update=1)
return
/proc/clean_dna(mob/living/carbon/M)
diff --git a/code/datums/weather/weather_types.dm b/code/datums/weather/weather_types.dm
index c63cdb306de..083c92d2937 100644
--- a/code/datums/weather/weather_types.dm
+++ b/code/datums/weather/weather_types.dm
@@ -119,18 +119,14 @@
desc = "A cloud of intense radiation passes through the area dealing rad damage to those who are unprotected."
telegraph_duration = 300
- //telegraph_sound = 'sound/lavaland/ash_storm_windup.ogg' //TODO: Get sounds and sprite overlays
- //telegraph_overlay = "light_ash"
+ telegraph_message = "The air begins to grow warm."
weather_message = "You feel waves of heat wash over you! Find shelter!"
weather_duration_lower = 600
weather_duration_upper = 1500
- //weather_sound = 'sound/lavaland/ash_storm_start.ogg'
- //weather_overlay = "ash_storm"
end_duration = 100
- //end_sound = 'sound/lavaland/ash_storm_end.ogg'
- //end_overlay = "light_ash"
+ end_message = "The air seems to be cooling off again."
area_type = /area
protected_areas = list(/area/maintenance, /area/turret_protected/ai_upload, /area/turret_protected/ai_upload_foyer, /area/turret_protected/ai)
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 6850dc1ed0f..6d67ed7ad7c 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -45,10 +45,11 @@
m_type = 2
if ("collapse","collapses")
- Paralyse(2)
- adjustStaminaLoss(100) // Hampers abuse against simple mobs, but still leaves it a viable option.
- message = "[src] collapses!"
- m_type = 2
+ if(status_flags & CANPARALYSE) //You can't collapse if you can't actually collapse.
+ Paralyse(2)
+ adjustStaminaLoss(100) // Hampers abuse against simple mobs, but still leaves it a viable option.
+ message = "[src] collapses!"
+ m_type = 2
if ("cough","coughs")
if (miming)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 88455c18f79..9f0c803600f 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -804,17 +804,18 @@
if(!(RADIMMUNE in specflags))
if(H.radiation)
if (H.radiation > 100)
+ if(!H.weakened)
+ H.emote("collapse")
H.Weaken(10)
H << "You feel weak."
- H.emote("collapse")
-
switch(H.radiation)
-
if(50 to 75)
if(prob(5))
+ if(!H.weakened)
+ H.emote("collapse")
H.Weaken(3)
H << "You feel weak."
- H.emote("collapse")
+
if(prob(15))
if(!( H.hair_style == "Shaved") || !(H.hair_style == "Bald") || (HAIR in specflags))
H << "Your hair starts to \
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index f3e208b6e95..d3e541143b0 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -22,17 +22,19 @@
if (radiation)
if (radiation > 100)
+ if(!weakened)
+ emote("collapse")
Weaken(10)
src << "You feel weak."
- emote("collapse")
switch(radiation)
if(50 to 75)
if(prob(5))
+ if(!weakened)
+ emote("collapse")
Weaken(3)
src << "You feel weak."
- emote("collapse")
if(75 to 100)
if(prob(1))
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index 16bc71cc637..9cd7b339a0f 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -84,7 +84,7 @@
//this updates all special effects: stunned, sleeping, weakened, druggy, stuttering, etc..
/mob/living/proc/handle_status_effects()
if(paralysis)
- AdjustParalysis(-1)
+ AdjustParalysis(-1, 1, 1)
if(stunned)
AdjustStunned(-1, 1, 1)
if(weakened)
diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm
index 21fae144f2c..649fe0462bb 100644
--- a/code/modules/mob/status_procs.dm
+++ b/code/modules/mob/status_procs.dm
@@ -46,24 +46,24 @@
/////////////////////////////////// PARALYSIS ////////////////////////////////////
-/mob/proc/Paralyse(amount, updating = 1)
- if(status_flags & CANPARALYSE)
+/mob/proc/Paralyse(amount, updating = 1, ignore_canparalyse = 0)
+ if(status_flags & CANPARALYSE || ignore_canparalyse)
var/old_paralysis = paralysis
paralysis = max(max(paralysis,amount),0)
if((!old_paralysis && paralysis) || (old_paralysis && !paralysis))
if(updating)
update_stat()
-/mob/proc/SetParalysis(amount, updating = 1)
- if(status_flags & CANPARALYSE)
+/mob/proc/SetParalysis(amount, updating = 1, ignore_canparalyse = 0)
+ if(status_flags & CANPARALYSE || ignore_canparalyse)
var/old_paralysis = paralysis
paralysis = max(amount,0)
if((!old_paralysis && paralysis) || (old_paralysis && !paralysis))
if(updating)
update_stat()
-/mob/proc/AdjustParalysis(amount, updating = 1)
- if(status_flags & CANPARALYSE)
+/mob/proc/AdjustParalysis(amount, updating = 1, ignore_canparalyse = 0)
+ if(status_flags & CANPARALYSE || ignore_canparalyse)
var/old_paralysis = paralysis
paralysis = max(paralysis + amount,0)
if((!old_paralysis && paralysis) || (old_paralysis && !paralysis))