From 4b629c7d3ffa2152366c37427521b9a056dd5948 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 26 Jul 2015 17:46:36 -0400 Subject: [PATCH] Turf/Entered() Optimizations --- code/game/turfs/simulated.dm | 4 +-- code/game/turfs/turf.dm | 66 +++++++++++------------------------- 2 files changed, 20 insertions(+), 50 deletions(-) diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index b2f3a89c125..536972a527a 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -43,7 +43,7 @@ tracks.AddTracks(bloodDNA,comingdir,goingdir,bloodcolor) /turf/simulated/Entered(atom/A, atom/OL) - + ..() if(ishuman(A)) var/mob/living/carbon/human/M = A if(M.lying) return @@ -148,8 +148,6 @@ M.inertia_dir = 0 return - ..() - //returns 1 if made bloody, returns 0 otherwise /turf/simulated/add_blood(mob/living/carbon/human/M as mob) if (!..()) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 5631b55820b..ca526459f37 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -35,10 +35,9 @@ /turf/New() ..() - for(var/atom/movable/AM as mob|obj in src) - spawn( 0 ) - src.Entered(AM) - return + for(var/atom/movable/AM in src) + Entered(AM) + return /turf/Destroy() return QDEL_HINT_HARDDEL_NOW @@ -105,51 +104,24 @@ return 1 //Nothing found to block so return success! -/turf/Entered(atom/atom as mob|obj) - ..() -//vvvvv Infared beam stuff vvvvv - - if ((atom && atom.density && !( istype(atom, /obj/effect/beam) ))) - for(var/obj/effect/beam/i_beam/I in src) - spawn( 0 ) - if (I) - I.hit() - break - -//^^^^^ Infared beam stuff ^^^^^ - - if(!istype(atom, /atom/movable)) - return - - var/atom/movable/M = atom - if(!M.simulated) return - var/loopsanity = 100 +/turf/Entered(atom/movable/M) if(ismob(M)) - if(!M:lastarea) - M:lastarea = get_area(M.loc) - if(M:lastarea.has_gravity == 0) - inertial_drift(M) - - /* - if(M.flags & NOGRAV) - inertial_drift(M) - */ - - - + var/mob/O = M + if(!O.lastarea) + O.lastarea = get_area(O.loc) + var/has_gravity = O.mob_has_gravity(src) + O.update_gravity(has_gravity) + if(!has_gravity) + inertial_drift(O) else if(!istype(src, /turf/space)) - M:inertia_dir = 0 - ..() - var/objects = 0 - for(var/atom/A as mob|obj|turf|area in range(1)) - if(!A.simulated) return - if(objects > loopsanity) break - objects++ - spawn( 0 ) - if ((A && M)) - A.HasProximity(M, 1) - return - return + O.inertia_dir = 0 + + var/loopsanity = 100 + for(var/atom/A in range(1)) + if(loopsanity == 0) + break + loopsanity-- + A.HasProximity(M, 1) /turf/proc/adjacent_fire_act(turf/simulated/floor/source, temperature, volume) return