diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm
index 267eb4bed5f..2c544e2dfd2 100644
--- a/code/game/dna/genes/goon_powers.dm
+++ b/code/game/dna/genes/goon_powers.dm
@@ -56,7 +56,7 @@
if(!istype(T))
return
if(T.lighting_lumcount <= 2)
- M.alpha = 0
+ M.alpha -= 25
else
M.alpha = round(255 * 0.80)
@@ -72,7 +72,7 @@
OnMobLife(var/mob/M)
if((world.time - M.last_movement) >= 30 && !M.stat && M.canmove && !M.restrained())
- M.alpha = 0
+ M.alpha -= 25
else
M.alpha = round(255 * 0.80)
@@ -150,12 +150,26 @@
if (M_RESIST_COLD in C.mutations)
C.visible_message("\red A cloud of fine ice crystals engulfs [C.name], but disappears almost instantly!")
return
+ var/handle_suit = 0
+ if(ishuman(C))
+ var/mob/living/carbon/human/H = C
+ if(istype(H.head, /obj/item/clothing/head/helmet/space))
+ if(istype(H.wear_suit, /obj/item/clothing/suit/space))
+ handle_suit = 1
+ if(H.internal)
+ H.visible_message("\red A cloud of fine ice crystals engulfs [H]!",
+ "A cloud of fine ice crystals cover your [H.head]'s visor.")
+ else
+ H.visible_message("\red A cloud of fine ice crystals engulfs [H]!",
+ "A cloud of fine ice crystals cover your [H.head]'s visor and make it into your air vents!.")
+ H.bodytemperature = max(0, H.bodytemperature - 50)
+ H.adjustFireLoss(5)
+ if(!handle_suit)
+ C.bodytemperature = max(0, C.bodytemperature - 100)
+ C.adjustFireLoss(10)
+ C.ExtinguishMob()
- C.bodytemperature = 0
- C.adjustFireLoss(20)
- C.ExtinguishMob()
-
- C.visible_message("\red A cloud of fine ice crystals engulfs [C]!")
+ C.visible_message("\red A cloud of fine ice crystals engulfs [C]!")
//playsound(usr.loc, 'bamf.ogg', 50, 0)
@@ -323,20 +337,41 @@
include_user = 1
charge_type = "recharge"
- charge_max = 30
+ charge_max = 60
clothes_req = 0
stat_allowed = 0
invocation_type = "none"
/obj/effect/proc_holder/spell/targeted/leap/cast(list/targets)
+ var/failure = 0
if (istype(usr.loc,/mob/))
usr << "\red You can't jump right now!"
return
if (istype(usr.loc,/turf/))
+
+
+ if(usr.restrained())//Why being pulled while cuffed prevents you from moving
+ for(var/mob/M in range(usr, 1))
+ if(M.pulling == usr)
+ if(!M.restrained() && M.stat == 0 && M.canmove && usr.Adjacent(M))
+ failure = 1
+ else
+ M.stop_pulling()
+
+ if(usr.pinned.len)
+ failure = 1
+
usr.visible_message("\red [usr.name] takes a huge leap!")
playsound(usr.loc, 'sound/weapons/thudswoosh.ogg', 50, 1)
+ if(failure)
+ usr.Weaken(5)
+ usr.Stun(5)
+ usr.visible_message(" \the [usr] attempts to leap away but is slammed back down to the ground!",
+ "You attempt to leap away but are suddenly slammed back down to the ground!",
+ "You hear the flexing of powerful muscles and suddenly a crash as a body hits the floor.")
+ return 0
var/prevLayer = usr.layer
usr.layer = 9
@@ -534,4 +569,4 @@
New()
..()
- block = SUPERFARTBLOCK
\ No newline at end of file
+ block = SUPERFARTBLOCK
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index 082a6d680ad..c7f7b1b6741 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -163,12 +163,20 @@
sleep(5)
del(animation)
- for(var/mob/living/carbon/M in oviewers(3, null))
+ for(var/mob/living/carbon/M in viewers(3, null))
if(prob(50))
if (locate(/obj/item/weapon/cloaking_device, M))
for(var/obj/item/weapon/cloaking_device/S in M)
S.active = 0
S.icon_state = "shield0"
+ if(M.alpha < 255)
+ var/oldalpha = M.alpha
+ if(prob(80))
+ M.alpha = 255
+ M.visible_message("[M] suddenly becomes fully visible!",\
+ "You see a bright flash of light and are suddenly fully visible again.")
+ spawn(10)
+ M.alpha = oldalpha
var/safety = M:eyecheck()
if(!safety)
if(!M.blinded)
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 08e94c58f89..8e0c4b03e8f 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -56,6 +56,13 @@ REAGENT SCANNER
var/turf/U = O.loc
if(U.intact)
O.invisibility = 101
+ for(var/mob/living/M in T.contents)
+ var/oldalpha = M.alpha
+ if(M.alpha < 255 && istype(M))
+ M.alpha = 255
+ spawn(10)
+ if(M)
+ M.alpha = oldalpha
var/mob/living/M = locate() in T
if(M && M.invisibility == 2)