diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm
index 38f53a7e4da..7adf1061b77 100644
--- a/code/game/objects/effects/aliens.dm
+++ b/code/game/objects/effects/aliens.dm
@@ -301,6 +301,17 @@ Alien plants should do something if theres a lot of poison
var/atom/target
var/ticks = 0
+ var/target_strength = 0
+
+/obj/effect/alien/acid/New(loc, target)
+ ..(loc)
+ src.target = target
+
+ if(isturf(target)) // Turf take twice as long to take down.
+ target_strength = 8
+ else
+ target_strength = 4
+ tick()
/obj/effect/alien/acid/proc/tick()
if(!target)
@@ -308,10 +319,7 @@ Alien plants should do something if theres a lot of poison
ticks += 1
- for(var/mob/O in hearers(src, null))
- O.show_message("\green [src.target] sizzles and begins to melt under the bubbling mess of acid!", 1)
-
- if(ticks >= 3)
+ if(ticks >= target_strength)
for(var/mob/O in hearers(src, null))
O.show_message("\green [src.target] collapses under its own weight into a puddle of goop and undigested debris!", 1)
@@ -323,7 +331,17 @@ Alien plants should do something if theres a lot of poison
del(target)
del(src)
return
- spawn(rand(100, 150)) tick()
+
+ switch(target_strength - ticks)
+ if(6)
+ visible_message("\green [src.target] is holding up against the acid!")
+ if(4)
+ visible_message("\green [src.target]\s structure is being melted by the acid!")
+ if(2)
+ visible_message("\green [src.target] is struggling to withstand the acid!")
+ if(0 to 1)
+ visible_message("\green [src.target] begins to crumble under the acid!")
+ spawn(rand(150, 200)) tick()
/*
* Egg
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index ca271968b95..e2b7c404d73 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -76,17 +76,6 @@ Doesn't work on other aliens/AI.*/
src << "\green You need to be closer."
return
-/*Xenos now have a proc and a verb for drenching stuff in acid. I couldn't get them to work right when combined so this was the next best solution.
-The first proc defines the acid throw function while the other two work in the game itself. Probably a good idea to revise this later.
-I kind of like the right click only--the window version can get a little confusing. Perhaps something telling the alien they need to right click?
-/N*/
-
-/proc/acid(user as mob, var/atom/O as obj|turf)
- var/obj/effect/alien/acid/A = new(get_turf(O))
- A.target = O
- for(var/mob/M in viewers(src, null))
- M.show_message(text("\green [user] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!"), 1)
- A.tick()
/mob/living/carbon/alien/humanoid/proc/corrosive_acid(O as obj|turf in oview(1)) //If they right click to corrode, an error will flash if its an invalid target./N
set name = "Corrossive Acid (200)"
@@ -104,14 +93,20 @@ I kind of like the right click only--the window version can get a little confusi
// TURF CHECK
else if(istype(O, /turf/simulated))
var/turf/T = O
+ // R WALL
if(istype(T, /turf/simulated/wall/r_wall))
src << "\green You cannot dissolve this object."
return
+ // R FLOOR
+ if(istype(T, /turf/simulated/floor/engine))
+ src << "\green You cannot dissolve this object."
+ return
else// Not a type we can acid.
return
adjustToxLoss(-200)
- acid(src, O)
+ new /obj/effect/alien/acid(get_turf(O), O)
+ visible_message("\green [src] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!")
else
src << "\green Target is too far away."
return
diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm
index 8aeec36fefd..7623ca13503 100644
--- a/code/modules/mob/living/carbon/metroid/metroid.dm
+++ b/code/modules/mob/living/carbon/metroid/metroid.dm
@@ -189,6 +189,10 @@
stat(null,"Power Level: [powerlevel]")
+/mob/living/carbon/metroid/adjustFireLoss(amount)
+ ..(-abs(amount)) // Heals them
+ return
+
/mob/living/carbon/metroid/bullet_act(var/obj/item/projectile/Proj)
attacked += 10
..(Proj)
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index 460d7db7bbe..2785f19ff9a 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -64,7 +64,7 @@
for(var/obj/item/weapon/grab/G in src)
G.process()
- if(!client && !stat)
+ if(!client && stat == CONSCIOUS)
if(prob(33) && canmove && isturf(loc))
step(src, pick(cardinal))
if(prob(1))
@@ -158,7 +158,8 @@
var/datum/gas_mixture/environment = loc.return_air()
var/datum/air_group/breath
-
+ if(health < 0)
+ losebreath++
if(losebreath>0) //Suffocating so do not take a breath
losebreath--
if (prob(75)) //High chance of gasping for air
diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm
index 67a59860204..8fff49211e6 100644
--- a/code/modules/power/power.dm
+++ b/code/modules/power/power.dm
@@ -409,7 +409,6 @@
if(H.gloves)
var/obj/item/clothing/gloves/G = H.gloves
if(G.siemens_coefficient == 0) return 0 //to avoid spamming with insulated glvoes on
- else if(ismetroid(M)) return 0
var/area/source_area
if(istype(power_source,/area))