diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 30bc38bf624..5dc5527abfa 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -22,10 +22,17 @@ /obj/effect/anomaly/proc/anomalyEffect() - if(prob(50)) + if(prob(70)) step(src,pick(alldirs)) +/obj/effect/anomaly/ex_act(severity, target) + switch(severity) + if(1) + qdel(src) + if(2 to 3) + return + /obj/effect/anomaly/proc/anomalyNeutralize() PoolOrNew(/obj/effect/particle_effect/smoke/bad, loc) @@ -37,7 +44,7 @@ /obj/effect/anomaly/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/device/analyzer)) - user << "Analyzing... [src]'s unstable field is fluctuating along frequency [aSignal.code]:[format_frequency(aSignal.frequency)]." + user << "Analyzing... [src]'s unstable field is fluctuating along frequency [format_frequency(aSignal.frequency)], code [aSignal.code]." /////////////////////// @@ -60,13 +67,12 @@ step_towards(O,src) for(var/mob/living/M in orange(4, src)) step_towards(M,src) - for(var/obj/O in orange(1,src)) + for(var/obj/O in range(0,src)) if(!O.anchored) - var/mob/living/target = locate() in view(10,src) - if(!target) + var/mob/living/target = locate() in view(4,src) + if(target && !target.stat) O.throw_at(target, 5, 10) - /obj/effect/anomaly/grav/Bump(mob/A) gravShock(A) return @@ -88,11 +94,41 @@ /obj/effect/anomaly/flux name = "flux wave anomaly" icon_state = "electricity2" + density = 1 + var/canshock = 0 + var/shockdamage = 20 /obj/effect/anomaly/flux/New() ..() aSignal.origin_tech = "powerstorage=6;programming=4;plasmatech=4" +/obj/effect/anomaly/flux/anomalyEffect() + ..() + + canshock = 1 + + +/obj/effect/anomaly/flux/Bump(mob/living/M) + mobShock(M) + +/obj/effect/anomaly/flux/Bumped(mob/living/M) + mobShock(M) + +/obj/effect/anomaly/flux/proc/mobShock(mob/living/M) + if(canshock && isliving(M)) + canshock = 0 //Just so you don't instakill yourself if you slam into the anomaly five times in a second. + if(iscarbon(M)) + if(ishuman(M)) + M.electrocute_act(shockdamage, "[name]", safety=1) + return + M.electrocute_act(shockdamage, "[name]") + return + else + M.adjustFireLoss(shockdamage) + M.visible_message("[M] was shocked by \the [name]!", \ + "You feel a powerful shock coursing through your body!", \ + "You hear a heavy electrical crack.") + ///////////////////// /obj/effect/anomaly/bluespace @@ -105,9 +141,14 @@ ..() aSignal.origin_tech = "bluespace=5;magnets=5;powerstorage=3" +/obj/effect/anomaly/bluespace/anomalyEffect() + ..() + for(var/mob/living/M in range(1,src)) + do_teleport(M, locate(M.x, M.y, M.z), 4) + /obj/effect/anomaly/bluespace/Bumped(atom/A) if(isliving(A)) - do_teleport(A, locate(A.x, A.y, A.z), 10) + do_teleport(A, locate(A.x, A.y, A.z), 8) return ///////////////////// @@ -124,7 +165,7 @@ ..() var/turf/simulated/T = get_turf(src) if(istype(T)) - T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 3) + T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS | SPAWN_OXYGEN, 20) ///////////////////// @@ -146,13 +187,13 @@ grav(rand(0,3), rand(2,3), 50, 25) //Throwing stuff around! - for(var/obj/O in orange(1,src)) + for(var/obj/O in range(2,src)) + if(O == src) + return //DON'T DELETE YOURSELF GOD DAMN if(!O.anchored) - var/mob/living/target = locate() in view(5,src) - if(!target) - return - O.throw_at(target, 5, 10) - return + var/mob/living/target = locate() in view(4,src) + if(target && !target.stat) + O.throw_at(target, 7, 5) else O.ex_act(2) diff --git a/code/modules/events/anomaly_flux.dm b/code/modules/events/anomaly_flux.dm index fd568e4c029..0c99d90f034 100644 --- a/code/modules/events/anomaly_flux.dm +++ b/code/modules/events/anomaly_flux.dm @@ -22,5 +22,5 @@ /datum/round_event/anomaly/anomaly_flux/end() if(newAnomaly.loc)//If it hasn't been neutralized, it's time to blow up. - explosion(newAnomaly, -1, 3, 8, 10) + explosion(newAnomaly, 1, 4, 16, 18) //Low devistation, but hits a lot of stuff. qdel(newAnomaly) \ No newline at end of file diff --git a/code/modules/events/anomaly_pyro.dm b/code/modules/events/anomaly_pyro.dm index 9f5feea38e1..0eee47ebbe4 100644 --- a/code/modules/events/anomaly_pyro.dm +++ b/code/modules/events/anomaly_pyro.dm @@ -28,9 +28,12 @@ /datum/round_event/anomaly/anomaly_pyro/end() if(newAnomaly.loc) - explosion(get_turf(newAnomaly), -1,0,3, flame_range = 4) + var/turf/simulated/T = get_turf(newAnomaly) + if(istype(T)) + T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS | SPAWN_OXYGEN, 200) //Make it hot and burny for the new slime var/mob/living/simple_animal/slime/S = new/mob/living/simple_animal/slime(get_turf(newAnomaly)) S.colour = pick("red", "orange") + S.rabid = 1 qdel(newAnomaly) \ No newline at end of file