- Mesaj
- 7
- Beğeni
- 1
- Puan
- 50
- Ticaret Puanı
- 0
resimde görünen 3079. satır kodlardaki 71. satır
char.cpp:
void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast)
{
int val = 0;
//sys_log(0, "PointChange %d %d | %d -> %d cHP %d mHP %d", type, amount, GetPoint(type), GetPoint(type)+amount, GetHP(), GetMaxHP());
switch (type)
{
case POINT_NONE:
return;
case POINT_LEVEL:
if ((GetLevel() + amount) > gPlayerMaxLevel)
return;
SetLevel(GetLevel() + amount);
val = GetLevel();
sys_log(0, "LEVELUP: %s %d NEXT EXP %d", GetName(), GetLevel(), GetNextExp());
PointChange(POINT_NEXT_EXP, GetNextExp(), false);
if (amount)
{
quest::CQuestManager::instance().LevelUp(GetPlayerID());
LogManager::instance().LevelLog(this, val, GetRealPoint(POINT_PLAYTIME) + (get_dword_time() - m_dwPlayStartTime) / 60000);
if (GetGuild())
{
GetGuild()->LevelChange(GetPlayerID(), GetLevel());
}
if (GetParty())
{
GetParty()->RequestSetMemberLevel(GetPlayerID(), GetLevel());
}
}
break;
case POINT_NEXT_EXP:
val = GetNextExp();
bAmount = false; // 무조건 bAmount는 false 여야 한다.
break;
case POINT_EXP:
{
DWORD exp = GetExp();
DWORD next_exp = GetNextExp();
// 청소년보호
if (LC_IsNewCIBN())
{
if (IsOverTime(OT_NONE))
{
dev_log(LOG_DEB0, "<EXP_LOG> %s = NONE", GetName());
}
else if (IsOverTime(OT_3HOUR))
{
amount = (amount / 2);
dev_log(LOG_DEB0, "<EXP_LOG> %s = 3HOUR", GetName());
}
else if (IsOverTime(OT_5HOUR))
{
amount = 0;
dev_log(LOG_DEB0, "<EXP_LOG> %s = 5HOUR", GetName());
}
}
// exp가 0 이하로 가지 않도록 한다
if (amount < 0 && exp < -amount)
{
sys_log(1, "%s AMOUNT < 0 %d, CUR EXP: %d", GetName(), -amount, exp);
amount = -exp;
SetExp(exp + amount);
val = GetExp();
}