WIP: Rename identifiers containing Korean words in source code #33
@ -133,26 +133,26 @@ enum EAffectBits
|
|||||||
|
|
||||||
AFF_FISH_MIND,
|
AFF_FISH_MIND,
|
||||||
|
|
||||||
AFF_JEONGWIHON, // 전귀혼
|
AFF_WAR_BODY_BERSERK, // 전귀혼
|
||||||
AFF_GEOMGYEONG, // 검경
|
AFF_WAR_BODY_AURA, // 검경
|
||||||
AFF_CHEONGEUN, // 천근추
|
AFF_WAR_MENTAL_STRONG_BODY, // 천근추
|
||||||
AFF_GYEONGGONG, // 경공술
|
AFF_NINJA_ARCHERY_FEATHER_WALK, // 경공술
|
||||||
AFF_EUNHYUNG, // 은형법
|
AFF_NINJA_BLADEFIGHT_STEALTH, // 은형법
|
||||||
AFF_GWIGUM, // 귀검
|
AFF_SURA_WEAPONRY_ENCHANTED_BLADE, // 귀검
|
||||||
AFF_TERROR, // 공포
|
AFF_SURA_WEAPONRY_FEAR, // 공포
|
||||||
AFF_JUMAGAP, // 주마갑
|
AFF_SURA_WEAPONRY_ENCHANTED_ARMOUR, // 주마갑
|
||||||
AFF_HOSIN, // 호신
|
AFF_SHAMAN_DRAGON_BLESSING, // 호신
|
||||||
AFF_BOHO, // 보호
|
AFF_SHAMAN_DRAGON_REFLECT, // 보호
|
||||||
AFF_KWAESOK, // 쾌속
|
AFF_SHAMAN_HEALING_SWIFTNESS, // 쾌속
|
||||||
AFF_MANASHIELD, // 마나쉴드
|
AFF_SURA_BLACKMAGIC_DARK_PROTECTION, // 마나쉴드
|
||||||
AFF_MUYEONG, // 무영진 affect
|
AFF_SURA_BLACKMAGIC_FLAME_SPIRIT, // 무영진 affect
|
||||||
AFF_REVIVE_INVISIBLE, // 부활시 잠시동안 무적
|
AFF_REVIVE_INVISIBLE, // 부활시 잠시동안 무적
|
||||||
AFF_FIRE, // 지속 불 데미지
|
AFF_FIRE, // 지속 불 데미지
|
||||||
AFF_GICHEON, // 기천대공
|
AFF_SHAMAN_DRAGON_DRAGONS_AID, // 기천대공
|
||||||
AFF_JEUNGRYEOK, // 증력술
|
AFF_SHAMAN_HEALING_ATTACK, // 증력술
|
||||||
AFF_TANHWAN_DASH, // 탄환격용 달리기어펙트
|
AFF_WAR_BODY_DASH, // 탄환격용 달리기어펙트
|
||||||
AFF_PABEOP, // 파법술
|
AFF_SURA_WEAPONRY_DISPEL, // 파법술
|
||||||
AFF_CHEONGEUN_WITH_FALL, // 천근추
|
AFF_WAR_MENTAL_STRONG_BODY_WITH_FALL, // 천근추
|
||||||
AFF_POLYMORPH,
|
AFF_POLYMORPH,
|
||||||
AFF_WAR_FLAG1,
|
AFF_WAR_FLAG1,
|
||||||
AFF_WAR_FLAG2,
|
AFF_WAR_FLAG2,
|
||||||
|
@ -159,7 +159,7 @@ void CHARACTER::Initialize()
|
|||||||
|
|
||||||
m_pkChrTarget = NULL;
|
m_pkChrTarget = NULL;
|
||||||
|
|
||||||
m_pkMuyeongEvent = NULL;
|
m_pkFlameSpiritEvent = NULL;
|
||||||
|
|
||||||
m_pkWarpNPCEvent = NULL;
|
m_pkWarpNPCEvent = NULL;
|
||||||
m_pkDeadEvent = NULL;
|
m_pkDeadEvent = NULL;
|
||||||
@ -490,7 +490,7 @@ void CHARACTER::Destroy()
|
|||||||
|
|
||||||
m_set_pkChrSpawnedBy.clear();
|
m_set_pkChrSpawnedBy.clear();
|
||||||
|
|
||||||
StopMuyeongEvent();
|
StopFlameSpiritEvent();
|
||||||
event_cancel(&m_pkWarpNPCEvent);
|
event_cancel(&m_pkWarpNPCEvent);
|
||||||
event_cancel(&m_pkRecoveryEvent);
|
event_cancel(&m_pkRecoveryEvent);
|
||||||
event_cancel(&m_pkDeadEvent);
|
event_cancel(&m_pkDeadEvent);
|
||||||
@ -3432,7 +3432,7 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
|
|||||||
case POINT_KILL_HP_RECOVERY: // 75
|
case POINT_KILL_HP_RECOVERY: // 75
|
||||||
case POINT_HIT_HP_RECOVERY:
|
case POINT_HIT_HP_RECOVERY:
|
||||||
case POINT_HIT_SP_RECOVERY:
|
case POINT_HIT_SP_RECOVERY:
|
||||||
case POINT_MANASHIELD:
|
case POINT_DARK_PROTECTION:
|
||||||
case POINT_ATT_BONUS:
|
case POINT_ATT_BONUS:
|
||||||
case POINT_DEF_BONUS:
|
case POINT_DEF_BONUS:
|
||||||
case POINT_SKILL_DAMAGE_BONUS:
|
case POINT_SKILL_DAMAGE_BONUS:
|
||||||
@ -4804,14 +4804,14 @@ void CHARACTER::OnMove(bool bIsAttack)
|
|||||||
if (IsAffectFlag(AFF_REVIVE_INVISIBLE))
|
if (IsAffectFlag(AFF_REVIVE_INVISIBLE))
|
||||||
RemoveAffect(AFFECT_REVIVE_INVISIBLE);
|
RemoveAffect(AFFECT_REVIVE_INVISIBLE);
|
||||||
|
|
||||||
if (IsAffectFlag(AFF_EUNHYUNG))
|
if (IsAffectFlag(AFF_NINJA_BLADEFIGHT_STEALTH))
|
||||||
{
|
{
|
||||||
RemoveAffect(SKILL_EUNHYUNG);
|
RemoveAffect(SKILL_NINJA_BLADEFIGHT_STEALTH);
|
||||||
SetAffectedEunhyung();
|
SetAffectedStealth();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ClearAffectedEunhyung();
|
ClearAffectedStealth();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*if (IsAffectFlag(AFF_JEONSIN))
|
/*if (IsAffectFlag(AFF_JEONSIN))
|
||||||
|
@ -75,7 +75,7 @@ enum
|
|||||||
FLY_FIREWORK_CHRISTMAS,
|
FLY_FIREWORK_CHRISTMAS,
|
||||||
FLY_CHAIN_LIGHTNING,
|
FLY_CHAIN_LIGHTNING,
|
||||||
FLY_HP_SMALL,
|
FLY_HP_SMALL,
|
||||||
FLY_SKILL_MUYEONG,
|
FLY_SKILL_FLAME_SPIRIT,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum EDamageType
|
enum EDamageType
|
||||||
@ -225,7 +225,7 @@ enum EPointTypes
|
|||||||
|
|
||||||
POINT_HIT_HP_RECOVERY, // 100
|
POINT_HIT_HP_RECOVERY, // 100
|
||||||
POINT_HIT_SP_RECOVERY, // 101
|
POINT_HIT_SP_RECOVERY, // 101
|
||||||
POINT_MANASHIELD, // 102 흑신수호 스킬에 의한 마나쉴드 효과 정도
|
POINT_DARK_PROTECTION, // 102 흑신수호 스킬에 의한 마나쉴드 효과 정도
|
||||||
|
|
||||||
POINT_PARTY_BUFFER_BONUS, // 103
|
POINT_PARTY_BUFFER_BONUS, // 103
|
||||||
POINT_PARTY_SKILL_MASTER_BONUS, // 104
|
POINT_PARTY_SKILL_MASTER_BONUS, // 104
|
||||||
@ -1414,15 +1414,15 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider
|
|||||||
DWORD m_adwMobSkillCooltime[MOB_SKILL_MAX_NUM];
|
DWORD m_adwMobSkillCooltime[MOB_SKILL_MAX_NUM];
|
||||||
// END_OF_MOB_SKILL
|
// END_OF_MOB_SKILL
|
||||||
|
|
||||||
// for SKILL_MUYEONG
|
// for SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT
|
||||||
public:
|
public:
|
||||||
void StartMuyeongEvent();
|
void StartFlameSpiritEvent();
|
||||||
void StopMuyeongEvent();
|
void StopFlameSpiritEvent();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LPEVENT m_pkMuyeongEvent;
|
LPEVENT m_pkFlameSpiritEvent;
|
||||||
|
|
||||||
// for SKILL_CHAIN lighting
|
// for SKILL_SHAMAN_HEALING_LIGHTNING_CLAW lighting
|
||||||
public:
|
public:
|
||||||
int GetChainLightningIndex() const { return m_iChainLightingIndex; }
|
int GetChainLightningIndex() const { return m_iChainLightingIndex; }
|
||||||
void IncChainLightningIndex() { ++m_iChainLightingIndex; }
|
void IncChainLightningIndex() { ++m_iChainLightingIndex; }
|
||||||
@ -1435,14 +1435,14 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider
|
|||||||
int m_iChainLightingIndex;
|
int m_iChainLightingIndex;
|
||||||
CHARACTER_SET m_setExceptChainLighting;
|
CHARACTER_SET m_setExceptChainLighting;
|
||||||
|
|
||||||
// for SKILL_EUNHYUNG
|
// for SKILL_NINJA_BLADEFIGHT_STEALTH
|
||||||
public:
|
public:
|
||||||
void SetAffectedEunhyung();
|
void SetAffectedStealth();
|
||||||
void ClearAffectedEunhyung() { m_dwAffectedEunhyungLevel = 0; }
|
void ClearAffectedStealth() { m_dwAffectedStealthLevel = 0; }
|
||||||
bool GetAffectedEunhyung() const { return m_dwAffectedEunhyungLevel; }
|
bool GetAffectedStealth() const { return m_dwAffectedStealthLevel; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DWORD m_dwAffectedEunhyungLevel;
|
DWORD m_dwAffectedStealthLevel;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Skill levels
|
// Skill levels
|
||||||
|
@ -471,7 +471,7 @@ void CHARACTER::LoadAffect(DWORD dwCount, TPacketAffectElement * pElements)
|
|||||||
for (DWORD i = 0; i < dwCount; ++i, ++pElements)
|
for (DWORD i = 0; i < dwCount; ++i, ++pElements)
|
||||||
{
|
{
|
||||||
// 무영진은 로드하지않는다.
|
// 무영진은 로드하지않는다.
|
||||||
if (pElements->dwType == SKILL_MUYEONG)
|
if (pElements->dwType == SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (AFFECT_AUTO_HP_RECOVERY == pElements->dwType || AFFECT_AUTO_SP_RECOVERY == pElements->dwType)
|
if (AFFECT_AUTO_HP_RECOVERY == pElements->dwType || AFFECT_AUTO_SP_RECOVERY == pElements->dwType)
|
||||||
@ -657,12 +657,12 @@ void CHARACTER::ComputeAffect(CAffect * pkAff, bool bAdd)
|
|||||||
else
|
else
|
||||||
PointChange(pkAff->bApplyOn, -pkAff->lApplyValue);
|
PointChange(pkAff->bApplyOn, -pkAff->lApplyValue);
|
||||||
|
|
||||||
if (pkAff->dwType == SKILL_MUYEONG)
|
if (pkAff->dwType == SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT)
|
||||||
{
|
{
|
||||||
if (bAdd)
|
if (bAdd)
|
||||||
StartMuyeongEvent();
|
StartFlameSpiritEvent();
|
||||||
else
|
else
|
||||||
StopMuyeongEvent();
|
StopFlameSpiritEvent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -745,20 +745,20 @@ void CHARACTER::RemoveGoodAffect()
|
|||||||
RemoveAffect(AFFECT_CON);
|
RemoveAffect(AFFECT_CON);
|
||||||
RemoveAffect(AFFECT_CHINA_FIREWORK);
|
RemoveAffect(AFFECT_CHINA_FIREWORK);
|
||||||
|
|
||||||
RemoveAffect(SKILL_JEONGWI);
|
RemoveAffect(SKILL_WAR_BODY_BERSERK);
|
||||||
RemoveAffect(SKILL_GEOMKYUNG);
|
RemoveAffect(SKILL_WAR_BODY_AURA);
|
||||||
RemoveAffect(SKILL_CHUNKEON);
|
RemoveAffect(SKILL_WAR_MENTAL_STRONG_BODY);
|
||||||
RemoveAffect(SKILL_EUNHYUNG);
|
RemoveAffect(SKILL_NINJA_BLADEFIGHT_STEALTH);
|
||||||
RemoveAffect(SKILL_GYEONGGONG);
|
RemoveAffect(SKILL_NINJA_ARCHERY_FEATHER_WALK);
|
||||||
RemoveAffect(SKILL_GWIGEOM);
|
RemoveAffect(SKILL_SURA_WEAPONRY_ENCHANTED_BLADE);
|
||||||
RemoveAffect(SKILL_TERROR);
|
RemoveAffect(SKILL_SURA_WEAPONRY_FEAR);
|
||||||
RemoveAffect(SKILL_JUMAGAP);
|
RemoveAffect(SKILL_SURA_WEAPONRY_ENCHANTED_ARMOUR);
|
||||||
RemoveAffect(SKILL_MANASHILED);
|
RemoveAffect(SKILL_SURA_BLACKMAGIC_DARK_PROTECTION);
|
||||||
RemoveAffect(SKILL_HOSIN);
|
RemoveAffect(SKILL_SHAMAN_DRAGON_BLESSING);
|
||||||
RemoveAffect(SKILL_REFLECT);
|
RemoveAffect(SKILL_SHAMAN_DRAGON_REFLECT);
|
||||||
RemoveAffect(SKILL_KWAESOK);
|
RemoveAffect(SKILL_SHAMAN_HEALING_SWIFTNESS);
|
||||||
RemoveAffect(SKILL_JEUNGRYEOK);
|
RemoveAffect(SKILL_SHAMAN_HEALING_ATTACK);
|
||||||
RemoveAffect(SKILL_GICHEON);
|
RemoveAffect(SKILL_SHAMAN_DRAGON_DRAGONS_STRENGTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CHARACTER::IsGoodAffect(BYTE bAffectType) const
|
bool CHARACTER::IsGoodAffect(BYTE bAffectType) const
|
||||||
@ -773,20 +773,20 @@ bool CHARACTER::IsGoodAffect(BYTE bAffectType) const
|
|||||||
case (AFFECT_CON):
|
case (AFFECT_CON):
|
||||||
case (AFFECT_CHINA_FIREWORK):
|
case (AFFECT_CHINA_FIREWORK):
|
||||||
|
|
||||||
case (SKILL_JEONGWI):
|
case (SKILL_WAR_BODY_BERSERK):
|
||||||
case (SKILL_GEOMKYUNG):
|
case (SKILL_WAR_BODY_AURA):
|
||||||
case (SKILL_CHUNKEON):
|
case (SKILL_WAR_MENTAL_STRONG_BODY):
|
||||||
case (SKILL_EUNHYUNG):
|
case (SKILL_NINJA_BLADEFIGHT_STEALTH):
|
||||||
case (SKILL_GYEONGGONG):
|
case (SKILL_NINJA_ARCHERY_FEATHER_WALK):
|
||||||
case (SKILL_GWIGEOM):
|
case (SKILL_SURA_WEAPONRY_ENCHANTED_BLADE):
|
||||||
case (SKILL_TERROR):
|
case (SKILL_SURA_WEAPONRY_FEAR):
|
||||||
case (SKILL_JUMAGAP):
|
case (SKILL_SURA_WEAPONRY_ENCHANTED_ARMOUR):
|
||||||
case (SKILL_MANASHILED):
|
case (SKILL_SURA_BLACKMAGIC_DARK_PROTECTION):
|
||||||
case (SKILL_HOSIN):
|
case (SKILL_SHAMAN_DRAGON_BLESSING):
|
||||||
case (SKILL_REFLECT):
|
case (SKILL_SHAMAN_DRAGON_REFLECT):
|
||||||
case (SKILL_KWAESOK):
|
case (SKILL_SHAMAN_HEALING_SWIFTNESS):
|
||||||
case (SKILL_JEUNGRYEOK):
|
case (SKILL_SHAMAN_HEALING_ATTACK):
|
||||||
case (SKILL_GICHEON):
|
case (SKILL_SHAMAN_DRAGON_DRAGONS_STRENGTH):
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -806,7 +806,7 @@ void CHARACTER::RemoveBadAffect()
|
|||||||
RemoveAffect(AFFECT_SLOW);
|
RemoveAffect(AFFECT_SLOW);
|
||||||
|
|
||||||
// 투속마령
|
// 투속마령
|
||||||
RemoveAffect(SKILL_TUSOK);
|
RemoveAffect(SKILL_SURA_BLACKMAGIC_SPIRIT_STRIKE);
|
||||||
|
|
||||||
// 저주
|
// 저주
|
||||||
//RemoveAffect(SKILL_CURSE);
|
//RemoveAffect(SKILL_CURSE);
|
||||||
|
@ -1659,9 +1659,9 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
|
|||||||
// 평타가 아닐 때는 공포 처리
|
// 평타가 아닐 때는 공포 처리
|
||||||
if (type != DAMAGE_TYPE_NORMAL && type != DAMAGE_TYPE_NORMAL_RANGE)
|
if (type != DAMAGE_TYPE_NORMAL && type != DAMAGE_TYPE_NORMAL_RANGE)
|
||||||
{
|
{
|
||||||
if (IsAffectFlag(AFF_TERROR))
|
if (IsAffectFlag(AFF_SURA_WEAPONRY_FEAR))
|
||||||
{
|
{
|
||||||
int pct = GetSkillPower(SKILL_TERROR) / 400;
|
int pct = GetSkillPower(SKILL_SURA_WEAPONRY_FEAR) / 400;
|
||||||
|
|
||||||
if (Random::get(1, 100) <= pct)
|
if (Random::get(1, 100) <= pct)
|
||||||
return false;
|
return false;
|
||||||
@ -1722,9 +1722,9 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
|
|||||||
dam *= 2;
|
dam *= 2;
|
||||||
EffectPacket(SE_CRITICAL);
|
EffectPacket(SE_CRITICAL);
|
||||||
|
|
||||||
if (IsAffectFlag(AFF_MANASHIELD))
|
if (IsAffectFlag(AFF_SURA_BLACKMAGIC_DARK_PROTECTION))
|
||||||
{
|
{
|
||||||
RemoveAffect(AFF_MANASHIELD);
|
RemoveAffect(AFF_SURA_BLACKMAGIC_DARK_PROTECTION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1772,9 +1772,9 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
|
|||||||
|
|
||||||
dam += GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100;
|
dam += GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100;
|
||||||
|
|
||||||
if (IsAffectFlag(AFF_MANASHIELD))
|
if (IsAffectFlag(AFF_SURA_BLACKMAGIC_DARK_PROTECTION))
|
||||||
{
|
{
|
||||||
RemoveAffect(AFF_MANASHIELD);
|
RemoveAffect(AFF_SURA_BLACKMAGIC_DARK_PROTECTION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1816,13 +1816,13 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsAffectFlag(AFF_JEONGWIHON))
|
if (IsAffectFlag(AFF_WAR_BODY_BERSERK))
|
||||||
dam = (int) (dam * (100 + GetSkillPower(SKILL_JEONGWI) * 25 / 100) / 100);
|
dam = (int) (dam * (100 + GetSkillPower(SKILL_WAR_BODY_BERSERK) * 25 / 100) / 100);
|
||||||
|
|
||||||
if (IsAffectFlag(AFF_TERROR))
|
if (IsAffectFlag(AFF_SURA_WEAPONRY_FEAR))
|
||||||
dam = (int) (dam * (95 - GetSkillPower(SKILL_TERROR) / 5) / 100);
|
dam = (int) (dam * (95 - GetSkillPower(SKILL_SURA_WEAPONRY_FEAR) / 5) / 100);
|
||||||
|
|
||||||
if (IsAffectFlag(AFF_HOSIN))
|
if (IsAffectFlag(AFF_SHAMAN_DRAGON_BLESSING))
|
||||||
dam = dam * (100 - GetPoint(POINT_RESIST_NORMAL_DAMAGE)) / 100;
|
dam = dam * (100 - GetPoint(POINT_RESIST_NORMAL_DAMAGE)) / 100;
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -2022,11 +2022,11 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
|
|||||||
//
|
//
|
||||||
// 마나쉴드(흑신수호)
|
// 마나쉴드(흑신수호)
|
||||||
//
|
//
|
||||||
if (IsAffectFlag(AFF_MANASHIELD))
|
if (IsAffectFlag(AFF_SURA_BLACKMAGIC_DARK_PROTECTION))
|
||||||
{
|
{
|
||||||
// POINT_MANASHIELD ´Â ÀÛ¾ÆÁú¼ö·Ï ÁÁ´Ù
|
// POINT_DARK_PROTECTION ´Â ÀÛ¾ÆÁú¼ö·Ï ÁÁ´Ù
|
||||||
int iDamageSPPart = dam / 3;
|
int iDamageSPPart = dam / 3;
|
||||||
int iDamageToSP = iDamageSPPart * GetPoint(POINT_MANASHIELD) / 100;
|
int iDamageToSP = iDamageSPPart * GetPoint(POINT_DARK_PROTECTION) / 100;
|
||||||
int iSP = GetSP();
|
int iSP = GetSP();
|
||||||
|
|
||||||
// SP가 있으면 무조건 데미지 절반 감소
|
// SP가 있으면 무조건 데미지 절반 감소
|
||||||
@ -2039,7 +2039,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
|
|||||||
{
|
{
|
||||||
// 정신력이 모자라서 피가 더 깍여야할??
|
// 정신력이 모자라서 피가 더 깍여야할??
|
||||||
PointChange(POINT_SP, -GetSP());
|
PointChange(POINT_SP, -GetSP());
|
||||||
dam -= iSP * 100 / std::max(GetPoint(POINT_MANASHIELD), 1);
|
dam -= iSP * 100 / std::max(GetPoint(POINT_DARK_PROTECTION), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2845,7 +2845,7 @@ class CFuncShoot
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
m_me->m_SkillUseInfo[m_bType].SetMainTargetVID(dwTargetVID);
|
m_me->m_SkillUseInfo[m_bType].SetMainTargetVID(dwTargetVID);
|
||||||
/*if (m_bType == SKILL_BIPABU || m_bType == SKILL_KWANKYEOK)
|
/*if (m_bType == SKILL_SHAMAN_DRAGON_FLYING_TALISMAN || m_bType == SKILL_NINJA_ARCHERY_ARROW_SHOWER)
|
||||||
m_me->m_SkillUseInfo[m_bType].ResetHitCount();*/
|
m_me->m_SkillUseInfo[m_bType].ResetHitCount();*/
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2941,9 +2941,9 @@ class CFuncShoot
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SKILL_YEONSA: // ¿¬»ç
|
case SKILL_NINJA_ARCHERY_REPETITIVE_SHOT: // ¿¬»ç
|
||||||
{
|
{
|
||||||
//int iUseArrow = 2 + (m_me->GetSkillPower(SKILL_YEONSA) *6/100);
|
//int iUseArrow = 2 + (m_me->GetSkillPower(SKILL_NINJA_ARCHERY_REPETITIVE_SHOT) *6/100);
|
||||||
int iUseArrow = 1;
|
int iUseArrow = 1;
|
||||||
|
|
||||||
// 토탈만 계산하는경우
|
// 토탈만 계산하는경우
|
||||||
@ -2970,7 +2970,7 @@ class CFuncShoot
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case SKILL_KWANKYEOK:
|
case SKILL_NINJA_ARCHERY_ARROW_SHOWER:
|
||||||
{
|
{
|
||||||
int iUseArrow = 1;
|
int iUseArrow = 1;
|
||||||
|
|
||||||
@ -2989,7 +2989,7 @@ class CFuncShoot
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SKILL_GIGUNG:
|
case SKILL_NINJA_ARCHERY_POISON_ARROW:
|
||||||
{
|
{
|
||||||
int iUseArrow = 1;
|
int iUseArrow = 1;
|
||||||
if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))
|
if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))
|
||||||
@ -3000,14 +3000,14 @@ class CFuncShoot
|
|||||||
if (pkVictim->CanBeginFight())
|
if (pkVictim->CanBeginFight())
|
||||||
pkVictim->BeginFight(m_me);
|
pkVictim->BeginFight(m_me);
|
||||||
|
|
||||||
SPDLOG_DEBUG("{} gigung {}", m_me->GetName(), pkVictim->GetName());
|
SPDLOG_DEBUG("{} poison arrow {}", m_me->GetName(), pkVictim->GetName());
|
||||||
m_me->ComputeSkill(m_bType, pkVictim);
|
m_me->ComputeSkill(m_bType, pkVictim);
|
||||||
m_me->UseArrow(pkArrow, iUseArrow);
|
m_me->UseArrow(pkArrow, iUseArrow);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case SKILL_HWAJO:
|
case SKILL_NINJA_ARCHERY_FIRE_ARROW:
|
||||||
{
|
{
|
||||||
int iUseArrow = 1;
|
int iUseArrow = 1;
|
||||||
if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))
|
if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))
|
||||||
@ -3018,7 +3018,7 @@ class CFuncShoot
|
|||||||
if (pkVictim->CanBeginFight())
|
if (pkVictim->CanBeginFight())
|
||||||
pkVictim->BeginFight(m_me);
|
pkVictim->BeginFight(m_me);
|
||||||
|
|
||||||
SPDLOG_DEBUG("{} hwajo {}", m_me->GetName(), pkVictim->GetName());
|
SPDLOG_DEBUG("{} fire arrow {}", m_me->GetName(), pkVictim->GetName());
|
||||||
m_me->ComputeSkill(m_bType, pkVictim);
|
m_me->ComputeSkill(m_bType, pkVictim);
|
||||||
m_me->UseArrow(pkArrow, iUseArrow);
|
m_me->UseArrow(pkArrow, iUseArrow);
|
||||||
}
|
}
|
||||||
@ -3045,15 +3045,15 @@ class CFuncShoot
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SKILL_MARYUNG:
|
case SKILL_SURA_BLACKMAGIC_DARK_STRIKE:
|
||||||
//case SKILL_GUMHWAN:
|
//case SKILL_GUMHWAN:
|
||||||
case SKILL_TUSOK:
|
case SKILL_SURA_BLACKMAGIC_SPIRIT_STRIKE:
|
||||||
case SKILL_BIPABU:
|
case SKILL_SHAMAN_DRAGON_FLYING_TALISMAN:
|
||||||
case SKILL_NOEJEON:
|
case SKILL_SHAMAN_HEALING_LIGHTNING_THROW:
|
||||||
case SKILL_GEOMPUNG:
|
case SKILL_WAR_MENTAL_SWORD_STRIKE:
|
||||||
case SKILL_SANGONG:
|
case SKILL_NINJA_BLADEFIGHT_POISONOUS_CLOUD:
|
||||||
case SKILL_MAHWAN:
|
case SKILL_SURA_BLACKMAGIC_DARK_ORB:
|
||||||
case SKILL_PABEOB:
|
case SKILL_SURA_WEAPONRY_DISPEL:
|
||||||
//case SKILL_CURSE:
|
//case SKILL_CURSE:
|
||||||
{
|
{
|
||||||
m_me->OnMove(true);
|
m_me->OnMove(true);
|
||||||
@ -3067,7 +3067,7 @@ class CFuncShoot
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SKILL_CHAIN:
|
case SKILL_SHAMAN_HEALING_LIGHTNING_CLAW:
|
||||||
{
|
{
|
||||||
m_me->OnMove(true);
|
m_me->OnMove(true);
|
||||||
pkVictim->OnMove();
|
pkVictim->OnMove();
|
||||||
@ -3082,7 +3082,7 @@ class CFuncShoot
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SKILL_YONGBI:
|
case SKILL_SHAMAN_DRAGON_SHOOTING_DRAGON:
|
||||||
{
|
{
|
||||||
m_me->OnMove(true);
|
m_me->OnMove(true);
|
||||||
}
|
}
|
||||||
@ -3186,7 +3186,7 @@ LPCHARACTER CHARACTER::GetNearestVictim(LPCHARACTER pkChr)
|
|||||||
if (!pAttacker)
|
if (!pAttacker)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (pAttacker->IsAffectFlag(AFF_EUNHYUNG) ||
|
if (pAttacker->IsAffectFlag(AFF_NINJA_BLADEFIGHT_STEALTH) ||
|
||||||
pAttacker->IsAffectFlag(AFF_INVISIBILITY) ||
|
pAttacker->IsAffectFlag(AFF_INVISIBILITY) ||
|
||||||
pAttacker->IsAffectFlag(AFF_REVIVE_INVISIBLE))
|
pAttacker->IsAffectFlag(AFF_REVIVE_INVISIBLE))
|
||||||
continue;
|
continue;
|
||||||
|
@ -477,11 +477,11 @@ void CHARACTER::SetWear(BYTE bCell, LPITEM item)
|
|||||||
if (!item && bCell == WEAR_WEAPON)
|
if (!item && bCell == WEAR_WEAPON)
|
||||||
{
|
{
|
||||||
// 귀검 사용 시 벗는 것이라면 효과를 없애야 한다.
|
// 귀검 사용 시 벗는 것이라면 효과를 없애야 한다.
|
||||||
if (IsAffectFlag(AFF_GWIGUM))
|
if (IsAffectFlag(AFF_SURA_WEAPONRY_ENCHANTED_BLADE))
|
||||||
RemoveAffect(SKILL_GWIGEOM);
|
RemoveAffect(SKILL_SURA_WEAPONRY_ENCHANTED_BLADE);
|
||||||
|
|
||||||
if (IsAffectFlag(AFF_GEOMGYEONG))
|
if (IsAffectFlag(AFF_WAR_BODY_AURA))
|
||||||
RemoveAffect(SKILL_GEOMKYUNG);
|
RemoveAffect(SKILL_WAR_BODY_AURA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7277,7 +7277,7 @@ void CHARACTER::AutoRecoveryItemProcess(const EAffectTypes type)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
{
|
{
|
||||||
const DWORD stunSkills[] = { SKILL_TANHWAN, SKILL_GEOMPUNG, SKILL_BYEURAK, SKILL_GIGUNG };
|
const DWORD stunSkills[] = { SKILL_WAR_BODY_DASH, SKILL_WAR_MENTAL_SWORD_STRIKE, SKILL_SHAMAN_HEALING_SUMMON_LIGHTNING, SKILL_NINJA_ARCHERY_POISON_ARROW };
|
||||||
|
|
||||||
for (size_t i=0 ; i < sizeof(stunSkills)/sizeof(DWORD) ; ++i)
|
for (size_t i=0 ; i < sizeof(stunSkills)/sizeof(DWORD) ; ++i)
|
||||||
{
|
{
|
||||||
|
@ -68,7 +68,7 @@ bool TSkillUseInfo::HitOnce(DWORD dwVnum)
|
|||||||
|
|
||||||
SPDLOG_DEBUG("__HitOnce NextUse {} current {} count {} scount {}", dwNextSkillUsableTime, get_dword_time(), iHitCount, iSplashCount);
|
SPDLOG_DEBUG("__HitOnce NextUse {} current {} count {} scount {}", dwNextSkillUsableTime, get_dword_time(), iHitCount, iSplashCount);
|
||||||
|
|
||||||
if (dwNextSkillUsableTime && dwNextSkillUsableTime<get_dword_time() && dwVnum != SKILL_MUYEONG && dwVnum != SKILL_HORSE_WILDATTACK)
|
if (dwNextSkillUsableTime && dwNextSkillUsableTime<get_dword_time() && dwVnum != SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT && dwVnum != SKILL_HORSE_WILDATTACK)
|
||||||
{
|
{
|
||||||
SPDLOG_DEBUG("__HitOnce can't hit");
|
SPDLOG_DEBUG("__HitOnce can't hit");
|
||||||
|
|
||||||
@ -124,12 +124,12 @@ bool TSkillUseInfo::UseSkill(bool isGrandMaster, DWORD vid, DWORD dwCooltime, in
|
|||||||
|
|
||||||
int CHARACTER::GetChainLightningMaxCount() const
|
int CHARACTER::GetChainLightningMaxCount() const
|
||||||
{
|
{
|
||||||
return aiChainLightningCountBySkillLevel[std::min<int>(SKILL_MAX_LEVEL, GetSkillLevel(SKILL_CHAIN))];
|
return aiChainLightningCountBySkillLevel[std::min<int>(SKILL_MAX_LEVEL, GetSkillLevel(SKILL_SHAMAN_HEALING_LIGHTNING_CLAW))];
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHARACTER::SetAffectedEunhyung()
|
void CHARACTER::SetAffectedStealth()
|
||||||
{
|
{
|
||||||
m_dwAffectedEunhyungLevel = GetSkillPower(SKILL_EUNHYUNG);
|
m_dwAffectedStealthLevel = GetSkillPower(SKILL_NINJA_BLADEFIGHT_STEALTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHARACTER::SetSkillGroup(BYTE bSkillGroup)
|
void CHARACTER::SetSkillGroup(BYTE bSkillGroup)
|
||||||
@ -223,13 +223,13 @@ bool CHARACTER::IsLearnableSkill(DWORD dwSkillVnum) const
|
|||||||
|
|
||||||
if (6 == pkSkill->dwType)
|
if (6 == pkSkill->dwType)
|
||||||
{
|
{
|
||||||
if (SKILL_7_A_ANTI_TANHWAN <= dwSkillVnum && dwSkillVnum <= SKILL_7_D_ANTI_YONGBI)
|
if (SKILL_7_A_ANTI_WAR_BODY_DASH <= dwSkillVnum && dwSkillVnum <= SKILL_7_D_ANTI_SHAMAN_DRAGON_SHOOTING_DRAGON)
|
||||||
{
|
{
|
||||||
for (int i=0 ; i < 4 ; i++)
|
for (int i=0 ; i < 4 ; i++)
|
||||||
{
|
{
|
||||||
if (unsigned(SKILL_7_A_ANTI_TANHWAN + i) != dwSkillVnum)
|
if (unsigned(SKILL_7_A_ANTI_WAR_BODY_DASH + i) != dwSkillVnum)
|
||||||
{
|
{
|
||||||
if (0 != GetSkillLevel(SKILL_7_A_ANTI_TANHWAN + i))
|
if (0 != GetSkillLevel(SKILL_7_A_ANTI_WAR_BODY_DASH + i))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -239,13 +239,13 @@ bool CHARACTER::IsLearnableSkill(DWORD dwSkillVnum) const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SKILL_8_A_ANTI_GIGONGCHAM <= dwSkillVnum && dwSkillVnum <= SKILL_8_D_ANTI_BYEURAK)
|
if (SKILL_8_A_ANTI_WAR_MENTAL_SPIRIT_STRIKE <= dwSkillVnum && dwSkillVnum <= SKILL_8_D_ANTI_SHAMAN_HEALING_SUMMON_LIGHTNING)
|
||||||
{
|
{
|
||||||
for (int i=0 ; i < 4 ; i++)
|
for (int i=0 ; i < 4 ; i++)
|
||||||
{
|
{
|
||||||
if (unsigned(SKILL_8_A_ANTI_GIGONGCHAM + i) != dwSkillVnum)
|
if (unsigned(SKILL_8_A_ANTI_WAR_MENTAL_SPIRIT_STRIKE + i) != dwSkillVnum)
|
||||||
{
|
{
|
||||||
if (0 != GetSkillLevel(SKILL_8_A_ANTI_GIGONGCHAM + i))
|
if (0 != GetSkillLevel(SKILL_8_A_ANTI_WAR_MENTAL_SPIRIT_STRIKE + i))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -698,7 +698,7 @@ void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SKILL_7_A_ANTI_TANHWAN <= dwVnum && dwVnum <= SKILL_8_D_ANTI_BYEURAK)
|
if (SKILL_7_A_ANTI_WAR_BODY_DASH <= dwVnum && dwVnum <= SKILL_8_D_ANTI_SHAMAN_HEALING_SUMMON_LIGHTNING)
|
||||||
{
|
{
|
||||||
if (0 == GetSkillLevel(dwVnum))
|
if (0 == GetSkillLevel(dwVnum))
|
||||||
return;
|
return;
|
||||||
@ -1017,7 +1017,7 @@ EVENTFUNC(ChainLightningEvent)
|
|||||||
if (pkTarget)
|
if (pkTarget)
|
||||||
{
|
{
|
||||||
pkChrVictim->CreateFly(FLY_CHAIN_LIGHTNING, pkTarget);
|
pkChrVictim->CreateFly(FLY_CHAIN_LIGHTNING, pkTarget);
|
||||||
pkChr->ComputeSkill(SKILL_CHAIN, pkTarget);
|
pkChr->ComputeSkill(SKILL_SHAMAN_HEALING_LIGHTNING_CLAW, pkTarget);
|
||||||
pkChr->AddChainLightningExcept(pkTarget);
|
pkChr->AddChainLightningExcept(pkTarget);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1092,7 +1092,7 @@ struct FuncSplashDamage
|
|||||||
if (m_pkChr->IsPC())
|
if (m_pkChr->IsPC())
|
||||||
// 길드 스킬은 쿨타임 처리를 하지 않는다.
|
// 길드 스킬은 쿨타임 처리를 하지 않는다.
|
||||||
if (!(m_pkSk->dwVnum >= GUILD_SKILL_START && m_pkSk->dwVnum <= GUILD_SKILL_END))
|
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)
|
if (!m_bDisableCooltime && m_pInfo && !m_pInfo->HitOnce(m_pkSk->dwVnum) && m_pkSk->dwVnum != SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT)
|
||||||
{
|
{
|
||||||
SPDLOG_TRACE("check guild skill {}", m_pkChr->GetName());
|
SPDLOG_TRACE("check guild skill {}", m_pkChr->GetName());
|
||||||
return;
|
return;
|
||||||
@ -1159,10 +1159,10 @@ struct FuncSplashDamage
|
|||||||
m_pkSk->SetPointVar("chain", m_pkChr->GetChainLightningIndex());
|
m_pkSk->SetPointVar("chain", m_pkChr->GetChainLightningIndex());
|
||||||
m_pkChr->IncChainLightningIndex();
|
m_pkChr->IncChainLightningIndex();
|
||||||
|
|
||||||
bool bUnderEunhyung = m_pkChr->GetAffectedEunhyung() > 0; // ÀÌ°Ç ¿Ö ¿©±â¼ ÇÏÁö??
|
bool bUnderStealth = m_pkChr->GetAffectedStealth() > 0; // ÀÌ°Ç ¿Ö ¿©±â¼ ÇÏÁö??
|
||||||
|
|
||||||
m_pkSk->SetPointVar("ek", m_pkChr->GetAffectedEunhyung()*1./100);
|
m_pkSk->SetPointVar("ek", m_pkChr->GetAffectedStealth()*1./100);
|
||||||
//m_pkChr->ClearAffectedEunhyung();
|
//m_pkChr->ClearAffectedStealth();
|
||||||
SetPolyVarForAttack(m_pkChr, m_pkSk, m_pkWeapon);
|
SetPolyVarForAttack(m_pkChr, m_pkSk, m_pkWeapon);
|
||||||
|
|
||||||
int iAmount = 0;
|
int iAmount = 0;
|
||||||
@ -1183,7 +1183,7 @@ struct FuncSplashDamage
|
|||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
iAmount = -iAmount;
|
iAmount = -iAmount;
|
||||||
|
|
||||||
if (m_pkSk->dwVnum == SKILL_AMSEOP)
|
if (m_pkSk->dwVnum == SKILL_NINJA_BLADEFIGHT_AMBUSH)
|
||||||
{
|
{
|
||||||
float fDelta = GetDegreeDelta(m_pkChr->GetRotation(), pkChrVictim->GetRotation());
|
float fDelta = GetDegreeDelta(m_pkChr->GetRotation(), pkChrVictim->GetRotation());
|
||||||
float adjust;
|
float adjust;
|
||||||
@ -1192,7 +1192,7 @@ struct FuncSplashDamage
|
|||||||
{
|
{
|
||||||
adjust = 1.5f;
|
adjust = 1.5f;
|
||||||
|
|
||||||
if (bUnderEunhyung)
|
if (bUnderStealth)
|
||||||
adjust += 0.5f;
|
adjust += 0.5f;
|
||||||
|
|
||||||
if (m_pkChr->GetWear(WEAR_WEAPON) && m_pkChr->GetWear(WEAR_WEAPON)->GetSubType() == WEAPON_DAGGER)
|
if (m_pkChr->GetWear(WEAR_WEAPON) && m_pkChr->GetWear(WEAR_WEAPON)->GetSubType() == WEAPON_DAGGER)
|
||||||
@ -1210,7 +1210,7 @@ struct FuncSplashDamage
|
|||||||
|
|
||||||
if ( !LC_IsYMIR() )
|
if ( !LC_IsYMIR() )
|
||||||
{
|
{
|
||||||
if (bUnderEunhyung)
|
if (bUnderStealth)
|
||||||
adjust += 0.5f;
|
adjust += 0.5f;
|
||||||
|
|
||||||
if (m_pkChr->GetWear(WEAR_WEAPON) && m_pkChr->GetWear(WEAR_WEAPON)->GetSubType() == WEAPON_DAGGER)
|
if (m_pkChr->GetWear(WEAR_WEAPON) && m_pkChr->GetWear(WEAR_WEAPON)->GetSubType() == WEAPON_DAGGER)
|
||||||
@ -1220,7 +1220,7 @@ struct FuncSplashDamage
|
|||||||
|
|
||||||
iAmount = (int) (iAmount * adjust);
|
iAmount = (int) (iAmount * adjust);
|
||||||
}
|
}
|
||||||
else if (m_pkSk->dwVnum == SKILL_GUNGSIN)
|
else if (m_pkSk->dwVnum == SKILL_NINJA_BLADEFIGHT_FAST_ATTACK)
|
||||||
{
|
{
|
||||||
float adjust = 1.0;
|
float adjust = 1.0;
|
||||||
|
|
||||||
@ -1346,7 +1346,7 @@ struct FuncSplashDamage
|
|||||||
if (pkChrVictim->CanBeginFight())
|
if (pkChrVictim->CanBeginFight())
|
||||||
pkChrVictim->BeginFight(m_pkChr);
|
pkChrVictim->BeginFight(m_pkChr);
|
||||||
|
|
||||||
if (m_pkSk->dwVnum == SKILL_CHAIN)
|
if (m_pkSk->dwVnum == SKILL_SHAMAN_HEALING_LIGHTNING_CLAW)
|
||||||
SPDLOG_DEBUG("{} CHAIN INDEX {} DAM {} DT {}", m_pkChr->GetName(), m_pkChr->GetChainLightningIndex() - 1, iDam, (int) dt);
|
SPDLOG_DEBUG("{} CHAIN INDEX {} DAM {} DT {}", m_pkChr->GetName(), m_pkChr->GetChainLightningIndex() - 1, iDam, (int) dt);
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1354,14 +1354,14 @@ struct FuncSplashDamage
|
|||||||
|
|
||||||
switch (m_pkSk->dwVnum)
|
switch (m_pkSk->dwVnum)
|
||||||
{
|
{
|
||||||
case SKILL_TANHWAN: AntiSkillID = SKILL_7_A_ANTI_TANHWAN; break;
|
case SKILL_WAR_BODY_DASH: AntiSkillID = SKILL_7_A_ANTI_WAR_BODY_DASH; break;
|
||||||
case SKILL_AMSEOP: AntiSkillID = SKILL_7_B_ANTI_AMSEOP; break;
|
case SKILL_NINJA_BLADEFIGHT_AMBUSH: AntiSkillID = SKILL_7_B_ANTI_NINJA_BLADEFIGHT_AMBUSH; break;
|
||||||
case SKILL_SWAERYUNG: AntiSkillID = SKILL_7_C_ANTI_SWAERYUNG; break;
|
case SKILL_SURA_WEAPONRY_FINGER_STRIKE: AntiSkillID = SKILL_7_C_ANTI_SURA_WEAPONRY_FINGER_STRIKE; break;
|
||||||
case SKILL_YONGBI: AntiSkillID = SKILL_7_D_ANTI_YONGBI; break;
|
case SKILL_SHAMAN_DRAGON_SHOOTING_DRAGON: AntiSkillID = SKILL_7_D_ANTI_SHAMAN_DRAGON_SHOOTING_DRAGON; break;
|
||||||
case SKILL_GIGONGCHAM: AntiSkillID = SKILL_8_A_ANTI_GIGONGCHAM; break;
|
case SKILL_WAR_MENTAL_SPIRIT_STRIKE: AntiSkillID = SKILL_8_A_ANTI_WAR_MENTAL_SPIRIT_STRIKE; break;
|
||||||
case SKILL_YEONSA: AntiSkillID = SKILL_8_B_ANTI_YEONSA; break;
|
case SKILL_NINJA_ARCHERY_REPETITIVE_SHOT: AntiSkillID = SKILL_8_B_ANTI_NINJA_ARCHERY_REPETITIVE_SHOT; break;
|
||||||
case SKILL_MAHWAN: AntiSkillID = SKILL_8_C_ANTI_MAHWAN; break;
|
case SKILL_SURA_BLACKMAGIC_DARK_ORB: AntiSkillID = SKILL_8_C_ANTI_SURA_BLACKMAGIC_DARK_ORB; break;
|
||||||
case SKILL_BYEURAK: AntiSkillID = SKILL_8_D_ANTI_BYEURAK; break;
|
case SKILL_SHAMAN_HEALING_SUMMON_LIGHTNING: AntiSkillID = SKILL_8_D_ANTI_SHAMAN_HEALING_SUMMON_LIGHTNING; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != AntiSkillID)
|
if (0 != AntiSkillID)
|
||||||
@ -1400,7 +1400,7 @@ struct FuncSplashDamage
|
|||||||
if (Random::get(1, 100) <= iAmount2)
|
if (Random::get(1, 100) <= iAmount2)
|
||||||
{
|
{
|
||||||
pkChrVictim->RemoveGoodAffect();
|
pkChrVictim->RemoveGoodAffect();
|
||||||
pkChrVictim->AddAffect(m_pkSk->dwVnum, POINT_NONE, 0, AFF_PABEOP, iDur2, 0, true);
|
pkChrVictim->AddAffect(m_pkSk->dwVnum, POINT_NONE, 0, AFF_SURA_WEAPONRY_DISPEL, iDur2, 0, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1505,7 +1505,7 @@ struct FuncSplashDamage
|
|||||||
m_pkChr->PointChange(POINT_SP, iDam * iPct / 100);
|
m_pkChr->PointChange(POINT_SP, iDam * iPct / 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_pkSk->dwVnum == SKILL_CHAIN && m_pkChr->GetChainLightningIndex() < m_pkChr->GetChainLightningMaxCount())
|
if (m_pkSk->dwVnum == SKILL_SHAMAN_HEALING_LIGHTNING_CLAW && m_pkChr->GetChainLightningIndex() < m_pkChr->GetChainLightningMaxCount())
|
||||||
{
|
{
|
||||||
chain_lightning_event_info* info = AllocEventInfo<chain_lightning_event_info>();
|
chain_lightning_event_info* info = AllocEventInfo<chain_lightning_event_info>();
|
||||||
|
|
||||||
@ -1563,11 +1563,11 @@ struct FuncSplashAffect
|
|||||||
if (DISTANCE_APPROX(m_x - pkChr->GetX(), m_y - pkChr->GetY()) < m_iDist)
|
if (DISTANCE_APPROX(m_x - pkChr->GetX(), m_y - pkChr->GetY()) < m_iDist)
|
||||||
{
|
{
|
||||||
SPDLOG_TRACE("FuncSplashAffect step 2 : name:{} vnum:{} iDur:{}", pkChr->GetName(), m_dwVnum, m_iDuration);
|
SPDLOG_TRACE("FuncSplashAffect step 2 : name:{} vnum:{} iDur:{}", pkChr->GetName(), m_dwVnum, m_iDuration);
|
||||||
if (m_dwVnum == SKILL_TUSOK)
|
if (m_dwVnum == SKILL_SURA_BLACKMAGIC_SPIRIT_STRIKE)
|
||||||
if (pkChr->CanBeginFight())
|
if (pkChr->CanBeginFight())
|
||||||
pkChr->BeginFight(m_pkChrAttacker);
|
pkChr->BeginFight(m_pkChrAttacker);
|
||||||
|
|
||||||
if (pkChr->IsPC() && m_dwVnum == SKILL_TUSOK)
|
if (pkChr->IsPC() && m_dwVnum == SKILL_SURA_BLACKMAGIC_SPIRIT_STRIKE)
|
||||||
pkChr->AddAffect(m_dwVnum, m_bPointOn, m_iAmount, m_dwAffectFlag, m_iDuration/3, m_iSPCost, m_bOverride);
|
pkChr->AddAffect(m_dwVnum, m_bPointOn, m_iAmount, m_dwAffectFlag, m_iDuration/3, m_iSPCost, m_bOverride);
|
||||||
else
|
else
|
||||||
pkChr->AddAffect(m_dwVnum, m_bPointOn, m_iAmount, m_dwAffectFlag, m_iDuration, m_iSPCost, m_bOverride);
|
pkChr->AddAffect(m_dwVnum, m_bPointOn, m_iAmount, m_dwAffectFlag, m_iDuration, m_iSPCost, m_bOverride);
|
||||||
@ -1795,7 +1795,7 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
|
|||||||
|
|
||||||
if (IsPC())
|
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 (!m_bDisableCooltime && !m_SkillUseInfo[dwVnum].HitOnce(dwVnum) && dwVnum != SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT)
|
||||||
{
|
{
|
||||||
return BATTLE_NONE;
|
return BATTLE_NONE;
|
||||||
}
|
}
|
||||||
@ -1999,7 +1999,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pkVictim->IsAffectFlag(AFF_PABEOP) && pkVictim->IsGoodAffect(dwVnum))
|
if (pkVictim->IsAffectFlag(AFF_SURA_WEAPONRY_DISPEL) && pkVictim->IsGoodAffect(dwVnum))
|
||||||
{
|
{
|
||||||
return BATTLE_NONE;
|
return BATTLE_NONE;
|
||||||
}
|
}
|
||||||
@ -2108,7 +2108,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
|
|||||||
// END_OF_REMOVE_BAD_AFFECT_BUG_FIX
|
// END_OF_REMOVE_BAD_AFFECT_BUG_FIX
|
||||||
|
|
||||||
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK | SKILL_FLAG_USE_MELEE_DAMAGE | SKILL_FLAG_USE_MAGIC_DAMAGE) &&
|
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK | SKILL_FLAG_USE_MELEE_DAMAGE | SKILL_FLAG_USE_MAGIC_DAMAGE) &&
|
||||||
!(pkSk->dwVnum == SKILL_MUYEONG && pkVictim == this) && !(pkSk->IsChargeSkill() && pkVictim == this))
|
!(pkSk->dwVnum == SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT && pkVictim == this) && !(pkSk->IsChargeSkill() && pkVictim == this))
|
||||||
{
|
{
|
||||||
bool bAdded = false;
|
bool bAdded = false;
|
||||||
|
|
||||||
@ -2136,7 +2136,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
|
|||||||
|
|
||||||
if (IsPC())
|
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 (!m_bDisableCooltime && !m_SkillUseInfo[dwVnum].HitOnce(dwVnum) && dwVnum != SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT)
|
||||||
{
|
{
|
||||||
return BATTLE_NONE;
|
return BATTLE_NONE;
|
||||||
}
|
}
|
||||||
@ -2222,7 +2222,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (dwVnum == SKILL_MUYEONG)
|
if (dwVnum == SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT)
|
||||||
{
|
{
|
||||||
pkSk->kDurationPoly.SetVar("k", k/*bSkillLevel*/);
|
pkSk->kDurationPoly.SetVar("k", k/*bSkillLevel*/);
|
||||||
pkSk->kDurationSPCostPoly.SetVar("k", k/*bSkillLevel*/);
|
pkSk->kDurationSPCostPoly.SetVar("k", k/*bSkillLevel*/);
|
||||||
@ -2233,7 +2233,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
|
|||||||
if (pkVictim == this)
|
if (pkVictim == this)
|
||||||
AddAffect(dwVnum,
|
AddAffect(dwVnum,
|
||||||
POINT_NONE, 0,
|
POINT_NONE, 0,
|
||||||
AFF_MUYEONG,
|
AFF_SURA_BLACKMAGIC_FLAME_SPIRIT,
|
||||||
iDur,
|
iDur,
|
||||||
(int) pkSk->kDurationSPCostPoly.Eval(),
|
(int) pkSk->kDurationSPCostPoly.Eval(),
|
||||||
true);
|
true);
|
||||||
@ -2280,13 +2280,13 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
|
|||||||
//if (g_iUseLocale)
|
//if (g_iUseLocale)
|
||||||
if ( !LC_IsYMIR() )
|
if ( !LC_IsYMIR() )
|
||||||
{
|
{
|
||||||
if ((pkSk->dwVnum == SKILL_CHUNKEON && GetUsedSkillMasterType(pkSk->dwVnum) < SKILL_GRAND_MASTER))
|
if ((pkSk->dwVnum == SKILL_WAR_MENTAL_STRONG_BODY && GetUsedSkillMasterType(pkSk->dwVnum) < SKILL_GRAND_MASTER))
|
||||||
affact_flag = AFF_CHEONGEUN_WITH_FALL;
|
affact_flag = AFF_WAR_MENTAL_STRONG_BODY_WITH_FALL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((pkSk->dwVnum == SKILL_CHUNKEON && GetUsedSkillMasterType(pkSk->dwVnum) < SKILL_MASTER))
|
if ((pkSk->dwVnum == SKILL_WAR_MENTAL_STRONG_BODY && GetUsedSkillMasterType(pkSk->dwVnum) < SKILL_MASTER))
|
||||||
affact_flag = AFF_CHEONGEUN_WITH_FALL;
|
affact_flag = AFF_WAR_MENTAL_STRONG_BODY_WITH_FALL;
|
||||||
}
|
}
|
||||||
// END_OF_ADD_GRANDMASTER_SKILL
|
// END_OF_ADD_GRANDMASTER_SKILL
|
||||||
|
|
||||||
@ -2336,7 +2336,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
|
|||||||
iDur2 += GetPoint(POINT_PARTY_BUFFER_BONUS);
|
iDur2 += GetPoint(POINT_PARTY_BUFFER_BONUS);
|
||||||
|
|
||||||
if (pkSk->IsChargeSkill())
|
if (pkSk->IsChargeSkill())
|
||||||
pkVictim->AddAffect(pkSk->dwVnum, pkSk->bPointOn2, iAmount2, AFF_TANHWAN_DASH, iDur2, 0, false);
|
pkVictim->AddAffect(pkSk->dwVnum, pkSk->bPointOn2, iAmount2, AFF_WAR_BODY_DASH, iDur2, 0, false);
|
||||||
else
|
else
|
||||||
pkVictim->AddAffect(pkSk->dwVnum, pkSk->bPointOn2, iAmount2, pkSk->dwAffectFlag2, iDur2, 0, false);
|
pkVictim->AddAffect(pkSk->dwVnum, pkSk->bPointOn2, iAmount2, pkSk->dwAffectFlag2, iDur2, 0, false);
|
||||||
}
|
}
|
||||||
@ -2462,12 +2462,12 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
|||||||
|
|
||||||
if (pkSk->IsChargeSkill())
|
if (pkSk->IsChargeSkill())
|
||||||
{
|
{
|
||||||
if (IsAffectFlag(AFF_TANHWAN_DASH) || pkVictim && pkVictim != this)
|
if (IsAffectFlag(AFF_WAR_BODY_DASH) || pkVictim && pkVictim != this)
|
||||||
{
|
{
|
||||||
if (!pkVictim)
|
if (!pkVictim)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!IsAffectFlag(AFF_TANHWAN_DASH))
|
if (!IsAffectFlag(AFF_WAR_BODY_DASH))
|
||||||
{
|
{
|
||||||
if (!UseSkill(dwVnum, this))
|
if (!UseSkill(dwVnum, this))
|
||||||
return false;
|
return false;
|
||||||
@ -2493,7 +2493,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Toggle 할 때는 SP를 쓰지 않음 (SelfOnly로 구분)
|
// Toggle 할 때는 SP를 쓰지 않음 (SelfOnly로 구분)
|
||||||
if ((0 != pkSk->dwAffectFlag || pkSk->dwVnum == SKILL_MUYEONG) && (pkSk->dwFlag & SKILL_FLAG_TOGGLE) && RemoveAffect(pkSk->dwVnum))
|
if ((0 != pkSk->dwAffectFlag || pkSk->dwVnum == SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT) && (pkSk->dwFlag & SKILL_FLAG_TOGGLE) && RemoveAffect(pkSk->dwVnum))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -2515,7 +2515,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
|||||||
|
|
||||||
DWORD dwCur = get_dword_time();
|
DWORD dwCur = get_dword_time();
|
||||||
|
|
||||||
if (dwVnum == SKILL_TERROR && m_SkillUseInfo[dwVnum].bUsed && m_SkillUseInfo[dwVnum].dwNextSkillUsableTime > dwCur )
|
if (dwVnum == SKILL_SURA_WEAPONRY_FEAR && m_SkillUseInfo[dwVnum].bUsed && m_SkillUseInfo[dwVnum].dwNextSkillUsableTime > dwCur )
|
||||||
{
|
{
|
||||||
SPDLOG_DEBUG(" SKILL_TERROR's Cooltime is not delta over {}", m_SkillUseInfo[dwVnum].dwNextSkillUsableTime - dwCur );
|
SPDLOG_DEBUG(" SKILL_TERROR's Cooltime is not delta over {}", m_SkillUseInfo[dwVnum].dwNextSkillUsableTime - dwCur );
|
||||||
return false;
|
return false;
|
||||||
@ -2568,7 +2568,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
|||||||
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
|
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
|
||||||
pkVictim = this;
|
pkVictim = this;
|
||||||
|
|
||||||
if (pkSk->dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill() && !IsAffectFlag(AFF_TANHWAN_DASH) && !pkVictim)
|
if (pkSk->dwVnum == SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT || pkSk->IsChargeSkill() && !IsAffectFlag(AFF_WAR_BODY_DASH) && !pkVictim)
|
||||||
{
|
{
|
||||||
// 처음 사용하는 무영진은 자신에게 Affect를 붙인다.
|
// 처음 사용하는 무영진은 자신에게 Affect를 붙인다.
|
||||||
pkVictim = this;
|
pkVictim = this;
|
||||||
@ -2593,7 +2593,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dwVnum == SKILL_CHAIN)
|
if (dwVnum == SKILL_SHAMAN_HEALING_LIGHTNING_CLAW)
|
||||||
{
|
{
|
||||||
ResetChainLightningIndex();
|
ResetChainLightningIndex();
|
||||||
AddChainLightningExcept(pkVictim);
|
AddChainLightningExcept(pkVictim);
|
||||||
@ -2604,9 +2604,9 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
|||||||
ComputeSkill(dwVnum, this);
|
ComputeSkill(dwVnum, this);
|
||||||
else if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK))
|
else if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK))
|
||||||
ComputeSkill(dwVnum, pkVictim);
|
ComputeSkill(dwVnum, pkVictim);
|
||||||
else if (dwVnum == SKILL_BYEURAK)
|
else if (dwVnum == SKILL_SHAMAN_HEALING_SUMMON_LIGHTNING)
|
||||||
ComputeSkill(dwVnum, pkVictim);
|
ComputeSkill(dwVnum, pkVictim);
|
||||||
else if (dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill())
|
else if (dwVnum == SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT || pkSk->IsChargeSkill())
|
||||||
ComputeSkill(dwVnum, pkVictim);
|
ComputeSkill(dwVnum, pkVictim);
|
||||||
|
|
||||||
m_dwLastSkillTime = get_dword_time();
|
m_dwLastSkillTime = get_dword_time();
|
||||||
@ -2702,9 +2702,9 @@ EVENTFUNC(skill_muyoung_event)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ch->IsAffectFlag(AFF_MUYEONG))
|
if (!ch->IsAffectFlag(AFF_SURA_BLACKMAGIC_FLAME_SPIRIT))
|
||||||
{
|
{
|
||||||
ch->StopMuyeongEvent();
|
ch->StopFlameSpiritEvent();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2716,28 +2716,28 @@ EVENTFUNC(skill_muyoung_event)
|
|||||||
// 2. Shoot!
|
// 2. Shoot!
|
||||||
if (f.GetVictim())
|
if (f.GetVictim())
|
||||||
{
|
{
|
||||||
ch->CreateFly(FLY_SKILL_MUYEONG, f.GetVictim());
|
ch->CreateFly(FLY_SKILL_FLAME_SPIRIT, f.GetVictim());
|
||||||
ch->ComputeSkill(SKILL_MUYEONG, f.GetVictim());
|
ch->ComputeSkill(SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT, f.GetVictim());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return PASSES_PER_SEC(3);
|
return PASSES_PER_SEC(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHARACTER::StartMuyeongEvent()
|
void CHARACTER::StartFlameSpiritEvent()
|
||||||
{
|
{
|
||||||
if (m_pkMuyeongEvent)
|
if (m_pkFlameSpiritEvent)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
char_event_info* info = AllocEventInfo<char_event_info>();
|
char_event_info* info = AllocEventInfo<char_event_info>();
|
||||||
|
|
||||||
info->ch = this;
|
info->ch = this;
|
||||||
m_pkMuyeongEvent = event_create(skill_muyoung_event, info, PASSES_PER_SEC(1));
|
m_pkFlameSpiritEvent = event_create(skill_muyoung_event, info, PASSES_PER_SEC(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHARACTER::StopMuyeongEvent()
|
void CHARACTER::StopFlameSpiritEvent()
|
||||||
{
|
{
|
||||||
event_cancel(&m_pkMuyeongEvent);
|
event_cancel(&m_pkFlameSpiritEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHARACTER::SkillLearnWaitMoreTimeMessage(DWORD ms)
|
void CHARACTER::SkillLearnWaitMoreTimeMessage(DWORD ms)
|
||||||
@ -3522,10 +3522,10 @@ bool CHARACTER::CheckSkillHitCount(const BYTE SkillID, const VID TargetVID)
|
|||||||
|
|
||||||
switch (SkillID)
|
switch (SkillID)
|
||||||
{
|
{
|
||||||
case SKILL_YONGKWON:
|
case SKILL_SURA_WEAPONRY_DRAGON_SWIRL:
|
||||||
case SKILL_HWAYEOMPOK:
|
case SKILL_SURA_BLACKMAGIC_FLAME_STRIKE:
|
||||||
case SKILL_DAEJINGAK:
|
case SKILL_WAR_MENTAL_STUMP:
|
||||||
case SKILL_PAERYONG:
|
case SKILL_SHAMAN_DRAGON_DRAGONS_ROAR:
|
||||||
SPDLOG_WARN("SkillHack: cannot use attack packet for skill({})", SkillID);
|
SPDLOG_WARN("SkillHack: cannot use attack packet for skill({})", SkillID);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -3538,8 +3538,8 @@ bool CHARACTER::CheckSkillHitCount(const BYTE SkillID, const VID TargetVID)
|
|||||||
|
|
||||||
switch (SkillID)
|
switch (SkillID)
|
||||||
{
|
{
|
||||||
case SKILL_SAMYEON:
|
case SKILL_WAR_BODY_THREE_WAY_CUT:
|
||||||
case SKILL_CHARYUN:
|
case SKILL_NINJA_BLADEFIGHT_ROLLING_DAGGER:
|
||||||
MaxAttackCountPerTarget = 3;
|
MaxAttackCountPerTarget = 3;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -3547,7 +3547,7 @@ bool CHARACTER::CheckSkillHitCount(const BYTE SkillID, const VID TargetVID)
|
|||||||
MaxAttackCountPerTarget = 5;
|
MaxAttackCountPerTarget = 5;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SKILL_YEONSA:
|
case SKILL_NINJA_ARCHERY_REPETITIVE_SHOT:
|
||||||
MaxAttackCountPerTarget = 7;
|
MaxAttackCountPerTarget = 7;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -197,7 +197,7 @@ namespace
|
|||||||
if (pkChr->IsDead())
|
if (pkChr->IsDead())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (pkChr->IsAffectFlag(AFF_EUNHYUNG) ||
|
if (pkChr->IsAffectFlag(AFF_NINJA_BLADEFIGHT_STEALTH) ||
|
||||||
pkChr->IsAffectFlag(AFF_INVISIBILITY) ||
|
pkChr->IsAffectFlag(AFF_INVISIBILITY) ||
|
||||||
pkChr->IsAffectFlag(AFF_REVIVE_INVISIBLE))
|
pkChr->IsAffectFlag(AFF_REVIVE_INVISIBLE))
|
||||||
return;
|
return;
|
||||||
|
@ -848,15 +848,15 @@ ACMD(do_skillup)
|
|||||||
case SKILL_HORSE_ESCAPE:
|
case SKILL_HORSE_ESCAPE:
|
||||||
case SKILL_HORSE_WILDATTACK_RANGE:
|
case SKILL_HORSE_WILDATTACK_RANGE:
|
||||||
|
|
||||||
case SKILL_7_A_ANTI_TANHWAN:
|
case SKILL_7_A_ANTI_WAR_BODY_DASH:
|
||||||
case SKILL_7_B_ANTI_AMSEOP:
|
case SKILL_7_B_ANTI_NINJA_BLADEFIGHT_AMBUSH:
|
||||||
case SKILL_7_C_ANTI_SWAERYUNG:
|
case SKILL_7_C_ANTI_SURA_WEAPONRY_FINGER_STRIKE:
|
||||||
case SKILL_7_D_ANTI_YONGBI:
|
case SKILL_7_D_ANTI_SHAMAN_DRAGON_SHOOTING_DRAGON:
|
||||||
|
|
||||||
case SKILL_8_A_ANTI_GIGONGCHAM:
|
case SKILL_8_A_ANTI_WAR_MENTAL_SPIRIT_STRIKE:
|
||||||
case SKILL_8_B_ANTI_YEONSA:
|
case SKILL_8_B_ANTI_NINJA_ARCHERY_REPETITIVE_SHOT:
|
||||||
case SKILL_8_C_ANTI_MAHWAN:
|
case SKILL_8_C_ANTI_SURA_BLACKMAGIC_DARK_ORB:
|
||||||
case SKILL_8_D_ANTI_BYEURAK:
|
case SKILL_8_D_ANTI_SHAMAN_HEALING_SUMMON_LIGHTNING:
|
||||||
|
|
||||||
case SKILL_ADD_HP:
|
case SKILL_ADD_HP:
|
||||||
case SKILL_RESIST_PENETRATE:
|
case SKILL_RESIST_PENETRATE:
|
||||||
|
@ -1273,8 +1273,8 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
|
|||||||
if (ch->IsAffectFlag(AFF_REVIVE_INVISIBLE))
|
if (ch->IsAffectFlag(AFF_REVIVE_INVISIBLE))
|
||||||
ch->RemoveAffect(AFFECT_REVIVE_INVISIBLE);
|
ch->RemoveAffect(AFFECT_REVIVE_INVISIBLE);
|
||||||
|
|
||||||
if (ch->IsAffectFlag(AFF_EUNHYUNG))
|
if (ch->IsAffectFlag(AFF_NINJA_BLADEFIGHT_STEALTH))
|
||||||
ch->RemoveAffect(SKILL_EUNHYUNG);
|
ch->RemoveAffect(SKILL_NINJA_BLADEFIGHT_STEALTH);
|
||||||
|
|
||||||
double k =1.0*m_data.abySkill[dwRealVnum]/pkSk->bMaxLevel;
|
double k =1.0*m_data.abySkill[dwRealVnum]/pkSk->bMaxLevel;
|
||||||
pkSk->kSPCostPoly.SetVar("k", k);
|
pkSk->kSPCostPoly.SetVar("k", k);
|
||||||
|
@ -615,10 +615,10 @@ void CGuild::EndWar(DWORD dwOppGID)
|
|||||||
LPCHARACTER ch = *it;
|
LPCHARACTER ch = *it;
|
||||||
ch->RemoveAffect(GUILD_SKILL_BLOOD);
|
ch->RemoveAffect(GUILD_SKILL_BLOOD);
|
||||||
ch->RemoveAffect(GUILD_SKILL_BLESS);
|
ch->RemoveAffect(GUILD_SKILL_BLESS);
|
||||||
ch->RemoveAffect(GUILD_SKILL_SEONGHWI);
|
ch->RemoveAffect(GUILD_SKILL_ARMOUR);
|
||||||
ch->RemoveAffect(GUILD_SKILL_ACCEL);
|
ch->RemoveAffect(GUILD_SKILL_ACCEL);
|
||||||
ch->RemoveAffect(GUILD_SKILL_BUNNO);
|
ch->RemoveAffect(GUILD_SKILL_RAGE);
|
||||||
ch->RemoveAffect(GUILD_SKILL_JUMUN);
|
ch->RemoveAffect(GUILD_SKILL_CAST);
|
||||||
|
|
||||||
ch->RemoveBadAffect();
|
ch->RemoveBadAffect();
|
||||||
}
|
}
|
||||||
|
@ -1704,19 +1704,19 @@ void CInputMain::Attack(LPCHARACTER ch, const BYTE header, const char* data)
|
|||||||
|
|
||||||
switch (type->type)
|
switch (type->type)
|
||||||
{
|
{
|
||||||
case SKILL_GEOMPUNG:
|
case SKILL_WAR_MENTAL_SWORD_STRIKE:
|
||||||
case SKILL_SANGONG:
|
case SKILL_NINJA_BLADEFIGHT_POISONOUS_CLOUD:
|
||||||
case SKILL_YEONSA:
|
case SKILL_NINJA_ARCHERY_REPETITIVE_SHOT:
|
||||||
case SKILL_KWANKYEOK:
|
case SKILL_NINJA_ARCHERY_ARROW_SHOWER:
|
||||||
case SKILL_HWAJO:
|
case SKILL_NINJA_ARCHERY_FIRE_ARROW:
|
||||||
case SKILL_GIGUNG:
|
case SKILL_NINJA_ARCHERY_POISON_ARROW:
|
||||||
case SKILL_PABEOB:
|
case SKILL_SURA_WEAPONRY_DISPEL:
|
||||||
case SKILL_MARYUNG:
|
case SKILL_SURA_BLACKMAGIC_DARK_STRIKE:
|
||||||
case SKILL_TUSOK:
|
case SKILL_SURA_BLACKMAGIC_SPIRIT_STRIKE:
|
||||||
case SKILL_MAHWAN:
|
case SKILL_SURA_BLACKMAGIC_DARK_ORB:
|
||||||
case SKILL_BIPABU:
|
case SKILL_SHAMAN_DRAGON_FLYING_TALISMAN:
|
||||||
case SKILL_NOEJEON:
|
case SKILL_SHAMAN_HEALING_LIGHTNING_THROW:
|
||||||
case SKILL_CHAIN:
|
case SKILL_SHAMAN_HEALING_LIGHTNING_CLAW:
|
||||||
case SKILL_HORSE_WILDATTACK_RANGE:
|
case SKILL_HORSE_WILDATTACK_RANGE:
|
||||||
if (HEADER_CG_SHOOT != type->header)
|
if (HEADER_CG_SHOOT != type->header)
|
||||||
{
|
{
|
||||||
|
@ -72,7 +72,7 @@ struct SPointOnType
|
|||||||
{ "HIT_HP_RECOVER", POINT_HIT_HP_RECOVERY },
|
{ "HIT_HP_RECOVER", POINT_HIT_HP_RECOVERY },
|
||||||
{ "HIT_SP_RECOVER", POINT_HIT_SP_RECOVERY },
|
{ "HIT_SP_RECOVER", POINT_HIT_SP_RECOVERY },
|
||||||
{ "CRITICAL", POINT_CRITICAL_PCT },
|
{ "CRITICAL", POINT_CRITICAL_PCT },
|
||||||
{ "MANASHIELD", POINT_MANASHIELD },
|
{ "MANASHIELD", POINT_DARK_PROTECTION },
|
||||||
{ "SKILL_DAMAGE_BONUS", POINT_SKILL_DAMAGE_BONUS },
|
{ "SKILL_DAMAGE_BONUS", POINT_SKILL_DAMAGE_BONUS },
|
||||||
{ "NORMAL_HIT_DAMAGE_BONUS", POINT_NORMAL_HIT_DAMAGE_BONUS },
|
{ "NORMAL_HIT_DAMAGE_BONUS", POINT_NORMAL_HIT_DAMAGE_BONUS },
|
||||||
{ "\n", POINT_NONE },
|
{ "\n", POINT_NONE },
|
||||||
|
@ -46,93 +46,93 @@ enum ESkillIndexes
|
|||||||
|
|
||||||
// 무사 전사 계열
|
// 무사 전사 계열
|
||||||
// A
|
// A
|
||||||
SKILL_SAMYEON = 1, // 삼연참(세번베기)
|
SKILL_WAR_BODY_THREE_WAY_CUT = 1, // 삼연참(세번베기)
|
||||||
SKILL_PALBANG, // 팔방풍우
|
SKILL_WAR_BODY_SWORD_SPIN, // 팔방풍우
|
||||||
// S
|
// S
|
||||||
SKILL_JEONGWI, // 전귀혼
|
SKILL_WAR_BODY_BERSERK, // 전귀혼
|
||||||
SKILL_GEOMKYUNG, // 검경
|
SKILL_WAR_BODY_AURA, // 검경
|
||||||
SKILL_TANHWAN, // 탄환격
|
SKILL_WAR_BODY_DASH, // 탄환격
|
||||||
|
|
||||||
// 무사 기공 계열
|
// 무사 기공 계열
|
||||||
// A
|
// A
|
||||||
SKILL_GIGONGCHAM = 16, // 기공참
|
SKILL_WAR_MENTAL_SPIRIT_STRIKE = 16, // 기공참
|
||||||
SKILL_GYOKSAN, // 격산타우
|
SKILL_WAR_MENTAL_BASH, // 격산타우
|
||||||
SKILL_DAEJINGAK, // 대진각
|
SKILL_WAR_MENTAL_STUMP, // 대진각
|
||||||
// S
|
// S
|
||||||
SKILL_CHUNKEON, // 천근추
|
SKILL_WAR_MENTAL_STRONG_BODY, // 천근추
|
||||||
SKILL_GEOMPUNG, // 검풍
|
SKILL_WAR_MENTAL_SWORD_STRIKE, // 검풍
|
||||||
|
|
||||||
// 자객 암살 계열
|
// 자객 암살 계열
|
||||||
// A
|
// A
|
||||||
SKILL_AMSEOP = 31, // 암습
|
SKILL_NINJA_BLADEFIGHT_AMBUSH = 31, // 암습
|
||||||
SKILL_GUNGSIN, // 궁신탄영
|
SKILL_NINJA_BLADEFIGHT_FAST_ATTACK, // 궁신탄영
|
||||||
SKILL_CHARYUN, // 차륜살
|
SKILL_NINJA_BLADEFIGHT_ROLLING_DAGGER, // 차륜살
|
||||||
// S
|
// S
|
||||||
SKILL_EUNHYUNG, // 은형법
|
SKILL_NINJA_BLADEFIGHT_STEALTH, // 은형법
|
||||||
SKILL_SANGONG, // 산공분
|
SKILL_NINJA_BLADEFIGHT_POISONOUS_CLOUD, // 산공분
|
||||||
|
|
||||||
// 자객 궁수 계열
|
// 자객 궁수 계열
|
||||||
// A
|
// A
|
||||||
SKILL_YEONSA = 46, // 연사
|
SKILL_NINJA_ARCHERY_REPETITIVE_SHOT = 46, // 연사
|
||||||
SKILL_KWANKYEOK, // 관격술
|
SKILL_NINJA_ARCHERY_ARROW_SHOWER, // 관격술
|
||||||
SKILL_HWAJO, // 화조파
|
SKILL_NINJA_ARCHERY_FIRE_ARROW, // 화조파
|
||||||
// S
|
// S
|
||||||
SKILL_GYEONGGONG, // 경공술
|
SKILL_NINJA_ARCHERY_FEATHER_WALK, // 경공술
|
||||||
SKILL_GIGUNG, // 기궁
|
SKILL_NINJA_ARCHERY_POISON_ARROW, // 기궁
|
||||||
|
|
||||||
// 수라 검
|
// 수라 검
|
||||||
// A
|
// A
|
||||||
SKILL_SWAERYUNG = 61, // 쇄령지
|
SKILL_SURA_WEAPONRY_FINGER_STRIKE = 61, // 쇄령지
|
||||||
SKILL_YONGKWON, // 용권파
|
SKILL_SURA_WEAPONRY_DRAGON_SWIRL, // 용권파
|
||||||
// S
|
// S
|
||||||
SKILL_GWIGEOM, // 귀검
|
SKILL_SURA_WEAPONRY_ENCHANTED_BLADE, // 귀검
|
||||||
SKILL_TERROR, // 공포
|
SKILL_SURA_WEAPONRY_FEAR, // 공포
|
||||||
SKILL_JUMAGAP, // 주마갑
|
SKILL_SURA_WEAPONRY_ENCHANTED_ARMOUR, // 주마갑
|
||||||
SKILL_PABEOB, // 파법술
|
SKILL_SURA_WEAPONRY_DISPEL, // 파법술
|
||||||
|
|
||||||
// 수라 마법
|
// 수라 마법
|
||||||
// A
|
// A
|
||||||
SKILL_MARYUNG = 76, // 마령
|
SKILL_SURA_BLACKMAGIC_DARK_STRIKE = 76, // 마령
|
||||||
SKILL_HWAYEOMPOK, // 화염폭
|
SKILL_SURA_BLACKMAGIC_FLAME_STRIKE, // 화염폭
|
||||||
SKILL_MUYEONG, // 무영진
|
SKILL_SURA_BLACKMAGIC_FLAME_SPIRIT, // 무영진
|
||||||
// S
|
// S
|
||||||
SKILL_MANASHILED, // 흑신수호
|
SKILL_SURA_BLACKMAGIC_DARK_PROTECTION, // 흑신수호
|
||||||
SKILL_TUSOK, // 투속마령
|
SKILL_SURA_BLACKMAGIC_SPIRIT_STRIKE, // 투속마령
|
||||||
SKILL_MAHWAN, // 마환격
|
SKILL_SURA_BLACKMAGIC_DARK_ORB, // 마환격
|
||||||
|
|
||||||
// 무당 용신
|
// 무당 용신
|
||||||
// A
|
// A
|
||||||
SKILL_BIPABU = 91,
|
SKILL_SHAMAN_DRAGON_FLYING_TALISMAN = 91,
|
||||||
SKILL_YONGBI, // 용비광사파
|
SKILL_SHAMAN_DRAGON_SHOOTING_DRAGON, // 용비광사파
|
||||||
SKILL_PAERYONG, // 패룡나한무
|
SKILL_SHAMAN_DRAGON_DRAGONS_ROAR, // 패룡나한무
|
||||||
// S
|
// S
|
||||||
//SKILL_BUDONG, // 부동박부
|
//SKILL_BUDONG, // 부동박부
|
||||||
SKILL_HOSIN, // 호신
|
SKILL_SHAMAN_DRAGON_BLESSING, // 호신
|
||||||
SKILL_REFLECT, // 보호
|
SKILL_SHAMAN_DRAGON_REFLECT, // 보호
|
||||||
SKILL_GICHEON, // 기천대공
|
SKILL_SHAMAN_DRAGON_DRAGONS_STRENGTH, // 기천대공
|
||||||
|
|
||||||
// 무당 뇌신
|
// 무당 뇌신
|
||||||
// A
|
// A
|
||||||
SKILL_NOEJEON = 106, // 뇌전령
|
SKILL_SHAMAN_HEALING_LIGHTNING_THROW = 106, // 뇌전령
|
||||||
SKILL_BYEURAK, // 벼락
|
SKILL_SHAMAN_HEALING_SUMMON_LIGHTNING, // 벼락
|
||||||
SKILL_CHAIN, // 체인라이트닝
|
SKILL_SHAMAN_HEALING_LIGHTNING_CLAW, // 체인라이트닝
|
||||||
// S
|
// S
|
||||||
SKILL_JEONGEOP, // 정업인
|
SKILL_SHAMAN_HEALING_CURE, // 정업인
|
||||||
SKILL_KWAESOK, // 이동속도업
|
SKILL_SHAMAN_HEALING_SWIFTNESS, // 이동속도업
|
||||||
SKILL_JEUNGRYEOK, // 증력술
|
SKILL_SHAMAN_HEALING_ATTACK, // 증력술
|
||||||
|
|
||||||
// 공통 스킬
|
// 공통 스킬
|
||||||
// 7
|
// 7
|
||||||
SKILL_7_A_ANTI_TANHWAN = 112,
|
SKILL_7_A_ANTI_WAR_BODY_DASH = 112,
|
||||||
SKILL_7_B_ANTI_AMSEOP,
|
SKILL_7_B_ANTI_NINJA_BLADEFIGHT_AMBUSH,
|
||||||
SKILL_7_C_ANTI_SWAERYUNG,
|
SKILL_7_C_ANTI_SURA_WEAPONRY_FINGER_STRIKE,
|
||||||
SKILL_7_D_ANTI_YONGBI,
|
SKILL_7_D_ANTI_SHAMAN_DRAGON_SHOOTING_DRAGON,
|
||||||
|
|
||||||
// 8
|
// 8
|
||||||
SKILL_8_A_ANTI_GIGONGCHAM,
|
SKILL_8_A_ANTI_WAR_MENTAL_SPIRIT_STRIKE,
|
||||||
SKILL_8_B_ANTI_YEONSA,
|
SKILL_8_B_ANTI_NINJA_ARCHERY_REPETITIVE_SHOT,
|
||||||
SKILL_8_C_ANTI_MAHWAN,
|
SKILL_8_C_ANTI_SURA_BLACKMAGIC_DARK_ORB,
|
||||||
SKILL_8_D_ANTI_BYEURAK,
|
SKILL_8_D_ANTI_SHAMAN_HEALING_SUMMON_LIGHTNING,
|
||||||
|
|
||||||
// 보조 스킬
|
// 보조 스킬
|
||||||
|
|
||||||
@ -157,13 +157,13 @@ enum ESkillIndexes
|
|||||||
SKILL_RESIST_PENETRATE = 142, // 철통
|
SKILL_RESIST_PENETRATE = 142, // 철통
|
||||||
|
|
||||||
GUILD_SKILL_START = 151,
|
GUILD_SKILL_START = 151,
|
||||||
GUILD_SKILL_EYE = 151,
|
GUILD_SKILL_EYE = 151, // Dragon's Eye (unused?)
|
||||||
GUILD_SKILL_BLOOD = 152,
|
GUILD_SKILL_BLOOD = 152, // Blood of Dragon God
|
||||||
GUILD_SKILL_BLESS = 153,
|
GUILD_SKILL_BLESS = 153, // Benediction of Dragon God
|
||||||
GUILD_SKILL_SEONGHWI = 154,
|
GUILD_SKILL_ARMOUR = 154, // Holy Armour
|
||||||
GUILD_SKILL_ACCEL = 155,
|
GUILD_SKILL_ACCEL = 155, // Acceleration
|
||||||
GUILD_SKILL_BUNNO = 156,
|
GUILD_SKILL_RAGE = 156, // Rage of Dragon God
|
||||||
GUILD_SKILL_JUMUN = 157,
|
GUILD_SKILL_CAST = 157, // Casting Aid
|
||||||
GUILD_SKILL_TELEPORT = 158,
|
GUILD_SKILL_TELEPORT = 158,
|
||||||
GUILD_SKILL_DOOR = 159,
|
GUILD_SKILL_DOOR = 159,
|
||||||
GUILD_SKILL_END = 162,
|
GUILD_SKILL_END = 162,
|
||||||
@ -215,7 +215,7 @@ class CSkillProto
|
|||||||
|
|
||||||
bool IsChargeSkill()
|
bool IsChargeSkill()
|
||||||
{
|
{
|
||||||
return dwVnum == SKILL_TANHWAN || dwVnum == SKILL_HORSE_CHARGE;
|
return dwVnum == SKILL_WAR_BODY_DASH || dwVnum == SKILL_HORSE_CHARGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3차 적용
|
// 3차 적용
|
||||||
|
@ -95,12 +95,12 @@ class FuncFindMobVictim
|
|||||||
if (pkChr->IsDead())
|
if (pkChr->IsDead())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (pkChr->IsAffectFlag(AFF_EUNHYUNG) ||
|
if (pkChr->IsAffectFlag(AFF_NINJA_BLADEFIGHT_STEALTH) ||
|
||||||
pkChr->IsAffectFlag(AFF_INVISIBILITY) ||
|
pkChr->IsAffectFlag(AFF_INVISIBILITY) ||
|
||||||
pkChr->IsAffectFlag(AFF_REVIVE_INVISIBLE))
|
pkChr->IsAffectFlag(AFF_REVIVE_INVISIBLE))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (pkChr->IsAffectFlag(AFF_TERROR) && m_pkChr->IsImmune(IMMUNE_TERROR) == false ) // 傍器 贸府
|
if (pkChr->IsAffectFlag(AFF_SURA_WEAPONRY_FEAR) && m_pkChr->IsImmune(IMMUNE_TERROR) == false ) // 傍器 贸府
|
||||||
{
|
{
|
||||||
if ( pkChr->GetLevel() >= m_pkChr->GetLevel() )
|
if ( pkChr->GetLevel() >= m_pkChr->GetLevel() )
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user