Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TItemPos& destCell) /*const*/
  2. {
  3. const TItemTable* itemTable = item->GetProto();
  4. BYTE itemType = item->GetType();
  5. BYTE itemSubType = item->GetSubType();
  6.  
  7. switch (GetJob())
  8. {
  9. case JOB_WARRIOR:
  10. if (item->GetAntiFlag() & ITEM_ANTIFLAG_WARRIOR)
  11. return false;
  12. break;
  13.  
  14. case JOB_ASSASSIN:
  15. if (item->GetAntiFlag() & ITEM_ANTIFLAG_ASSASSIN)
  16. return false;
  17. break;
  18.  
  19. case JOB_SHAMAN:
  20. if (item->GetAntiFlag() & ITEM_ANTIFLAG_SHAMAN)
  21. return false;
  22. break;
  23.  
  24. case JOB_SURA:
  25. if (item->GetAntiFlag() & ITEM_ANTIFLAG_SURA)
  26. return false;
  27. break;
  28. }
  29.  
  30. for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
  31. {
  32. long limit = itemTable->aLimits[i].lValue;
  33. switch (itemTable->aLimits[i].bType)
  34. {
  35. case LIMIT_LEVEL:
  36. if (GetLevel() < limit)
  37. {
  38. ChatPacket(CHAT_TYPE_INFO, "Nie możesz założyć ekwipunku gdyż twój Poziom jest zbyt niski!");
  39. return false;
  40. }
  41. break;
  42.  
  43. case LIMIT_STR:
  44. if (GetPoint(POINT_ST) < limit)
  45. {
  46. ChatPacket(CHAT_TYPE_INFO, "Nie jesteś wystarczająco silny aby to ubrać.");
  47. return false;
  48. }
  49. break;
  50.  
  51. case LIMIT_INT:
  52. if (GetPoint(POINT_IQ) < limit)
  53. {
  54. ChatPacket(CHAT_TYPE_INFO, "Nie masz wystarczająco dużo inteligencji aby ubrać ten przedmiot.");
  55. return false;
  56. }
  57. break;
  58.  
  59. case LIMIT_DEX:
  60. if (GetPoint(POINT_DX) < limit)
  61. {
  62. ChatPacket(CHAT_TYPE_INFO, "Twoja zręczność jest zbyt niska aby ubrać ten przedmiot.");
  63. return false;
  64. }
  65. break;
  66.  
  67. case LIMIT_CON:
  68. if (GetPoint(POINT_HT) < limit)
  69. {
  70. ChatPacket(CHAT_TYPE_INFO, "Nie posiadasz wystarczająco dużo wytrzymałości aby założyć przedmiot.");
  71. return false;
  72. }
  73. break;
  74. }
  75. }
  76.  
  77. if (item->GetWearFlag() & WEARABLE_UNIQUE)
  78. {
  79. if ((GetWear(WEAR_UNIQUE1) && GetWear(WEAR_UNIQUE1)->IsSameSpecialGroup(item)) ||
  80. (GetWear(WEAR_UNIQUE2) && GetWear(WEAR_UNIQUE2)->IsSameSpecialGroup(item)))
  81. {
  82. ChatPacket(CHAT_TYPE_INFO, "Nie możesz nosić dwóch identycznych przedmiotów!");
  83. return false;
  84. }
  85.  
  86. // Dwa itemy na raz
  87. // if (item->GetType() & ITEM_RING)
  88. // {
  89. // if ((GetWear(WEAR_RING1) && GetWear(WEAR_RING1)->IsSameSpecialGroup(item)) || (GetWear(WEAR_RING2) && GetWear(WEAR_RING2)->IsSameSpecialGroup(item)))
  90. // {
  91. // ChatPacket(CHAT_TYPE_INFO, "Nie możesz założyć dwóch itemów, w tym samym czasie.");
  92. // return false;
  93. // }
  94. // }
  95.  
  96. if (marriage::CManager::instance().IsMarriageUniqueItem(item->GetVnum()) &&
  97. !marriage::CManager::instance().IsMarried(GetPlayerID()))
  98. {
  99. ChatPacket(CHAT_TYPE_INFO, "Ten przedmiot może być używany tylko przez małżonków.");
  100. return false;
  101. }
  102.  
  103. }
  104.  
  105. return true;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement