/datum/artifact_effect/gravity_wave name = "gravity wave" effect_type = EFFECT_ENERGY var/last_wave_pull = 0 /datum/artifact_effect/gravity_wave/DoEffectTouch(var/mob/user) gravwave(user, effectrange, STAGE_TWO) /datum/artifact_effect/gravity_wave/DoEffectAura() 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) /datum/artifact_effect/gravity_wave/DoEffectPulse() holder.visible_message("\The [holder] distorts as local gravity intensifies, and shifts toward it.") gravwave(get_turf(holder), effectrange, STAGE_TWO) 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)