diff --git a/code/game/throwing.dm b/code/game/throwing.dm index 4ae8d2c2698..9560bed0efd 100644 --- a/code/game/throwing.dm +++ b/code/game/throwing.dm @@ -64,8 +64,9 @@ item.layer = initial(item.layer) src.visible_message("\red [src] has thrown [item].") - var/area/a = get_area(src.loc) - if((istype(src.loc, /turf/space)) || (a.has_gravity == 0)) + if(!src.lastarea) + src.lastarea = get_area(src.loc) + if((istype(src.loc, /turf/space)) || (src.lastarea.has_gravity == 0)) src.inertia_dir = get_dir(target, src) step(src, inertia_dir) diff --git a/code/game/turf.dm b/code/game/turf.dm index 966a8791ec7..0afdb11a163 100644 --- a/code/game/turf.dm +++ b/code/game/turf.dm @@ -80,6 +80,7 @@ /turf/Entered(atom/movable/M as mob|obj) +// var/loopsanity = 100 if(ismob(M)) if(!M:lastarea) M:lastarea = get_area(M.loc) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index aebdcb2a1d0..4b45709359b 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -172,8 +172,10 @@ //if(istype(mob.loc, /turf/space) || (mob.flags & NOGRAV)) // if(!mob.Process_Spacemove(0)) return 0 - var/area/a = get_area(mob.loc) - if((istype(mob.loc, /turf/space)) || (a.has_gravity == 0)) + if(!mob.lastarea) + mob.lastarea = get_area(mob.loc) + + if((istype(mob.loc, /turf/space)) || (mob.lastarea.has_gravity == 0)) if(!mob.Process_Spacemove(0)) return 0 @@ -352,16 +354,13 @@ if(istype(turf,/turf/space)) continue - - var/area/a = get_area(turf) - if(istype(src,/mob/living/carbon/human/)) // Only humans can wear magboots, so we give them a chance to. - if((istype(turf,/turf/simulated/floor)) && (a.has_gravity == 0) && !(istype(src:shoes, /obj/item/clothing/shoes/magboots) && (src:shoes:flags & NOSLIP))) + if((istype(turf,/turf/simulated/floor)) && (src.lastarea.has_gravity == 0) && !(istype(src:shoes, /obj/item/clothing/shoes/magboots) && (src:shoes:flags & NOSLIP))) continue else - if((istype(turf,/turf/simulated/floor)) && (a.has_gravity == 0)) // No one else gets a chance. + if((istype(turf,/turf/simulated/floor)) && (src.lastarea.has_gravity == 0)) // No one else gets a chance. continue /* diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 5cfb45af9e8..f4ddf4d83bb 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -24,6 +24,8 @@ var/starting_loc = pick(newplayer_start) if(!starting_loc) starting_loc = locate(1,1,1) loc = starting_loc + lastarea = starting_loc + sight |= SEE_TURFS var/list/watch_locations = list()