diff --git a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm index 72ed326b26..0770c62bec 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm @@ -130,13 +130,19 @@ playsound(src, 'sound/effects/empulse.ogg', 50, 1) playsound(linked_gateway, 'sound/effects/empulse.ogg', 50, 1) transform = matrix() * 1.5 - animate(src, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW) linked_gateway.transform = matrix() * 1.5 - animate(linked_gateway, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW) A.forceMove(get_turf(linked_gateway)) if(!no_cost) uses = max(0, uses - 1) linked_gateway.uses = max(0, linked_gateway.uses - 1) + if(!uses) + animate(src, transform = matrix() * 0.1, time = 10, flags = ANIMATION_END_NOW) + animate(linked_gateway, transform = matrix() * 0.1, time = 10, flags = ANIMATION_END_NOW) + density = FALSE + linked_gateway.density = FALSE + else + animate(src, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW) + animate(linked_gateway, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW) addtimer(CALLBACK(src, .proc/check_uses), 10) return TRUE diff --git a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm index 11ee117b3a..5bf9738eb7 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm @@ -68,7 +68,7 @@ if(!purpose_fulfilled) var/area/gate_area = get_area(src) hierophant_message("An Ark of the Clockwork Justicar has fallen at [gate_area.map_name]!") - send_to_playing_players(sound(null, 0, channel = CHANNEL_JUSTICAR_ARK)) + sound_to_playing_players(channel = CHANNEL_JUSTICAR_ARK, S = sound(null, 0)) var/was_stranded = SSshuttle.emergency.mode == SHUTTLE_STRANDED SSshuttle.clearHostileEnvironment(src) if(!was_stranded && !purpose_fulfilled) @@ -87,7 +87,7 @@ resistance_flags |= INDESTRUCTIBLE countdown.stop() visible_message("[src] begins to pulse uncontrollably... you might want to run!") - send_to_playing_players(sound('sound/effects/clockcult_gateway_disrupted.ogg', 0, channel = CHANNEL_JUSTICAR_ARK, volume = 50)) + sound_to_playing_players(volume = 50, channel = CHANNEL_JUSTICAR_ARK, S = sound('sound/effects/clockcult_gateway_disrupted.ogg', 0)) make_glow() glow.icon_state = "clockwork_gateway_disrupted" resistance_flags |= INDESTRUCTIBLE @@ -208,7 +208,7 @@ if(still_needs_components()) if(!first_sound_played) priority_announce("Massive energy anomaly detected on short-range scanners. Attempting to triangulate location...", "Anomaly Alert") - send_to_playing_players(sound('sound/effects/clockcult_gateway_charging.ogg', 1, channel = CHANNEL_JUSTICAR_ARK, volume = 10)) + sound_to_playing_players(volume = 10, channel = CHANNEL_JUSTICAR_ARK, S = sound('sound/effects/clockcult_gateway_charging.ogg', 1)) first_sound_played = TRUE make_glow() glow.icon_state = "clockwork_gateway_components" @@ -228,7 +228,8 @@ switch(progress_in_seconds) if(-INFINITY to GATEWAY_REEBE_FOUND) if(!second_sound_played) - send_to_playing_players(sound('sound/effects/clockcult_gateway_charging.ogg', 1, channel = CHANNEL_JUSTICAR_ARK, volume = 30)) + new /obj/effect/temp_visual/decoy/fading/threesecond(loc, glow) + sound_to_playing_players(volume = 30, channel = CHANNEL_JUSTICAR_ARK, S = sound('sound/effects/clockcult_gateway_charging.ogg', 1)) second_sound_played = TRUE make_glow() glow.icon_state = "clockwork_gateway_charging" @@ -236,13 +237,15 @@ if(!third_sound_played) var/area/gate_area = get_area(src) priority_announce("Location of massive energy anomaly has been triangulated. Location: [gate_area.map_name].", "Anomaly Alert") - send_to_playing_players(sound('sound/effects/clockcult_gateway_active.ogg', 1, channel = CHANNEL_JUSTICAR_ARK, volume = 35)) + new /obj/effect/temp_visual/decoy/fading/threesecond(loc, glow) + sound_to_playing_players(volume = 35, channel = CHANNEL_JUSTICAR_ARK, S = sound('sound/effects/clockcult_gateway_active.ogg', 1)) third_sound_played = TRUE make_glow() glow.icon_state = "clockwork_gateway_active" if(GATEWAY_RATVAR_COMING to GATEWAY_RATVAR_ARRIVAL) if(!fourth_sound_played) - send_to_playing_players(sound('sound/effects/clockcult_gateway_closing.ogg', 1, channel = CHANNEL_JUSTICAR_ARK, volume = 40)) + new /obj/effect/temp_visual/decoy/fading/threesecond(loc, glow) + sound_to_playing_players(volume = 40, channel = CHANNEL_JUSTICAR_ARK, S = sound('sound/effects/clockcult_gateway_closing.ogg', 1)) fourth_sound_played = TRUE make_glow() glow.icon_state = "clockwork_gateway_closing" @@ -252,20 +255,20 @@ resistance_flags |= INDESTRUCTIBLE purpose_fulfilled = TRUE make_glow() - animate(glow, transform = matrix() * 1.5, alpha = 255, time = 125) - send_to_playing_players(sound('sound/effects/ratvar_rises.ogg', 0, channel = CHANNEL_JUSTICAR_ARK)) //End the sounds + animate(glow, transform = matrix() * 3, time = 125) + sound_to_playing_players('sound/effects/ratvar_rises.ogg', channel = CHANNEL_JUSTICAR_ARK) //End the sounds sleep(125) - make_glow() - animate(glow, transform = matrix() * 3, alpha = 0, time = 5) var/turf/startpoint = get_turf(src) - QDEL_IN(src, 3) - sleep(3) + make_glow() + glow.transform = matrix() * 4.5 + animate(glow, transform = matrix() * 0.1, time = 10) + QDEL_IN(src, 10) GLOB.clockwork_gateway_activated = TRUE new/obj/structure/destructible/clockwork/massive/ratvar(startpoint) send_to_playing_players("\"[text2ratvar("See Engine's mercy")]!\"\n\ \"[text2ratvar("Observe Engine's design skills")]!\"\n\"[text2ratvar("Behold Engine's light")]!!\"\n\ \"[text2ratvar("Gaze upon Engine's power")].\"") - send_to_playing_players('sound/magic/clockwork/invoke_general.ogg') + sound_to_playing_players('sound/effects/empulse.ogg') var/x0 = startpoint.x var/y0 = startpoint.y for(var/I in spiral_range_turfs(255, startpoint)) diff --git a/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm b/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm index c8b81a8ef0..c604e106f3 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm @@ -23,12 +23,12 @@ for(var/obj/O in GLOB.all_clockwork_objects) O.ratvar_act() START_PROCESSING(SSobj, src) + INVOKE_ASYNC(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 0, null, FALSE, 0) send_to_playing_players("\"[text2ratvar("ONCE AGAIN MY LIGHT SHALL SHINE ACROSS THIS PATHETIC REALM")]!!\"") sound_to_playing_players('sound/effects/ratvar_reveal.ogg') var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/clockwork_effects.dmi', "ratvar_alert") var/area/A = get_area(src) notify_ghosts("The Justiciar's light calls to you! Reach out to Ratvar in [A.name] to be granted a shell to spread his glory!", null, source = src, alert_overlay = alert_overlay) - INVOKE_ASYNC(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 0, null, FALSE, 0) /obj/structure/destructible/clockwork/massive/ratvar/Destroy() GLOB.ratvar_awakens-- diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 4c80f53b94..7810df2a9a 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -476,7 +476,7 @@ structure_check() searches for nearby cultist structures required for the invoca //BEGIN THE SUMMONING used = TRUE ..() - send_to_playing_players('sound/effects/dimensional_rend.ogg') + sound_to_playing_players('sound/effects/dimensional_rend.ogg') var/turf/T = get_turf(src) sleep(40) if(src) diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index dc293bf4a4..6951ac350d 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -194,6 +194,9 @@ . = ..() animate(src, alpha = 0, time = duration) +/obj/effect/temp_visual/decoy/fading/threesecond + duration = 40 + /obj/effect/temp_visual/decoy/fading/fivesecond duration = 50 diff --git a/code/game/sound.dm b/code/game/sound.dm index ff35915b08..86fdceb3c3 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -80,12 +80,13 @@ SEND_SOUND(src, S) -/proc/sound_to_playing_players(sound, volume = 100, vary) - sound = get_sfx(sound) - for(var/M in GLOB.player_list) - if(ismob(M) && !isnewplayer(M)) - var/mob/MO = M - MO.playsound_local(MO, sound, volume, vary, pressure_affected = FALSE) +/proc/sound_to_playing_players(soundin, volume = 100, vary = FALSE, frequency = 0, falloff = FALSE, channel = 0, pressure_affected = FALSE, sound/S) + if(!S) + S = sound(get_sfx(soundin)) + for(var/m in GLOB.player_list) + if(ismob(m) && !isnewplayer(m)) + var/mob/M = m + M.playsound_local(M, null, volume, vary, frequency, falloff, channel, pressure_affected, S) /proc/open_sound_channel() var/static/next_channel = 1 //loop through the available 1024 - (the ones we reserve) channels and pray that its not still being used diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi index 102fc01000..e6315d6f48 100644 Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ