diff --git a/src/common/service.h b/src/common/service.h index 84725f7..97a3517 100644 --- a/src/common/service.h +++ b/src/common/service.h @@ -7,11 +7,6 @@ #define __PET_SYSTEM__ #define __UDP_BLOCK__ -#define FIX_BOOK_READING_FOR_MAX_LEVEL // Disable experience point deduction for reading a book when in max level -#define FIX_BATTLE_INACTIVITY_TIMEOUT // by #tw1x1: Add battle mode inactivity timeout and reset to standing -#define __BL_LEVEL_FIX__ // Live character level updates -//#define FIX_POS_SYNC // Fix position synching between clients - // #define TW1X1_TEST // tw1x1 test server features #endif diff --git a/src/game/char.cpp b/src/game/char.cpp index 228c3a5..5316b45 100644 --- a/src/game/char.cpp +++ b/src/game/char.cpp @@ -4096,6 +4096,7 @@ void CHARACTER::UpdateStateMachine(DWORD dwPulse) if (IsDead()) return; + // tw1x1: POS_FIGHTING timer fix if (IsPC() && IsPosition(POS_FIGHTING)) { const DWORD now = get_dword_time(); @@ -4107,6 +4108,7 @@ void CHARACTER::UpdateStateMachine(DWORD dwPulse) if (now - m_dwLastCombatTime >= 10000) SetVictim(NULL); // triggers battle_end() -> POS_STANDING } + // tw1x1: end Update(); m_dwNextStatePulse = dwPulse + m_dwStateDuration; @@ -5924,11 +5926,7 @@ void CHARACTER::ResetPoint(int iLv) { BYTE bJob = GetJob(); -#if defined(__BL_LEVEL_FIX__) PointChange(POINT_LEVEL, iLv - GetLevel(), false, true); -#else - PointChange(POINT_LEVEL, iLv - GetLevel()); -#endif SetRealPoint(POINT_ST, JobInitialPoints[bJob].st); SetPoint(POINT_ST, GetRealPoint(POINT_ST)); diff --git a/src/game/char.h b/src/game/char.h index 0c02ad1..c3b3344 100644 --- a/src/game/char.h +++ b/src/game/char.h @@ -2048,6 +2048,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider int m_iLastPMPulse; int m_iPMCounter; + // tw1x1: POS_FIGHTING timer fix public: void EnterCombat(); void UpdateLastCombatTime() { m_dwLastCombatTime = get_dword_time(); } @@ -2055,6 +2056,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider private: DWORD m_dwLastCombatTime; + // tw1x1: end }; ESex GET_SEX(LPCHARACTER ch); diff --git a/src/game/char_battle.cpp b/src/game/char_battle.cpp index 538d2e6..396d7db 100644 --- a/src/game/char_battle.cpp +++ b/src/game/char_battle.cpp @@ -1600,22 +1600,6 @@ void CHARACTER::SendDamagePacket(LPCHARACTER pAttacker, int Damage, BYTE DamageF } } -void CHARACTER::EnterCombat() -{ - if (!IsPC()) - return; - - if (!IsPosition(POS_FIGHTING)) - { - SetPosition(POS_FIGHTING); - SetNextStatePulse(1); - } - - // Start the 10s window if it hasn't started yet. - if (m_dwLastCombatTime == 0) - m_dwLastCombatTime = get_dword_time(); -} - // // CHARACTER::Damage 메소드는 this가 데미지를 입게 한다. // @@ -1629,7 +1613,6 @@ void CHARACTER::EnterCombat() // false : not dead yet // -#ifdef FIX_BATTLE_INACTIVITY_TIMEOUT // tw1x1: POS_FIGHTING timer fix void CHARACTER::EnterCombat() { @@ -1642,7 +1625,6 @@ void CHARACTER::EnterCombat() SetNextStatePulse(1); } // tw1x1: end -#endif bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // returns true if dead { @@ -2331,8 +2313,6 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu if (GetHP() - dam <= 0) dam = GetHP(); - dam = std::min(GetHP(), dam); - // tw1x1: POS_FIGHTING timer fix // REAL combat activity only: final damage > 0 if (dam > 0) diff --git a/src/game/char_skill.cpp b/src/game/char_skill.cpp index b91295a..fe7083d 100644 --- a/src/game/char_skill.cpp +++ b/src/game/char_skill.cpp @@ -445,11 +445,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb) { need_exp = 20000; -#ifdef FIX_BOOK_READING_FOR_MAX_LEVEL if (GetExp() < need_exp && GetLevel() < gPlayerMaxLevel) -#else - if (GetExp() < need_exp) -#endif { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("경험치가 부족하여 책을 읽을 수 없습니다.")); return false; @@ -2489,11 +2485,6 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste if (!pkSk) return false; - if (IsPC() && IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK)) - { - EnterCombat(); - } - if (bCanUseHorseSkill && pkSk->dwType != SKILL_TYPE_HORSE) return BATTLE_NONE; @@ -2655,14 +2646,12 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste AddChainLightningExcept(pkVictim); } -#ifdef FIX_BATTLE_INACTIVITY_TIMEOUT // tw1x1: POS_FIGHTING timer fix if (IsPC() && IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK)) { EnterCombat(); } // tw1x1: end -#endif if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY)) ComputeSkill(dwVnum, this); diff --git a/src/game/questlua_pc.cpp b/src/game/questlua_pc.cpp index ae48438..750b6e1 100644 --- a/src/game/questlua_pc.cpp +++ b/src/game/questlua_pc.cpp @@ -864,11 +864,7 @@ namespace quest ch->PointChange(POINT_SUB_SKILL, newLevel < 10 ? 0 : newLevel - MAX(ch->GetLevel(), 9)); ch->PointChange(POINT_STAT, ((MINMAX(1, newLevel, 90) - ch->GetLevel()) * 3) + ch->GetPoint(POINT_LEVEL_STEP)); //레벨 -#if defined(__BL_LEVEL_FIX__) ch->PointChange(POINT_LEVEL, newLevel - ch->GetLevel(), false, true); -#else - ch->PointChange(POINT_LEVEL, newLevel - ch->GetLevel()); -#endif //HP, SP ch->SetRandomHP((newLevel - 1) * number(JobInitialPoints[ch->GetJob()].hp_per_lv_begin, JobInitialPoints[ch->GetJob()].hp_per_lv_end)); ch->SetRandomSP((newLevel - 1) * number(JobInitialPoints[ch->GetJob()].sp_per_lv_begin, JobInitialPoints[ch->GetJob()].sp_per_lv_end));