Compare commits
11 Commits
rtw1x1-pat
...
rtw1x1-pat
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7a59fdd7b4 | ||
|
|
11ba72d2e2 | ||
|
|
3b712002a9 | ||
|
|
11ef2f5780 | ||
|
|
7a69f13439 | ||
|
|
baa4d7dd69 | ||
|
|
1003dffdd6 | ||
|
|
0f21118ad7 | ||
|
|
db097e3ba2 | ||
|
|
366d97dbac | ||
|
|
1b46b8cc26 |
@@ -3,7 +3,7 @@
|
||||
|
||||
enum EItemMisc
|
||||
{
|
||||
ITEM_NAME_MAX_LEN = 24,
|
||||
ITEM_NAME_MAX_LEN = 64,
|
||||
ITEM_VALUES_MAX_NUM = 6,
|
||||
ITEM_SMALL_DESCR_MAX_LEN = 256,
|
||||
ITEM_LIMIT_MAX_NUM = 2,
|
||||
|
||||
@@ -10,7 +10,7 @@ enum EMisc
|
||||
PASSWD_MAX_LEN = 16,
|
||||
PLAYER_PER_ACCOUNT = 4,
|
||||
ACCOUNT_STATUS_MAX_LEN = 8,
|
||||
CHARACTER_NAME_MAX_LEN = 24,
|
||||
CHARACTER_NAME_MAX_LEN = 64,
|
||||
SHOP_SIGN_MAX_LEN = 32,
|
||||
INVENTORY_MAX_NUM = 90,
|
||||
ABILITY_MAX_NUM = 50,
|
||||
|
||||
@@ -1659,6 +1659,14 @@ void CHARACTER::EnterCombat()
|
||||
if (!IsPosition(POS_FIGHTING))
|
||||
SetPosition(POS_FIGHTING);
|
||||
|
||||
// MR-3: Cancel logout on use skill
|
||||
if (m_pkTimedEvent)
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("전투가 시작 되어 취소 되었습니다."));
|
||||
event_cancel(&m_pkTimedEvent);
|
||||
}
|
||||
// MR-3: -- END OF -- Cancel logout on use skill
|
||||
|
||||
SetNextStatePulse(1);
|
||||
}
|
||||
// tw1x1: end
|
||||
|
||||
@@ -2525,14 +2525,6 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
||||
ComputeSkill(dwVnum, pkVictim);
|
||||
RemoveAffect(dwVnum);
|
||||
|
||||
// MR-3: Cancel logout on use skill
|
||||
if (m_pkTimedEvent)
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("취소 되었습니다."));
|
||||
event_cancel(&m_pkTimedEvent);
|
||||
}
|
||||
// MR-3: -- END OF -- Cancel logout on use skill
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -2551,14 +2543,6 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
||||
// Toggle 할 때는 SP를 쓰지 않음 (SelfOnly로 구분)
|
||||
if ((0 != pkSk->dwAffectFlag || pkSk->dwVnum == SKILL_MUYEONG) && (pkSk->dwFlag & SKILL_FLAG_TOGGLE) && RemoveAffect(pkSk->dwVnum))
|
||||
{
|
||||
// MR-3: Cancel logout on use skill
|
||||
if (m_pkTimedEvent)
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("취소 되었습니다."));
|
||||
event_cancel(&m_pkTimedEvent);
|
||||
}
|
||||
// MR-3: -- END OF -- Cancel logout on use skill
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2657,6 +2641,14 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
||||
}
|
||||
}
|
||||
|
||||
// MR-3: Cancel logout on use skill
|
||||
if (IsPC() && m_pkTimedEvent)
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("취소 되었습니다."));
|
||||
event_cancel(&m_pkTimedEvent);
|
||||
}
|
||||
// MR-3: -- END OF -- Cancel logout on use skill
|
||||
|
||||
if (dwVnum == SKILL_CHAIN)
|
||||
{
|
||||
ResetChainLightningIndex();
|
||||
@@ -2670,14 +2662,6 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
||||
// prevent POS_FIGHTING from expiring when skills deal 0 damage (miss, block, imun, etc.)
|
||||
UpdateLastCombatTime();
|
||||
EnterCombat();
|
||||
|
||||
// MR-3: Cancel logout on use skill
|
||||
if (pkVictim->m_pkTimedEvent)
|
||||
{
|
||||
pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("취소 되었습니다."));
|
||||
event_cancel(&pkVictim->m_pkTimedEvent);
|
||||
}
|
||||
// MR-3: -- END OF -- Cancel logout on use skill
|
||||
}
|
||||
// tw1x1: end
|
||||
|
||||
@@ -2692,14 +2676,6 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
|
||||
|
||||
m_dwLastSkillTime = get_dword_time();
|
||||
|
||||
// MR-3: Cancel logout on use skill
|
||||
if (m_pkTimedEvent)
|
||||
{
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("취소 되었습니다."));
|
||||
event_cancel(&m_pkTimedEvent);
|
||||
}
|
||||
// MR-3: -- END OF -- Cancel logout on use skill
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -464,80 +464,52 @@ bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim)
|
||||
{
|
||||
if (g_protectNormalPlayer)
|
||||
{
|
||||
// 범법자는 평화모드인 착한사람을 공격할 수 없다.
|
||||
if (PK_MODE_PEACE == pkVictim->GetPKMode())
|
||||
return false;
|
||||
// 범법자는 평화모드인 착한사람을 공격할 수 없다.
|
||||
if (PK_MODE_PEACE == pkVictim->GetPKMode())
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// MR-4: Fix PK mode logic
|
||||
switch (pkChr->GetPKMode())
|
||||
{
|
||||
case PK_MODE_PEACE:
|
||||
case PK_MODE_REVENGE:
|
||||
// Cannot attack same guild
|
||||
if (pkVictim->GetGuild() && pkVictim->GetGuild() == pkChr->GetGuild())
|
||||
break;
|
||||
|
||||
if (pkChr->GetPKMode() == PK_MODE_REVENGE)
|
||||
{
|
||||
//if (!g_iUseLocale)
|
||||
if (1)
|
||||
{
|
||||
if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() >= 0)
|
||||
{
|
||||
pkChr->SetKillerMode(true);
|
||||
return true;
|
||||
}
|
||||
else if (pkChr->GetAlignment() >= 0 && pkVictim->GetAlignment() < 0)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() < 0)
|
||||
break;
|
||||
else if (pkChr->GetAlignment() >= 0 && pkVictim->GetAlignment() >= 0)
|
||||
break;
|
||||
|
||||
beKillerMode = true;
|
||||
}
|
||||
if (
|
||||
(!pkChr->GetGuild() || (pkVictim->GetGuild() != pkChr->GetGuild())) &&
|
||||
pkChr->GetPKMode() == PK_MODE_REVENGE && pkVictim->GetAlignment() < 0
|
||||
)
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case PK_MODE_GUILD:
|
||||
// Same implementation from PK_MODE_FREE except for attacking same guild
|
||||
if (!pkChr->GetGuild() || (pkVictim->GetGuild() != pkChr->GetGuild()))
|
||||
{
|
||||
if (1)
|
||||
//if (!g_iUseLocale)
|
||||
// Same implementation from PK_MODE_FREE except for attacking same guild
|
||||
if (!pkChr->GetGuild() || (pkVictim->GetGuild() != pkChr->GetGuild()))
|
||||
{
|
||||
if (pkVictim->GetAlignment() >= 0)
|
||||
pkChr->SetKillerMode(true);
|
||||
else if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() < 0)
|
||||
// Only set killer mode if victim is not already attackable
|
||||
if (!pkVictim->IsKillerMode())
|
||||
pkChr->SetKillerMode(true);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
beKillerMode = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case PK_MODE_FREE:
|
||||
//if (!g_iUseLocale)
|
||||
if (1)
|
||||
{
|
||||
if (pkVictim->GetAlignment() >= 0)
|
||||
pkChr->SetKillerMode(true);
|
||||
else if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() < 0)
|
||||
// Same as GUILD, but allows attacking same guild members
|
||||
// Only set killer mode if victim is not already attackable
|
||||
if (!pkVictim->IsKillerMode())
|
||||
pkChr->SetKillerMode(true);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
beKillerMode = true;
|
||||
break;
|
||||
}
|
||||
// MR-4: -- END OF -- Fix PK mode logic
|
||||
}
|
||||
|
||||
CPVP kPVP(pkChr->GetPlayerID(), pkVictim->GetPlayerID());
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
#include "stdafx.h"
|
||||
#ifndef OS_WINDOWS
|
||||
#include <netinet/tcp.h>
|
||||
#endif
|
||||
|
||||
/* Forwards */
|
||||
void socket_lingeron(socket_t s);
|
||||
|
||||
Reference in New Issue
Block a user