아시는분들이 많을것 같은데 Effective Health 라는 위크오라가 있습니다.
NPC가 스킬 시전시 맞으면 죽냐 안죽냐를 알려주는 위크오라 인데
EU의 Zeler-Ravencrest가 격아때 처음 만들고 이후에 여러 사람들의 손을 거쳐 내부전쟁 1시즌까지 명맥을 이어왔습니다.
이번 2시즌처럼 안나오는 시즌도 있었는데 (아니면 제가 못찾았거나) 쐐기 주차단수나 도는 입장에서는 없어도 그만이었고요.
오리지날 https://wago.io/B1pg1fRub
용군단 1시즌 https://wago.io/_0abyrUW8
용군단 4시즌 https://wago.io/ykbYpISbb
내부전쟁 1시즌 https://wago.io/it_90IBa6
그러다 2시즌 터보부스트가 되면서 템렙이 올라가고 더 높은 단수로 올라가보니 이전에는 맞아도 안죽던걸 맞고 픽픽 쓰러지더라고요.
그래서 다시 Effective Health를 가져다 써보니 문제점들과 개선점들이 있어서 제 입맛대로 대대적으로 고쳤습니다.
+ 음성경고 기능 추가
- 스펠 맞은후 40% 이하가 될떄 Bam!, 10% 이하가 될때 Air Horn
- 스펠이 시전 스킬이고 데미지가 30% 이상되는 경우 Banana Slip
프로파일링 결과: (튜닝중일때라 최고 4.32ms까지 나왔었으나 현재는 최대 3ms 미만)
등록된 스펠 데이터들은 제가 쐐기돌면서 저장해둔 로그를 분석해서 시전 시간이 있고, 받은 데미지가 있는 경우를 DB화 시킨것이고
그후 회피가능한 스펠들을 일일이 수동으로 분류하고, 일부는 wowhead에 있는 데미지 정보를 토대로 수정한 데이터 입니다.
따라서 안맞는 부분들이 상당 부분 있는데 이런 부분들은 댓글로 알려주시면 반영하도록 하겠습니다.
예1) 메카곤 "음파 파동"은 회피가능한데 회피 불가로 되어 있어요
예2) 어불동 "담금질 작렬" 시전시 "폭발의 불길" 디버프가 걸려있는경우 중첩당 10% 추가 데미지가 들어옵니다.
그외 버그도 제보해주시면 ... 고칠수 있는건 고쳐두겠습니다.
2시즌 종료가 한달도 안남아서 이제와서 이게 무슨 의미가 있겠나 싶습니다.
3시즌은 시즌 초반부터 작업을 해야겠네요 ㅋㅋ
마지막으로, 간혹 음성경고가 나왔지만 화면상에 아무것도 표시가 안될때가 있습니다.
이경우 시전 시작당시 대상은 나 였으나 이후 대상이 다른사람으로 변경되었거나, 파티원이 차단을 봤을수도 있습니다.
이는 정상동작이니까 음성경고가 뜬다고 무조건 생존기 올릴필요는 없고 화면에 표시되는 HP나 시전 스킬을 보고
판단하시기 바랍니다.
굳이 알필요는 없지만 기존 위크오라 대비 변경점은,
- CPU 사용량 개선 (스펠데이터를 해쉬테이블로 처리, 버프/디버프를 매번 조사하는 방식에서 추적방식으로 변경, 예상데미지 계산값에 대한 캐시처리)
-> 프로파일링시 최대 2.5ms 정도 나옴. 기존 코드에서는 등록된 스펠이 많고 시전중인 NPC들이 많으면 최대 9ms까지 나옴
- 여러 NPC가 동일스펠을 나에게 시전시 전부 다 표시
- 대상을 잡고 시전하는 스킬의 대상을 제대로 파악하지 못하는 문제 수정 (0.1초 간격으로 1.5초동안 대상을 계속 추적하게함)
-> 옛날에는 시전시작할때 CLEU에 대상자 GUID가 있었는데 지금은 그 값이 없어서 대상이 누군지 추적해야 하는데 시전시작 이후에 대상이 변경되기도 하고 안되기도 하고 그럼
- 여러 스펠의 대상일때 각 스펠 데미지를 합산해서 남은 HP를 표시하게 하고, 각 스펠을 맞았을때는 남는 HP대신 깍이는 HP를 표시
-> 이 변경점으로 인해 기존에는 체력을 %로 보거나 수치로 볼수 있던것이 %로 고정되었습니다. (사용자 정의 옵션에 체크는 남아있지만 사용X)
- 디버프는 누적 데미지를 남은시간 비율로 계산해서 표시함
- 1개 스펠이 여러가지 데미지를 주는 경우 처리 (고투 수확의 낫 -> 물리+마법 데미지가 각각 들어옴)
- 피할수 있는 데미지는 별도 표시
- 음성경고 기능 추가 (사용자 정의 설정에서 기준%와 음성 변경가능)
-> 스펠 맞은후 40% 이하가 될떄 Bam!, 10% 이하가 될때 Air Horn
-> 스펠이 시전 스킬이고 데미지가 30% 이상되는 경우 Banana Slip