diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm
index 31992e4c276..d1c8e545f90 100644
--- a/code/__HELPERS/game.dm
+++ b/code/__HELPERS/game.dm
@@ -472,6 +472,11 @@
return new_character
+/proc/send_to_playing_players(thing) //sends a whatever to all playing players; use instead of world << where needed
+ for(var/M in player_list)
+ if(M && !isnewplayer(M))
+ M << thing
+
/proc/window_flash(var/client_or_usr)
if (!client_or_usr)
return
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 7887bf44916..1c236867060 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
@@ -32,7 +32,7 @@
if(!purpose_fulfilled)
var/area/gate_area = get_area(src)
hierophant_message("A gateway to the Celestial Derelict has fallen at [gate_area.map_name]!")
- world << sound(null, 0, channel = 8)
+ send_to_playing_players(sound(null, 0, channel = 8))
if(glow)
qdel(glow)
glow = null
@@ -46,7 +46,7 @@
if(!disassembled)
countdown.stop()
visible_message("The [src] begins to pulse uncontrollably... you might want to run!")
- world << sound('sound/effects/clockcult_gateway_disrupted.ogg', 0, channel = 8, volume = 50)
+ send_to_playing_players(sound('sound/effects/clockcult_gateway_disrupted.ogg', 0, channel = 8, volume = 50))
make_glow()
glow.icon_state = "clockwork_gateway_disrupted"
resistance_flags |= INDESTRUCTIBLE
@@ -94,27 +94,28 @@
/obj/structure/destructible/clockwork/massive/celestial_gateway/process()
if(!progress_in_seconds || prob(7))
- for(var/M in mob_list)
- M << "You hear otherworldly sounds from the [dir2text(get_dir(get_turf(M), get_turf(src)))]..."
+ for(var/M in player_list)
+ if(M && !isnewplayer(M))
+ M << "You hear otherworldly sounds from the [dir2text(get_dir(get_turf(M), get_turf(src)))]..."
if(!obj_integrity)
return 0
progress_in_seconds += GATEWAY_SUMMON_RATE
switch(progress_in_seconds)
if(-INFINITY to GATEWAY_REEBE_FOUND)
if(!first_sound_played)
- world << sound('sound/effects/clockcult_gateway_charging.ogg', 1, channel = 8, volume = 30)
+ send_to_playing_players(sound('sound/effects/clockcult_gateway_charging.ogg', 1, channel = 8, volume = 30))
first_sound_played = TRUE
make_glow()
glow.icon_state = "clockwork_gateway_charging"
if(GATEWAY_REEBE_FOUND to GATEWAY_RATVAR_COMING)
if(!second_sound_played)
- world << sound('sound/effects/clockcult_gateway_active.ogg', 1, channel = 8, volume = 35)
+ send_to_playing_players(sound('sound/effects/clockcult_gateway_active.ogg', 1, channel = 8, volume = 35))
second_sound_played = TRUE
make_glow()
glow.icon_state = "clockwork_gateway_active"
if(GATEWAY_RATVAR_COMING to GATEWAY_RATVAR_ARRIVAL)
if(!third_sound_played)
- world << sound('sound/effects/clockcult_gateway_closing.ogg', 1, channel = 8, volume = 40)
+ send_to_playing_players(sound('sound/effects/clockcult_gateway_closing.ogg', 1, channel = 8, volume = 40))
third_sound_played = TRUE
make_glow()
glow.icon_state = "clockwork_gateway_closing"
@@ -125,7 +126,7 @@
purpose_fulfilled = TRUE
make_glow()
animate(glow, transform = matrix() * 1.5, alpha = 255, time = 125)
- world << sound('sound/effects/ratvar_rises.ogg', 0, channel = 8) //End the sounds
+ send_to_playing_players(sound('sound/effects/ratvar_rises.ogg', 0, channel = 8)) //End the sounds
sleep(125)
make_glow()
animate(glow, transform = matrix() * 3, alpha = 0, time = 5)
@@ -138,10 +139,10 @@
else
addtimer(SSshuttle.emergency, "request", 0, FALSE, null, 0) //call the shuttle immediately
sleep(3)
- world << "\"[text2ratvar("Behold")]!\"\n\"[text2ratvar("See Engine's mercy")]!\"\n\
+ send_to_playing_players("\"[text2ratvar("Behold")]!\"\n\"[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")]!\""
- world << 'sound/magic/clockwork/invoke_general.ogg'
+ \"[text2ratvar("Gaze upon Engine's power")]!\"")
+ send_to_playing_players('sound/magic/clockwork/invoke_general.ogg')
var/x0 = startpoint.x
var/y0 = startpoint.y
for(var/I in spiral_range_turfs(255, startpoint))
@@ -149,7 +150,7 @@
if(!T)
continue
var/dist = cheap_hypotenuse(T.x, T.y, x0, y0)
- if(dist < 60)
+ if(dist < 100)
dist = TRUE
else
dist = FALSE
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 13d5203f775..6f0ec64bac3 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
@@ -19,8 +19,8 @@
for(var/obj/item/clockwork/ratvarian_spear/R in all_clockwork_objects)
R.update_force()
START_PROCESSING(SSobj, src)
- world << "\"[text2ratvar("ONCE AGAIN MY LIGHT SHALL SHINE ACROSS THIS PATHETIC REALM")]!!\""
- world << 'sound/effects/ratvar_reveal.ogg'
+ send_to_playing_players("\"[text2ratvar("ONCE AGAIN MY LIGHT SHALL SHINE ACROSS THIS PATHETIC REALM")]!!\"")
+ send_to_playing_players('sound/effects/ratvar_reveal.ogg')
var/image/alert_overlay = image('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)
@@ -31,7 +31,7 @@
for(var/obj/item/clockwork/ratvarian_spear/R in all_clockwork_objects)
R.update_force()
STOP_PROCESSING(SSobj, src)
- world << "\"NO! I will not... be... banished... again...\""
+ send_to_playing_players("\"NO! I will not... be... banished... again...\"")
return ..()
/obj/structure/destructible/clockwork/massive/ratvar/attack_ghost(mob/dead/observer/O)
@@ -103,11 +103,12 @@
var/winner = "Undeclared"
var/base_victory_chance = 1
while(src && narsie)
- world << 'sound/magic/clockwork/ratvar_attack.ogg'
+ send_to_playing_players('sound/magic/clockwork/ratvar_attack.ogg')
sleep(5.2)
for(var/mob/M in mob_list)
- flash_color(M, flash_color="#966400", flash_time=1)
- shake_camera(M, 4, 3)
+ if(!isnewplayer(M))
+ flash_color(M, flash_color="#966400", flash_time=1)
+ shake_camera(M, 4, 3)
var/ratvar_chance = min(ticker.mode.servants_of_ratvar.len, 50)
var/narsie_chance = ticker.mode.cult.len
for(var/mob/living/simple_animal/hostile/construct/harvester/C in player_list)
@@ -118,26 +119,27 @@
winner = "Ratvar"
break
sleep(rand(2,5))
- world << 'sound/magic/clockwork/narsie_attack.ogg'
+ send_to_playing_players('sound/magic/clockwork/narsie_attack.ogg')
sleep(7.4)
for(var/mob/M in mob_list)
- flash_color(M, flash_color="#C80000", flash_time=1)
- shake_camera(M, 4, 3)
+ if(!isnewplayer(M))
+ flash_color(M, flash_color="#C80000", flash_time=1)
+ shake_camera(M, 4, 3)
if(narsie_chance > ratvar_chance)
winner = "Nar-Sie"
break
base_victory_chance *= 2 //The clash has a higher chance of resolving each time both gods attack one another
switch(winner)
if("Ratvar")
- world << "\"[pick("DIE! DIE! DIE!", "FILTH!!!", "SUFFER!!!", text2ratvar("ROT FOR CENTURIES AS I HAVE!!"))]\"" //nar-sie get out
- world << "\"[pick("Nooooo...", "Not die. To y-", "Die. Ratv-", "Sas tyen re-")]\""
- world << 'sound/magic/clockwork/anima_fragment_attack.ogg'
- world << 'sound/magic/demon_dies.ogg'
+ send_to_playing_players("\"[pick("DIE! DIE! DIE!", "FILTH!!!", "SUFFER!!!", text2ratvar("ROT FOR CENTURIES AS I HAVE!!"))]\"\n\
+ \"[pick("Nooooo...", "Not die. To y-", "Die. Ratv-", "Sas tyen re-")]\"") //nar-sie get out
+ send_to_playing_players('sound/magic/clockwork/anima_fragment_attack.ogg')
+ send_to_playing_players('sound/magic/demon_dies.ogg')
clashing = FALSE
qdel(narsie)
if("Nar-Sie")
- world << "\"[pick("Ha.", "Ra'sha fonn dest.", "You fool. To come here.")]\"" //Broken English
- world << 'sound/magic/demon_attack1.ogg'
- world << 'sound/magic/clockwork/anima_fragment_death.ogg'
+ send_to_playing_players("\"[pick("Ha.", "Ra'sha fonn dest.", "You fool. To come here.")]\"") //Broken English
+ send_to_playing_players('sound/magic/demon_attack1.ogg')
+ send_to_playing_players('sound/magic/clockwork/anima_fragment_death.ogg')
narsie.clashing = FALSE
qdel(src)
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 88140a9e89f..64ca0839d94 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -500,7 +500,7 @@ var/list/teleport_runes = list()
//BEGIN THE SUMMONING
used = 1
..()
- world << 'sound/effects/dimensional_rend.ogg' //There used to be a message for this but every time it was changed it got edgier so I removed it
+ send_to_playing_players('sound/effects/dimensional_rend.ogg') //There used to be a message for this but every time it was changed it got edgier so I removed it
var/turf/T = get_turf(src)
sleep(40)
if(src)
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index 2e8cc58622e..91f9a3e7f72 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -174,10 +174,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
var/converted = (prob(40) || force)
if(converted)
ChangeTurf(/turf/open/floor/clockwork)
- for(var/I in src)
- var/atom/A = I
- if(ismob(A) || converted)
- A.ratvar_act()
+ ..(converted)
/turf/open/floor/initialize()
..()
diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm
index e45be3ea9d5..74025555409 100644
--- a/code/game/turfs/simulated/floor/misc_floor.dm
+++ b/code/game/turfs/simulated/floor/misc_floor.dm
@@ -148,10 +148,6 @@
new/obj/item/clockwork/alloy_shards/medium(src)
return ..()
-/turf/open/floor/clockwork/ratvar_act()
- for(var/mob/M in src)
- M.ratvar_act()
-
/turf/open/floor/clockwork/narsie_act()
..()
if(istype(src, /turf/open/floor/clockwork)) //if we haven't changed type
diff --git a/code/game/turfs/simulated/wall/misc_walls.dm b/code/game/turfs/simulated/wall/misc_walls.dm
index 6320b21860f..1cc84597895 100644
--- a/code/game/turfs/simulated/wall/misc_walls.dm
+++ b/code/game/turfs/simulated/wall/misc_walls.dm
@@ -94,10 +94,6 @@
return 1
return ..()
-/turf/closed/wall/clockwork/ratvar_act()
- for(var/mob/M in src)
- M.ratvar_act()
-
/turf/closed/wall/clockwork/narsie_act()
..()
if(istype(src, /turf/closed/wall/clockwork)) //if we haven't changed type
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 6fb8221effa..7511d758dbf 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -259,10 +259,7 @@
var/converted = (prob(40) || force)
if(converted)
ChangeTurf(/turf/closed/wall/clockwork)
- for(var/I in src)
- var/atom/A = I
- if(ismob(A) || converted)
- A.ratvar_act()
+ ..(converted)
/turf/closed/wall/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user)
return 0
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index d07d5563d94..3d9019085e5 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -286,9 +286,12 @@
if(A.level >= affecting_level)
A.ex_act(severity, target)
-/turf/ratvar_act()
- for(var/mob/M in src)
- M.ratvar_act()
+/turf/ratvar_act(force)
+ var/converted = (prob(40) || force)
+ for(var/I in src)
+ var/atom/A = I
+ if(ismob(A) || converted)
+ A.ratvar_act()
/turf/proc/add_blueprints(atom/movable/AM)
var/image/I = new
diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm
index 6c9c98da31d..3a19ec72b10 100644
--- a/code/modules/power/singularity/narsie.dm
+++ b/code/modules/power/singularity/narsie.dm
@@ -25,8 +25,8 @@
/obj/singularity/narsie/large/New()
..()
- world << "NAR-SIE HAS RISEN"
- world << pick('sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg')
+ send_to_playing_players("NAR-SIE HAS RISEN")
+ send_to_playing_players(pick('sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg'))
var/area/A = get_area(src)
if(A)