text encoding fixed
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#include "stdafx.h"
|
||||
#include "stdafx.h"
|
||||
#include <sstream>
|
||||
|
||||
#include "utils.h"
|
||||
@@ -62,7 +62,7 @@ void CHARACTER::SetSkillNextReadTime(DWORD dwVnum, time_t time)
|
||||
|
||||
bool TSkillUseInfo::HitOnce(DWORD dwVnum)
|
||||
{
|
||||
// 쓰지도않았으면 때리지도 못한다.
|
||||
// 쓰지도않았으면 때리지도 못한다.
|
||||
if (!bUsed)
|
||||
return false;
|
||||
|
||||
@@ -97,7 +97,7 @@ bool TSkillUseInfo::UseSkill(bool isGrandMaster, DWORD vid, DWORD dwCooltime, in
|
||||
this->isGrandMaster = isGrandMaster;
|
||||
DWORD dwCur = get_dword_time();
|
||||
|
||||
// 아직 쿨타임이 끝나지 않았다.
|
||||
// 아직 쿨타임이 끝나지 않았다.
|
||||
if (bUsed && dwNextSkillUsableTime > dwCur)
|
||||
{
|
||||
sys_log(0, "cooltime is not over delta %u", dwNextSkillUsableTime - dwCur);
|
||||
@@ -268,7 +268,7 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
|
||||
|
||||
if (!IsLearnableSkill(dwSkillVnum))
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("수련할 수 없는 스킬입니다."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("수련할 수 없는 스킬입니다."));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -281,9 +281,9 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
|
||||
{
|
||||
if (FindAffect(AFFECT_SKILL_NO_BOOK_DELAY))
|
||||
{
|
||||
// 주안술서 사용중에는 시간 제한 무시
|
||||
// 주안술서 사용중에는 시간 제한 무시
|
||||
RemoveAffect(AFFECT_SKILL_NO_BOOK_DELAY);
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("주안술서를 통해 주화입마에서 빠져나왔습니다."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("주안술서를 통해 주화입마에서 빠져나왔습니다."));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -294,19 +294,19 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
|
||||
}
|
||||
*/
|
||||
|
||||
// bType이 0이면 처음부터 책으로 수련 가능
|
||||
// bType이 0이면 처음부터 책으로 수련 가능
|
||||
if (pkSk->dwType == 0)
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("그랜드 마스터 수련을 할 수 없는 스킬입니다."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("그랜드 마스터 수련을 할 수 없는 스킬입니다."));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (GetSkillMasterType(dwSkillVnum) != SKILL_GRAND_MASTER)
|
||||
{
|
||||
if (GetSkillMasterType(dwSkillVnum) > SKILL_GRAND_MASTER)
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("퍼펙트 마스터된 스킬입니다. 더 이상 수련 할 수 없습니다."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("퍼펙트 마스터된 스킬입니다. 더 이상 수련 할 수 없습니다."));
|
||||
else
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 스킬은 아직 그랜드 마스터 수련을 할 경지에 이르지 않았습니다."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 스킬은 아직 그랜드 마스터 수련을 할 경지에 이르지 않았습니다."));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -317,7 +317,7 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
|
||||
strTrainSkill = os.str();
|
||||
}
|
||||
|
||||
// 여기서 확률을 계산합니다.
|
||||
// 여기서 확률을 계산합니다.
|
||||
BYTE bLastLevel = GetSkillLevel(dwSkillVnum);
|
||||
|
||||
int idx = MIN(9, GetSkillLevel(dwSkillVnum) - 30);
|
||||
@@ -387,15 +387,15 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
|
||||
|
||||
if (bLastLevel == GetSkillLevel(dwSkillVnum))
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("크윽, 기가 역류하고 있어! 이거 설마 주화입마인가!? 젠장!"));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("수련이 실패로 끝났습니다. 다시 도전해주시기 바랍니다."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("크윽, 기가 역류하고 있어! 이거 설마 주화입마인가!? 젠장!"));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("수련이 실패로 끝났습니다. 다시 도전해주시기 바랍니다."));
|
||||
LogManager::instance().CharLog(this, dwSkillVnum, "GM_READ_FAIL", "");
|
||||
return false;
|
||||
}
|
||||
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("몸에서 뭔가 힘이 터져 나오는 기분이야!"));
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("뜨거운 무엇이 계속 용솟음치고 있어! 이건, 이것은!"));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("더 높은 경지의 수련을 성공적으로 끝내셨습니다."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("몸에서 뭔가 힘이 터져 나오는 기분이야!"));
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("뜨거운 무엇이 계속 용솟음치고 있어! 이건, 이것은!"));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("더 높은 경지의 수련을 성공적으로 끝내셨습니다."));
|
||||
LogManager::instance().CharLog(this, dwSkillVnum, "GM_READ_SUCCESS", "");
|
||||
return true;
|
||||
}
|
||||
@@ -422,7 +422,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
|
||||
|
||||
if (!IsLearnableSkill(dwSkillVnum))
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("수련할 수 없는 스킬입니다."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("수련할 수 없는 스킬입니다."));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -434,20 +434,20 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
|
||||
|
||||
if ( GetExp() < need_exp )
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("경험치가 부족하여 책을 읽을 수 없습니다."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("경험치가 부족하여 책을 읽을 수 없습니다."));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// bType이 0이면 처음부터 책으로 수련 가능
|
||||
// bType이 0이면 처음부터 책으로 수련 가능
|
||||
if (pkSk->dwType != 0)
|
||||
{
|
||||
if (GetSkillMasterType(dwSkillVnum) != SKILL_MASTER)
|
||||
{
|
||||
if (GetSkillMasterType(dwSkillVnum) > SKILL_MASTER)
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 스킬은 책으로 더이상 수련할 수 없습니다."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 스킬은 책으로 더이상 수련할 수 없습니다."));
|
||||
else
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 스킬은 아직 책으로 수련할 경지에 이르지 않았습니다."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 스킬은 아직 책으로 수련할 경지에 이르지 않았습니다."));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -458,9 +458,9 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
|
||||
{
|
||||
if (FindAffect(AFFECT_SKILL_NO_BOOK_DELAY))
|
||||
{
|
||||
// 주안술서 사용중에는 시간 제한 무시
|
||||
// 주안술서 사용중에는 시간 제한 무시
|
||||
RemoveAffect(AFFECT_SKILL_NO_BOOK_DELAY);
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("주안술서를 통해 주화입마에서 빠져나왔습니다."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("주안술서를 통해 주화입마에서 빠져나왔습니다."));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -470,7 +470,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
|
||||
}
|
||||
}
|
||||
|
||||
// 여기서 확률을 계산합니다.
|
||||
// 여기서 확률을 계산합니다.
|
||||
BYTE bLastLevel = GetSkillLevel(dwSkillVnum);
|
||||
|
||||
if (bProb != 0)
|
||||
@@ -530,13 +530,13 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
|
||||
|
||||
if (number(1, 100) > percent)
|
||||
{
|
||||
// 책읽기에 성공
|
||||
// 책읽기에 성공
|
||||
if (read_count >= need_bookcount)
|
||||
{
|
||||
SkillLevelUp(dwSkillVnum, SKILL_UP_BY_BOOK);
|
||||
pPC->SetFlag(flag, 0);
|
||||
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("책으로 더 높은 경지의 수련을 성공적으로 끝내셨습니다."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("책으로 더 높은 경지의 수련을 성공적으로 끝내셨습니다."));
|
||||
LogManager::instance().CharLog(this, dwSkillVnum, "READ_SUCCESS", "");
|
||||
return true;
|
||||
}
|
||||
@@ -547,27 +547,27 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
|
||||
switch (number(1, 3))
|
||||
{
|
||||
case 1:
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("어느정도 이 기술에 대해 이해가 되었지만 조금 부족한듯 한데.."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("어느정도 이 기술에 대해 이해가 되었지만 조금 부족한듯 한데.."));
|
||||
break;
|
||||
|
||||
case 2:
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("드디어 끝이 보이는 건가... 이 기술은 이해하기가 너무 힘들어.."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("드디어 끝이 보이는 건가... 이 기술은 이해하기가 너무 힘들어.."));
|
||||
break;
|
||||
|
||||
case 3:
|
||||
default:
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("열심히 하는 배움을 가지는 것만이 기술을 배울수 있는 유일한 길이다.."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("열심히 하는 배움을 가지는 것만이 기술을 배울수 있는 유일한 길이다.."));
|
||||
break;
|
||||
}
|
||||
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d 권을 더 읽어야 수련을 완료 할 수 있습니다."), need_bookcount - read_count);
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d 권을 더 읽어야 수련을 완료 할 수 있습니다."), need_bookcount - read_count);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 사용자의 퀘스트 정보 로드 실패
|
||||
// 사용자의 퀘스트 정보 로드 실패
|
||||
}
|
||||
}
|
||||
// INTERNATIONAL_VERSION
|
||||
@@ -605,15 +605,15 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
|
||||
|
||||
if (bLastLevel != GetSkillLevel(dwSkillVnum))
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("몸에서 뭔가 힘이 터져 나오는 기분이야!"));
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("뜨거운 무엇이 계속 용솟음치고 있어! 이건, 이것은!"));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("책으로 더 높은 경지의 수련을 성공적으로 끝내셨습니다."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("몸에서 뭔가 힘이 터져 나오는 기분이야!"));
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("뜨거운 무엇이 계속 용솟음치고 있어! 이건, 이것은!"));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("책으로 더 높은 경지의 수련을 성공적으로 끝내셨습니다."));
|
||||
LogManager::instance().CharLog(this, dwSkillVnum, "READ_SUCCESS", "");
|
||||
}
|
||||
else
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("크윽, 기가 역류하고 있어! 이거 설마 주화입마인가!? 젠장!"));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("수련이 실패로 끝났습니다. 다시 도전해주시기 바랍니다."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("크윽, 기가 역류하고 있어! 이거 설마 주화입마인가!? 젠장!"));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("수련이 실패로 끝났습니다. 다시 도전해주시기 바랍니다."));
|
||||
LogManager::instance().CharLog(this, dwSkillVnum, "READ_FAIL", "");
|
||||
}
|
||||
|
||||
@@ -697,7 +697,7 @@ void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
|
||||
|
||||
if (IsPolymorphed())
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("둔갑 중에는 능력을 올릴 수 없습니다."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("둔갑 중에는 능력을 올릴 수 없습니다."));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -724,7 +724,7 @@ void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
|
||||
if (!IsLearnableSkill(dwVnum))
|
||||
return;
|
||||
|
||||
// 그랜드 마스터는 퀘스트로만 수행가능
|
||||
// 그랜드 마스터는 퀘스트로만 수행가능
|
||||
if (pkSk->dwType != 0)
|
||||
{
|
||||
switch (GetSkillMasterType(pkSk->dwVnum))
|
||||
@@ -741,7 +741,7 @@ void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
|
||||
|
||||
if (bMethod == SKILL_UP_BY_POINT)
|
||||
{
|
||||
// 마스터가 아닌 상태에서만 수련가능
|
||||
// 마스터가 아닌 상태에서만 수련가능
|
||||
if (GetSkillMasterType(pkSk->dwVnum) != SKILL_NORMAL)
|
||||
return;
|
||||
|
||||
@@ -750,7 +750,7 @@ void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
|
||||
}
|
||||
else if (bMethod == SKILL_UP_BY_BOOK)
|
||||
{
|
||||
if (pkSk->dwType != 0) // 직업에 속하지 않았거나 포인트로 올릴수 없는 스킬은 처음부터 책으로 배울 수 있다.
|
||||
if (pkSk->dwType != 0) // 직업에 속하지 않았거나 포인트로 올릴수 없는 스킬은 처음부터 책으로 배울 수 있다.
|
||||
if (GetSkillMasterType(pkSk->dwVnum) != SKILL_MASTER)
|
||||
return;
|
||||
}
|
||||
@@ -804,11 +804,11 @@ void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
|
||||
|
||||
if (pkSk->dwType != 0)
|
||||
{
|
||||
// 갑자기 그레이드 업하는 코딩
|
||||
// 갑자기 그레이드 업하는 코딩
|
||||
switch (GetSkillMasterType(pkSk->dwVnum))
|
||||
{
|
||||
case SKILL_NORMAL:
|
||||
// 번섭은 스킬 업그레이드 17~20 사이 랜덤 마스터 수련
|
||||
// 번섭은 스킬 업그레이드 17~20 사이 랜덤 마스터 수련
|
||||
if (GetSkillLevel(pkSk->dwVnum) >= 17)
|
||||
{
|
||||
if (GetQuestFlag("reset_scroll.force_to_master_skill") > 0)
|
||||
@@ -866,7 +866,7 @@ void CHARACTER::ResetSkill()
|
||||
if (NULL == m_pSkillLevels)
|
||||
return;
|
||||
|
||||
// 보조 스킬은 리셋시키지 않는다
|
||||
// 보조 스킬은 리셋시키지 않는다
|
||||
std::vector<std::pair<DWORD, TPlayerSkill> > vec;
|
||||
size_t count = sizeof(s_adwSubSkillVnums) / sizeof(s_adwSubSkillVnums[0]);
|
||||
|
||||
@@ -997,7 +997,7 @@ EVENTFUNC(ChainLightningEvent)
|
||||
|
||||
sys_log(1, "chainlighting event %s", pkChr->GetName());
|
||||
|
||||
if (pkChrVictim->GetParty()) // 파티 먼저
|
||||
if (pkChrVictim->GetParty()) // 파티 먼저
|
||||
{
|
||||
pkTarget = pkChrVictim->GetParty()->GetNextOwnership(NULL, pkChrVictim->GetX(), pkChrVictim->GetY());
|
||||
if (pkTarget == pkChrVictim || !number(0, 2) || pkChr->GetChainLightingExcept().find(pkTarget) != pkChr->GetChainLightingExcept().end())
|
||||
@@ -1096,7 +1096,7 @@ struct FuncSplashDamage
|
||||
}
|
||||
|
||||
if (m_pkChr->IsPC())
|
||||
// 길드 스킬은 쿨타임 처리를 하지 않는다.
|
||||
// 길드 스킬은 쿨타임 처리를 하지 않는다.
|
||||
if (!(m_pkSk->dwVnum >= GUILD_SKILL_START && m_pkSk->dwVnum <= GUILD_SKILL_END))
|
||||
if (!m_bDisableCooltime && m_pInfo && !m_pInfo->HitOnce(m_pkSk->dwVnum) && m_pkSk->dwVnum != SKILL_MUYEONG)
|
||||
{
|
||||
@@ -1166,7 +1166,7 @@ struct FuncSplashDamage
|
||||
m_pkSk->SetPointVar("chain", m_pkChr->GetChainLightningIndex());
|
||||
m_pkChr->IncChainLightningIndex();
|
||||
|
||||
bool bUnderEunhyung = m_pkChr->GetAffectedEunhyung() > 0; // 이건 왜 여기서 하지??
|
||||
bool bUnderEunhyung = m_pkChr->GetAffectedEunhyung() > 0; // 이건 왜 여기서 하지??
|
||||
|
||||
m_pkSk->SetPointVar("ek", m_pkChr->GetAffectedEunhyung()*1./100);
|
||||
//m_pkChr->ClearAffectedEunhyung();
|
||||
@@ -1185,7 +1185,7 @@ struct FuncSplashDamage
|
||||
|
||||
if (test_server && iAmount == 0 && m_pkSk->bPointOn != POINT_NONE)
|
||||
{
|
||||
m_pkChr->ChatPacket(CHAT_TYPE_INFO, "효과가 없습니다. 스킬 공식을 확인하세요");
|
||||
m_pkChr->ChatPacket(CHAT_TYPE_INFO, "효과가 없습니다. 스킬 공식을 확인하세요");
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
iAmount = -iAmount;
|
||||
@@ -1249,11 +1249,11 @@ struct FuncSplashDamage
|
||||
|
||||
if (m_pkChr->IsPC() && m_pkChr->m_SkillUseInfo[m_pkSk->dwVnum].GetMainTargetVID() != (DWORD) pkChrVictim->GetVID())
|
||||
{
|
||||
// 데미지 감소
|
||||
// 데미지 감소
|
||||
iDam = (int) (iDam * m_pkSk->kSplashAroundDamageAdjustPoly.Eval());
|
||||
}
|
||||
|
||||
// TODO 스킬에 따른 데미지 타입 기록해야한다.
|
||||
// TODO 스킬에 따른 데미지 타입 기록해야한다.
|
||||
EDamageType dt = DAMAGE_TYPE_NONE;
|
||||
|
||||
switch (m_pkSk->bSkillAttrType)
|
||||
@@ -1276,7 +1276,7 @@ struct FuncSplashDamage
|
||||
|
||||
case WEAPON_TWO_HANDED:
|
||||
iDam = iDam * (100 - pkChrVictim->GetPoint(POINT_RESIST_TWOHAND)) / 100;
|
||||
// 양손검 페널티 10%
|
||||
// 양손검 페널티 10%
|
||||
//iDam = iDam * 95 / 100;
|
||||
|
||||
break;
|
||||
@@ -1301,8 +1301,8 @@ struct FuncSplashDamage
|
||||
|
||||
case SKILL_ATTR_TYPE_RANGE:
|
||||
dt = DAMAGE_TYPE_RANGE;
|
||||
// 으아아아악
|
||||
// 예전에 적용안했던 버그가 있어서 방어력 계산을 다시하면 유저가 난리남
|
||||
// 으아아아악
|
||||
// 예전에 적용안했던 버그가 있어서 방어력 계산을 다시하면 유저가 난리남
|
||||
//iDam -= pkChrVictim->GetPoint(POINT_DEF_GRADE);
|
||||
iDam = iDam * (100 - pkChrVictim->GetPoint(POINT_RESIST_BOW)) / 100;
|
||||
break;
|
||||
@@ -1310,8 +1310,8 @@ struct FuncSplashDamage
|
||||
case SKILL_ATTR_TYPE_MAGIC:
|
||||
dt = DAMAGE_TYPE_MAGIC;
|
||||
iDam = CalcAttBonus(m_pkChr, pkChrVictim, iDam);
|
||||
// 으아아아악
|
||||
// 예전에 적용안했던 버그가 있어서 방어력 계산을 다시하면 유저가 난리남
|
||||
// 으아아아악
|
||||
// 예전에 적용안했던 버그가 있어서 방어력 계산을 다시하면 유저가 난리남
|
||||
//iDam -= pkChrVictim->GetPoint(POINT_MAGIC_DEF_GRADE);
|
||||
iDam = iDam * (100 - pkChrVictim->GetPoint(POINT_RESIST_MAGIC)) / 100;
|
||||
break;
|
||||
@@ -1322,13 +1322,13 @@ struct FuncSplashDamage
|
||||
}
|
||||
|
||||
//
|
||||
// 20091109 독일 스킬 속성 요청 작업
|
||||
// 기존 스킬 테이블에 SKILL_FLAG_WIND, SKILL_FLAG_ELEC, SKILL_FLAG_FIRE를 가진 스킬이
|
||||
// 전혀 없었으므로 몬스터의 RESIST_WIND, RESIST_ELEC, RESIST_FIRE도 사용되지 않고 있었다.
|
||||
// 20091109 독일 스킬 속성 요청 작업
|
||||
// 기존 스킬 테이블에 SKILL_FLAG_WIND, SKILL_FLAG_ELEC, SKILL_FLAG_FIRE를 가진 스킬이
|
||||
// 전혀 없었으므로 몬스터의 RESIST_WIND, RESIST_ELEC, RESIST_FIRE도 사용되지 않고 있었다.
|
||||
//
|
||||
// PvP와 PvE밸런스 분리를 위해 의도적으로 NPC만 적용하도록 했으며 기존 밸런스와 차이점을
|
||||
// 느끼지 못하기 위해 mob_proto의 RESIST_MAGIC을 RESIST_WIND, RESIST_ELEC, RESIST_FIRE로
|
||||
// 복사하였다.
|
||||
// PvP와 PvE밸런스 분리를 위해 의도적으로 NPC만 적용하도록 했으며 기존 밸런스와 차이점을
|
||||
// 느끼지 못하기 위해 mob_proto의 RESIST_MAGIC을 RESIST_WIND, RESIST_ELEC, RESIST_FIRE로
|
||||
// 복사하였다.
|
||||
//
|
||||
if (pkChrVictim->IsNPC())
|
||||
{
|
||||
@@ -1638,7 +1638,7 @@ EVENTFUNC(skill_gwihwan_event)
|
||||
{
|
||||
PIXEL_POSITION pos;
|
||||
|
||||
// 성공
|
||||
// 성공
|
||||
if (SECTREE_MANAGER::instance().GetRecallPositionByEmpire(ch->GetMapIndex(), ch->GetEmpire(), pos))
|
||||
{
|
||||
sys_log(1, "Recall: %s %d %d -> %d %d", ch->GetName(), ch->GetX(), ch->GetY(), pos.x, pos.y);
|
||||
@@ -1652,8 +1652,8 @@ EVENTFUNC(skill_gwihwan_event)
|
||||
}
|
||||
else
|
||||
{
|
||||
//실패
|
||||
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("귀환에 실패하였습니다."));
|
||||
//실패
|
||||
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("귀환에 실패하였습니다."));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1680,11 +1680,11 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
|
||||
GetName(), dwVnum, posTarget.x, posTarget.y, bSkillLevel);
|
||||
}
|
||||
|
||||
// 나에게 쓰는 스킬은 내 위치를 쓴다.
|
||||
// 나에게 쓰는 스킬은 내 위치를 쓴다.
|
||||
//if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
|
||||
// posTarget = GetXYZ();
|
||||
|
||||
// 스플래쉬가 아닌 스킬은 주위이면 이상하다
|
||||
// 스플래쉬가 아닌 스킬은 주위이면 이상하다
|
||||
if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_SPLASH))
|
||||
return BATTLE_NONE;
|
||||
|
||||
@@ -1768,7 +1768,7 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
|
||||
|
||||
if (test_server && iAmount == 0 && pkSk->bPointOn != POINT_NONE)
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_INFO, "효과가 없습니다. 스킬 공식을 확인하세요");
|
||||
ChatPacket(CHAT_TYPE_INFO, "효과가 없습니다. 스킬 공식을 확인하세요");
|
||||
}
|
||||
|
||||
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_REMOVE_BAD_AFFECT))
|
||||
@@ -1783,7 +1783,7 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
|
||||
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK | SKILL_FLAG_USE_MELEE_DAMAGE | SKILL_FLAG_USE_MAGIC_DAMAGE))
|
||||
{
|
||||
//
|
||||
// 공격 스킬일 경우
|
||||
// 공격 스킬일 경우
|
||||
//
|
||||
bool bAdded = false;
|
||||
|
||||
@@ -1810,7 +1810,7 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
|
||||
int iDur = (int) pkSk->kDurationPoly.Eval();
|
||||
|
||||
if (IsPC())
|
||||
if (!(dwVnum >= GUILD_SKILL_START && dwVnum <= GUILD_SKILL_END)) // 길드 스킬은 쿨타임 처리를 하지 않는다.
|
||||
if (!(dwVnum >= GUILD_SKILL_START && dwVnum <= GUILD_SKILL_END)) // 길드 스킬은 쿨타임 처리를 하지 않는다.
|
||||
if (!m_bDisableCooltime && !m_SkillUseInfo[dwVnum].HitOnce(dwVnum) && dwVnum != SKILL_MUYEONG)
|
||||
{
|
||||
//if (dwVnum == SKILL_CHAIN) sys_log(0, "CHAIN skill cannot hit %s", GetName());
|
||||
@@ -1901,7 +1901,7 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
|
||||
if (iDur > 0)
|
||||
{
|
||||
iDur += GetPoint(POINT_PARTY_BUFFER_BONUS);
|
||||
// AffectFlag가 없거나, toggle 하는 것이 아니라면..
|
||||
// AffectFlag가 없거나, toggle 하는 것이 아니라면..
|
||||
pkSk->kDurationSPCostPoly.SetVar("k", k/*bSkillLevel*/);
|
||||
|
||||
AddAffect(pkSk->dwVnum,
|
||||
@@ -1956,13 +1956,13 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
|
||||
}
|
||||
}
|
||||
|
||||
// bSkillLevel 인자가 0이 아닐 경우에는 m_abSkillLevels를 사용하지 않고 강제로
|
||||
// bSkillLevel로 계산한다.
|
||||
// bSkillLevel 인자가 0이 아닐 경우에는 m_abSkillLevels를 사용하지 않고 강제로
|
||||
// bSkillLevel로 계산한다.
|
||||
int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel)
|
||||
{
|
||||
const bool bCanUseHorseSkill = CanUseHorseSkill();
|
||||
|
||||
// 말을 타고있지만 스킬은 사용할 수 없는 상태라면 return
|
||||
// 말을 타고있지만 스킬은 사용할 수 없는 상태라면 return
|
||||
if (false == bCanUseHorseSkill && true == IsRiding())
|
||||
return BATTLE_NONE;
|
||||
|
||||
@@ -1984,7 +1984,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
|
||||
return BATTLE_NONE;
|
||||
|
||||
|
||||
// 상대방에게 쓰는 것이 아니면 나에게 써야 한다.
|
||||
// 상대방에게 쓰는 것이 아니면 나에게 써야 한다.
|
||||
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
|
||||
pkVictim = this;
|
||||
|
||||
@@ -2113,7 +2113,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
|
||||
|
||||
if (test_server && iAmount == 0 && pkSk->bPointOn != POINT_NONE)
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_INFO, "효과가 없습니다. 스킬 공식을 확인하세요");
|
||||
ChatPacket(CHAT_TYPE_INFO, "효과가 없습니다. 스킬 공식을 확인하세요");
|
||||
}
|
||||
// END_OF_ADD_GRANDMASTER_SKILL
|
||||
|
||||
@@ -2157,7 +2157,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
|
||||
|
||||
|
||||
if (IsPC())
|
||||
if (!(dwVnum >= GUILD_SKILL_START && dwVnum <= GUILD_SKILL_END)) // 길드 스킬은 쿨타임 처리를 하지 않는다.
|
||||
if (!(dwVnum >= GUILD_SKILL_START && dwVnum <= GUILD_SKILL_END)) // 길드 스킬은 쿨타임 처리를 하지 않는다.
|
||||
if (!m_bDisableCooltime && !m_SkillUseInfo[dwVnum].HitOnce(dwVnum) && dwVnum != SKILL_MUYEONG)
|
||||
{
|
||||
return BATTLE_NONE;
|
||||
@@ -2270,7 +2270,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
|
||||
if (iDur > 0)
|
||||
{
|
||||
iDur += GetPoint(POINT_PARTY_BUFFER_BONUS);
|
||||
// AffectFlag가 없거나, toggle 하는 것이 아니라면..
|
||||
// AffectFlag가 없거나, toggle 하는 것이 아니라면..
|
||||
pkSk->kDurationSPCostPoly.SetVar("k", k/*bSkillLevel*/);
|
||||
|
||||
if (pkSk->bPointOn2 != POINT_NONE)
|
||||
@@ -2445,14 +2445,14 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
||||
return false;
|
||||
|
||||
if (GetHorseLevel() <= 0)
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("말이 없습니다. 마굿간 경비병을 찾아가세요."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("말이 없습니다. 마굿간 경비병을 찾아가세요."));
|
||||
else
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("말 소환 아이템을 사용하세요."));
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("말 소환 아이템을 사용하세요."));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// 말을 타고있지만 스킬은 사용할 수 없는 상태라면 return false
|
||||
// 말을 타고있지만 스킬은 사용할 수 없는 상태라면 return false
|
||||
if (false == bCanUseHorseSkill && true == IsRiding())
|
||||
return false;
|
||||
|
||||
@@ -2498,7 +2498,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
||||
}
|
||||
|
||||
m_SkillUseInfo[dwVnum].SetMainTargetVID(pkVictim->GetVID());
|
||||
// DASH 상태의 탄환격은 공격기술
|
||||
// DASH 상태의 탄환격은 공격기술
|
||||
ComputeSkill(dwVnum, pkVictim);
|
||||
RemoveAffect(dwVnum);
|
||||
return true;
|
||||
@@ -2516,7 +2516,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
||||
return true;
|
||||
}
|
||||
|
||||
// Toggle 할 때는 SP를 쓰지 않음 (SelfOnly로 구분)
|
||||
// Toggle 할 때는 SP를 쓰지 않음 (SelfOnly로 구분)
|
||||
if ((0 != pkSk->dwAffectFlag || pkSk->dwVnum == SKILL_MUYEONG) && (pkSk->dwFlag & SKILL_FLAG_TOGGLE) && RemoveAffect(pkSk->dwVnum))
|
||||
{
|
||||
return true;
|
||||
@@ -2530,7 +2530,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
||||
pkSk->SetPointVar("k", k);
|
||||
pkSk->kSplashAroundDamageAdjustPoly.SetVar("k", k);
|
||||
|
||||
// 쿨타임 체크
|
||||
// 쿨타임 체크
|
||||
pkSk->kCooldownPoly.SetVar("k", k);
|
||||
int iCooltime = (int) pkSk->kCooldownPoly.Eval();
|
||||
int lMaxHit = pkSk->lMaxHit ? pkSk->lMaxHit : -1;
|
||||
@@ -2584,7 +2584,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
||||
return false;
|
||||
|
||||
if (test_server)
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s SP소모: %d"), pkSk->szName, iNeededSP);
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s SP소모: %d"), pkSk->szName, iNeededSP);
|
||||
|
||||
PointChange(POINT_SP, -iNeededSP);
|
||||
}
|
||||
@@ -2594,7 +2594,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
||||
|
||||
if (pkSk->dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill() && !IsAffectFlag(AFF_TANHWAN_DASH) && !pkVictim)
|
||||
{
|
||||
// 처음 사용하는 무영진은 자신에게 Affect를 붙인다.
|
||||
// 처음 사용하는 무영진은 자신에게 Affect를 붙인다.
|
||||
pkVictim = this;
|
||||
}
|
||||
|
||||
@@ -2667,7 +2667,7 @@ int CHARACTER::GetSkillMasterType(DWORD dwVnum) const
|
||||
|
||||
int CHARACTER::GetSkillPower(DWORD dwVnum, BYTE bLevel) const
|
||||
{
|
||||
// 인어반지 아이템
|
||||
// 인어반지 아이템
|
||||
if (dwVnum >= SKILL_LANGUAGE1 && dwVnum <= SKILL_LANGUAGE3 && IsEquipUniqueGroup(UNIQUE_GROUP_RING_OF_LANGUAGE))
|
||||
{
|
||||
return 100;
|
||||
@@ -2770,41 +2770,41 @@ void CHARACTER::SkillLearnWaitMoreTimeMessage(DWORD ms)
|
||||
//const char* str = "";
|
||||
//
|
||||
if (ms < 3 * 60)
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("몸 속이 뜨겁군. 하지만 아주 편안해. 이대로 기를 안정시키자."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("몸 속이 뜨겁군. 하지만 아주 편안해. 이대로 기를 안정시키자."));
|
||||
else if (ms < 5 * 60)
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("그래, 천천히. 좀더 천천히, 그러나 막힘 없이 빠르게!"));
|
||||
else if (ms < 10 * 60) // 10분
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("그래, 이 느낌이야. 체내에 기가 아주 충만해."));
|
||||
else if (ms < 30 * 60) // 30분
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("그래, 천천히. 좀더 천천히, 그러나 막힘 없이 빠르게!"));
|
||||
else if (ms < 10 * 60) // 10분
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("그래, 이 느낌이야. 체내에 기가 아주 충만해."));
|
||||
else if (ms < 30 * 60) // 30분
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("다 읽었다! 이제 비급에 적혀있는 대로 전신에 기를 돌리기만 하면,"));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("그것으로 수련은 끝난 거야!"));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("다 읽었다! 이제 비급에 적혀있는 대로 전신에 기를 돌리기만 하면,"));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("그것으로 수련은 끝난 거야!"));
|
||||
}
|
||||
else if (ms < 1 * 3600) // 1시간
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("이제 책의 마지막 장이야! 수련의 끝이 눈에 보이고 있어!"));
|
||||
else if (ms < 2 * 3600) // 2시간
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("얼마 안 남았어! 조금만 더!"));
|
||||
else if (ms < 1 * 3600) // 1시간
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("이제 책의 마지막 장이야! 수련의 끝이 눈에 보이고 있어!"));
|
||||
else if (ms < 2 * 3600) // 2시간
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("얼마 안 남았어! 조금만 더!"));
|
||||
else if (ms < 3 * 3600)
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("좋았어! 조금만 더 읽으면 끝이다!"));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("좋았어! 조금만 더 읽으면 끝이다!"));
|
||||
else if (ms < 6 * 3600)
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("책장도 이제 얼마 남지 않았군."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("뭔가 몸 안에 힘이 생기는 기분인 걸."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("책장도 이제 얼마 남지 않았군."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("뭔가 몸 안에 힘이 생기는 기분인 걸."));
|
||||
}
|
||||
else if (ms < 12 * 3600)
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("이제 좀 슬슬 가닥이 잡히는 것 같은데."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("좋아, 이 기세로 계속 나간다!"));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("이제 좀 슬슬 가닥이 잡히는 것 같은데."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("좋아, 이 기세로 계속 나간다!"));
|
||||
}
|
||||
else if (ms < 18 * 3600)
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("아니 어떻게 된 게 종일 읽어도 머리에 안 들어오냐."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("공부하기 싫어지네."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("아니 어떻게 된 게 종일 읽어도 머리에 안 들어오냐."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("공부하기 싫어지네."));
|
||||
}
|
||||
else //if (ms < 2 * 86400)
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("생각만큼 읽기가 쉽지가 않군. 이해도 어렵고 내용도 난해해."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("이래서야 공부가 안된다구."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("생각만큼 읽기가 쉽지가 않군. 이해도 어렵고 내용도 난해해."));
|
||||
ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("이래서야 공부가 안된다구."));
|
||||
}
|
||||
/*
|
||||
str = "30%";
|
||||
@@ -3164,10 +3164,10 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
|
||||
static DWORD s_anMotion2SkillVnumList[MOTION_MAX_NUM][SKILL_LIST_MAX_COUNT] =
|
||||
{
|
||||
// 스킬수 무사스킬ID 자객스킬ID 수라스킬ID 무당스킬ID
|
||||
// 스킬수 무사스킬ID 자객스킬ID 수라스킬ID 무당스킬ID
|
||||
{ 0, 0, 0, 0, 0 }, // 0
|
||||
|
||||
// 1번 직군 기본 스킬
|
||||
// 1번 직군 기본 스킬
|
||||
{ 4, 1, 31, 61, 91 }, // 1
|
||||
{ 4, 2, 32, 62, 92 }, // 2
|
||||
{ 4, 3, 33, 63, 93 }, // 3
|
||||
@@ -3176,9 +3176,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 4, 6, 36, 66, 96 }, // 6
|
||||
{ 0, 0, 0, 0, 0 }, // 7
|
||||
{ 0, 0, 0, 0, 0 }, // 8
|
||||
// 1번 직군 기본 스킬 끝
|
||||
// 1번 직군 기본 스킬 끝
|
||||
|
||||
// 여유분
|
||||
// 여유분
|
||||
{ 0, 0, 0, 0, 0 }, // 9
|
||||
{ 0, 0, 0, 0, 0 }, // 10
|
||||
{ 0, 0, 0, 0, 0 }, // 11
|
||||
@@ -3186,9 +3186,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 0, 0, 0, 0, 0 }, // 13
|
||||
{ 0, 0, 0, 0, 0 }, // 14
|
||||
{ 0, 0, 0, 0, 0 }, // 15
|
||||
// 여유분 끝
|
||||
// 여유분 끝
|
||||
|
||||
// 2번 직군 기본 스킬
|
||||
// 2번 직군 기본 스킬
|
||||
{ 4, 16, 46, 76, 106 }, // 16
|
||||
{ 4, 17, 47, 77, 107 }, // 17
|
||||
{ 4, 18, 48, 78, 108 }, // 18
|
||||
@@ -3197,14 +3197,14 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 4, 21, 51, 81, 111 }, // 21
|
||||
{ 0, 0, 0, 0, 0 }, // 22
|
||||
{ 0, 0, 0, 0, 0 }, // 23
|
||||
// 2번 직군 기본 스킬 끝
|
||||
// 2번 직군 기본 스킬 끝
|
||||
|
||||
// 여유분
|
||||
// 여유분
|
||||
{ 0, 0, 0, 0, 0 }, // 24
|
||||
{ 0, 0, 0, 0, 0 }, // 25
|
||||
// 여유분 끝
|
||||
// 여유분 끝
|
||||
|
||||
// 1번 직군 마스터 스킬
|
||||
// 1번 직군 마스터 스킬
|
||||
{ 4, 1, 31, 61, 91 }, // 26
|
||||
{ 4, 2, 32, 62, 92 }, // 27
|
||||
{ 4, 3, 33, 63, 93 }, // 28
|
||||
@@ -3213,9 +3213,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 4, 6, 36, 66, 96 }, // 31
|
||||
{ 0, 0, 0, 0, 0 }, // 32
|
||||
{ 0, 0, 0, 0, 0 }, // 33
|
||||
// 1번 직군 마스터 스킬 끝
|
||||
// 1번 직군 마스터 스킬 끝
|
||||
|
||||
// 여유분
|
||||
// 여유분
|
||||
{ 0, 0, 0, 0, 0 }, // 34
|
||||
{ 0, 0, 0, 0, 0 }, // 35
|
||||
{ 0, 0, 0, 0, 0 }, // 36
|
||||
@@ -3223,9 +3223,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 0, 0, 0, 0, 0 }, // 38
|
||||
{ 0, 0, 0, 0, 0 }, // 39
|
||||
{ 0, 0, 0, 0, 0 }, // 40
|
||||
// 여유분 끝
|
||||
// 여유분 끝
|
||||
|
||||
// 2번 직군 마스터 스킬
|
||||
// 2번 직군 마스터 스킬
|
||||
{ 4, 16, 46, 76, 106 }, // 41
|
||||
{ 4, 17, 47, 77, 107 }, // 42
|
||||
{ 4, 18, 48, 78, 108 }, // 43
|
||||
@@ -3234,14 +3234,14 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 4, 21, 51, 81, 111 }, // 46
|
||||
{ 0, 0, 0, 0, 0 }, // 47
|
||||
{ 0, 0, 0, 0, 0 }, // 48
|
||||
// 2번 직군 마스터 스킬 끝
|
||||
// 2번 직군 마스터 스킬 끝
|
||||
|
||||
// 여유분
|
||||
// 여유분
|
||||
{ 0, 0, 0, 0, 0 }, // 49
|
||||
{ 0, 0, 0, 0, 0 }, // 50
|
||||
// 여유분 끝
|
||||
// 여유분 끝
|
||||
|
||||
// 1번 직군 그랜드 마스터 스킬
|
||||
// 1번 직군 그랜드 마스터 스킬
|
||||
{ 4, 1, 31, 61, 91 }, // 51
|
||||
{ 4, 2, 32, 62, 92 }, // 52
|
||||
{ 4, 3, 33, 63, 93 }, // 53
|
||||
@@ -3250,9 +3250,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 4, 6, 36, 66, 96 }, // 56
|
||||
{ 0, 0, 0, 0, 0 }, // 57
|
||||
{ 0, 0, 0, 0, 0 }, // 58
|
||||
// 1번 직군 그랜드 마스터 스킬 끝
|
||||
// 1번 직군 그랜드 마스터 스킬 끝
|
||||
|
||||
// 여유분
|
||||
// 여유분
|
||||
{ 0, 0, 0, 0, 0 }, // 59
|
||||
{ 0, 0, 0, 0, 0 }, // 60
|
||||
{ 0, 0, 0, 0, 0 }, // 61
|
||||
@@ -3260,9 +3260,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 0, 0, 0, 0, 0 }, // 63
|
||||
{ 0, 0, 0, 0, 0 }, // 64
|
||||
{ 0, 0, 0, 0, 0 }, // 65
|
||||
// 여유분 끝
|
||||
// 여유분 끝
|
||||
|
||||
// 2번 직군 그랜드 마스터 스킬
|
||||
// 2번 직군 그랜드 마스터 스킬
|
||||
{ 4, 16, 46, 76, 106 }, // 66
|
||||
{ 4, 17, 47, 77, 107 }, // 67
|
||||
{ 4, 18, 48, 78, 108 }, // 68
|
||||
@@ -3271,14 +3271,14 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 4, 21, 51, 81, 111 }, // 71
|
||||
{ 0, 0, 0, 0, 0 }, // 72
|
||||
{ 0, 0, 0, 0, 0 }, // 73
|
||||
// 2번 직군 그랜드 마스터 스킬 끝
|
||||
// 2번 직군 그랜드 마스터 스킬 끝
|
||||
|
||||
//여유분
|
||||
//여유분
|
||||
{ 0, 0, 0, 0, 0 }, // 74
|
||||
{ 0, 0, 0, 0, 0 }, // 75
|
||||
// 여유분 끝
|
||||
// 여유분 끝
|
||||
|
||||
// 1번 직군 퍼펙트 마스터 스킬
|
||||
// 1번 직군 퍼펙트 마스터 스킬
|
||||
{ 4, 1, 31, 61, 91 }, // 76
|
||||
{ 4, 2, 32, 62, 92 }, // 77
|
||||
{ 4, 3, 33, 63, 93 }, // 78
|
||||
@@ -3287,9 +3287,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 4, 6, 36, 66, 96 }, // 81
|
||||
{ 0, 0, 0, 0, 0 }, // 82
|
||||
{ 0, 0, 0, 0, 0 }, // 83
|
||||
// 1번 직군 퍼펙트 마스터 스킬 끝
|
||||
// 1번 직군 퍼펙트 마스터 스킬 끝
|
||||
|
||||
// 여유분
|
||||
// 여유분
|
||||
{ 0, 0, 0, 0, 0 }, // 84
|
||||
{ 0, 0, 0, 0, 0 }, // 85
|
||||
{ 0, 0, 0, 0, 0 }, // 86
|
||||
@@ -3297,9 +3297,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 0, 0, 0, 0, 0 }, // 88
|
||||
{ 0, 0, 0, 0, 0 }, // 89
|
||||
{ 0, 0, 0, 0, 0 }, // 90
|
||||
// 여유분 끝
|
||||
// 여유분 끝
|
||||
|
||||
// 2번 직군 퍼펙트 마스터 스킬
|
||||
// 2번 직군 퍼펙트 마스터 스킬
|
||||
{ 4, 16, 46, 76, 106 }, // 91
|
||||
{ 4, 17, 47, 77, 107 }, // 92
|
||||
{ 4, 18, 48, 78, 108 }, // 93
|
||||
@@ -3308,23 +3308,23 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 4, 21, 51, 81, 111 }, // 96
|
||||
{ 0, 0, 0, 0, 0 }, // 97
|
||||
{ 0, 0, 0, 0, 0 }, // 98
|
||||
// 2번 직군 퍼펙트 마스터 스킬 끝
|
||||
// 2번 직군 퍼펙트 마스터 스킬 끝
|
||||
|
||||
// 여유분
|
||||
// 여유분
|
||||
{ 0, 0, 0, 0, 0 }, // 99
|
||||
{ 0, 0, 0, 0, 0 }, // 100
|
||||
// 여유분 끝
|
||||
// 여유분 끝
|
||||
|
||||
// 길드 스킬
|
||||
// 길드 스킬
|
||||
{ 1, 152, 0, 0, 0}, // 101
|
||||
{ 1, 153, 0, 0, 0}, // 102
|
||||
{ 1, 154, 0, 0, 0}, // 103
|
||||
{ 1, 155, 0, 0, 0}, // 104
|
||||
{ 1, 156, 0, 0, 0}, // 105
|
||||
{ 1, 157, 0, 0, 0}, // 106
|
||||
// 길드 스킬 끝
|
||||
// 길드 스킬 끝
|
||||
|
||||
// 여유분
|
||||
// 여유분
|
||||
{ 0, 0, 0, 0, 0}, // 107
|
||||
{ 0, 0, 0, 0, 0}, // 108
|
||||
{ 0, 0, 0, 0, 0}, // 109
|
||||
@@ -3339,13 +3339,13 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
|
||||
{ 0, 0, 0, 0, 0}, // 118
|
||||
{ 0, 0, 0, 0, 0}, // 119
|
||||
{ 0, 0, 0, 0, 0}, // 120
|
||||
// 여유분 끝
|
||||
// 여유분 끝
|
||||
|
||||
// 승마 스킬
|
||||
// 승마 스킬
|
||||
{ 2, 137, 140, 0, 0}, // 121
|
||||
{ 1, 138, 0, 0, 0}, // 122
|
||||
{ 1, 139, 0, 0, 0}, // 123
|
||||
// 승마 스킬 끝
|
||||
// 승마 스킬 끝
|
||||
};
|
||||
|
||||
if (dwMotionIndex >= MOTION_MAX_NUM)
|
||||
@@ -3499,7 +3499,7 @@ bool CHARACTER::CanUseSkill(DWORD dwSkillVnum) const
|
||||
|
||||
if (true == IsRiding())
|
||||
{
|
||||
//마운트 탈것중 고급말만 스킬 사용가능
|
||||
//마운트 탈것중 고급말만 스킬 사용가능
|
||||
if(GetMountVnum())
|
||||
{
|
||||
if( GetMountVnum() < 20209 && GetMountVnum() > 20212)
|
||||
|
||||
Reference in New Issue
Block a user