diff --git a/Source/Client/Mode/GameModeMiniMap.cpp b/Source/Client/Mode/GameModeMiniMap.cpp index 3d7fd899..ecb671c5 100644 --- a/Source/Client/Mode/GameModeMiniMap.cpp +++ b/Source/Client/Mode/GameModeMiniMap.cpp @@ -26,6 +26,34 @@ void MiniMapNoOp() { } // OFFSET: 0x00CCFFA0 +// FUNCTION: fn_21250 +void CGameMode::StepTowardWalkableCell(const int& targetX, const int& targetY, int& x, int& y) { + const int startX = x; + const int startY = y; + if (targetX > startX) { + x = startX + 1; + } else if (targetX < startX) { + x = startX - 1; + } + if (targetY > y) { + ++y; + } else if (targetY < y) { + --y; + } + + if (this->scene->terrain->Grid().Walkable(x, y)) { + return; + } + + const int offsets[8][2] = {{1, 0}, {1, 1}, {1, -1}, {-1, 0}, {-1, 1}, {-1, -1}, {0, 1}, {0, -1}}; + for (int i = 0; i < 8; ++i) { + x = startX + offsets[i][0]; + y = startY + offsets[i][1]; + if (this->scene->terrain->Grid().Walkable(x, y)) { + return; + } + } +} // OFFSET: 0x00CD0150