@@ -1173,13 +1173,15 @@ static int mob_ai_sub_hard_activesearch(struct block_list *bl, va_list ap)
11731173 battle -> check_range (& md -> bl ,bl ,md -> db -> range2 )
11741174 ) { //Pick closest target?
11751175#ifdef ACTIVEPATHSEARCH
1176- struct walkpath_data wpd ;
1177- if (!path -> search (& wpd , & md -> bl , md -> bl .m , md -> bl .x , md -> bl .y , bl -> x , bl -> y , 0 , CELL_CHKNOPASS )) // Count walk path cells
1178- return 0 ;
1179- //Standing monsters use range2, walking monsters use range3
1180- if ((md -> ud .walktimer == INVALID_TIMER && wpd .path_len > md -> db -> range2 )
1181- || (md -> ud .walktimer != INVALID_TIMER && wpd .path_len > md -> db -> range3 ))
1182- return 0 ;
1176+ struct walkpath_data wpd ;
1177+ bool is_standing = (md -> ud .walktimer == INVALID_TIMER );
1178+ if (!path -> search (& wpd , & md -> bl , md -> bl .m , md -> bl .x , md -> bl .y , bl -> x , bl -> y , 0 , CELL_CHKNOPASS ) // Count walk path cells
1179+ || (is_standing && wpd .path_len > md -> db -> range2 ) //Standing monsters use range2, walking monsters use range3
1180+ || (!is_standing && wpd .path_len > md -> db -> range3 )) {
1181+ if (!check_distance_bl (& md -> bl , bl , md -> status .rhw .range )
1182+ || !path -> search_long (NULL , & md -> bl , md -> bl .m , md -> bl .x , md -> bl .y , bl -> x , bl -> y , CELL_CHKWALL ))
1183+ return 0 ;
1184+ }
11831185#endif
11841186 (* target ) = bl ;
11851187 md -> target_id = bl -> id ;
0 commit comments