pc-npc 추타 소스 ( 몹 타격치 관련 )
이소스가 아니더라도 자신의 팩이 잘되있을수 있으니
수정하기 전에 시험하나 해보시고 보시는걸 추천합니다.
나비켓으로 1/1 추타50 짜리 검하나 1/1 추타100짜리 검하나
생성하신후에 몹에 박히는 데미지 수치 확인해보세요
추타를 50,100 넣었으니 힘이나 버프에 따라서 각각 50,100이상 데미지는 무조건 나오겠죠
하지만 데미지가 고정이 아니고 1이상이라도 랜덤타격치가 있다면 검추타 소스가 잘못되있는팩입니다.
또한, 고정데미지라 하더라도 추타50검과 100검이 같은타격치가 되는팩도 있을수있습니다.
그또한 잘못된 소스겠지요 1/1 검이 아니면 거의 대부분 못느껴서 지금까지 수정안하신분이
많으실것같습니다 추타는 말그데로 추가타격이니 추타옵션은 고정뎀지가 박혀야죠 본섭처럼..
랜덤타격치는 검에 작은몹이나 큰몹타격치 수치 만큼만 랜덤타격치가 있어야 하겠죠
1/1로 만든검이니 랜덤타격치가 있다면 잘못된 소스입니다.
밑에 pc_npc 일경우 소스입니다. pc_pc아닙니다 pc_npc입니다.
L1Attack.java
private int calcPcNpcDamage() { <-----이부분 검색해보세요
int weaponMaxDamage = 0;
int doubleChance = _random.nextInt(100) + 1;
if (_targetNpc.getNpcTemplate().get_size().equalsIgnoreCase("small") && _weaponSmall > 0) {
weaponMaxDamage = _weaponSmall;
} else if (_targetNpc.getNpcTemplate().get_size().equalsIgnoreCase("large") && _weaponLarge > 0) {
weaponMaxDamage = _weaponLarge;
}
weaponMaxDamage += _weaponAddDmg; <---이부분이 굉장히 잘못된 부분입니다. 이부분때문에
검추타가 랜덤타격치에 포함이 되버리죠
주석처리 하시거나 삭제하시고 밑에 항목별로
_weaponAddDmg를 + 해주셔야합니다.
int weaponDamage = 0;
if (_weaponType == 58 && doubleChance <= _weaponDoubleDmgChance) { // 위기 히트
weaponDamage = weaponMaxDamage + _weaponAddDmg; <-- 위에 추타 삭제하였으니 각 항목별로
추가 각각추가해야 랜덤추타가아닌
고정 추타가 되는것입니다.
위기 히트 없는팩은 안하셔도 무방함
_attackType = 2;
//_pc.sendPackets(new S_SkillSound(_pc.getId(), 3671));
//Broadcaster.broadcastPacket(_pc, new S_SkillSound(_pc.getId(), 3671));
} else if (_weaponType == 0) { // 맨손
weaponDamage = 0;
} else {
weaponDamage = _random.nextInt(weaponMaxDamage) + _weaponAddDmg;//<-필수 추가
}
사실상 이부분때문에 수정을 해야하는건데요.. 가장 중요한 부분입니다.
기존에weaponDamage = _random.nextInt(weaponMaxDamage) +1; 이렇게 되있는팩이 가장많아요
위에서 수정전에는
weaponMaxDamage = 0;
작은몹 / 큰몹 소스 지나고
.
.
weaponMaxDamage += _weaponAddDmg;
이렇게 되고 또 밑에 쭉~ 가다보면..
.
weaponDamage = _random.nextInt(weaponMaxDamage);
이런식으로 되어 있었기때문에 검데미지는 weaponMaxDamage값 전체의 랜덤뎀지죠
추타를 포함한 전체 값랜덤 예를들어 집행검이면 작은몹 기준 28에 추타 23이죠
작은몹일때 1~51범위가 되어 버립니다. 실제로 본섭이라면 23~51 인게 정상인데 말이죠 그래서 weaponMaxDamage +=weaponAddDmg; 를
삭제 하면 weaponMaxDamage의 값은 몹사이즈에 따라 검의 작은몹 타격치 / 큰몹 타격치 값만
갖게 됩니다 집행검 작은몹 기준 1~28의 값이되죠 더 낮아졌죠 대신
weaponDamage = _random.nextInt(weaponMaxDamage); 이부분에
weaponDamage = _random.nextInt(weaponMaxDamage) + _weaponAddDmg; 이렇게 마무리를 하면
weaponMaxDamage값 즉 1~28 타격치만 랜덤이 되고 검의 추타인 _weaponAddDmg는 순수타격치로
계산되서 1~28 + 23(집행추타) 가 고정으로 들어가는거죠 그래서 24~51 이되는거죠..
_weaponAddDmg를 어디에 + 시키느냐에 따라 이렇게 천차만별인데.. 기존팩의 대부분이 잘못되었더군요
이런식으로 각 데미지공식 항목별로 _weaponAddDmg를 +해주시면됩니다 그전에
weaponMaxDamage += _weaponAddDmg; <--요기는 주석처리하거나 삭제를 하신후에요..^^;
추가되는곳들은 소울오프프레임, 크로우더블, 위기히트.. 뭐 이쯤되겠습니다.
팩마다 항목수가 다 다른데 각각 항목별로 찾아서 추가해주세요
예를들면 크로우 데미지 공식같은곳에 weaponDamage = weaponMaxDamage; 이런식일텐데요
위에서 weaponMaxDamage += 에서 추타 삭제하였으니 크로우 부분역시 _weaponAddDmg 추가 해야겠지요
안하면 크로우 허접됩니다.
또.. 소울 오프 프레임 소스도 마찬가지.. 찾아보면 많아요 다 추가해주세요.
대신 위에 말한것처럼 삭제부분 꼭 삭제하고 항목별 추가해야합니다.
삭제 안하고 추가하면 추타랜덤포함+추타 이렇게 중복되서 쎄집니다.
소스수정하시고
1/1 추타50검 추타100검 각각 생성하셔서 몹타격치 실험해보세요 해당 추타만큼 딱딱 고정으로 들어갑니다.
집행검 타격치가 1~51이냐 24~51이냐 차이입니다..
그저.. 프리섭은 프리섭일뿐이냐.. 프리섭도 본섭처럼 할수있다냐... 이런의미...?? 까진 아닌가..-_-;
프리섭은 아무래도 본섭보다 버프나, 장비별로 추타 레벨추타 인챈추타 등등.. 있는팩이 많아서
정착 검추타쪽으로 신경을 그동안 안썼던모양이네요 검추타 집행검아니고서야 수치가 몇안되다보니
못느꼈던거죠 다들.. 추타가 랜덤적용되고 있던거를요.. 물론 아닌팩도 있고
수정해서 쓰시는분들도 있겠지만 공개된 팩들중 검추타 적용제대로 된게 아직 하나도 없더군요..
[출처] 케릭밸런스 소스(pc_npc) 대부분의 팩이 잘못되있는것.. (Love~연구소) |작성자 도도무사

장췐 님의 최근 댓글