토네이도에 관련된 코드는 거의다 spl-tornado.cc에 들어있음


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73cee80fa11d028319ddf853da70007dc53c7bd36dcf4f04664e1689f502743da71d0ee4bfae193b14be9cadfc5b3212056f8dcae6741f7a8

적 움직이는 코드는 여기있음

저 _rotate라는 함수가 넉백된 위치를 찾아주는거 같으니 확인해보자



viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73cee80fa11d028319ddf853da70007dc53c7bd36dcf4f04664e1689f50611e8d1ed5ef4cfde298dc0e4c46fcb74830732cab6d57

저게 적 돌리는 코드인데

재미있는게 도착지점이 시전자로부터 닿을 수 있는 공간이면 경로에 뭐가 걸리는지는 전혀 신경을 안쓴다.

이동 가능한 모든 지점 중에서 원래 도착지점과의 각도차이, 거리차이가 가장 작은 지점이 선택됨



viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73cee80fa11d028319ddf853da70007dc53c7bd36dcf4f04664e1689f50611e8d1ed5ef4cfde298dc5b4b40a7ea42357a2cab6d57


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73cee80fa11d028319ddf853da70007dc53c7bd36dcf4f04664e1689f50611e8d1ed5ef4cfde298dc544a12a1be1834782cab6d57


돌죽에서 거리랑 각도는 이런 식으로 계산함.

위 코드에서 거리차이+각도차이*1.5가 최소인 지점이 최종도착지점이 됨

원래 도착지점이 비어있으면 거기가 되겠지


밑에 움짤상황을 예로 들자


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73cee80fa11d028319ddf853da70007dc53c7bd36dcf4f04664e1689f50611e8d1ed5ef4cfde298dc5e1c13a2ec4b327c2cab6d57

몹이 토네를 쓰는 플레이어 옆에 나란히 붙어있는 상황이다.

원래는 우상 대각선 방향으로 돌아야 하지만 그 자리에는 이미 벽이 있어 막혀있는 상황이다

그러나 그 뒤의 공간은 플레이어에게 닿을 수 있는 공간이므로 도착지점으로 지정 가능하다

실제로 얼마나 도는지는 위치가 어떤지, 주변 지형이 어떤지, 토네를 시전하고 얼마나 턴이 경과했는지 등 여러 요인들이 복잡하게 작용하므로

움짤에서의 최종 위치에 맞춰서 각도 -4/3만큼 돈다고 가정하고 계산하자


viewimage.php?id=3fb1d92de0&no=24b0d769e1d32ca73cee80fa11d028319ddf853da70007dc53c7bd36dcf4f04664e1689f50611e8d1ed5ef4cfde298dc5b1b46f3ea4b31282cab6d57


움짤 상황이랑은 조금 다르긴 하지만 어쨌든 벽을 넘어간다는걸 알 수 있다

근데시발 대낮에 내가 뭘하고 있는거지