From 7823dd394567bee7eb5f86e92d6cf3cbda35b8e8 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Thu, 6 Feb 2025 14:18:18 +0000 Subject: [PATCH] Block pathfinder from allowing to interact with heroes standing on another visitable object --- lib/pathfinder/PathfinderUtil.h | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/pathfinder/PathfinderUtil.h b/lib/pathfinder/PathfinderUtil.h index 3e1f4cbaf..10cfab9c3 100644 --- a/lib/pathfinder/PathfinderUtil.h +++ b/lib/pathfinder/PathfinderUtil.h @@ -40,15 +40,23 @@ namespace PathfinderUtil } else { + bool hasBlockedVisitable = false; + bool hasVisitable = false; + for(const CGObjectInstance * obj : tinfo.visitableObjects) { if(obj->isBlockedVisitable()) - return EPathAccessibility::BLOCKVIS; - else if(obj->passableFor(player)) - return EPathAccessibility::ACCESSIBLE; - else if(obj->ID != Obj::EVENT) - return EPathAccessibility::VISITABLE; + hasBlockedVisitable = true; + else if(!obj->passableFor(player) && obj->ID != Obj::EVENT) + hasVisitable = true; } + + if(hasBlockedVisitable) + return EPathAccessibility::BLOCKVIS; + if(hasVisitable) + return EPathAccessibility::VISITABLE; + + return EPathAccessibility::ACCESSIBLE; } } else if(tinfo.blocked())