From 4b48b9702fbaa16a64c9b9abf28beccfd2d3fae8 Mon Sep 17 00:00:00 2001 From: Casey Date: Thu, 25 Aug 2022 18:57:10 -0400 Subject: [PATCH] Merge pull request #13567 from VOREStation/upstream-merge-8626 [MIRROR] Adds singularity artifact effect --- .../effects/gravitational_waves.dm | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/code/modules/xenoarcheaology/effects/gravitational_waves.dm b/code/modules/xenoarcheaology/effects/gravitational_waves.dm index d34b352ea0..c22eb87167 100644 --- a/code/modules/xenoarcheaology/effects/gravitational_waves.dm +++ b/code/modules/xenoarcheaology/effects/gravitational_waves.dm @@ -1,30 +1,42 @@ - -/datum/artifact_effect/gravity_wave +/datum/artifact_effect/extreme/gravity_wave name = "gravity wave" effect_type = EFFECT_ENERGY var/last_wave_pull = 0 + var/pull_power effect_state = "gravisphere" effect_color = "#d8c3ff" -/datum/artifact_effect/gravity_wave/DoEffectTouch(var/mob/user) - gravwave(user, effectrange, STAGE_TWO) +/datum/artifact_effect/extreme/gravity_wave/New() + ..() + effect_type = pick(EFFECT_ENERGY, EFFECT_BLUESPACE, EFFECT_PSIONIC) + switch(pick(100;1, 50;2, 25;3)) + if(1) //short range + effectrange = rand(2, 4) + if(2) //medium range + effectrange = rand(5, 9) + if(3) //large range + effectrange = rand(9, 14) + pull_power = rand(STAGE_ONE, STAGE_FOUR) -/datum/artifact_effect/gravity_wave/DoEffectAura() +/datum/artifact_effect/extreme/gravity_wave/DoEffectTouch(var/mob/user) + gravwave(user, effectrange, pull_power) + +/datum/artifact_effect/extreme/gravity_wave/DoEffectAura() var/atom/holder = get_master_holder() var/seconds_since_last_pull = max(0, round((last_wave_pull - world.time) / 10)) if(prob(10 + seconds_since_last_pull)) holder.visible_message("\The [holder] distorts as local gravity intensifies, and shifts toward it.") last_wave_pull = world.time - gravwave(get_turf(holder), effectrange, STAGE_TWO) + gravwave(get_turf(holder), effectrange, pull_power) -/datum/artifact_effect/gravity_wave/DoEffectPulse() +/datum/artifact_effect/extreme/gravity_wave/DoEffectPulse() var/atom/holder = get_master_holder() holder.visible_message("\The [holder] distorts as local gravity intensifies, and shifts toward it.") - gravwave(get_turf(holder), effectrange, STAGE_TWO) + gravwave(get_turf(holder), effectrange, pull_power) -/proc/gravwave(var/atom/target, var/pull_range = 7, var/pull_power = STAGE_TWO) +/datum/artifact_effect/extreme/gravity_wave/proc/gravwave(var/atom/target, var/pull_range = 7, var/pull_power = STAGE_TWO) for(var/atom/A in oview(pull_range, target)) A.singularity_pull(target, pull_power)