From ca679f5da20174660d155f7c0502f3462110aa1c Mon Sep 17 00:00:00 2001 From: Menshin Date: Sat, 30 Jan 2016 13:51:52 +0100 Subject: [PATCH] Added passflag checking for A*. --- code/__DEFINES/is_helpers.dm | 2 ++ code/game/gamemodes/blob/theblob.dm | 5 +++++ code/game/objects/structures/girders.dm | 7 ++++++- code/game/objects/structures/grille.dm | 6 ++++++ code/game/objects/structures/morgue.dm | 6 ++++++ code/game/objects/structures/tables_racks.dm | 12 ++++++++++++ code/orphaned procs/AStar.dm | 4 ++-- 7 files changed, 39 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index bb94fccc547..0a62f085b66 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -64,6 +64,8 @@ #define isbot(A) (istype(A, /mob/living/simple_animal/bot)) +#define ismovableatom(A) (istype(A, /atom/movable)) + // ASSEMBLY HELPERS #define isassembly(O) (istype(O, /obj/item/device/assembly)) diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index fb41beece2c..e5478aafc50 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -60,6 +60,11 @@ return 1 return 0 +/obj/effect/blob/CanAStarPass(ID, dir, caller) + . = 0 + if(ismovableatom(caller)) + var/atom/movable/mover = caller + . = . || mover.checkpass(PASSBLOB) /obj/effect/blob/proc/check_health(cause) health = Clamp(health, 0, maxhealth) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 2790a87eb0f..cd8100984eb 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -245,7 +245,6 @@ else ..() - /obj/structure/girder/CanPass(atom/movable/mover, turf/target, height=0) if(height==0) return 1 @@ -257,6 +256,12 @@ else return 0 +/obj/structure/girder/CanAStarPass(ID, dir, caller) + . = !density + if(ismovableatom(caller)) + var/atom/movable/mover = caller + . = . || mover.checkpass(PASSGRILLE) + /obj/structure/girder/blob_act() if(prob(40)) qdel(src) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 3dfd2e7d0db..9c4e1020e08 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -111,6 +111,12 @@ else return !density +/obj/structure/grille/CanAStarPass(ID, dir, caller) + . = !density + if(ismovableatom(caller)) + var/atom/movable/mover = caller + . = . || mover.checkpass(PASSGRILLE) + /obj/structure/grille/bullet_act(var/obj/item/projectile/Proj) if(!Proj) return diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index a9f4dfa88ce..551df3eda1d 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -271,3 +271,9 @@ var/global/list/crematoriums = new/list() return 1 else return 0 + +/obj/structure/tray/m_tray/CanAStarPass(ID, dir, caller) + . = !density + if(ismovableatom(caller)) + var/atom/movable/mover = caller + . = . || mover.checkpass(PASSTABLE) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 1bff662f0a3..5b98be4d224 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -99,6 +99,12 @@ else return !density +/obj/structure/table/CanAStarPass(ID, dir, caller) + . = !density + if(ismovableatom(caller)) + var/atom/movable/mover = caller + . = . || mover.checkpass(PASSTABLE) + /obj/structure/table/MouseDrop_T(atom/movable/O, mob/user) ..() if(ismob(O) && user == O && ishuman(user)) @@ -449,6 +455,12 @@ else return 0 +/obj/structure/rack/CanAStarPass(ID, dir, caller) + . = !density + if(ismovableatom(caller)) + var/atom/movable/mover = caller + . = . || mover.checkpass(PASSTABLE) + /obj/structure/rack/MouseDrop_T(obj/O, mob/user) if ((!( istype(O, /obj/item/weapon) ) || user.get_active_hand() != O)) return diff --git a/code/orphaned procs/AStar.dm b/code/orphaned procs/AStar.dm index 64648dbea73..236d7b581c0 100644 --- a/code/orphaned procs/AStar.dm +++ b/code/orphaned procs/AStar.dm @@ -159,7 +159,7 @@ Actual Adjacent procs : T = get_step(src,dir) if(simulated_only && !istype(T)) continue - if(!T.density && !LinkBlockedWithAccess(T,ID, caller)) + if(!T.density && !LinkBlockedWithAccess(T,caller, ID)) L.Add(T) return L @@ -177,7 +177,7 @@ Actual Adjacent procs : L.Add(T) return L -/turf/proc/LinkBlockedWithAccess(turf/T, ID, caller) +/turf/proc/LinkBlockedWithAccess(turf/T, caller, ID) var/adir = get_dir(src, T) var/rdir = get_dir(T, src)