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)