diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 51ad83e758..85a8ed5448 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -139,6 +139,8 @@ if(loc.vars[A] == src) loc.vars[A] = O + transfer_observers_to(O) + . = O qdel(src) @@ -293,6 +295,8 @@ if (tr_flags & TR_DEFAULTMSG) to_chat(O, "You are now a human.") + transfer_observers_to(O) + . = O for(var/A in loc.vars) diff --git a/code/modules/orbit/orbit.dm b/code/modules/orbit/orbit.dm index e4df15efaf..89d1d89e58 100644 --- a/code/modules/orbit/orbit.dm +++ b/code/modules/orbit/orbit.dm @@ -112,3 +112,11 @@ . = ..() if (orbiting) stop_orbit() + +/atom/movable/proc/transfer_observers_to(atom/movable/target) + if(orbiters) + for(var/thing in orbiters) + var/datum/orbit/O = thing + if(O.orbiter && isobserver(O.orbiter)) + var/mob/dead/observer/D = O.orbiter + D.ManualFollow(target) \ No newline at end of file diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 3037d8690c..a10c264b9a 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -284,6 +284,8 @@ if(poly_msg) to_chat(new_mob, poly_msg) + M.transfer_observers_to(new_mob) + qdel(M) return new_mob