From 9e0e080376d63d324c4a1f75410cec9823efab92 Mon Sep 17 00:00:00 2001 From: d3athrow Date: Fri, 20 Jun 2014 09:20:51 -0500 Subject: [PATCH] Genetics tweaks and changelog. Stealth is overtime instead of instantaneous Cryokinesis is less OP, deals less damage to unclothed targets and respects hardsuits and internals. Leap is nerfed, cooldown doubled as well as not being able to leap while restrained. T-ray scanners and flashes will reveal 'invisible' mobs for a short period of time. this is a work in progress and possibly buggy! Conflicts: html/changelog.html --- code/game/dna/genes/goon_powers.dm | 53 +++++++++++++++++---- code/game/objects/items/devices/flash.dm | 10 +++- code/game/objects/items/devices/scanners.dm | 7 +++ 3 files changed, 60 insertions(+), 10 deletions(-) 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)