Advertisement
Guest User

Untitled

a guest
Jan 12th, 2023
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  1. // Search for:
  2. bool ITEM_MANAGER::GetDropPct(LPCHARACTER pkChr, LPCHARACTER pkKiller, OUT int& iDeltaPercent, OUT int& iRandRange)
  3.  
  4. // Add (Under & Whole function):
  5. #ifdef __SEND_TARGET_INFO__
  6. bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM> & vec_item)
  7. {
  8. {
  9. if (!pkChr || !pkKiller)
  10. return false;
  11. }
  12. if (pkChr->IsPolymorphed() || pkChr->IsPC())
  13. {
  14. return false;
  15. }
  16.  
  17. int iLevel = pkKiller->GetLevel();
  18.  
  19. BYTE bRank = pkChr->GetMobRank();
  20. LPITEM item = NULL;
  21.  
  22. std::vector<CItemDropInfo>::iterator it = g_vec_pkCommonDropItem[bRank].begin();
  23.  
  24. while (it != g_vec_pkCommonDropItem[bRank].end())
  25. {
  26. const CItemDropInfo & c_rInfo = *(it++);
  27.  
  28. if (iLevel < c_rInfo.m_iLevelStart || iLevel > c_rInfo.m_iLevelEnd)
  29. continue;
  30.  
  31. TItemTable * table = GetTable(c_rInfo.m_dwVnum);
  32.  
  33. if (!table)
  34. continue;
  35.  
  36. item = NULL;
  37.  
  38. if (table->bType == ITEM_POLYMORPH)
  39. {
  40. if (c_rInfo.m_dwVnum == pkChr->GetPolymorphItemVnum())
  41. {
  42. item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);
  43.  
  44. if (item)
  45. item->SetSocket(0, pkChr->GetRaceNum());
  46. }
  47. }
  48. else
  49. item = CreateItem(c_rInfo.m_dwVnum, 1, 0, true);
  50.  
  51. if (item) vec_item.push_back(item);
  52. }
  53.  
  54. // Drop Item Group
  55. {
  56. itertype(m_map_pkDropItemGroup) it;
  57. it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum());
  58.  
  59. if (it != m_map_pkDropItemGroup.end())
  60. {
  61. typeof(it->second->GetVector()) v = it->second->GetVector();
  62.  
  63. for (DWORD i = 0; i < v.size(); ++i)
  64. {
  65. item = CreateItem(v[i].dwVnum, v[i].iCount, 0, true);
  66.  
  67. if (item)
  68. {
  69. if (item->GetType() == ITEM_POLYMORPH)
  70. {
  71. if (item->GetVnum() == pkChr->GetPolymorphItemVnum())
  72. {
  73. item->SetSocket(0, pkChr->GetRaceNum());
  74. }
  75. }
  76.  
  77. vec_item.push_back(item);
  78. }
  79. }
  80. }
  81. }
  82.  
  83. // MobDropItem Group
  84. {
  85. itertype(m_map_pkMobItemGroup) it;
  86. it = m_map_pkMobItemGroup.find(pkChr->GetRaceNum());
  87.  
  88. if ( it != m_map_pkMobItemGroup.end() )
  89. {
  90. CMobItemGroup* pGroup = it->second;
  91.  
  92. // MOB_DROP_ITEM_BUG_FIX
  93. // 20050805.myevan.MobDropItem ? ???? ?? ?? CMobItemGroup::GetOne() ??? ?? ?? ??
  94. if (pGroup && !pGroup->IsEmpty())
  95. {
  96. const CMobItemGroup::SMobItemGroupInfo& info = pGroup->GetOne();
  97. item = CreateItem(info.dwItemVnum, info.iCount, 0, true, info.iRarePct);
  98.  
  99. if (item) vec_item.push_back(item);
  100. }
  101. // END_OF_MOB_DROP_ITEM_BUG_FIX
  102. }
  103. }
  104.  
  105. // Level Item Group
  106. {
  107. itertype(m_map_pkLevelItemGroup) it;
  108. it = m_map_pkLevelItemGroup.find(pkChr->GetRaceNum());
  109.  
  110. if ( it != m_map_pkLevelItemGroup.end() )
  111. {
  112. if ( it->second->GetLevelLimit() <= (DWORD)iLevel )
  113. {
  114. typeof(it->second->GetVector()) v = it->second->GetVector();
  115.  
  116. for ( DWORD i=0; i < v.size(); i++ )
  117. {
  118. DWORD dwVnum = v[i].dwVNum;
  119. item = CreateItem(dwVnum, v[i].iCount, 0, true);
  120. if ( item ) vec_item.push_back(item);
  121. }
  122. }
  123. }
  124. }
  125.  
  126. // BuyerTheitGloves Item Group
  127. {
  128. // by mhh ?? ??? ??? ?? drop ? ???? ??
  129. if (pkKiller->GetPremiumRemainSeconds(PREMIUM_ITEM) > 0 ||
  130. pkKiller->IsEquipUniqueGroup(UNIQUE_GROUP_DOUBLE_ITEM))
  131. {
  132. itertype(m_map_pkGloveItemGroup) it;
  133. it = m_map_pkGloveItemGroup.find(pkChr->GetRaceNum());
  134.  
  135. if (it != m_map_pkGloveItemGroup.end())
  136. {
  137. typeof(it->second->GetVector()) v = it->second->GetVector();
  138.  
  139. for (DWORD i = 0; i < v.size(); ++i)
  140. {
  141.  
  142. DWORD dwVnum = v[i].dwVnum;
  143. item = CreateItem(dwVnum, v[i].iCount, 0, true);
  144. if (item) vec_item.push_back(item);
  145. }
  146. }
  147. }
  148. }
  149.  
  150. // ??
  151. if (pkChr->GetMobDropItemVnum())
  152. {
  153. itertype(m_map_dwEtcItemDropProb) it = m_map_dwEtcItemDropProb.find(pkChr->GetMobDropItemVnum());
  154.  
  155. if (it != m_map_dwEtcItemDropProb.end())
  156. {
  157. item = CreateItem(pkChr->GetMobDropItemVnum(), 1, 0, true);
  158. if (item) vec_item.push_back(item);
  159. }
  160. }
  161.  
  162. if (pkChr->IsStone())
  163. {
  164. if (pkChr->GetDropMetinStoneVnum())
  165. {
  166. item = CreateItem(pkChr->GetDropMetinStoneVnum(), 1, 0, true);
  167. if (item) vec_item.push_back(item);
  168. }
  169. }
  170.  
  171. return vec_item.size();
  172. }
  173. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement