Enable tooltip and countdown for all affects

This commit is contained in:
Mind Rapist
2026-02-18 18:47:47 +02:00
parent 498c351d4c
commit 6fb10a9135
3 changed files with 11 additions and 2 deletions

View File

@@ -16,7 +16,8 @@ This repository contains the source code necessary to compile the game client ex
## 📋 Changelog ## 📋 Changelog
### 🐛 Bug fixes ### 🐛 Bug fixes
- **Fog update**: Adjusted fog settings to work with the updated official version using the 3 classic options. - **Affect tooltips**: ALL affects now display realtime countdowns, titles and are wrapped in tooltips! Realtime countdowns does not apply to infinite affects such as the Exorcism Scroll, the Concentrated Reading and the Medal of the Dragon (Death penalty prevention)
- **AFFECT_FIRE**: The Continuous Fire debuff has been added to the affects dictionary by name.
<br> <br>
<br> <br>

View File

@@ -1461,6 +1461,9 @@ void initchr()
PyModule_AddIntConstant(poModule, "AFFECT_KWAESOK", CInstanceBase::AFFECT_KWAESOK); PyModule_AddIntConstant(poModule, "AFFECT_KWAESOK", CInstanceBase::AFFECT_KWAESOK);
PyModule_AddIntConstant(poModule, "AFFECT_HEUKSIN", CInstanceBase::AFFECT_HEUKSIN); PyModule_AddIntConstant(poModule, "AFFECT_HEUKSIN", CInstanceBase::AFFECT_HEUKSIN);
PyModule_AddIntConstant(poModule, "AFFECT_MUYEONG", CInstanceBase::AFFECT_MUYEONG); PyModule_AddIntConstant(poModule, "AFFECT_MUYEONG", CInstanceBase::AFFECT_MUYEONG);
// MR-16: Added missing AFFECT_FIRE to Affects Shower
PyModule_AddIntConstant(poModule, "AFFECT_FIRE", CInstanceBase::AFFECT_FIRE);
// MR-16: -- END OF -- Added missing AFFECT_FIRE to Affects Shower
PyModule_AddIntConstant(poModule, "AFFECT_GICHEON", CInstanceBase::AFFECT_GICHEON); PyModule_AddIntConstant(poModule, "AFFECT_GICHEON", CInstanceBase::AFFECT_GICHEON);
PyModule_AddIntConstant(poModule, "AFFECT_JEUNGRYEOK", CInstanceBase::AFFECT_JEUNGRYEOK); PyModule_AddIntConstant(poModule, "AFFECT_JEUNGRYEOK", CInstanceBase::AFFECT_JEUNGRYEOK);
PyModule_AddIntConstant(poModule, "AFFECT_PABEOP", CInstanceBase::AFFECT_PABEOP); PyModule_AddIntConstant(poModule, "AFFECT_PABEOP", CInstanceBase::AFFECT_PABEOP);

View File

@@ -4031,16 +4031,21 @@ bool CPythonNetworkStream::SendClientVersionPacket()
bool CPythonNetworkStream::RecvAffectAddPacket() bool CPythonNetworkStream::RecvAffectAddPacket()
{ {
TPacketGCAffectAdd kAffectAdd; TPacketGCAffectAdd kAffectAdd;
if (!Recv(sizeof(kAffectAdd), &kAffectAdd)) if (!Recv(sizeof(kAffectAdd), &kAffectAdd))
return false; return false;
TPacketAffectElement & rkElement = kAffectAdd.elem; TPacketAffectElement & rkElement = kAffectAdd.elem;
if (rkElement.bPointIdxApplyOn == POINT_ENERGY) if (rkElement.bPointIdxApplyOn == POINT_ENERGY)
{ {
CPythonPlayer::instance().SetStatus (POINT_ENERGY_END_TIME, CPythonApplication::Instance().GetServerTimeStamp() + rkElement.lDuration); CPythonPlayer::instance().SetStatus (POINT_ENERGY_END_TIME, CPythonApplication::Instance().GetServerTimeStamp() + rkElement.lDuration);
__RefreshStatus(); __RefreshStatus();
} }
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_NEW_AddAffect", Py_BuildValue("(iiii)", rkElement.dwType, rkElement.bPointIdxApplyOn, rkElement.lApplyValue, rkElement.lDuration));
// MR-16: Classic affect duration countdown
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_NEW_AddAffect", Py_BuildValue("(iiiii)", rkElement.dwType, rkElement.bPointIdxApplyOn, rkElement.lApplyValue, rkElement.lDuration, rkElement.dwFlag));
// MR-16: -- END OF -- Classic affect duration countdown
return true; return true;
} }