1. Service.h
  2. ekle
  3. #define ENABLE_BUFF_DEAD_MONSTER_NOT_CLEAR
  4. char.h
  5. arat:
  6. void ClearAffect(bool bSave=false);
  7. altına ekle
  8. #ifdef ENABLE_BUFF_DEAD_MONSTER_NOT_CLEAR
  9. void ClearAffect_New2(bool bSave=false);
  10. #endif
  11. char_affect.cpp
  12. arat
  13. int CHARACTER::ProcessAffect()
  14. üstüne ekle
  15. #ifdef ENABLE_BUFF_DEAD_MONSTER_NOT_CLEAR
  16. void CHARACTER::ClearAffect_New2(bool bSave)
  17. {
  18. TAffectFlag afOld = m_afAffectFlag;
  19. WORD wMovSpd = GetPoint(POINT_MOV_SPEED);
  20. WORD wAttSpd = GetPoint(POINT_ATT_SPEED);
  21. itertype(m_list_pkAffect) it = m_list_pkAffect.begin();
  22. while (it != m_list_pkAffect.end())
  23. {
  24. CAffect * pkAff = *it;
  25. if (bSave)
  26. {
  27. if ((pkAff->dwType == 610) || (pkAff->dwType == 611) || (pkAff->dwType == 612) ||
  28. (pkAff->dwType == 96) || (pkAff->dwType == 95) || (pkAff->dwType == 94) ||
  29. (pkAff->dwType == 111) || (pkAff->dwType == 110) || (pkAff->dwType == 233) ||
  30. (pkAff->dwType == 613) || (pkAff->dwType == 614)
  31. )
  32. {
  33. ++it;
  34. continue;
  35. }
  36. //
  37. // int pkAff_blend[] = {AFFECT_POTION_1, AFFECT_POTION_2, AFFECT_POTION_3, AFFECT_POTION_4, AFFECT_POTION_5, AFFECT_POTION_6, AFFECT_POTION_7, AFFECT_POTION_8, AFFECT_POTION_9, AFFECT_POTION_10, AFFECT_POTION_11, AFFECT_POTION_12, AFFECT_POTION_13};
  38. // if ((pkAff->dwType == pkAff_blend[0]) || (pkAff->dwType == pkAff_blend[1]) || (pkAff->dwType == pkAff_blend[2]) ||
  39. // (pkAff->dwType == pkAff_blend[3]) || (pkAff->dwType == pkAff_blend[4]) || (pkAff->dwType == pkAff_blend[5]))
  40. // {
  41. // ++it;
  42. // continue;
  43. // }
  44. //
  45. int new_aff[] = {AFFECT_18385, AFFECT_18386, AFFECT_18387, AFFECT_18388, AFFECT_18389, AFFECT_18390, AFFECT_ATT_SPEED, AFFECT_MOV_SPEED};
  46. if ((pkAff->dwType == new_aff[0]) || (pkAff->dwType == new_aff[1]) || (pkAff->dwType == new_aff[2]) ||
  47. (pkAff->dwType == new_aff[3]) || (pkAff->dwType == new_aff[4]) || (pkAff->dwType == new_aff[5]) ||
  48. (pkAff->dwType == new_aff[6]) ||
  49. (pkAff->dwType == new_aff[7]))
  50. {
  51. ++it;
  52. continue;
  53. }
  54. if (IS_NO_CLEAR_ON_DEATH_AFFECT(pkAff->dwType) || IS_NO_SAVE_AFFECT(pkAff->dwType) )
  55. {
  56. ++it;
  57. continue;
  58. }
  59. if (IsPC())
  60. {
  61. SendAffectRemovePacket(GetDesc(), GetPlayerID(), pkAff->dwType, pkAff->bApplyOn);
  62. }
  63. }
  64. ComputeAffect(pkAff, false);
  65. it = m_list_pkAffect.erase(it);
  66. CAffect::Release(pkAff);
  67. }
  68. if (afOld != m_afAffectFlag ||
  69. wMovSpd != GetPoint(POINT_MOV_SPEED) ||
  70. wAttSpd != GetPoint(POINT_ATT_SPEED))
  71. UpdatePacket();
  72. CheckMaximumPoints();
  73. if (m_list_pkAffect.empty())
  74. event_cancel(&m_pkAffectEvent);
  75. }
  76. #endif
  77. char_battle.cpp
  78. arat
  79. ClearAffect(true);
  80. değiştir
  81. #ifdef ENABLE_BUFF_DEAD_MONSTER_NOT_CLEAR
  82. if (!pkKiller && IsPC())
  83. ClearAffect_New2(true);
  84. else
  85. ClearAffect(true);
  86. #endif