From 4c32f5f94691f32514cabc9908ef46214c367407 Mon Sep 17 00:00:00 2001 From: Rob Nelson Date: Wed, 23 Jul 2014 15:56:13 -0700 Subject: [PATCH] Fix jukeboxes needing reset after shuttle movement, [CLASSIFIED], warning fix. Conflicts: code/__HELPERS/unsorted.dm code/game/atoms_movable.dm code/modules/mob/living/silicon/ai/freelook/eye.dm code/modules/nano/nanomapgen.dm --- code/__HELPERS/unsorted.dm | 4 +++- code/game/atoms_movable.dm | 13 ++++++++++++ code/modules/media/broadcast.dm | 11 +++++++--- code/modules/media/machinery.dm | 5 +++++ .../mob/living/silicon/ai/freelook/eye.dm | 2 +- code/modules/mob/spirit/movement.dm | 20 +++++++++---------- 6 files changed, 40 insertions(+), 15 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index e745123706c..23dc8639ab4 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1013,7 +1013,9 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl del(O) // prevents multiple shuttle corners from stacking continue if(!istype(O,/obj)) continue - O.loc = X + O.loc.Exited(O) + O.setLoc(X,teleported=1) + O.loc.Entered(O) for(var/mob/M in T) if(!M.move_on_shuttle) continue diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index e3607665395..b80fe3249f6 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -14,6 +14,19 @@ var/moved_recently = 0 var/mob/pulledby = null + var/area/areaMaster + + +/atom/movable/New() + . = ..() + areaMaster = get_area_master(src) + + +// Used in shuttle movement and AI eye stuff. +// Primarily used to notify objects being moved by a shuttle/bluespace fuckup. +/atom/movable/proc/setLoc(var/T, var/teleported=0) + loc = T + /atom/movable/Move() var/atom/A = src.loc . = ..() diff --git a/code/modules/media/broadcast.dm b/code/modules/media/broadcast.dm index a6f6e1d298b..e7b02f1db5f 100644 --- a/code/modules/media/broadcast.dm +++ b/code/modules/media/broadcast.dm @@ -21,15 +21,19 @@ var/global/media_broadcasters=list() update_music() /obj/machinery/media/receiver/proc/connect_frequency() + // This is basically media_receivers[media_frequency] += src var/list/receivers=list() if(media_frequency in media_receivers) receivers = media_receivers[media_frequency] receivers.Add(src) media_receivers[media_frequency]=receivers + // Check if there's a broadcast to tune into. if(media_frequency in media_broadcasters) + // Pick a random broadcast in that frequency. var/obj/machinery/media/broadcaster/B = pick(media_broadcasters[media_frequency]) - receive_broadcast(B.media_url,B.media_start_time) + if(B.media_crypto == media_crypto) // Crypto-key check, if needed. + receive_broadcast(B.media_url,B.media_start_time) /obj/machinery/media/receiver/proc/disconnect_frequency() var/list/receivers=list() @@ -71,8 +75,9 @@ var/global/media_broadcasters=list() /obj/machinery/media/broadcaster/update_music() ..() if(media_frequency in media_receivers) - var/obj/machinery/media/receiver/R = pick(media_receivers[media_frequency]) - R.receive_broadcast(media_url,media_start_time) + for(var/obj/machinery/media/receiver/R in media_receivers[media_frequency]) + if(R.media_crypto == media_crypto) + R.receive_broadcast(media_url,media_start_time) /obj/machinery/media/broadcaster/proc/disconnect_frequency() var/list/broadcasters=list() diff --git a/code/modules/media/machinery.dm b/code/modules/media/machinery.dm index 180c82683dd..48289dd9126 100644 --- a/code/modules/media/machinery.dm +++ b/code/modules/media/machinery.dm @@ -59,7 +59,12 @@ /obj/machinery/media/Move() ..() + if(anchored) + update_music() + +/obj/machinery/media/setLoc(var/turf/T, var/teleported=0) disconnect_media_source() + ..(T) if(anchored) update_music() diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index c6b1c08bcbf..c7969d7e5a9 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -39,7 +39,7 @@ // Use this when setting the aiEye's location. // It will also stream the chunk that the new loc is in. -/mob/aiEye/proc/setLoc(var/T) +/mob/aiEye/setLoc(var/T) if(ai) if(!isturf(ai.loc)) return diff --git a/code/modules/mob/spirit/movement.dm b/code/modules/mob/spirit/movement.dm index d8847cb480a..bd794b6fd2b 100644 --- a/code/modules/mob/spirit/movement.dm +++ b/code/modules/mob/spirit/movement.dm @@ -8,7 +8,7 @@ mob/spirit/proc/Spirit_Move(direct) var/initial = initial(sprint) var/max_sprint = 50 - + // if we haven't moved in a while, we stop sprinting if(cooldown && cooldown < world.timeofday) // 3 seconds sprint = initial @@ -19,25 +19,25 @@ mob/spirit/proc/Spirit_Move(direct) setLoc(step) dir = direct // update our sprite - + cooldown = world.timeofday + 5 if(acceleration) sprint = min(sprint + 0.5, max_sprint) else sprint = initial - + // if we're trying to move, we want to stop following our target follow_target = null - - + + /mob/spirit/proc/follow_cultist(mob/living/target as mob) if(!istype(target)) return var/obj/cult_viewpoint/currentView = getCultViewpoint(target) var/mob/spirit/U = usr - + if (!currentView) U << "As a spirit, you may only track cultists." - + U.follow_target = target U << "Now following [currentView.get_cult_name()]." @@ -47,9 +47,9 @@ mob/spirit/proc/Spirit_Move(direct) return U.setLoc(get_turf(target)) sleep(10) - - -mob/spirit/proc/setLoc(var/T) + + +mob/spirit/setLoc(var/T) T = get_turf(T) loc = T cultNetwork.visibility(src)