From 5572e62c25b53f3f48acb528b430c6037ac2f6b2 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Wed, 28 Jul 2021 16:01:41 -0400 Subject: [PATCH] Remove atom/Uncross override It's the most overtime proc on the server --- code/__defines/dcs/signals.dm | 5 ---- code/game/atoms.dm | 3 -- code/game/atoms_movable.dm | 5 ---- code/game/machinery/doors/windowdoor.dm | 17 +++++------ code/game/objects/structures/fitness_vr.dm | 30 +++++++------------ code/game/objects/structures/gravemarker.dm | 14 ++++----- code/game/objects/structures/ledges.dm | 14 ++++----- code/game/objects/structures/railing.dm | 16 +++++----- .../objects/structures/windoor_assembly.dm | 10 +++---- code/game/objects/structures/window.dm | 16 +++++----- code/modules/holomap/station_holomap.dm | 12 ++------ code/modules/multiz/movement.dm | 7 ----- code/modules/tables/interactions.dm | 23 ++++---------- maps/tether/tether_things.dm | 18 +++++++---- 14 files changed, 74 insertions(+), 116 deletions(-) diff --git a/code/__defines/dcs/signals.dm b/code/__defines/dcs/signals.dm index 3561178d6be..a72788d41a8 100644 --- a/code/__defines/dcs/signals.dm +++ b/code/__defines/dcs/signals.dm @@ -236,11 +236,6 @@ #define COMSIG_MOVABLE_CROSSED "movable_crossed" ///when we cross over something (calling Crossed() on that atom) #define COMSIG_CROSSED_MOVABLE "crossed_movable" -///from base of atom/movable/Uncross(): (/atom/movable) -#define COMSIG_MOVABLE_UNCROSS "movable_uncross" - #define COMPONENT_MOVABLE_BLOCK_UNCROSS (1<<0) -///from base of atom/movable/Uncrossed(): (/atom/movable) -#define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" ///from base of atom/movable/Bump(): (/atom) #define COMSIG_MOVABLE_BUMP "movable_bump" ///from base of atom/movable/throw_impact(): (/atom/hit_atom, /datum/thrownthing/throwingdatum) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 07c1ed38510..183cbf4ca8a 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -140,9 +140,6 @@ return flags & INSERT_CONTAINER */ -/atom/proc/CheckExit() - return 1 - // Used to be for the PROXMOVE flag, but that was terrible, so instead it's just here as a stub for // all the atoms that still have the proc, but get events other ways. /atom/proc/HasProximity(turf/T, atom/movable/AM, old_loc) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 9dfba6c423f..9d61505cc64 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -260,11 +260,6 @@ /atom/movable/Crossed(atom/movable/AM, oldloc) return -/atom/movable/Uncross(atom/movable/AM, atom/newloc) - . = ..() - if(isturf(newloc) && !CheckExit(AM, newloc)) - return FALSE - /atom/movable/Bump(atom/A) if(!A) CRASH("Bump was called with no argument.") diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 9d54018e7d7..28afc5e9ff4 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -86,7 +86,14 @@ /obj/machinery/door/window/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) return TRUE - if(get_dir(mover, loc) == turn(dir, 180)) //Make sure looking at appropriate border + if(get_dir(mover, target) == reverse_dir[dir]) // From elsewhere to here, can't move against our dir + return !density + return TRUE + +/obj/machinery/door/window/Uncross(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSGLASS)) + return TRUE + if(get_dir(mover, target) == dir) // From here to elsewhere, can't move in our dir return !density return TRUE @@ -97,14 +104,6 @@ return !density // Air can flow if open (density == FALSE). return TRUE // Windoors don't block if not facing the right way. -/obj/machinery/door/window/CheckExit(atom/movable/mover as mob|obj, turf/target as turf) - if(istype(mover) && mover.checkpass(PASSGLASS)) - return 1 - if(get_dir(loc, target) == dir) - return !density - else - return 1 - /obj/machinery/door/window/open() if (operating == 1 || !density) //doors can still open when emag-disabled return 0 diff --git a/code/game/objects/structures/fitness_vr.dm b/code/game/objects/structures/fitness_vr.dm index 960becca412..d6ef4b71924 100644 --- a/code/game/objects/structures/fitness_vr.dm +++ b/code/game/objects/structures/fitness_vr.dm @@ -9,18 +9,20 @@ layer = WINDOW_LAYER anchored = TRUE flags = ON_BORDER -/obj/structure/fitness/boxing_ropes/CanPass(atom/movable/mover, turf/target) //sets it so that players can enter turf from all directions except the main direction. + +/obj/structure/fitness/boxing_ropes/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) return TRUE - if(get_dir(mover, target) == turn(dir, 180)) + if(get_dir(mover, target) == reverse_dir[dir]) // From elsewhere to here, can't move against our dir + return !density + return TRUE + +/obj/structure/fitness/boxing_ropes/Uncross(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSTABLE)) + return TRUE + if(get_dir(mover, target) == dir) // From here to elsewhere, can't move in our dir return !density return TRUE -/obj/structure/fitness/boxing_ropes/CheckExit(atom/movable/O as mob|obj, target as turf) // Sets it so that players can't leave the truf from the set direction. - if(istype(O) && O.checkpass(PASSTABLE)) - return 1 - if(get_dir(O.loc, target) == dir) - return 0 - return 1 /obj/structure/fitness/boxing_ropes/do_climb(var/mob/living/user) //Sets it so that players can climb *over* the turf and will enter the the turf **this** turf is facing. if(!can_climb(user)) return @@ -73,12 +75,6 @@ if(get_dir(mover, target) == turn(dir, 180)) return !density return TRUE -/obj/structure/fitness/boxing_ropes_bottom/CheckExit(atom/movable/O as mob|obj, target as turf) - if(istype(O) && O.checkpass(PASSTABLE)) - return 1 - if(get_dir(O.loc, target) == dir) - return 0 - return 1 /obj/structure/fitness/boxing_ropes_bottom/do_climb(var/mob/living/user) if(!can_climb(user)) return @@ -132,12 +128,6 @@ if(get_dir(mover, target) == turn(dir, 180)) return !density return TRUE -/obj/structure/fitness/boxing_turnbuckle/CheckExit(atom/movable/O as mob|obj, target as turf) - if(istype(O) && O.checkpass(PASSTABLE)) - return 1 - if(get_dir(O.loc, target) == dir) - return 0 - return 1 /obj/structure/fitness/boxing_turnbuckle/do_climb(var/mob/living/user) if(!can_climb(user)) return diff --git a/code/game/objects/structures/gravemarker.dm b/code/game/objects/structures/gravemarker.dm index af5c1708999..e53fcdeb203 100644 --- a/code/game/objects/structures/gravemarker.dm +++ b/code/game/objects/structures/gravemarker.dm @@ -39,16 +39,16 @@ /obj/structure/gravemarker/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) return TRUE - if(get_dir(loc, target) & dir) + if(get_dir(mover, target) == reverse_dir[dir]) // From elsewhere to here, can't move against our dir return !density return TRUE -/obj/structure/gravemarker/CheckExit(atom/movable/O as mob|obj, target as turf) - if(istype(O) && O.checkpass(PASSTABLE)) - return 1 - if(get_dir(O.loc, target) == dir) - return 0 - return 1 +/obj/structure/gravemarker/Uncross(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSTABLE)) + return TRUE + if(get_dir(mover, target) == dir) // From here to elsewhere, can't move in our dir + return !density + return TRUE /obj/structure/gravemarker/attackby(obj/item/weapon/W, mob/user as mob) if(W.is_screwdriver()) diff --git a/code/game/objects/structures/ledges.dm b/code/game/objects/structures/ledges.dm index b90e406cb2e..819395f2c3f 100644 --- a/code/game/objects/structures/ledges.dm +++ b/code/game/objects/structures/ledges.dm @@ -39,16 +39,16 @@ /obj/structure/ledge/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) return TRUE - if(solidledge && get_dir(mover, target) == turn(dir, 180)) + if(solidledge && get_dir(mover, target) == reverse_dir[dir]) // From elsewhere to here, can't move against our dir return !density return TRUE -/obj/structure/ledge/CheckExit(atom/movable/O as mob|obj, target as turf) - if(istype(O) && O.checkpass(PASSTABLE)) - return 1 - if(solidledge && get_dir(O.loc, target) == dir) - return 0 - return 1 +/obj/structure/ledge/Uncross(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSTABLE)) + return TRUE + if(solidledge && get_dir(mover, target) == dir) // From here to elsewhere, can't move in our dir + return FALSE + return TRUE /obj/structure/ledge/do_climb(var/mob/living/user) if(!can_climb(user)) diff --git a/code/game/objects/structures/railing.dm b/code/game/objects/structures/railing.dm index a4a8e83887c..2f07cff6bff 100644 --- a/code/game/objects/structures/railing.dm +++ b/code/game/objects/structures/railing.dm @@ -44,7 +44,14 @@ /obj/structure/railing/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) return TRUE - if(get_dir(mover, target) == turn(dir, 180)) + if(get_dir(mover, target) == reverse_dir[dir]) // From elsewhere to here, can't move against our dir + return !density + return TRUE + +/obj/structure/railing/Uncross(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSTABLE)) + return TRUE + if(get_dir(mover, target) == dir) // From here to elsewhere, can't move in our dir return !density return TRUE @@ -193,13 +200,6 @@ update_icon() return -/obj/structure/railing/CheckExit(atom/movable/O as mob|obj, target as turf) - if(istype(O) && O.checkpass(PASSTABLE)) - return 1 - if(get_dir(O.loc, target) == dir) - return 0 - return 1 - /obj/structure/railing/attackby(obj/item/W as obj, mob/user as mob) // Dismantle if(W.is_wrench() && !anchored) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 0677c6a09d7..28e54a4062b 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -57,17 +57,17 @@ /obj/structure/windoor_assembly/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) return TRUE - if(get_dir(loc, target) == dir) //Make sure looking at appropriate border + if(get_dir(mover, target) == reverse_dir[dir]) // From elsewhere to here, can't move against our dir return !density return TRUE -/obj/structure/windoor_assembly/CheckExit(atom/movable/mover as mob|obj, turf/target as turf) +/obj/structure/windoor_assembly/Uncross(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) - return 1 - if(get_dir(loc, target) == dir) + return TRUE + if(get_dir(mover, target) == dir) // From here to elsewhere, can't move in our dir return !density else - return 1 + return TRUE /obj/structure/windoor_assembly/proc/rename_door(mob/living/user) var/t = sanitizeSafe(input(user, "Enter the name for the windoor.", src.name, src.created_name), MAX_NAME_LEN) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index a6f334a2f83..ab52208b25e 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -138,24 +138,24 @@ return TRUE if(is_fulltile()) return FALSE //full tile window, you can't move into it! - if((get_dir(loc, target) & dir) || (get_dir(mover, target) == turn(dir, 180))) + if(get_dir(mover, target) == reverse_dir[dir]) // From elsewhere to here, can't move against our dir return !density else return TRUE +/obj/structure/window/Uncross(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSGLASS)) + return TRUE + if(get_dir(mover, target) == dir) // From here to elsewhere, can't move in our dir + return !density + else + return TRUE /obj/structure/window/CanZASPass(turf/T, is_zone) if(is_fulltile() || get_dir(T, loc) == turn(dir, 180)) // Make sure we're handling the border correctly. return !anchored // If it's anchored, it'll block air. return TRUE // Don't stop airflow from the other sides. -/obj/structure/window/CheckExit(atom/movable/O as mob|obj, target as turf) - if(istype(O) && O.checkpass(PASSGLASS)) - return 1 - if(get_dir(O.loc, target) == dir) - return 0 - return 1 - /obj/structure/window/hitby(AM as mob|obj) ..() visible_message("[src] was hit by [AM].") diff --git a/code/modules/holomap/station_holomap.dm b/code/modules/holomap/station_holomap.dm index 8c88102f06f..b997948a5ac 100644 --- a/code/modules/holomap/station_holomap.dm +++ b/code/modules/holomap/station_holomap.dm @@ -82,16 +82,10 @@ if(!watching_mob && isliving(AM) && AM.loc == loc) startWatching(AM) -// In order to actually get Bumped() we need to block movement. We're (visually) on a wall, so people -// couldn't really walk into us anyway. But in reality we are on the turf in front of the wall, so bumping -// against where we seem is actually trying to *exit* our real loc -/obj/machinery/station_map/CheckExit(atom/movable/mover as mob|obj, turf/target as turf) - // log_debug("[src] (dir=[dir]) CheckExit([mover], [target]) get_dir() = [get_dir(target, loc)]") - if(get_dir(target, loc) == dir) // Opposite of "normal" since we are visually in the next turf over +/obj/machinery/station_map/Uncross(atom/movable/mover, turf/target) + if(get_dir(mover, target) == reverse_dir[dir]) return FALSE - else - return TRUE - + return TRUE /obj/machinery/station_map/proc/startWatching(var/mob/user) // Okay, does this belong on a screen thing or what? // One argument is that this is an "in game" object becuase its in the world. diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index 5095405e88a..5d5637ae937 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -105,13 +105,6 @@ to_chat(src, "Gravity stops you from moving upward.") return 0 - //VOREStation Addition Start - for(var/atom/A in start) - if(!A.CheckExit(src, destination)) - to_chat(src, "\The [A] blocks you.") - return 0 - //VOREStation Addition End - for(var/atom/A in destination) if(!A.CanPass(src, start, 1.5, 0)) to_chat(src, "\The [A] blocks you.") diff --git a/code/modules/tables/interactions.dm b/code/modules/tables/interactions.dm index 238942595ea..aeb899cf820 100644 --- a/code/modules/tables/interactions.dm +++ b/code/modules/tables/interactions.dm @@ -2,12 +2,7 @@ if(istype(mover,/obj/item/projectile)) return (check_cover(mover,target)) if (flipped) - var/move_dir = get_dir(mover, target) - // Moving from back to front, gotta climb - if(move_dir == dir && target != loc) - return !density - // Moving from front to back, gotta climb - if(move_dir == reverse_dir[dir]) + if(get_dir(mover, target) == reverse_dir[dir]) // From elsewhere to here, can't move against our dir return !density return TRUE if(istype(mover) && mover.checkpass(PASSTABLE)) @@ -27,6 +22,11 @@ return ..() +/obj/structure/table/Uncross(atom/movable/mover, turf/target) + if(flipped && (get_dir(mover, target) == dir)) // From here to elsewhere, can't move in our dir + return !density + return TRUE + //checks if projectile 'P' from turf 'from' can hit whatever is behind the table. Returns 1 if it can, 0 if bullet stops. /obj/structure/table/proc/check_cover(obj/item/projectile/P, turf/from) var/turf/cover @@ -60,17 +60,6 @@ return 1 return 1 -/obj/structure/table/CheckExit(atom/movable/O as mob|obj, target as turf) - if(istype(O) && O.checkpass(PASSTABLE)) - return 1 - if (flipped==1) - if (get_dir(loc, target) == dir) - return !density - else - return 1 - return 1 - - /obj/structure/table/MouseDrop_T(obj/O as obj, mob/user as mob) if ((!( istype(O, /obj/item/weapon) ) || user.get_active_hand() != O)) diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm index ff00798ba7a..99aae29ffd5 100644 --- a/maps/tether/tether_things.dm +++ b/maps/tether/tether_things.dm @@ -140,15 +140,21 @@ /obj/effect/ceiling invisibility = 101 // nope cant see this anchored = 1 + can_atmos_pass = ATMOS_PASS_PROC -/obj/effect/ceiling/CheckExit(atom/movable/O as mob|obj, turf/target as turf) - if(target && target.z > src.z) - return FALSE // Block exit from our turf to above +/obj/effect/ceiling/CanZASPass(turf/T, is_zone) + if(T == GetAbove(src)) + return FALSE // Keep your air up there, buddy return TRUE -/obj/effect/ceiling/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(mover && mover.z > src.z) - return FALSE // Block entry from above to our turf +/obj/effect/ceiling/CanPass(atom/movable/mover, turf/target) + if(target == GetAbove(src)) + return FALSE + return TRUE + +/obj/effect/ceiling/Uncross(atom/movable/mover, turf/target) + if(target == GetAbove(src)) + return FALSE return TRUE //